具有可选子元素的默认 XML 序列(或全部)是否必须至少有一个子元素?
No...
虽然两者Child1
and Child2
是可选的,Element1
必须在
至少有一个孩子符合上述架构
默认值为minOccurs
is 1
,所以你的假设是正确的xsd:sequence
被限制出现一次。然而,xsd:sequence minOccurs="1"
只要其子级的出现约束满足一次,就满足。当所有子项出现约束都满足时minOccurs="0"
,允许有一个空序列。
所以,<Element1/>
是有效的,即使没有任何Child1
or Child2
儿童元素。
See also
- XML 架构 minOccurs / maxOccurs 默认值 https://stackoverflow.com/questions/4821477/xml-schema-minoccurs-maxoccurs-default-values
- XSD 中 和 之间的区别? https://stackoverflow.com/questions/36286056/the-difference-between-all-sequence-choice-and-group-in-xsd
更多示例:
XSD 与xs:sequence minOccurs="0"
<xs:element name="r">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="a"/>
<xs:element name="b"/>
</xs:sequence>
</xs:complexType>
</xs:element>
有效的 XML: <r/>
and <r><a/><b/></r>
XSD 与xs:sequence minOccurs="1"
(默认)
<xs:element name="r">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="a"/>
<xs:element name="b"/>
</xs:sequence>
</xs:complexType>
</xs:element>
有效的 XML: <r><a/><b/></r>
XSD 与xs:sequence minOccurs="2"
<xs:element name="r">
<xs:complexType>
<xs:sequence minOccurs="2" maxOccurs="2">
<xs:element name="a"/>
<xs:element name="b"/>
</xs:sequence>
</xs:complexType>
</xs:element>
有效的 XML: <r><a/><b/><a/><b/></r>