【问题标题】:How do I validate two dates in XSD如何验证 XSD 中的两个日期
【发布时间】:2013-11-15 13:25:46
【问题描述】:
我的 XSD 文件中有两个日期元素。
例如
<xs:element type="xs:date" name="DateFrom"/>
<xs:element type="xs:date" name="DateTo"/>
基本上,我想检查 DateFrom 和 DateTo 之间的天数是否不超过 7 天。
我可以在我的 C# XML 验证例程中执行此检查,但想知道我是否也可以在 Xsd 中执行此操作,如果可以,如何操作?
【问题讨论】:
标签:
c#
xml
validation
date
xsd
【解决方案1】:
在 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>