如何定义xsd限制xs:enumeration来同时接受空元素?

如何定义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" />

我有一个xsd模式,它定义了只接受F或M值的
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客户机时,模式不会生成为枚举。因此,您必须从外部了解属性值。