2017-03-09 1 views
2

XSD 1.1에서 날짜 쌍을 비교하는 많은 어설 션을 작성했지만 그 중 아무 것도 작동하지 않습니다.XSD 1.1 어설 션 날짜 비교

예 :

INPUT

<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([email protected])"/> 

이 날짜 _ 시간 및 시간대 표현에 읽어 데 좀 해요 압도 당했다.

는 사람이 말해 주시겠습니까 :

  • 경우 오류가 (나는 그것이 내가 비교하기 위해 노력하고있어 분명 희망)인가?
  • 쉽게 따라갈 수있는 이런 종류의 간단한 예제가 있습니까?

답변

1

귀하의 XS는 : issuance-datecontent-date이 같은 요소의 속성 것을 assumming 때문에XPATH는 정확하지을 주장하지만, 그들은하지 않습니다.

당신은 "부모 content-date보다 issuance-date 크거나 같은 어떠한 기록있다"고 말을이 샘플 XPATH으로 어설 션을 사용할 수 있습니다

:

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> 
+0

답변을 선택하기 전에이를 확인하겠습니다.하지만 시간대 비교는 어떨까요? 어떤 생각이 잘못 됐습니까? – Michael

+1

비슷합니다. 표준 시간대 비교 테스트에 문제가있는 것 같아서 솔루션이 비슷해야합니다. 나는'empty ((date time-from-dateTime (@ issuance-date)! = timezone-from-dateTime (../@ content-date))')'작동해야하지만, 지금은 테스트 할 수 없다고 생각한다. – sergioFC