XSD架构 - 复选框的序列和列表

时间:2013-09-04 12:03:05

标签: xml xsd

我对XSD schema感到很困惑。我需要覆盖复选框(即每个元素有多个值)。见下文:

[1]

<xsd:element name="Parent">
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element maxOccurs="2" minOccurs="0" name="Children">
    <xsd:complexType>
     <xsd:sequence>
      <xsd:element name="Child" type="xsd:string">
      .
      .

这意味着我们可以:

<parent>
 <children>
  <child />
 </children> 
 <children>
  <child />
 </children> 
</parent>

现在可以使用 <xsd:list> 来定义和实现相同的目标吗? 像这样:

<xsd:element name="Parent">
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element name="Children">    

    <xsd:simpleType>
     <xsd:list>
      <xsd:simpleType>
       <xsd:restriction base="xsd:string">    
        <xsd:enumeration value="Child 1"/>
        <xsd:enumeration value="Child 2"/>    
       </xsd:restriction>
      </xsd:simpleType>
     </xsd:list>
    </xsd:simpleType>

   </xsd:element>

所以,总的来说,我在xsd:listminOccurs/maxOccurs之间有点困惑。

1 个答案:

答案 0 :(得分:1)

xsd:list元素定义了可能的值,而不是可能的子元素 - 您的第二个示例定义了一个元素Children,该元素具有作为有效内容的空格分隔的字符串列表Child 1Child 2 - 即这样的XML:

<Parent>
   <Children>Child 1</Children>
 </Parent>

<Parent>
   <Children>Child 2</Children>
 </Parent>

<Parent>
   <Children>Child 1 Child 2</Children>
 </Parent>

另请注意,使用xsd:list定义的列表中的值是以空格分隔的,因此它们不应包含空格。