我需要验证以下元素: -
<xs:element name="IsBucketRequired" type="xs:unsignedInt"/>
需要验证: -
1. Allow 1,0 [Pattern]
2. Allow Empty value.
我尝试使用以下代码: -
<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>
任何人都请告诉我如何为我的要求编写验证码。
谢谢
答案 0 :(得分:0)
嗯,你的第一次尝试(nillabel =&#34; true&#34;)应该有效。你只需要表达XML实例中的元素为空(=&#34; null&#34;)xsi:nil =&#34; true&#34;属性。
<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>
第三个选项可以使用像
这样的联合来定义<?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>