最新のWeb開発のチュートリアル
 

XSD複合要素


複雑な要素が他の要素および/または属性が含まれています。


複合要素は何ですか?

複雑な要素が他の要素および/または属性を含むXML要素です。

複雑な要素の4種類があります。

  • 空要素
  • 唯一の他の要素を含む要素
  • テキストのみを含む要素
  • 他の要素とテキストの両方を含む要素

Note:これらの各要素は、同様の属性を含めることができます!


複合要素の例

複雑なXML要素、 "product"空です、:

<product pid="1345"/>

複雑なXML要素、 "employee"だけで、他の要素が含まれています:

<employee>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</employee>

複雑なXML要素、 "food"テキストのみが含まれています:

<food type="dessert">Ice cream</food>

複雑なXML要素、 "description"の要素とテキストの両方が含まれています:

<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>

複合要素を定義する方法

この複雑なXML要素、を見て"employee"だけで、他の要素が含まれています:

<employee>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</employee>

私たちは、XMLスキーマの2つの異なる方法で複雑な要素を定義することができます。

1. "employee"の要素は次のように、要素に名前を付けることにより、直接宣言することができます。

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

あなたは上記の方法を使用する場合は、唯一の"employee"の要素は、指定された複合型を使用することができます。 子要素、ということに注意してください"firstname""lastname" 、囲まれています<sequence>インジケーター。 これは、彼らが宣言されているように子要素が同じ順序で表示されなければならないことを意味します。 あなたはXSD指標章の指標についての詳細を学びます。

2. "employee"要素は、使用する複合型の名前を指しtype属性を持つことができます。

<xs:element name="employee" type="personinfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

あなたは上記の方法を使用する場合は、いくつかの要素は次のように、同じ複合型を参照することができます。

<xs:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

また、既存の複雑な要素に複雑な要素をベースにし、このようないくつかの要素を追加することができます。

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>