i には、2 つの値 (perishable および nonPerishable) のいずれかを取ることができる属性 (category) を持つ親要素 (product) があります。商品が腐りやすい場合は子要素「食品」が必要で、腐りにくい場合は子要素「在庫」が必要です。見てみると、これは XSD 1.1 では実行できますが、XSD 1.0 では実行できないことがわかります。しかし、私はこれを行う方法を見つけていません。
以下は、重要な部分を示すために短縮された私のコードです。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="products">
<xs:complexType>
<xs:sequence>
<xs:element name="product" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:choice>
<xs:element name="food">
<xs:complexType>
/*DEFINED FOOD HERE*?
</xs:complexType>
</xs:element>
<xs:element name="stock">
<xs:complexType>
/*DEFINED STOCK HERE*/
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="category">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="perishable"/>
<xs:enumeration value="nonPerishable"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
誰でも私を助けてもらえますか?