如何定义xsd限制xs:enumeration来同时接受空元素?
我有一个xsd模式,它定义了只接受F或M值的如何定义xsd限制xs:enumeration来同时接受空元素?,xsd,Xsd,我有一个xsd模式,它定义了只接受F或M值的Gender元素,但我希望它也接受空的元素。如何修复以下模式 ... <xs:simpleType name="Gender"> <xs:restriction base="xs:string"> <xs:enumeration value="M" /> <xs:enumeration value="F" />
Gender
元素,但我希望它也接受空的
元素。如何修复以下模式
...
<xs:simpleType name="Gender">
<xs:restriction base="xs:string">
<xs:enumeration value="M" />
<xs:enumeration value="F" />
</xs:restriction>
</xs:simpleType>
...
。。。
...
您是否尝试添加:
<xs:enumeration value="" />
?
然而,这是不好的做法。如果希望在实例文档中表示此信息,则应完全省略
元素,而不是提供一个空元素。此外,还不清楚
是什么意思-这是指“无性别”还是“未知性别”?如果这是其中一种可能性,也许你应该将其添加到生成中:
<xs:simpleType name="Gender">
<xs:restriction base="xs:string">
<xs:enumeration value="M" />
<xs:enumeration value="F" />
<xs:enumeration value="unknown" />
</xs:restriction>
</xs:simpleType>
您可以改用模式:
<xs:simpleType name="Gender">
<xs:restriction base="xs:string">
<xs:pattern value="(M|F)?"/>
</xs:restriction>
</xs:simpleType>
我同意你的解决方案,但我认为它完全有效。空字符串是一个字符串值,它恰好是空的。我认为
的含义非常清楚。这意味着没有性别。缺少性别元素意味着你没有说明性别是什么(也可能意味着未知)。这与提供空值非常不同,当您生成java客户机时,模式不会生成为枚举。因此,您必须从外部了解属性值。