次の xml ドキュメントがあるとします。
<root xmlns:p="uri:myNamespace">
<p:tagA>
<p:tagB />
</p:tagA>
</root>
tagB は、tagA 内にのみ存在する必要があります。それを検証する xsd を書くことができます:
<xsd:schema ... targetNamespace="uri:myNamespace" elementFormDefault="qualified">
<xsd:element name="tagA">
<xsd:complexType>
<xsd:element name="tagB" type="..." />
</xsd:complexType>
</xsd:element>
</xsd:schema>
ここで問題が発生します。外部の名前空間の間のタグを無視したい:
<root xmlns:p="uri:myNamespace">
<p:tagA>
<whatever />
<foo>
<bar>
<p:tagB />
</bar>
</foo>
</p:tagA>
</root>
ご覧のとおり、tagB は名前空間なしで他のタグ内にネストされています。
tagA
自分の名前空間からの唯一のタグが であることを引き続き強制する XSD を作成することは可能ですか (どのように?) tagB
。