XMLチュートリアル

XMLホーム XMLの紹介 XML使用方法 XMLツリー XML構文 XML要素 XML属性 XML名前空間 XML表示 XML HttpRequest XMLパーサー XML DOM XML XPath XML XSLT XML XQuery XML XLink XMLバリデーター XML DTD XMLスキーマ XMLサーバー XMLの例 XMLクイズ XML証明書

XML AJAX

AJAXの紹介 AJAX XMLHttp AJAXリクエスト AJAX応答 AJAXXMLファイル AJAX PHP AJAX ASP AJAXデータベース AJAXアプリケーション AJAXの例

XML DOM

DOMの紹介 DOMノード DOMアクセス DOMノード情報 DOMノードリスト DOMトラバース DOMナビゲーション DOMは値を取得します DOM変更ノード DOM削除ノード DOM置換ノード DOM作成ノード DOM追加ノード DOMクローンノード DOMの例

XPathチュートリアル

XPathの概要 XPathノード XPath構文 XPath軸 XPath演算子 XPathの例

XSLTチュートリアル

XSLTの紹介 XSL言語 XSLT変換 XSLT <テンプレート> XSLT <値> XSLT <for-each> XSLT <ソート> XSLT <if> XSLT <選択> XSLT適用 クライアント上のXSLT サーバー上のXSLT XSLT Edit XML XSLTの例

XQueryチュートリアル

XQueryの紹介 XQueryの例 XQuery FLWOR XQuery HTML XQueryの用語 XQuery構文 XQuery追加 XQuery Select XQuery関数

XML DTD

DTDの紹介 DTDビルディングブロック DTD要素 DTD属性 DTD要素と属性 DTDエンティティ DTDの例

XSDスキーマ

XSDの概要 XSDハウツー XSD <スキーマ> XSD要素 XSD属性 XSDの制限

XSDコンプレックス

XSD要素 XSDが空です XSD要素のみ XSDテキストのみ XSD混合 XSDインジケーター XSD <任意> XSD <anyAttribute> XSD置換 XSDの例

XSDデータ

XSD文字列 XSD日付 XSD数値 XSDその他 XSDリファレンス

Webサービス

XMLサービス XML WSDL XML SOAP XML RDF XML RSS

参考文献

DOMノードタイプ DOMノード DOM NodeList DOM NamedNodeMap DOMドキュメント DOM要素 DOM属性 DOMテキスト DOM CDATA DOMコメント DOM XMLHttpRequest DOMパーサー XSLT要素 XSLT / XPath関数

XSDの複雑な要素


複雑な要素には、他の要素や属性が含まれています。


複雑な要素とは何ですか?

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

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

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

注:これらの各要素には、属性も含まれている場合があります。


複雑な要素の例

空の複雑な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>