如何在XSD中将许多complexType添加到相同的元素类型中?

时间:2017-03-15 08:07:12

标签: xml xsd

如何在XSD文件中将多个compelxType添加到相同的Element类型中?如下例所示:

<xs:element name="InboundFlight" type="eInboundFlight"
<xs:complexType name="Flight">
    <xs:sequence>
        <xs:element  name="aircraftIdentification" type="xs:int"/>      
        <xs:element  name="iataFlightDesignator" type="xs:string"/>
    </xs:sequence>     
</xs:complexType>

<xs:complexType name="Aircraft">     
    <xs:sequence>
        <xs:element  name="aircraftRegistration" type="xs:int"/>      
        <xs:element  name="iataAircraftType" type="xs:string"/>
        <xs:element  name="icaoAircraftType" type="xs:string"/>      
    </xs:sequence>     
</xs:complexType> />

代码是否正确?或者应该为每个complexType添加单独的elementType?

1 个答案:

答案 0 :(得分:1)

您无法在XML中的任何元素的开始标记内添加元素,包括XSD中的xs:element

要为InboundFlight构建由单独的航班和飞机信息组成的内容模型,使用单独的元素,而不仅仅是这两个部分的单独类型:

<?xml version="1.0" encoding="utf-8"  ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="InboundFlight" type="eInboundFlight"/>
  <xs:complexType name="eInboundFlight">
    <xs:sequence>
      <xs:element name="Flight">
        <xs:complexType>
          <xs:sequence>
            <xs:element  name="aircraftIdentification" type="xs:int"/>      
            <xs:element  name="iataFlightDesignator" type="xs:string"/>
          </xs:sequence>     
        </xs:complexType>
      </xs:element>
      <xs:element  name="Aircraft">
        <xs:complexType>     
          <xs:sequence>
            <xs:element  name="aircraftRegistration" type="xs:int"/>    
            <xs:element  name="iataAircraftType" type="xs:string"/>
            <xs:element  name="icaoAircraftType" type="xs:string"/>
          </xs:sequence>     
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

推荐阅读: XML Schema Part 0: Primer Second Edition