XML Schema:在xs:sequence中使用minOccurs和maxOccurs

时间:2016-06-22 16:49:16

标签: xml xsd xsd-validation xml-validation

给出有效的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>。我将minOccursmaxOccurs添加到firstname。对于下面的XML文件:

<personinfo>
  <firstname>lalal</firstname>
  <lastname>fwfw</lastname>
  <firstname>lalal</firstname>
  <lastname>fwfw</lastname>
</personinfo>

validator为什么它仍然有效?不要minOccursmaxOccurs只是maxOccurs覆盖xs:sequence

1 个答案:

答案 0 :(得分:0)

  

不要minOccursmaxOccurs只是maxOccurs覆盖xs:sequence吗?

不,封闭xs:sequence的出现限制意味着该组本身可以一起出现或按指定重复出现。包含单个元素的出现约束单独影响这些元素,而与它们的集合可能如何发生无关。

对于您的XSD,可以有一个或两个序列,每个序列都有firstname(可选)和lastname(必填)。