XSD断言空调通过属性的存在(XSD assertions conditioned by the e

2019-10-20 12:27发布

我要寻找一个解决方案,下面的情况:

假设你有在XSD 1.1 2个属性:“的startDate”和“结束日期”。 再假设这些都是可选的,您需要检查,如果这些都存在。 以下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)" /> 

但它不工作,当没有属性的存在,它提供了一个假的,因为试图执行的比较。

是否有可能检查两个属性存在前应用与测试的比较? 这将是非常有趣的,一定要考的东西通过前面的测试条件的可能性。

任何帮助将是非常赞赏。

Answer 1:

尝试:

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


文章来源: XSD assertions conditioned by the existence of attributes