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インジケーター


インジケーター付きのドキュメントで要素をどのように使用するかを制御できます。


インジケーター

7つの指標があります。

注文インジケーター:

  • 全て
  • 選択
  • 順序

発生指標:

  • maxOccurs
  • minOccurs

グループ指標:

  • グループ名
  • attributeGroup名

注文インジケーター

順序インジケーターは、要素の順序を定義するために使用されます。

すべてのインジケーター

<all>インジケーターは、子要素が任意の順序で表示できること、および各子要素が1回だけ出現する必要があることを指定します。

<xs:element name="person">
  <xs:complexType>
    <xs:all>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:all>
  </xs:complexType>
</xs:element>

注: <all>インジケーターを使用する場合、<minOccurs>インジケーターを0または1に設定でき、<maxOccurs>インジケーターは1にのみ設定できます(<minOccurs>および<maxOccurs>については後で説明します)。

選択インジケーター

<choice>インジケーターは、1つの子要素または別の要素のいずれかが発生する可能性があることを指定します。

<xs:element name="person">
  <xs:complexType>
    <xs:choice>
      <xs:element name="employee" type="employee"/>
      <xs:element name="member" type="member"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

シーケンスインジケーター

<sequence>インジケーターは、子要素が特定の順序で表示される必要があることを指定します。

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


発生インジケーター

発生インジケーターは、要素が発生する頻度を定義するために使用されます。

注:すべての「順序」および「グループ」インジケーター(任意、すべて、選択、シーケンス、グループ名、およびグループ参照)の場合、maxOccursおよびminOccursのデフォルト値は1です。

maxOccursインジケーター

<maxOccurs>インジケーターは、要素が発生する可能性のある最大回数を指定します。

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string"/>
      <xs:element name="child_name" type="xs:string" maxOccurs="10"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

上記の例は、「child_name」要素が最小で1回(minOccursのデフォルト値は1)、「person」要素で最大10回発生する可能性があることを示しています。

minOccursインジケーター

<minOccurs>インジケーターは、要素が発生する可能性のある最小回数を指定します。

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string"/>
      <xs:element name="child_name" type="xs:string"
      maxOccurs="10" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

上記の例は、「child_name」要素が「person」要素で最小で0回、最大で10回発生する可能性があることを示しています。

ヒント:要素を無制限に表示できるようにするには、maxOccurs = "unbounded"ステートメントを使用します。

実例:

「Myfamily.xml」というXMLファイル:

<?xml version="1.0" encoding="UTF-8"?>

<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">

<person>
  <full_name>Hege Refsnes</full_name>
  <child_name>Cecilie</child_name>
</person>

<person>
  <full_name>Tove Refsnes</full_name>
  <child_name>Hege</child_name>
  <child_name>Stale</child_name>
  <child_name>Jim</child_name>
  <child_name>Borge</child_name>
</person>

<person>
  <full_name>Stale Refsnes</full_name>
</person>

</persons>

上記のXMLファイルには、「persons」という名前のルート要素が含まれています。このルート要素内に、3つの「person」要素を定義しました。各「person」要素には「full_name」要素が含まれている必要があり、最大5つの「child_name」要素を含めることができます。

スキーマファイル「family.xsd」は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">

<xs:element name="persons">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="person" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="full_name" type="xs:string"/>
            <xs:element name="child_name" type="xs:string"
            minOccurs="0" maxOccurs="5"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

</xs:schema>

グループインジケーター

グループインジケーターは、関連する要素のセットを定義するために使用されます。

要素グループ

要素グループは、次のようにグループ宣言で定義されます。

<xs:group name="groupname">
...
</xs:group>

グループ宣言内でall、choice、またはsequence要素を定義する必要があります。次の例では、「persongroup」という名前のグループを定義します。これは、正確な順序で発生する必要がある要素のグループを定義します。

<xs:group name="persongroup">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="birthday" type="xs:date"/>
  </xs:sequence>
</xs:group>

グループを定義したら、次のような別の定義でグループを参照できます。

<xs:group name="persongroup">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="birthday" type="xs:date"/>
  </xs:sequence>
</xs:group>

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

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:group ref="persongroup"/>
    <xs:element name="country" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

属性グループ

属性グループは、次のようにattributeGroup宣言で定義されます。

<xs:attributeGroup name="groupname">
...
</xs:attributeGroup>

次の例では、「personattrgroup」という名前の属性グループを定義しています。

<xs:attributeGroup name="personattrgroup">
  <xs:attribute name="firstname" type="xs:string"/>
  <xs:attribute name="lastname" type="xs:string"/>
  <xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>

属性グループを定義した後、次のような別の定義でそれを参照できます。

<xs:attributeGroup name="personattrgroup">
  <xs:attribute name="firstname" type="xs:string"/>
  <xs:attribute name="lastname" type="xs:string"/>
  <xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>

<xs:element name="person">
  <xs:complexType>
    <xs:attributeGroup ref="personattrgroup"/>
  </xs:complexType>
</xs:element>