この文書は、W3C 標準情報 (TR) の勧告案 (Proposed Recommendation)、 XML Base (2000 年 12 月 20 日付) を ToyFish.Net が 独自に翻訳したものです。この仕様書の正式なものは W3C のサイトにある 英語版であり、その著作権は W3C が保有しています。また、翻訳に誤りがある 可能性に留意してください。
誤訳・誤植を発見された方は ToyFish.Net までお知らせください。
翻訳の最終更新日: 2001 年 1 月 19 日
Copyright © 2000 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
この文書は、HTML の BASE と同じような、XML 文書の各部分について 基底 URI を指定する機能を提案するものです。
2000 年 12 20 日 付で、この文書は勧告案 (Proposed Recommendation) の レビュー期間に入りました。同日から 2001 年 1 月 31 日までの間、 W3C 諮問委員会 (Advisory Committee) の委員各位には、この仕様を査読し、 コメントをレビュー用紙に記入して w3c-xlink-review@w3.org 宛てに提出することが推奨されます。このリストに送られたコメントは、 レビュー期間の終了後、会員に公開されます。公開すべきでない性質のコメントは 電子メールで別途 w3t-xlink@w3.org 宛てに 送ってください。こちらはチームのみに公開されます。
レビュー期間の終了後、ディレクターがこの文書の処置を告知します。 この文書は、(場合によっては多少の変更を行って) W3C 勧告 (Recommendation) に なるかもしれませんし、草案 (Working Draft) の位置付けに戻ったり、W3C の作業項目として 取り下げられるかもしれません。この告知については、レビュー期間終了から 13 日以内には行われないものと考えてください。
勧告案としての公開は、W3C 会員組織による支持を示すものではありません。 これは現段階では草稿文書であり、いつでも他の文書によって 更新、置換、破棄される可能性があります。W3C 勧告案を 「未完成品」以外のものとして引用するのは適切ではありません。
この作業の背景については、 XML Activity Statement を参照してください。 この文書に関するコメント全般は、公開メーリングリスト www-xml-linking-comments@w3.org (archive) 宛てにお送りください [訳注: 英語]。
W3C が現在公開している勧告その他の技術文書の一覧は http://www.w3.org/TR にあります。
XML Linking Language (XML リンク言語) [XLink] では、 リソース間のリンクを記述するための、Extensible Markup Language (拡張可能な マーク付け言語、XML) 1.0 [XML] の構文を定義しています。 XLink で宣言されている要件のひとつは、HTML [HTML 4.01] のリンク構文を汎用的な方法でサポートすることです。 HTML の BASE 要素は、XLink ワーキンググループが検討した構文のひとつです。 BASE を使うと、制作者は、文書の基底 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] で定義されている通りの意味で使用されます。
文書や外部実体の基底 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)。
URL 参照で使用できない文字には、すべての非 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 になります。ない場合には、その処理命令が入っている 文書実体または外部実体の基底 URI になります。
注:
xml:base
属性の値が、XML 文書実体で直接にではなく、 外部実体で宣言されたデフォルト属性で指定されている場合、 この属性があることで予期しない結果になることがあります。 このような宣言は、妥当性検証を行わない XML プロセッサに基づいた ソフトウェアでは読まれないかもしれません。XML アプリケーションには、 妥当性検証を行うプロセッサを要求しないものも数多くあります。 このようなアプリケーションで正しく処理するには、xml:base
の値は、直接にか、 DTD の内部サブセットで宣言されたデフォルト属性で指定するべきです。 (should)。
アプリケーションは、この仕様で明示されている条件に従って 基底 URI を算出すれば、XML Base に適合します。
XML Base は、XML 文書中に基底 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 スキーマ 第 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 のサポートについて規定した方がいいかもしれません。