Validation 如何在xsd中使用允许模式0,1和空值验证xs:unsignedInt?

Validation 如何在xsd中使用允许模式0,1和空值验证xs:unsignedInt?,validation,xsd,xsd-validation,Validation,Xsd,Xsd Validation,我需要验证以下元素:- <xs:element name="IsBucketRequired" type="xs:unsignedInt"/> 我尝试使用以下代码:- <xs:element name="IsBucketRequired" nillable="true" minOccurs="1"> <xs:simpleType> <xs:restriction base="xs:unsignedInt">

我需要验证以下元素:-

 <xs:element name="IsBucketRequired" type="xs:unsignedInt"/>
我尝试使用以下代码:-

    <xs:element name="IsBucketRequired" nillable="true"  minOccurs="1">
      <xs:simpleType>
        <xs:restriction base="xs:unsignedInt">
          <xs:pattern value="[1,0]"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

上述方法正确验证1,0,但不允许空值

再次尝试相同的验证,但不起作用

  <xs:element name="IsBucketRequired">
      <xs:simpleType>
        <xs:union>
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:length value="0"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:unsignedInt">
              <xs:pattern value="[1,0]"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:element>

请告诉我如何为我的需求编写验证代码

谢谢

好吧,您的第一次尝试(nillable=“true”)应该会成功。您只需要通过xsi:nil=“true”属性来表示XML实例中的元素为空(=“null”)

<IsBucketRequired xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />

或者,您可以将简单类型定义为xs:string的限制

<xs:simpleType name="zeroOrOneOrEmpty">
    <xs:restriction base="xs:string">
        <xs:enumeration value="" />
        <xs:enumeration value="1" />
        <xs:enumeration value="0" />
    </xs:restriction>
</xs:simpleType>

第三种选择是使用类似于union的定义

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:simpleType name="zeroOrOne">
        <xs:restriction base="xs:unsignedInt">
            <xs:enumeration value="0" />
            <xs:enumeration value="1" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="emptyString">
        <xs:restriction base="xs:string">
            <xs:length value="0" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="zeroOrOneOrEmpty">
        <xs:union memberTypes="zeroOrOne emptyString" />
    </xs:simpleType>

    <xs:element name="IsBucketRequired" type="zeroOrOneOrEmpty" />

</xs:schema>


我无法在XML文件中编辑。我试试你的第二个选择。但它对我不起作用。您需要将示例xml附加到您的问题中。否则就不可能找到问题。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:simpleType name="zeroOrOne">
        <xs:restriction base="xs:unsignedInt">
            <xs:enumeration value="0" />
            <xs:enumeration value="1" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="emptyString">
        <xs:restriction base="xs:string">
            <xs:length value="0" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="zeroOrOneOrEmpty">
        <xs:union memberTypes="zeroOrOne emptyString" />
    </xs:simpleType>

    <xs:element name="IsBucketRequired" type="zeroOrOneOrEmpty" />

</xs:schema>