你可以做到這一點使用XSD 1.1的Conditional Type Assignment:但是
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
elementFormDefault="qualified"
vc:minVersion="1.1">
<xs:element name="food">
<xs:alternative test="@kind = 'juice'" type="JuiceType"/>
<xs:alternative test="@kind = 'fruit'" type="FruitType"/>
</xs:element>
<xs:complexType name="JuiceType">
<xs:sequence>
<!-- ... -->
</xs:sequence>
</xs:complexType>
<xs:complexType name="FruitType">
<xs:sequence>
<!-- ... -->
</xs:sequence>
<xs:attribute name="sort"/>
</xs:complexType>
</xs:schema>
再做考慮,另一種設計是在兩個XSD 1.1表達和1.0這是一般可取:
<juice/>
<fruit sort="apple"/>
也就是說,不是具有kind
屬性,而是使用元素名稱來傳達類型。