XML Inclusions

XML Inclusions (XInclude) について



XML Inclusions (XInclude) は、XML文書内に別のXML文書やテキストファイルを取り込み、複数のXML文書を一つに統合するための言語構文です。XInclude自体もXMLに準拠した埋め込み型のマークアップ言語として機能します。

仕様と歴史



XIncludeは、2004年12月20日にWorld Wide Web Consortium (W3C) によって「XML Inclusions Version 1.0」として仕様がリリースされ、W3C勧告となりました。その後、2006年11月15日に改定版である1.0 Second EditionがW3C勧告として公開されています。

名前空間



XIncludeでは、「xi」という名前空間接頭辞を使用し、名前空間名は `http://www.w3.org/2001/XInclude` です。したがって、XIncludeの要素である``を使用する際には、その先祖ノードで`xmlns:xi`属性を用いて名前空間宣言を行う必要があります。

xml





要素と属性



XInclude 1.0では、以下の2つの要素と6つの属性が定義されています。

``要素


これはXIncludeの必須要素であり、指定された外部文書をこの要素の位置に挿入します。オプションとして、最大1つの``要素を含めることができます。

href 属性 (省略可能): 取り込む文書のURLを指定します。省略した場合は、空文字列が指定された場合と同様に、この``要素を含む文書自身を指します。フラグメント識別子は含めることはできません。
parse 属性 (省略可能): 文書をXMLとして取り込む場合は`xml`、プレーンテキストとして取り込む場合は`text`を指定します。デフォルトは`xml`です。
xpointer 属性 (省略可能): `parse`属性が`xml`の場合に、取り込む文書の一部をXPointerで指定します。`parse`属性が`text`の場合は指定してはいけません。
encoding 属性 (省略可能): `parse`属性が`text`の場合に、取り込む文書の文字エンコード形式を指定します。`parse`属性が`xml`の場合は無視されます。外部からエンコード形式が指定されている場合や、メディアタイプが`text/xml`などの場合はそちらが優先されます。省略された場合はUTF-8が使用されます。
accept 属性 (省略可能): 文書を取得する際に、HTTPリクエストのAcceptヘッダに指定するメディアタイプのリストを指定します。
accept-language 属性 (省略可能): 文書を取得する際に、HTTPリクエストの Accept-Language ヘッダに指定するIETF言語タグのリストを指定します。

``要素


``要素の子要素としてのみ使用できます。``要素で指定された文書の取得に失敗した場合、この要素の内容で``要素が置き換えられます。親の``要素の`parse`属性で`text`が指定されていても、要素の内容はXMLとして扱われます。

具体例



テキストファイルの統合


`wikipedia.txt`というテキストファイルの内容を、XML文書に挿入する例を以下に示します。

wikipedia.txt

text

ウィキペディアはオープンコンテントの百科事典です。




XML文書

xml





このXML文書を処理すると、以下の結果が得られます。

xml

ウィキペディアはオープンコンテントの百科事典です。






XML文書の統合


`wikipedia.xml`というXML文書を、別のXML文書に挿入する例を以下に示します。

wikipedia.xml

xml

ウィキペディアはオープンコンテントの百科事典です。





XML文書

xml





このXML文書を処理すると、以下の結果が得られます。

xml


ウィキペディアはオープンコンテントの百科事典です。






XML文書の一部分の統合


XPointerを利用して、XML文書の一部のみを取り込むことも可能です。`wikipedia.xml`のテキスト部分のみを別のXML文書に挿入する例を以下に示します。

wikipedia.xml

xml

ウィキペディアはオープンコンテントの百科事典です。





XML文書

xml





このXML文書を処理すると、以下の結果が得られます。

xml

ウィキペディアはオープンコンテントの百科事典です。





再帰処理



取り込んだXML文書にさらに``要素が含まれている場合、その``要素も再帰的に処理されます。ただし、`href`属性が自分自身を指している場合は、``要素の処理前にxpointerが解釈されます。

また、再帰処理中に既に処理済みの``要素と同じ文書とxpointerを指定した場合、エラーが発生します。

ベースURI、言語、ID参照



文書を取得する際、`xml:base`属性などで指定されたベースURIが考慮されます。

取り込まれた文書のベースURIや言語(`xml:lang`属性で指定されたもの)は保存されます。異なる場合は、`xml:base`属性や`xml:lang`属性が付加されます。この動作はユーザーが抑制できるように実装しても良いとされています。

一方、IDによる参照は保存されません。IDは文書を取り込んだ後に解釈されます。複数の参照先がある場合は、いずれも参照しません。

他の技術との比較



XIncludeは、(X)HTMLの``要素やXLinkとは異なります。``要素やXLinkはリソースを埋め込んで表示することのみを指し、具体的な処理はアプリケーションに依存します。XIncludeは、XML Infosetの一部を別のXML文書やテキストから生成されたXML Infosetで置き換える具体的な処理モデルを規定しています。

XSLTもXMLを変換するための強力なツールであり、`document()`関数を使うことでXIncludeと同様の効果を得ることができます。

ブラウザのサポート



主要なWebブラウザは、2009年10月現在XIncludeをネイティブにサポートしていません。



まとめ



XIncludeは、XML文書のモジュール化や再利用を促進するための重要な技術です。文書の断片を効果的に管理し、構造化されたコンテンツを扱う上で非常に便利です。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。