XSD 1.1 утверждает, чтобы сравнить даты

Я написал несколько утверждений для сравнения пар дат в 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>

XSD 1.1 утверждает:

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

а также

<xs:assert id="plausibility-file-and-record-timezones"
        test="timezone-from-dateTime(Record/@issuance-date) = timezone-from-dateTime(REcords@content-date)"/>

Прочитав о представлении даты и времени и часового пояса, я немного ошеломлен.

Может кто-нибудь, пожалуйста, скажите мне:

  • где ошибки (надеюсь понятно, что я пытаюсь сравнить)?
  • Есть ли набор простых примеров такого рода, которые облегчают следовать?

1 ответ

Ваш xs: assert XPATH неверен, так как предполагает, что issuance-date а также content-date являются атрибутами одного и того же элемента, но это не так.

Вы можете использовать assert с этим примером XPATH, чтобы сказать, что "нет записи с issuance-date больше или равно, чем его родитель content-date ":

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

Пример XSD:

<xs:element name="Records">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Record" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:attribute name="issuance-date" type="xs:dateTime"/>
                    <xs:attribute name="last-update-date" type="xs:dateTime"/>
                    <xs:attribute name="last-renewal-date" type="xs:dateTime"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="content-date" type="xs:dateTime"/>
        <xs:assert id="plausibility-issuance-date-plausibility" test="empty(Record[@issuance-date ge ../@content-date])"/>
    </xs:complexType>
</xs:element>
Другие вопросы по тегам