在不同的名称空间前缀下使用xml名称空间是否相同?
我正在处理使用XML:lang的XML文件,现在有人向我发送一个包含以下内容的文件:在不同的名称空间前缀下使用xml名称空间是否相同?,xml,xsd,xml-namespaces,Xml,Xsd,Xml Namespaces,我正在处理使用XML:lang的XML文件,现在有人向我发送一个包含以下内容的文件: <element xmlns:ns1="xml" ns1:lang="fr" /> 我应该把这个和这个同等对待吗 <element xml:lang="fr" /> <element xml:lang="fr" /> 或者当需要xml:lang时,我应该将该文件视为无效文件吗?如果是第一个,我可以在XSD中捕获xml名称空间的这种“代理”吗?您给出的两个示
<element xmlns:ns1="xml" ns1:lang="fr" />
我应该把这个和这个同等对待吗
<element xml:lang="fr" />
<element xml:lang="fr" />
或者当需要xml:lang时,我应该将该文件视为无效文件吗?如果是第一个,我可以在XSD中捕获xml名称空间的这种“代理”吗?您给出的两个示例并不相同。名称空间是URI,此类URI可以绑定到前缀,以便为元素和属性定义完全限定的名称。URI不需要指向现有资源,XML处理器也不需要对URI进行任何类型的解析,也不需要创建URI的规范表示(除了一些属性值规范化)。实际上,名称空间实际上只不过是一个区分大小写的字符串,但URI恰好被选为它们的表示形式 换句话说,这个
<element xmlns:ns1="xml" ns1:lang="fr" />
xml
是前缀,而不是名称空间。此前缀隐式绑定到命名空间http://www.w3.org/XML/1998/namespace
按照
进一步查看该规范,您还将发现不仅不允许将xml
前缀绑定到任何其他名称空间(有意义),而且也不允许绑定http://www.w3.org/XML/1998/namespace
名称空间到任何其他前缀(这没有什么意义,但允许一些XML处理优化和假设)
总之,如果需要xml:lang
属性,则应将第一个输入视为无效,因为该属性不存在于其中。构建该文件的人无法理解xml名称空间
我更深入地探讨了这些概念。不
背景:在W3C XML推荐中定义,不依赖XML名称空间,尽管它使用冒号(:
)。在W3C XML名称空间推荐中,XML
前缀(以及所有以XML
开头的名称空间前缀)是。xml
前缀本身被自动定义为绑定到http://www.w3.org/XML/1998/namespace
因此,xml:lang=“fr”
是完全正确的,可以在不声明xml
名称空间前缀的情况下使用。如果确实要声明xml
名称空间前缀,则它应该是xmlns:xml=http://www.w3.org/XML/1998/namespace
此外,xmlns:ns1=“xml”ns1:lang=“fr”
暗示了对名称空间前缀声明的误解,因为这意味着名称空间前缀声明可以通过传递方式分配;它们不能
所以尽管
<element xmlns:ns1="xml" ns1:lang="fr" />
是格式良好的(参见),它不等同于
<element xml:lang="fr" />