应如何解释 XML 命名空间规范中的以下内容?
默认命名空间声明适用于其范围内的所有无前缀元素名称。默认命名空间声明不直接应用于属性名称;无前缀属性的解释由它们出现的元素决定。
我的直观理解是,不带前缀的属性应该被解释为属于它们所属元素的命名空间。但是,以下示例似乎证明了这一点:
架构:
<xs:schema xmlns:myns="http://test.com/xsd/foo" elementFormDefault="qualified"
targetNamespace="http://test.com/xsd/foo" version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attribute name="Id" type="xs:string" />
<xs:element name="Foo">
<xs:complexType>
<xs:attribute ref="myns:Id" />
</xs:complexType>
</xs:element>
</xs:schema>
通过验证的示例:
<a:Foo xmlns:a="http://test.com/xsd/foo" a:Id="123" />
验证失败的示例:
<Foo xmlns="http://test.com/xsd/foo" Id="123" />
是什么赋予了?