XML スキーマのチュートリア...login
XML スキーマのチュートリアル
著者:php.cn  更新時間:2022-04-20 14:13:02

XML スキーマの複合要素


XSD 複合要素


複合要素には、他の要素や属性が含まれます。


h2>複合要素とは何ですか?

複合要素は、他の要素や属性を含む XML 要素です。

複合要素には 4 つのタイプがあります:

  • 空の要素

  • 他の要素を含む要素

  • テキストのみを含む要素

  • 要素とテキストの両方を含む要素

注: 上記のすべての要素には属性を含めることができます。


複合要素の例

複合要素「product」は空です:

<product pid="1345"/>

複合要素「employee」には他の要素のみが含まれています:

<従業員>
<名>ジョン</名>
<lastname>Smith</lastname>
</employee>

テキストのみを含む複合 XML 要素「food」:

<food type="dessert">Icecream</food>

複合 XML 要素、「description」には要素とテキストが含まれます:

<description>
それは <date lang="norwegian">03.03.99</date> に発生しました ....
</説明>


複合要素を定義するにはどうすればよいですか?

他の要素のみを含む複合 XML 要素「employee」を見てください:

<employee>
<名>ジョン</名>
<lastname>Smith</lastname>
</employee>

XML スキーマでは、複合要素を定義する 2 つの方法があります:

1 この要素に名前を付けることで、「employee」要素のステートメントを直接変更できます。 、次のようにします:

<xs:element name="employee">
​ <xs:complexType>
​​ <xs:シーケンス>
                        <xs:要素名="firstname" type="xs:string"/>
                        <xs:要素名="姓" タイプ="xs:文字列"/>
​​ </xs:シーケンス>
​ </xs:complexType>
</xs:element>

上記の方法を使用すると、指定された複合タイプは「従業員」のみが使用できます。その子要素である「firstname」と「lastname」がインジケーター <sequence> で囲まれていることに注意してください。これは、子要素が宣言された順序で出現する必要があることを意味します。インジケーターの詳細については、「XSD インジケーター」セクションで説明します。

2. "employee" 要素は、使用される複合タイプの名前を参照するために使用される type 属性を使用できます:

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

<xs:complexType name="personinfo">
​ <xs:シーケンス>
​​ <xs:要素名="firstname" type="xs:string"/>
​​ <xs:要素名="姓" タイプ="xs:文字列"/>
​ </xs:sequence>
</xs:complexType>

上記の方法を使用すると、次のように、複数の要素で同じ複合タイプを使用できます:

<xs:element name= "従業員" type="個人情報"/>
<xs:要素名="学生" type="個人情報"/>
<xs:要素名="メンバー" type="個人情報"/> ;

<xs:complexType name="personinfo">
​ <xs:シーケンス>
​​ <xs:要素名="firstname" type="xs:string"/>
​​ <xs:要素名="姓" タイプ="xs:文字列"/>
​ </xs:sequence>
</xs:complexType>

次のように、既存の複合要素の上に複合要素をベースにして、いくつかの要素を追加することもできます:

<xs:element name="employee" type="fullpersoninfo"/> :complexType name="人物情報">
​ <xs:シーケンス>
​​ <xs:要素名="firstname" type="xs:string"/>
​​ <xs:要素名="姓" タイプ="xs:文字列"/>
​ </xs:sequence>
</xs:complexType>

<xs:complexType name="fullpersoninfo">
​ <xs:complexContent>
​​ <xs:extensionbase="personinfo">
                        <xs:シーケンス>
                                  <xs:要素名="アドレス" type="xs:string"/>
                                  <xs:要素名="都市" タイプ="xs:文字列"/>
                                  <xs:要素名="国" type="xs:string"/>
                        </xs:シーケンス>
​​ </xs:拡張子>
​ </xs:complexContent>
</xs:complexType>