我的XML结构如下所示:
<myElement>
<start>0</start>
</myElement>
<myElement>
<start>5</start>
</myElement>
<myElement>
<start>7</start>
</myElement>
<myElement>
<start>14</start>
</myElement>
现在我的验证规则如下:每个“myElement”元素都包含一个“start”元素。该元素的整数值不能小于之前的“myElement” - &gt; “开始”。例如,这将是无效的:
<myElement>
<start>14</start>
</myElement>
<myElement>
<start>7</start>
</myElement>
这样的规则如何看作xs:assert
- 元素?
答案 0 :(得分:2)
是的,有可能。这样的断言应该符合你的需要:
<xs:assert test="max(preceding::start) < number(.) or empty(preceding::start)"></xs:assert>
在第一部分中,检查前面的最大start
值是否仍然低于正在检查的当前值。
第二部分(or empty(preceding::start)
)只是为了克服第一部分的失败,因为第一个start
标签不会提供任何要比较的值。
它应该以相应的方式添加到您的关联架构中 - 将complexType
包裹为myElement
的内容模型:
<xs:complexType>
<xs:sequence>
<xs:element name="start" type="xs:integer" />
</xs:sequence>
<xs:assert test="max(preceding::start) < number(.) or empty(preceding::start)"></xs:assert>
</xs:complexType>