Latest web development tutorials

XMLスキーマ複合要素

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


H2>複合要素は何ですか?

複合要素は他の要素および/または属性を含むXML要素を指します。

複合要素の4つのタイプがあります。

  • 空要素
  • これは、他の要素が含まれています
  • 要素はテキストのみが含まれています
  • 要素は、要素とテキストが含まれています

注:上記の要素は、属性を含めることができます!


複合要素の例

複合要素は、「製品」は、空です。

<product pid="1345"/>

複合要素は、「従業員」とは、唯一の他の要素が含まれています。

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

テキストのみを含む複雑なXML要素、 "食"、:

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

複雑なXML要素は、「説明」は、要素とテキストが含まれています。

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


複雑な要素を定義するには?

この複雑なXML要素を見て、「従業員」とは、唯一の他の要素が含まれています。

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

XMLスキーマでは、我々は複雑な要素を定義する2つの方法があります。

1.次のように、「従業員」の要素宣言に直接要素に名前を付けます:

<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>

あなたは上記の方法を使用する場合は、唯一の「従業員」とは、指定された複合型を使用することができます。 その子要素は、「姓」と「姓」、中インジケーター<シーケンス>で囲まれていることに注意してください。 これは、子要素が宣言されている順序で表示されなければならないことを意味します。 あなたはよXSDインジケータは 、このセクションの指標についての詳細を学びます。

2.「従業員」の要素は、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>