XSD元素和枚举

时间:2011-08-25 15:45:58

标签: xml xsd xsd-validation

考虑具有属性的元素。此属性只能包含枚举值。

是否可以通过枚举值来调节这些元素的子?

有一个例子,因为我的英语不是很好:)。

<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>

如果我选择“choice1”,我会在必需的元素中使用element1,在禁止的元素/元素3中使用。如果我选择“choice2”,我将需要元素2等等....

你知道是否可能吗?

感谢您的回答

1 个答案:

答案 0 :(得分:1)

这是XSD 1.1中的一项新功能(目前最近发布的Saxon和Xerces版本支持)。这是众所周知的XSD 1.0限制,它无法做到这一点。