如果 xsd 中的元素定义如下:
<element name="test" minOccurs="0" maxOccurs="1" type="string" />
这是否意味着: 1. 标签可以完全删除XML并且仍然不会出现任何验证错误 或者 2.标签可以为空/空白,没有任何值
这是定义强制/可选元素的最佳方法/实践。
谢谢 西宁
最佳答案
两者。
元素test
可以省略。
元素 test
可以与任何字符串内容一起出现一次,包括空字符串:
<test/>
最佳实践?看你想表达什么。
minOccurs="0"
与结构有关。
如果你想表达数据级别的约束,你可以这样做:
<xs:element name="test" minOccurs="0" type="tns:nonEmptyString"/>
<xs:simpleType name="nonEmptyString">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
因此,请考虑您的约束是否与结构(项目是否存在)或数据(项目是否具有空值)有关,并相应地应用。还有 nillable,但我什至不会开始讨论它们。
关于必填或可选字段的 XSD 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28539139/