次の 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" />
何を与える?