XML 架构:在 xs:sequence 中使用 minOccurs 和 maxOccurs
XML Schema: usage of minOccurs and maxOccurs within xs:sequence
给定一个有效的 XSD:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="personinfo">
<xs:complexType>
<xs:sequence maxOccurs="2">
<xs:element name="firstname" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
对于针对此 XSD 的有效 XML,<personinfo>
应包含最多 2 个 <firstname>
后跟 <lastname>
的序列。我将 minOccurs
和 maxOccurs
添加到 firstname
。对于下面的 XML 文件:
<personinfo>
<firstname>lalal</firstname>
<lastname>fwfw</lastname>
<firstname>lalal</firstname>
<lastname>fwfw</lastname>
</personinfo>
为什么到 validator 仍然有效?不要 minOccurs
和 maxOccurs
只是用 xs:sequence
覆盖 maxOccurs
?
Don't minOccurs
and maxOccurs
just overwrite the maxOccurs
by xs:sequence
?
不,对封闭 xs:sequence
的出现限制意味着组本身可以共同出现或按指定重复。对包含的单个元素的出现约束单独影响这些元素,而不管它们的集合如何出现。
对于您的 XSD,可以有一个或两个序列,每个序列带有 firstname
(可选)和 lastname
(必需)。
给定一个有效的 XSD:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="personinfo">
<xs:complexType>
<xs:sequence maxOccurs="2">
<xs:element name="firstname" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
对于针对此 XSD 的有效 XML,<personinfo>
应包含最多 2 个 <firstname>
后跟 <lastname>
的序列。我将 minOccurs
和 maxOccurs
添加到 firstname
。对于下面的 XML 文件:
<personinfo>
<firstname>lalal</firstname>
<lastname>fwfw</lastname>
<firstname>lalal</firstname>
<lastname>fwfw</lastname>
</personinfo>
为什么到 validator 仍然有效?不要 minOccurs
和 maxOccurs
只是用 xs:sequence
覆盖 maxOccurs
?
Don't
minOccurs
andmaxOccurs
just overwrite themaxOccurs
byxs:sequence
?
不,对封闭 xs:sequence
的出现限制意味着组本身可以共同出现或按指定重复。对包含的单个元素的出现约束单独影响这些元素,而不管它们的集合如何出现。
对于您的 XSD,可以有一个或两个序列,每个序列带有 firstname
(可选)和 lastname
(必需)。