当前位置: 首页 > 知识库问答 >
问题:

xsd模式ref和type属性值的命名空间是如何别名/绑定的?

端木兴国
2023-03-14

http://docs.oasis-open.org/security/saml/v2.0/saml-schema-assertion-2.0.xsd

https://www.w3.org/tr/2002/rec-xmldsig-core-20020212/xmldsig-core-schema.xsd

这两个XSD文档都定义了元素、属性、attributeGroups和/或自引用同一文档内其他定义的类型。在第一种情况下,这些类型似乎是使用SAML命名空间别名/绑定来命名的。示例:

<attributeGroup ref="saml:IDNameQualifiers"/>
<element ref="ds:SignedInfo"/>
targetNamespace="urn:oasis:names:tc:SAML:2.0:assertion"

第二个问题也是如此:

targetNamespace="http://www.w3.org/2000/09/xmldsig#"

但是,将第一个文件别名为SAML而将第二个文件别名为DS仅仅是一种惯例吗?如果是的话,我们可以到哪里去寻找这些惯例呢?如果不是,如何解析这些名称空间?

共有1个答案

梁丘佑运
2023-03-14

命名空间绑定是在架构的根元素中用xmlns:属性定义的(最佳做法是这样的):

saml-schema-assertion-2.0.xsd

<schema
  xmlns="http://www.w3.org/2001/XMLSchema" 
  xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
  [...]
  targetNamespace="urn:oasis:names:tc:SAML:2.0:assertion"
  [...]>

xmldsig-core-schema.xsd

<schema
  xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
  targetNamespace="http://www.w3.org/2000/09/xmldsig#"
  [...]>
<xs:attribute name="ref" type="xs:QName"/>
<xs:attribute name="type" type="xs:QName"/>
<!-- observe how the declaration for the type attribute uses itself! -->
 类似资料:
  • 我有一个XML文件,其结构如下: XSD模式: 和可视化的XSL文件(学生tylesheet.xsl): 我目前正在学习一门关于XML的短期课程,任务是在XML文件中构建给定的XSD模式和一些示例记录,然后最终使用XSLT将内容可视化为超文本标记语言。其中一项任务指出,我需要使用“urn:学生”作为结构的默认命名空间。然而,当我这样做的时候,我不会在最终的可视化中收到数据。当我从XML文件中删除“

  • 在这一节中,我们将探索JavaScript中关于命名空间的模式。命名空间可被看作位于一个唯一标识符下的代码单元的逻辑组合。标识符可以被很多命名空间引用,每一个命名空间本身可以包含一个分支的嵌套命名空间(或子命名空间)。 在应用开发过程中,出于很多原因,我们都要使用命名空间。在JavaScript中,它们帮助我们避免在全局空间中于其他对象或者变量出现冲突。它们对于在代码库中组织功能块也非常有用,这样

  • 除了具有不同名称空间的属性外,我在大多数情况下都能够使用XSOM解析XSD。对于本例,我希望获得枚举值“9901001”的属性“t:deprecated”。下面是一个示例XSD:

  • 关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。 这篇文章将概括介绍在TypeScript里使用模块与命名空间来组织代码的方法。 我们也会谈及

  • 关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。 介绍 这篇文章将概括介绍在TypeScript里使用模块与命名空间来组织代码的方法。 我们也