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>