xml - XSD 中可以接受空或只有一个值的数据类型是什么?
问题描述
在 XSD 文件中,我有一个具有两位数的元素,price="90"
但我希望它也接受空的。XSD 中要指定的数据类型是什么?!
解决方案
我首选的方法是将元素定义为具有列表类型:
<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
在元素是空的时候标记空实例似乎没有任何用处;它不适用于属性。
推荐阅读
- javascript - 如何在 Laravel Blade 模板中使用 Vue cdn 版本?
- javascript - 如何从 Firebase Firestore 检索数组并将其输出到 HTML 表中
- android - 如何避免缩放(捏)触发 swipeToRefresh 布局
- linux-kernel - 容器内的内存映射文件
- github - 您可以将文件夹作为推送触发的 github 操作的一部分而忽略第二个触发器吗?
- java - Selenium TestNG - 点击它所包含的 webtable 元素
- python - 将分数输入 a/b / c/d 分配给 x = a/b, y = c/d sign= /。Python
- hibernate - 使用 uuid id 生成器的 Grails:不是很随机
- assembly - 在 MIPS 汇编中,如果操作码以 000000 开头,我们如何知道它所指的函数是什么?
- javascript - 使用 JS 循环添加/删除 CSS 类