xsd:choice是需要一个还是另一个,或者是否也允许?

时间:2016-01-07 10:20:23

标签: xml xsd xsd-validation xml-validation

我有两种复杂的类型,XML中的元素可以采用这两种类型中的任何一种。有时,我知道元素可以采用哪种类型。因此,我在XSD中定义。

RowNumber ------------- ID   ------- value  
1   ------------------- 001  -------   1  
2   ------------------- 001  -------     1  
3   ------------------- 001  -------     1  
4   ------------------- 002  -------     1  
5   ------------------- 002  -------     0  
6   ------------------- 003  -------     1  
7   ------------------- 003  -------     1  
8   --------------------004 -------      1  
9  -------------------- 004   -------    0   
10  ------------------- 004   -------    1     

但有时我没有,所以我创建了另一种类型,如<xs:complexType name="A"> <xs:sequence> <xs:element name="one" type="onetype" minOccurs="0" maxOccurs="1" /> <xs:element name="two" type="twotype" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="three" type="country" minOccurs="0" maxOccurs="1" /> </xs:sequence> <xs:attribute name="oneattr" type="xs:string" /> <xs:attribute name="twoattr" type="xs:string" /> </xs:complexType> <xs:complexType name="B"> <xs:sequence> <xs:element name="four" type="fourtype" minOccurs="0" maxOccurs="1" /> </xs:sequence> <xs:attribute name="fourattr" type="xs:string" /> </xs:complexType>

AorB

所以我的问题是:<xs:complexType name="AorB"> <xs:choice> <xs:sequence> <xs:element name="one" type="onetype" minOccurs="0" maxOccurs="1" /> <xs:element name="two" type="twotype" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="three" type="country" minOccurs="0" maxOccurs="1" /> </xs:sequence> <xs:sequence> <xs:element name="four" type="fourtype" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:choice> <xs:attribute name="oneattr" type="xs:string" /> <xs:attribute name="twoattr" type="xs:string" /> <xs:attribute name="fourattr" type="xs:string" /> </xs:complexType> 内的两个序列中,当验证XML时,如果XML包含来自两个序列的元素或仅包含一个元素,它是否验证为真?

1 个答案:

答案 0 :(得分:1)

type.nil?需要一个或另一个

  

验证XML时,如果XML包含,它是否验证为true   两个序列中的元素或只有一个?

xsd:choice上的@minOccurs默认值为xsd:choice,这意味着子内容模型中的一个或另一个,而不是两者都适用。如果为添加1 minOccurs="大于"等于{ {1}},然后允许多次出现其子项。但请注意,第二次出现可能是从第一次出现时选择的子项的重复。