<xs:element name="EmpVisionPlanExist" minOccurs ="0">
<xs:simpleType>
<xs:union memberTypes="INT EmptyStrings "/>
</xs:simpleType>
</xs:element>
<xs:simpleType name="Int">
<xs:restriction base="xs:integer">
<xs:pattern value="[01]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="EmptyStrings">
<xs:restriction base="xs:token">
<xs:enumeration value=""/>
</xs:restriction>
</xs:simpleType>
如果我将xml作为
<EmpVisionPlanExist></EmpVisionPlanExist>
在xsd验证中是合适的。 但我希望它被允许。
答案 0 :(得分:0)
如果您定义EmptyStrings
这样的类型,它应该有效:
<xs:simpleType name="EmptyStrings">
<xs:restriction base="xs:string">
<xs:maxLength value="0" />
</xs:restriction>
</xs:simpleType>
但是,允许非字符串简单类型元素为空的正统方法是使元素可以为空:
<xs:element name="EmpVisionPlanExist" type="INT" nillable="true" />
如果你选择这条路线,你需要在空白的无效元素中加入xsi:nil
属性:
<EmpVisionPlanExist xsi:nil="true"></EmpVisionPlanExist> <!-- valid -->
<EmpVisionPlanExist></EmpVisionPlanExist> <!-- not valid -->
xsi
这里指的是命名空间http://www.w3.org/2001/XMLSchema-instance
。
最后,如果您要定义一个只能包含值0
或1
的类型,我认为&#34; Bit&#34;是一个比它更好的名字&#34; Int&#34;。我也想知道你为什么不使用布尔类型,这是一种标准类型,并允许值true
,false
,0
和1
。
答案 1 :(得分:0)
如果我通过s / INT / Int /更正你的模式并删除minOccurs =“0”,那么你的实例是有效的(由Saxon验证)。你得到了什么错误信息,以及你使用的模式处理器?