我目前有以下XSD。
<xsd:element name="ProcessingCode" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="000000" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CardExpirationDate" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:pattern value="\d{4}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
现在,只有当ProcessingCode值为999999时,我才需要将CardExpirationDate设为Mandatory,否则将其保留为可选。请建议。
答案 0 :(得分:1)
断言是一种XSD 1.1机制,所以你的帖子的[原始]标题谈到在XSD 1.0中使用断言没有多大意义。
如果你想在XSD 1.1中做这样的断言,那么断言就会继续处理ProcessingCode和CardExpirationDate的共同祖先元素。如果我们假设这些是兄弟元素,则公共父元素将具有诸如
之类的断言<xs:assert test="ProcessingCode != '999999' or exists(CardExpirationDate)"/>