example.xml を許可したい
<defs>
<def n="a"/>
<def n="b"/>
</defs>
<refer-to-def n="a"/>
<refer-to-def n="b"/>
<refer-to-def n="predefined"/>
<refer-to-def n="also-predefined"/>
st の唯一の可能な値は//refer-to-def/@n
、//def/@n
OR "predefined" OR "also-predefined <refer-to-def n="never-defined"/>
.
を使用して最初の制限を行うことができます
<xs:keyref name="defRef" refer="def">
<xs:selector xpath=".//refer-to-def" />
<xs:field xpath="@n" />
</xs:keyref>
<xs:key name="def">
<xs:selector xpath="./defs/def" />
<xs:field xpath="@n" />
</xs:key>
ただし、.xml に .xml がある場合、これはもちろん失敗します<refer-to-def n="predefined"/>
。
<def>
のn
属性を定義することでできる2番目の制限
<xs:attribute name="n" use="required">
<xs:simpleType>
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="predefined"/>
<xs:enumeration value="also-predefined"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
もちろん、これには defs の n 値の動的リストは含まれません。
2 つを組み合わせるにはどうすればよいので、n は動的リストまたは事前定義されたセットのいずれかになり、私の example.xml は検証されますか?