XSD 的 N 个元素的值限制
Restriction on values of N elements with XSD
我正在寻找一种方法来对相互组合的两个元素的值应用限制。我当前的架构是:
<xs:simpleType name="CTKOD_EONE">
<xs:restriction base="xs:string">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
<xs:enumeration value="4" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CTKOD_ETWO">
<xs:restriction base="xs:string">
<xs:enumeration value="A" />
<xs:enumeration value="B" />
<xs:enumeration value="C" />
<xs:enumeration value="D" />
</xs:restriction>
</xs:simpleType>
<xs:element name="DATA" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="EONE" type="CTKOD_EONE">
<xs:element name="ETWO" type="CTKOD_ETWO">
</xs:all>
</xs:complexType>
</xs:element>
XML 示例:
<DATA>
<EONE>1</EONE>
<ETWO>C</ETWO>
</DATA>
<DATA>
<EONE>4</EONE>
<ETWO>D</ETWO>
</DATA>
<DATA>
<EONE>2</EONE>
<ETWO>A</ETWO>
</DATA>
<DATA>
<EONE>3</EONE>
<ETWO>B</ETWO>
</DATA>
但在我的例子中,每个数据必须对 EONE 和 ETWO 的组合有限制。例如:
1 with C - valid
4 with D - valid
2 with A - valid
3 with B - INVALID!!
是否可以对N个子元素的值进行一些复杂的限制?或者用 XSD 解决这个问题的其他方法?请帮助我找出可能的解决方案。
在 XSD 1.1 中使用 xs:assert
很容易。
在 XSD 1.0 中是不可能的。
我正在寻找一种方法来对相互组合的两个元素的值应用限制。我当前的架构是:
<xs:simpleType name="CTKOD_EONE">
<xs:restriction base="xs:string">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
<xs:enumeration value="4" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CTKOD_ETWO">
<xs:restriction base="xs:string">
<xs:enumeration value="A" />
<xs:enumeration value="B" />
<xs:enumeration value="C" />
<xs:enumeration value="D" />
</xs:restriction>
</xs:simpleType>
<xs:element name="DATA" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="EONE" type="CTKOD_EONE">
<xs:element name="ETWO" type="CTKOD_ETWO">
</xs:all>
</xs:complexType>
</xs:element>
XML 示例:
<DATA>
<EONE>1</EONE>
<ETWO>C</ETWO>
</DATA>
<DATA>
<EONE>4</EONE>
<ETWO>D</ETWO>
</DATA>
<DATA>
<EONE>2</EONE>
<ETWO>A</ETWO>
</DATA>
<DATA>
<EONE>3</EONE>
<ETWO>B</ETWO>
</DATA>
但在我的例子中,每个数据必须对 EONE 和 ETWO 的组合有限制。例如:
1 with C - valid
4 with D - valid
2 with A - valid
3 with B - INVALID!!
是否可以对N个子元素的值进行一些复杂的限制?或者用 XSD 解决这个问题的其他方法?请帮助我找出可能的解决方案。
在 XSD 1.1 中使用 xs:assert
很容易。
在 XSD 1.0 中是不可能的。