2016-06-22 63 views
1

給出一個有效的XSD:XML模式:XS內的minOccurs和maxOccurs的用法:序列

<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>應包含<firstname>最多2序列之後<lastname>。我加minOccursmaxOccursfirstname。對於以下XML文件:

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

爲什麼它仍然有效validator?不要minOccursmaxOccurs只是通過xs:sequence覆蓋maxOccurs

回答

0

不要minOccursmaxOccurs只是覆蓋maxOccurs通過xs:sequence

不,封閉xs:sequence的出現限制意味着該組本身可以共同出現或重複指定。包含單個元素的出現約束會獨立影響這些元素,而不管它們如何收集它們。

對於您的XSD,可以有一個或兩個序列,每個序列都有firstname(可選)和lastname(必需)。