Xml 如何将xsd中的日期限制在1920-2000之间?
我想限制用户输入1920-2000范围之外日期的年份部分。年份应该在这个间隔之间,我不想限制特定的日期,但是我希望日期的年份部分在这个范围内 在XSD中我应该做什么 现在我正在做这件事,但它产生了一个问题,XML没有正确验证Xml 如何将xsd中的日期限制在1920-2000之间?,xml,xsd,Xml,Xsd,我想限制用户输入1920-2000范围之外日期的年份部分。年份应该在这个间隔之间,我不想限制特定的日期,但是我希望日期的年份部分在这个范围内 在XSD中我应该做什么 现在我正在做这件事,但它产生了一个问题,XML没有正确验证 <xs:element name="dateOfBirth"> <xs:complexType> <xs:sequence> <xs:element name="Year">
<xs:element name="dateOfBirth">
<xs:complexType>
<xs:sequence>
<xs:element name="Year">
<!--Restriction applied : Year value can lie between 1920-2000-->
<xs:simpleType>
<xs:restriction base="xs:gYear">
<xs:minInclusive value="1920"/>
<xs:maxInclusive value="2000"/>
</xs:restriction>
</xs:simpleType>
<!--Restriction applied : Year value can lie between 1920-2000-->
</xs:element>
<xs:element name="-" type="xs:char"/>
<xs:element name="Month">
<!--Restriction applied : Month value can lie between 1-12-->
<xs:simpleType>
<xs:restriction base="xs:gMonth">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="12"/>
</xs:restriction>
</xs:simpleType>
<!--Restriction applied : Month value can lie between 1-12-->
</xs:element>
<xs:element name="-" type="xs:char"/>
<xs:element name="Day">
<!--Restriction applied : Day value can lie between 1-31-->
<xs:simpleType>
<xs:restriction base="xs:gDay">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="31"/>
</xs:restriction>
</xs:simpleType>
<!--Restriction applied : Day value can lie between 1-31-->
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
可能需要添加整数的基类型,如下所示:
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
否则,您可能正在进行ascii比较,而不是整数比较。可能需要添加整数的基本类型,如下所示:
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
否则,您可能正在进行ascii比较,而不是整数比较。您会感到非常困惑 您对Wellens的回复表明您的实例数据的格式为1988-01-24。这是一个xs:date类型的值。在模式中,必须将元素描述为简单类型,而不是结构为子元素序列的复杂类型。如果是在形式上
<DOB><year>1988</year><month>01</month><day>24</day></DOB>
然后您可以使用一个复杂类型,它的定义是一个由gYear类型的元素、gMonth类型的元素和gDay类型的元素组成的序列。但我不认为你的数据是这样的
当您试图定义一个名为-,的元素时,您的困惑尤其明显。这甚至不是有效的XML元素名,更不用说出现在数据中的元素名了
那么,如何将xs:date限制在1920-01-01到2000-12-31之间呢?答案是使用
<xs:simpleType>
<xs:restriction base="xs:date">
<xs:minInclusive value="1920-01-01"/>
<xs:maxInclusive value="2000-12-31"/>
<xs:pattern value=".{10}"/>
</xs:restriction>
</xs:simpleType>
模式将该值限制为10个字符的字符串。这可以防止添加时区,例如1920-01-01Z。您会感到非常困惑 您对Wellens的回复表明您的实例数据的格式为1988-01-24。这是一个xs:date类型的值。在模式中,必须将元素描述为简单类型,而不是结构为子元素序列的复杂类型。如果是在形式上
<DOB><year>1988</year><month>01</month><day>24</day></DOB>
然后您可以使用一个复杂类型,它的定义是一个由gYear类型的元素、gMonth类型的元素和gDay类型的元素组成的序列。但我不认为你的数据是这样的
当您试图定义一个名为-,的元素时,您的困惑尤其明显。这甚至不是有效的XML元素名,更不用说出现在数据中的元素名了
那么,如何将xs:date限制在1920-01-01到2000-12-31之间呢?答案是使用
<xs:simpleType>
<xs:restriction base="xs:date">
<xs:minInclusive value="1920-01-01"/>
<xs:maxInclusive value="2000-12-31"/>
<xs:pattern value=".{10}"/>
</xs:restriction>
</xs:simpleType>
模式将该值限制为10个字符的字符串。这可以防止添加时区,例如1920-01-01Z。您可能以错误的方式注意到。我有一个问题要限制日期的年份部分,而DOB格式的XML文档是:1988-01-24您可能注意到了错误的方式。我有一个问题要限制日期的年份部分,DOB格式的XML文档是:1988-01-24谢谢Michael..是的,可能是因为我是XSD的新bie.:-现在正在学习和改进..谢谢Michael..是的,可能是因为我是XSD的新bie.:-现在正在学习和提高。。