この文書は、W3C 標準情報 (TR) の勧告 (Recommendation)、 XML Base (2001 年 6 月 27 日付) を ToyFish.Net が独自に翻訳したものです。この仕様書の正式なものは W3C のサイトにある英語版であり、 その著作権は W3C が保有しています。また、翻訳に誤りがある可能性に留意してください。
誤訳・誤植を発見された方は ToyFish.Net までお知らせください。
翻訳の最終更新日: 2001 年 7 月 16 日
Copyright © 2001 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use, and software licensing rules apply.
この文書は、HTML の BASE と同じような、XML 文書の各部分について 基底 URI を指定する機能を提案するものです。
この文書は、W3C 会員およびその他の利害関係者によってレビューされたもので、 ディレクター (Director) により W3C 勧告とする旨の同意を得ています。 この文書は安定版であり、基準資料として用いたり、他の文書で参照規定として 引用することができます。 この勧告を作成するにあたっての W3C の役割は、仕様に対する注目を喚起し、 広範囲な普及の促進することにあります。これにより、ウェブの機能性と 相互運用性が向上します。
この文書は、W3C の XML Linking Working Group が、W3C Architecture Domain の XML Activity の一環として製作したものです。この作業の背景については、 XML Activity Statement を ご覧ください。
この文書に誤りを発見された場合は、公開メーリングリスト www-xml-linking-comments@w3.org ( http://lists.w3.org/Archives/Public/www-xml-linking-comments/ で アーカイブされています) までお送りください [訳注: 英語]。確認された誤りについては、 http://www.w3.org/2001/06/xmlbase-errata にて 公開される正誤表に掲載されます。
この文書は英語版が唯一の正式版です。この文書の翻訳に関する情報は、 http://www.w3.org/2001/06/xmlbase-translations で公開されています。
W3C が現在公開している勧告その他の技術文書の一覧は、 http://www.w3.org/TR/ にあります。
1 はじめに
2 用語
3 xml:base 属性
3.1 URI 参照の符号化とエスケープ
4 相対 URI の解決
4.1 RFC 2396 との関係
4.2 基底 URI 情報の粒度
4.3 各種 URI にたいする基底 URI
5 適合性
XML Linking Language (XML リンク言語) [XLink] では、 リソース間のリンクを記述するための、Extensible Markup Language (拡張可能なマーク付け言語、XML) 1.0 [XML] の構造を定義しています。 XLink で宣言されている要件のひとつは、HTML [HTML 4.01] のリンク構造を 汎用的な方法でサポートすることです。HTML の BASE 要素は、XLink ワーキンググループが 検討した構文のひとつです。BASE を使うと、制作者は、文書の基底 URI を明示的に指定して、 外部に置かれた画像、アプレット、フォーム処理プログラム、スタイルシートなどへのリンクの 相対 URI を解決させることができます。
この文書は XLink に基底 URI の機能を提供する機構について述べたものですが、
XLink に基づいていない XML アプリケーションであっても
相対 URI をさらに制御できることの恩恵があるようなものであれば利用できるように、
独立した仕様になっています。その書式は、xml:base
という XML 属性ひとつで
構成されています。
XML Base の実利用は、XLink や XML Infoset といった新しい仕様から
規定として参照されることによって行われます。こういった新しい技術に基づく
アプリケーションは、はじめから XML Base をサポートすることになります。
XML Base を直接的にも間接的にも規定として参照していない仕様に基づくアプリケーションでは、
xml:base
属性のふるまいは未定義です。
[定義: この仕様において、 しなければならない (must)、してはならない (must not)、 必要がある (required)、するものとする (shall)、 しないものとする (shall not)、すべきである (should)、 すべきでない (should not)、推奨される (recommended)、 してもよい (may)、必須ではない (optional) の各キーワードは、 [IETF RFC 2119] で規定されている通りの意味に解釈してください。]
基底 URI (base URI) および相対 URI (relative URI) という用語は、 この仕様では、[IETF RFC 2396] で定義されている通りの意味で使用されます。
xml:base
属性文書や外部実体の基底 URI とは異なる基底 URI を指定する場合に、
属性 xml:base
を XML 文書に挿入することができます
(may)。この属性の値は、
3.1 節に従って処理を行った後、RFC 2396 [IETF RFC 2396]
で定義されている URI 参照 (URI Reference) として解釈されます。
Namespaces in XML (XML 名前空間) [XML Names] で規定されているように、
名前空間を認識する XML プロセッサでは、"xml" という接頭辞は名前空間名
http://www.w3.org/XML/1998/namespace
に結びつけ (bind) られます。xml:base
は、名前空間を認識しないプロセッサでも
利用できるという点に注意してください。
XLink が含まれた簡単な文書での xml:base
の例を、下に示します。
XLink は、xlink:href
属性での相対 URI 参照の解釈について、
XML Base を規定として参照しています。
<?xml version="1.0"?> <doc xml:base="http://example.org/today/" xmlns:xlink="http://www.w3.org/1999/xlink"> <head> <title>仮想図書館</title> </head> <body> <paragraph><link xlink:type="simple" xlink:href="new.xml">新着情報 </link>をご覧ください!</paragraph> <paragraph>今日の注目作品はこちら!</paragraph> <olist xml:base="/hotpicks/"> <item> <link xlink:type="simple" xlink:href="pick1.xml">注目作品 その 1</link> </item> <item> <link xlink:type="simple" xlink:href="pick2.xml">注目作品 その 2</link> </item> <item> <link xlink:type="simple" xlink:href="pick3.xml">注目作品 その 3</link> </item> </olist> </body> </doc> |
この例の URI は、解決されてそれぞれ次のような完全な URI になります。
「新着情報」の解決結果は URI "http://example.org/today/new.xml"
「注目作品 その 1」の解決結果は URI "http://example.org/hotpicks/pick1.xml"
「注目作品 その 2」の解決結果は URI "http://example.org/hotpicks/pick2.xml"
「注目作品 その 3」の解決結果は URI "http://example.org/hotpicks/pick3.xml"
xml:base
で使用できる文字の集合は、XML の場合と同じ、
すなわち [Unicode] です。ただし、一部の Unicode 文字は
URI 参照中では使用できないので、属性値から有効な URI 参照を求めるには、
プロセッサはそういった文字を符号化 (encode) およびエスケープ (escape)
しなければなりません (must)。
URI 参照で使用できない文字には、すべての非 ASCII 文字と、 [IETF RFC 2396] の 2.4 節で挙げられている除外対象の文字があります。 ただし、番号記号 (#) およびパーセント記号 (%)、角括弧の両側の文字は、 [IETF RFC 2732] で特別に認められています。 使用できない文字は、次のようにエスケープしなければなりません (must)。
使用できない文字をそれぞれ 1 バイト以上の UTF-8 [IETF RFC 2279] に変換します。
使用できない文字に対応するすべてのバイトを、URI のエスケープ機構で エスケープします (つまり、そのバイト値の 16 進表記を HH とすると、 %HH に変換します)。
得られた文字シーケンスで元の文字を置き換えます。
RFC 2396 [IETF RFC 2396] では、基底 URI が文書中に埋め込まれた場合について規定しています。基底 URI を決定する規則は 次のように要約することができます (優先度の高い順)。
基底 URI は、文書の内容に埋め込まれたものになります。
基底 URI は、その外側の実体 (メッセージや文書。ない場合もある) の基底 URI になります。
基底 URI は、その実体の取得に使われた URI になります。
基底 URI は、アプリケーションの文脈によって決定されます。
注:
上記のうち第 2 項と第 3 項の「実体」という用語は、この用語の RFC 2396 での意味を使用しています。この文書のこれ以外の箇所では、「実体」という用語は XML での意味で使われています。
この文書では、XML での場合に限定して、基底 URI 情報の埋め込みに関する規則第 1 項の 詳細を規定します。
XML 文書中に置かれた相対 URI は、どの場合でも、 文書、文書実体、外部実体のいずれかを基準とした相対指定として解決されます。 属性ごと、文字ごと、実体ごとといった、さらに細かい粒度に関しては、 何ら提供していません。内部サブセットや外部 DTD で宣言される内部実体も、 外部実体中の独立したテキスト (要素に囲われていないテキスト) も、 その実体参照のスコープでの基底 URI とは別の基底 URI を参照するものとは みなされません。
文書実体や外部実体の基底 URI は、RFC 2396 の規則によって決定されます。 つまり、基底 URI は、その文書実体や外部実体を取得するのに使われた URI になります。
要素の基底 URI は次のいずれかです。
その要素の xml:base
属性で指定された URI。
ない場合は次の項によります。
文書または外部実体内にある親要素の基底 URI。 ない場合は次の項によります。
その要素が置かれている文書実体または外部実体の基底 URI。
XML 文書中に置かれた相対 URI に対応する基底 URI は、次のように決定されます。
テキスト内容中に置かれた URI 参照の基準となる基底 URI は、 そのテキストが入っている要素の基底 URI になります。
xml:base
属性内に置かれた URI 参照の基準となる基底 URI は、
その文書実体または外部実体内でその xml:base
属性を保持する要素に
親要素があれば、その (親要素の) 基底 URI になります。
その他の属性の値に置かれた URI 参照の基準となる基底 URI は、 デフォルトの属性値の場合も含めて、その属性を保持する要素の基底 URI になります。
処理命令の内容中に置かれた URI 参照の基準となる基底 URI は、 その文書実体または外部実体内でその処理命令に親要素があれば、 その (親要素の) 基底 URI になります。ない場合には、 その処理命令が入っている文書実体または外部実体の基底 URI になります。
注:
xml:base
属性の値が、XML 文書実体で直接にではなく、
外部実体で宣言されたデフォルト属性で指定されている場合、
この属性があることで予期しない結果になることがあります。このような宣言は、
妥当性検証を行わない XML プロセッサに基づいたソフトウェアでは読まれないかもしれません。
XML アプリケーションには、妥当性検証を行うプロセッサを要求しないものも数多くあります。
このようなアプリケーションで正しく処理するには、xml:base
の値は、
直接にか、DTD の内部サブセットで宣言されたデフォルト属性で指定するべきです。
XML Base は、文書中に基底 URI 情報を埋め込むための機構を定義しています。 何の内容や属性値に URI を入れることができるかを認識するための機構は定義していません。 これについては、そのボキャブラリに意味を与えている仕様やアプリケーションによってのみ わかります。
XML Base の意図としては、XML ボキャブラリの今後の仕様や改訂が、 XML 文書のどの部分が URI であるかを特定し、この仕様を規定として参照することで、 各種の XML 文書で相対 URI が一貫して扱われるようにします。
XML Base が (この文書の公開時点での) 他の標準におよぼす影響を 以下に述べます。
XML 1.0 [XML] は、外部実体のシステム識別子に URI を使用しています。
外部実体の宣言は文書要素の外 (内部サブセットか外部 DTD) に置かれるため、
xml:base
の適用規則により、外部実体宣言の URI は
xml:base
の効果を受けません。
XML Infoset (XML 情報セット) [XML Infoset] は、要素情報項目 (element information items) の基底 URI (base URI) プロパティを定義しています。 Infoset の最新仕様では、このプロパティの値の決定で XML Base をサポートしています。 この情報セットプロパティを参照するインタフェース、アプリケーション、仕様は、 当然ながら XML Base をサポートすることになります。
Namespaces in XML (XML 名前空間) [XML Names] では、URI 参照を使用していますが、
現在定義されているように、名前空間の識別に際しては、その URI 参照を、
xml:base
によって指定された基底 URI を基準とした相対指定として
解決するべきではありません。名前空間 URI の参照を解決する高水準のプロセスについては、
名前空間仕様では扱われていないため、
その URI にあるリソースを取得する際に xml:base
を適用することに
するかもしれません。
XPath [XPath] のデータモデルは、基底 URI 情報と外部実体境界のいずれも保持しないので、
適切に解決されるべきこれらの実体中の相対 URI 参照の解決をサポートするには不十分です。
これには、xml:base
属性内の相対 URI 参照も含まれます。
XPath のデータモデルに対する XSLT [XSLT] の拡張では、 基底 URI 情報は保持されるとの規定を設けてはいますが、 XML Base のサポートを阻害するような方法で基底 URI 情報を定義しています。 XSLT の将来のバージョンでは、XML Base のサポートを必須とした方がいいかもしれません。
XML Schema Part 2: Datatypes (XML スキーマ 第 2 部: データ型) [XML Datatypes]
では、基本データ型 uriReference
を定義しています。
XML データ型 (XML Datatypes) 仕様では、アプリケーションがこのデータ型を認識し、
XML Base に従ってその URI を解決することを必須とした方がいいかもしれません。
XLink [XLink] 仕様では、XML Base のサポートを必須としています。
XHTML [XHTML] では、XLink で表現できない URI 参照を使用しています。 アプリケーションはそういった URI 参照を、XML Base で指定された基底 URI 参照を基準とした 相対指定として解決するかもしれません。XHTML 仕様で、その水準での XML Base のサポートについて 規定した方がいいかもしれません。