在XSD中可以接受空或只有一个值的数据类型是什么



在XSD文件中,我有一个具有两位数price="90"的元素,但我希望它也接受空。XSD中要指定的数据类型是什么?!

您可以使元素为nillable。

<xs:element name="Price"
nillable="true">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:totalDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

我的首选方法是将元素定义为具有列表类型:

<xs:simpleType name="twoDigitNumber">
<xs:restriction base="xs:int">
<xs:totalDigits value="2"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="listOfTwoDigitNumbers">
<xs:list itemType="twoDigitNumber"/>
</xs:simpleType>

<xs:simpleType name="optionalTwoDigitNumber">
<xs:restriction base="listOfTwoDigitNumbers">
<xs:maxLength value="1"/>
</xs:restriction>
</xs:simpleType>

另一种流行的方法是定义一个联合类型,其成员类型为(a(两位整数,(b(maxLength=0的字符串。这两种方法在验证方面实现了相同的效果,但如果您使用数据绑定技术或模式感知XPath表达式,它们的工作方式会有所不同。

我不是nillable/xsi:nil的超级粉丝。当元素很明显是空的时,要求人们用xsi:nil标记空实例似乎没有任何用处;而且它对属性不起作用。

相关内容

最新更新