问题描述:

Considering an element which has an attribute. This attribute can have only values from a enumeration.

Is it possible to conditionnate the sons of this elements by the value of enumeration ?

There is an example, because my english is not very good :)

<xs:element minOccurs="0" name="datas">

<xs:complexType>

<xs:sequence maxOccurs="unbounded">

<xs:element maxOccurs="1" name="data">

<xs:complexType>

<xs:attribute name="tag" type="xs:string" use="required"/>

<xs:attribute name="expr" type="xs:string" use="required"/>

<xs:attribute name="format" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="choice1"/>

<xs:enumeration value="choice2"/>

<xs:enumeration value="choice3"/>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

<!-- HERE IS SOME SONS -->

<xs:element name="element1" />

<xs:element name="element2" />

<xs:element name="element3" />

</xs:element>

</xs:sequence>

</xs:complexType>

If I choose "choice1", I would have element1 in required, and element2 / element3 in prohibited. If I choose "choice2", i would have element 2 in required, etc....

Do you know if is it possible ?

Thanks for the answer

网友答案:

This is a new feature in XSD 1.1 (currently supported in recent releases of Saxon and Xerces). It's a well-known restriction of XSD 1.0 that it can't do this.

相关阅读:
Top