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スキーマを使用すると、ある要素を別の要素に置き換えることができます。


元素置換

イギリスとノルウェーの2つの異なる国からのユーザーがいるとしましょう。XMLドキュメントでノルウェーの要素名と英語の要素名のどちらを使用するかをユーザーが選択できるようにする機能が必要です。

この問題を解決するために、XMLスキーマでsubstitutionGroupを定義できます。最初にhead要素を宣言し、次にhead要素の代わりに使用できることを示す他の要素を宣言します。

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

上記の例では、「name」要素はhead要素であり、「navn」要素は「name」の代わりに使用できます。

XMLスキーマのこのフラグメントを見てください。

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo"/>
<xs:element name="kunde" substitutionGroup="customer"/>

有効なXMLドキュメント(上記のスキーマによる)は次のようになります。

<customer>
  <name>John Smith</name>
</customer>

またはこのように:

<kunde>
  <navn>John Smith</navn>
</kunde>


ブロッキング要素の置換

他の要素が指定された要素に置き換えられないようにするには、ブロック属性を使用します。

<xs:element name="name" type="xs:string" block="substitution"/>

XMLスキーマのこのフラグメントを見てください。

<xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo" block="substitution"/>
<xs:element name="kunde" substitutionGroup="customer"/>

有効なXMLドキュメント(上記のスキーマによる)は次のようになります。

<customer>
  <name>John Smith</name>
</customer>

しかし、これはもはや有効ではありません:

<kunde>
  <navn>John Smith</navn>
</kunde>

substitutionGroupを使用する

置換可能な要素のタイプは、head要素のタイプと同じであるか、それから派生している必要があります。代替可能要素のタイプがヘッド要素のタイプと同じである場合、代替可能要素のタイプを指定する必要はありません。

substitutionGroup内のすべての要素(head要素とsubstituable要素)はグローバル要素として宣言する必要があることに注意してください。そうしないと機能しません。


グローバル要素とは何ですか?

グローバル要素は、「スキーマ」要素の直接の子である要素です。ローカル要素は、他の要素内にネストされた要素です。