Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何将xsd中的日期限制在1920-2000之间?_Xml_Xsd - Fatal编程技术网

Xml 如何将xsd中的日期限制在1920-2000之间?

Xml 如何将xsd中的日期限制在1920-2000之间?,xml,xsd,Xml,Xsd,我想限制用户输入1920-2000范围之外日期的年份部分。年份应该在这个间隔之间,我不想限制特定的日期,但是我希望日期的年份部分在这个范围内 在XSD中我应该做什么 现在我正在做这件事,但它产生了一个问题,XML没有正确验证 <xs:element name="dateOfBirth"> <xs:complexType> <xs:sequence> <xs:element name="Year">

我想限制用户输入1920-2000范围之外日期的年份部分。年份应该在这个间隔之间,我不想限制特定的日期,但是我希望日期的年份部分在这个范围内

在XSD中我应该做什么

现在我正在做这件事,但它产生了一个问题,XML没有正确验证

    <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.:-现在正在学习和提高。。