0

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

是否可以通过 enumeration 的值来限定这些元素的儿子?

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

<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,禁止 element2 / element3。如果我选择“choice2”,我将需要元素 2,等等......

你知道这是否可能吗?

感谢你的回答

4

1 回答 1

1

这是 XSD 1.1 中的一个新特性(当前在最近的 Saxon 和 Xerces 版本中得到支持)。XSD 1.0 的一个众所周知的限制是它不能做到这一点。

于 2011-08-25T16:38:47.963 回答