如何让root元素只包含某些类型的多个子元素

时间:2012-11-18 20:33:49

标签: xsd

我想编写一个包含名为appointment_list的根节点的XML文件。此根节点应包含多个类型为appointment_type的子元素。

我已经编写了下面的架构但是我得到了错误:

  

s4s-elt-must-match.1:'appointmentments_list'的内容必须匹配   (注释?,(simpleType | complexType)?,(unique | key | keyref)*))。   从:element。

开始发现了一个问题

我知道我应该使用它在消息中列出的其中一个令牌,但我不知道哪一个。我是XML的新手。我想要的是,appointment_list根元素包含多个子约会元素元素。我怎么做。谢谢:))

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema">

    <xs:simpleType name="priority">
        <xs:restriction base="xs:string">
            <xs:enumeration value="high"/>
            <xs:enumeration value="normal"/>
            <xs:enumeration value="low"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="appointment_type">
        <xs:sequence>
            <xs:element name="title" type="xs:string" minOccurs="1" />
            <xs:element name="description" type="xs:string" minOccurs="0"/>
            <xs:element name="appointment_date" type="xs:date" minOccurs="1"/>
            <xs:element name="appointment_time" type="xs:time" minOccurs="1"/>
            <xs:element name="appointment_priority" type="priority" minOccurs="0"/>
            <xs:element name="duration" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:integer">
                        <xs:minInclusive value="0"/>
                        <xs:maxInclusive value="24"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="id" type="xs:positiveInteger" use="required"/>
    </xs:complexType>   

    <xs:element name="appointments_list">
            <xs:element name="appointment" type="appointment_type" maxOccurs="unbounded" />
    </xs:element>
</xs:schema>

1 个答案:

答案 0 :(得分:3)

包含元素的<xs:element>必须包含<xs:complexType>(或type属性,其值为复杂类型,例如 <appointment> 元素)。

<xs:complexType>必须有一个群组,例如<xs:sequence>

<xs:element name="appointments_list">
  <xs:complexType>   
    <xs:sequence>   
      <xs:element name="appointment" type="appointment_type" maxOccurs="unbounded" />
    </xs:sequence>   
  </xs:complexType>   
</xs:element>