2013-11-15 28 views
1

我的XSD文件中有兩個日期元素。如何驗證XSD中的兩個日期

例如

<xs:element type="xs:date" name="DateFrom"/> 
<xs:element type="xs:date" name="DateTo"/> 

基本上,我想檢查DateFrom和DateTo之間的天數不超過7天。

我可以在我的C#XML驗證例程中執行此檢查,但想知道我是否也可以在Xsd中執行此操作,並且如果是這樣?

回答

2

在XSD 1.1中,您可以使用斷言來檢查這樣的約束;在XSD 1.0中,你運氣不好。

[附錄]:另一位讀者要求一個工作示例。這是一個。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified"> 
    <xs:element name="DateRange"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="DateFrom" type="xs:date"/> 
     <xs:element name="DateTo" type="xs:date"/> 
     </xs:sequence> 
     <xs:assert test="DateFrom lt DateTo"/> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

此模式文檔描述的模式接受以下文檔。

<DateRange> 
    <DateFrom>2011-01-01</DateFrom> 
    <DateTo>2012-01-01</DateTo> 
</DateRange> 

它拒絕以下文件。

<DateRange> 
    <DateFrom>2011-01-01</DateFrom> 
    <DateTo>2010-01-01</DateTo> 
</DateRange>