如何创建允许true
,false
或(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或''?
答案 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来阻止)