xsd中可为空的布尔字段

时间:2017-01-13 20:19:19

标签: xml xsd

如何创建允许truefalse(NULL)值的字段?我目前正在做的是:

<xs:element name="IsPromotional" minOccurs="0">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:pattern value="(true|false)?" />
        </xs:restriction>
    </xs:simpleType>
</xs:element>

而不是:

<xsd:element name="IsPromotional" type="xsd:boolean" minOccers="0" />

因为IsPromotional也接受空值。如何使自定义xsd字段允许true,false或''?

1 个答案:

答案 0 :(得分:2)

我想当你写(NULL)时,你的意思是空字符串?

这取决于您使用架构的内容。如果它仅用于验证,那么在允许&#34; true&#34;的字符串字段之间没有任何有意义的区别。和&#34;假&#34;和一个布尔字段,允许&#34; true&#34;和&#34; false&#34;,在这种情况下,带有枚举值的字符串字段(&#34; true&#34;,&#34; false&#34;,&#34;&#34;)工作得很好。但如果它也用于数据输入(例如JAXB或模式感知的XSLT / XQuery),那么最好将其作为布尔值。

我首选的方法是定义一个类型,其中包含minLength 0,maxLength 1的布尔列表。

                           

(这也允许0和1,你可以通过子类型化xs:boolean来阻止)