私が使用しているXSDの場合、検証されたマークアップは有効なHTMLです。私が適用しようとしているルールは、どのHTML要素にも適用できるはずです。言い換えれば、私のルールは要素に依存しません。私は主に属性の制約に関心があります。
<xs:element name="div">
<xs:complexType>
<xs:sequence>
<xs:any>
<xs:attribute name="containerColor">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="green"/>
<xs:enumeration value="red"/>
<xs:enumeration value="blue"/>
<xs:enumeration value="yellow"/>
<xs:enumeration value="grey"/>
<xs:enumeration value="black"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:unique name="id" >
<xs:selector xpath="*"></xs:selector>
<xs:field xpath="*"></xs:field>
</xs:unique>
</xs:any>
</xs:sequence>
</xs:complexType>
</xs:element>
XSDは初めてです。私にはいくつかの根本的な誤解があると確信しています。
上記の例では、「containerColor」属性を持つことができる(ただし、持つ必要はありません)と言いたいです。この属性を使用する場合は、列挙された色の1つである必要があります。
さらに、どの要素にもIDを付けることができ、一意である必要があります。
上記の試みで、any要素が属性/一意の有効なコンテキストではないという苦情があります。
セレクターの観点から、私は構築しているルールを特定の要素ではなくすべての要素のセットに適用することに関心があります。XSDでこれを達成する方法はありますか?