XSD断言以属性的存在为条件

时间:2014-07-21 18:13:12

标签: xml testing xsd assert

我正在寻找以下案例的解决方案:

假设您在XSD 1.1中有2个属性:" startDate"和" endDate"。 假设那些是可选的,你需要检查它们是否存在。以下xsd应该有效:

<complexType name="exampleType">
    <attribute name="startDate" type="date" use="optional" />
    <attribute name="endDate" type="date" use="optional" />
    <assert test="(exists(@startDate) = exists(@endDate))"/>
</complexType>

我需要的是检查startDate是否小于或等于endDate只有在提供它们的情况下。我试过这些断言:

<assert test="(exists(@startDate) = exists(@endDate)) and (@startDate le @endDate)"/>

<assert test="exists(@startDate) = (@startDate le @endDate)" /> 

但它不起作用,当没有任何属性存在时它会提供false,因为尝试执行比较。

在应用与Test的比较之前,是否可以检查两个属性是否存在? 有可能测试先前测试条件下的东西是非常有趣的。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

尝试:

<assert test="not(@endDate lt @startDate)"/>