我正在解析XML文档,我想确保每个元素<element2>
前面都有<element1>
,条件是它们之间没有<element3>
。
我知道如何使用XPath做到这一点,但我无法想办法用XSD做到这一点。有办法吗?我是否使用正确的工具来完成工作,或者我应该用脚本“验证”它?
答案 0 :(得分:2)
通常将此表达为元素的内容模型的约束,该元素是element1,element2和element3的父元素。
通常你会说在element1和element3之间会出现哪些元素,但如果它确实是element3之外的任何元素,那么在XSD 1.1中你可以将内容模型定义为
strtod
答案 1 :(得分:0)
这可能有效:
<xs:element name="container">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="element1"/>
<xs:element name="element2"/>
<xs:element name="element3"/>
</xs:choice>
<xs:assert test="generate-id(element2/preceding-sibling::element1[1][following-sibling::element3[1])
eq generate-id(element2/following-sibling::element3[1])" />
</xs:complexType>
</xs:element>