XSD 1.1断言比较日期

时间:2017-03-09 09:00:48

标签: datetime timezone xpath-2.0 xsd-1.1

我写了一些断言来比较XSD 1.1中的日期对,但它们都不起作用。

示例:

INPUT

self

XSD 1.1断言:

<Records content-date="2006-05-04T18:13:51.0Z">

<Record  issuance-date="2006-05-04T18:13:51.0Z"
     last-update-date="2006-05-04T18:13:51.0Z"
     last-renewal-date="2006-05-04T18:13:51.0Z" >
</Record>

<Record issuance-date="2006-05-04T18:13:51.0Z"
     last-update-date="2006-05-04T18:13:51.0Z" last-renewal-date="2006-05-04T18:13:51.0Z">
    <Event event-date="2006-05-04T18:13:51.0Z" event-type="INITIAL_REGISTRATION">
    </Event>
  </Record>
 </Records>

<xs:assert id="plausibility-issuance-date-plausibility"
        test="@issuance-date &lt; ./@content-date"/>

阅读了dateTime和timezone表示,我有点不知所措。

任何人都可以告诉我:

  • 错误在哪里(我希望它能清楚我想要比较的内容)?
  • 是否有一组简单的例子可以让您更容易理解?

1 个答案:

答案 0 :(得分:1)

您的 xs:assert XPATH 不正确,因为它假设 issuance-date { {1}} 是同一元素的属性,但它们不是。

您可以使用此示例 XPATH 的断言来表示“没有记录 content-date 大于或等于比其父 issuance-date “:

content-date

示例XSD:

empty(Record[@issuance-date ge ../@content-date])