我需要检查如果 imagetype
= I
则 docext
只能是 TIFF/tiff
并且如果imagetype
= N
那么docext
应该是PDF/pdf
。否则验证应该失败。我正在为此编写 XSD,但不知道如何实现此约束。目前我正在使用 XSD 1.0。
<xs:element name="docext" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="((T|t)(I|i)(F|f)(F|f))|((P|p)(D|d)(F|f))" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="imagetype" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="N" />
<xs:enumeration value="I" />
</xs:restriction>
</xs:simpleType>
</xs:element>
最佳答案
XSD 1.0 无法满足您所述的要求。
您的选项包括以下任一选项:
- 重新设计您的 XML。如果可能的话,这是更好的选择。类型 信息通常通过元素名称比通过元素名称更好地传达 元素值;这样的设计通常可以消除对 依赖约束超出了基本可以表达的范围 内容模型要求。
- 使用 XSD 1.1 断言。您可以使用 XPath 在以下位置指定约束:
docext
和imagetype
的共同祖先点。你会 如果您必须走这条路,则需要考虑比所示更多的 XSD。
关于xml - 使用 XSD 一个元素对另一个元素的依赖性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35625124/