Copyright © 2001 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3Cの免責(liability), 商標(trademark), 文書利用(document use), ソフトウェア使用許諾(software licensing)規則が適用される。
この文書は、XML文書の一部分についてベースURIを定義するための、HTMLの BASE に似た仕組みを提案するものである。
この文書は、W3C会員及びその他の利害関係者によりレビューされ、ディレクターによって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 適合性
A 参照資料
B 参照資料 (規範性なし)
C 他の標準規格へのインパクト (規範性なし)
XMLリンク言語 [XLink] は、リソース間のリンクを記述するための拡張可能マークアップ言語 (XML) 1.0 [XML] 構造物を定義する。XLinkに関して言及されている要求事項の一つは、汎用的な方法でHTML [HTML 4.01] のリンク構造物をサポートするということである。HTMLの BASE 要素は、XLinkワーキンググループがそのような構造物であるとみなしているものの一つである。BASE により、制作者は、外部画像やアプレット、フォーム処理プログラム、スタイルシートなどへのリンクの中にある相対URIを解釈するという目的のために、文書のベースURIを明示的に指定することが可能になる。
この文書は、XLinkにベースURIサービスを提供するためのメカニズムを、相対URIへの制御度を高めることにより利益を受けるけれどもXLinkの上に築かれるのではない他のXMLアプリケーションも利用できるよう、モジュラ仕様として記述するものである。その文法は、xml:base
という名前の単一のXML属性からなる。
XMLベース仕様の配備は、たとえばXLinkやXML情報セットという新しい仕様書による規範性ある参照を通じて行われる。これらの新しい技術の上に築かれるアプリケーションや仕様書は、ネイティブにXMLベース仕様をサポートすることになる。XMLベース仕様への直接または間接の参照を有しない仕様書に基づくアプリケーションでの 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
属性
xml:base
という属性は、文書または外部実体のベースURI以外のベースURIを指定するため、XML文書に挿入してもよい。この属性の値は、第3.1節に従った処理の後、RFC 2396 [IETF RFC 2396] で定義されているURI参照として解釈される。
名前空間を認識するXMLプロセッサでは、"xml" プリフィックスは、XML名前空間仕様書 [XML Names] に解説されているとおり、http://www.w3.org/XML/1998/namespace
という名前空間名に結び付けられる。名前空間を認識しないプロセッサも xml:base
を使えるので、注意してほしい。
XLinkを含んだ単一の文書の中にある xml:base
の例を後掲する。XLinkは、xlink:href
属性の中にある相対URI参照の解釈について、XMLベース仕様を規範的に参照する。
<?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>See <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に解釈される。
"新着情報" は "http://example.org/today/new.xml" というURIに解釈される。
"おすすめ その1" は "http://example.org/hotpicks/pick1.xml" というURIに解釈される。
"おすすめ その2" は "http://example.org/hotpicks/pick2.xml" というURIに解釈される。
"おすすめ その3" は "http://example.org/hotpicks/pick3.xml" というURIに解釈される。
xml:base
属性で容認される文字の集合は、XML用のものと同じ、すなわち [Unicode] である。しかしながら、Unicodeキャラクタのなかには、URI参照からはじかれるものがあるので、プロセッサは、属性値から正当なURI参照を取得するには、これらの文字をエンコードしてエスケープしなければならない。
はじかれる文字としては、すべての非ASCII文字に加えて、[IETF RFC 2396] の第2.4節に列挙されている排除文字がある。ただし、[IETF RFC 2732] で容認し直されている番号記号 (#)、百分率記号 (%)、各括弧文字は除かれる。はじかれる文字は、以下のとおりにエスケープされなければならない。
はじかれる文字は、それぞれ、UTF-8 [IETF RFC 2279] へ、1個以上のバイトとして変換される。
はじかれる文字に対応する一切のバイトは、URIエスケーピングメカニズムを用いてエスケープされる (すなわち、%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が存在する場合、そのベースURIであり、ない場合、
その要素を包含している文書実体または外部実体のベースURIである。
XML文書の中に出現する所与の相対URIに対応するベースURIは、以下のとおりに決定される。
テキスト内容の中に出現するURI参照のベースURIは、そのテキストを包含している要素のベースURIである。
xml:base
属性の中に出現するURI参照のベースURIは、その xml:base
属性を伴う要素の親要素が、その文書実体または外部実体の内部に存在する場合には、そのベースURIであり、ない場合には、その要素を包含している文書実体または外部実体のベースURIである。
デフォルト属性値を含め、その他一切の属性値の中に出現するURI参照のベースURIは、その属性を伴う要素のベースURIである。
処理命令の内容の中に出現するURI参照のベースURIは、その処理命令の親要素が存在する場合には、そのベースURIであり、ない場合には、その処理命令を包含している文書実体または外部実体のベースURIである。
註:
XML文書実体の中で直接にではなく、外部実体の中で宣言されたデフォルト属性を経由して、xml:base
属性の属性値が与えられる場合には、xml:base
属性が存在することから予期しない結果に至る場合がある。そうした宣言は、妥当性検証を行わないXMLプロセッサを基礎とするソフトウェアによっては、読まれないかもしれない。多くのXMLアプリケーションは、妥当性検証を行うプロセッサを必須としてはいない。そうしたアプリケーションで正しく動作するよう、xml:base
値は、直接にか、DTDの内部サブセットの中で宣言されている属性を経由してかのいずれかで与えられるべきである。
XMLベース仕様書は、XML文書の内部にベースURI情報を埋め込むためのメカニズムである。どのような内容や属性値がURIを包含するかを認識するためのメカニズムを定義するものではない。これは、その語彙に意味論を割り当てる仕様やアプリケーションによってのみ知られるものである。
相対URIがXML文書にまたがって一貫性ある扱いを受けることを保証するため、将来のXML語彙の仕様や改訂によってXML文書のうちのどの部分をURIであるとみなされるかを特定し、この仕様書への規範性ある参照を提供することが、XMLベース仕様の狙いである。
他の標準規格に対するXMLベース仕様のインパクト (この文書の公開の時点) を後述する。
XML 1.0 [XML] は、外部実体のシステム識別子の中でURI参照を使う。これらの宣言は文書要素の外側 (内部サブセットまたは外部DTDの中) に出現するので、xml:base
のスコーピング規則のため、これらのURIは、xml:base
の値によって影響を受けない。
XML情報セット仕様書 [XML Infoset] は、要素情報項目のベースURIプロパティを定義する。最新の情報セット仕様は、このプロパティの値を決定する目的のために、XMLベース仕様をサポートする。この情報セットプロパティを参照するインターフェイスやアプリケーション、仕様書は、XMLベース仕様をネイティブにサポートすることになる。
XML名前空間仕様 [XML Names] は、URI参照を使う。これは、現在定義されているところでは、名前空間の識別の目的では、xml:base
によって定義されるベースURIを基準として解釈されるべきではないとされている。名前空間URIを解釈参照する高レベルのプロセスは、名前空間仕様によってカバーされるものではなくて、オプションにより、それらのURIにあるリソースをとってくるために xml:base
が尊重されるよう指定するかもしれない。
XPath [XPath] データモデルは、ベースURI情報も外部実体の境界も保存しないので、これらの実体の内部にある相対URI参照の解釈を、正しく解釈されるようにサポートするのには力不足である。このことに、xml:base
属性の中にある相対URI参照が含まれる。
XPathデータモデルのためのXSLT [XSLT] 拡張は、維持されるべきベースURI情報を提供してはいるが、XMLベース仕様のサポートより前からある方法でこの情報を定義している。将来のXSLTのバージョンは、XMLベース仕様のサポートを必須としたいと思うかもしれない。
XMLスキーマ第2部:データ型 [XML Datatypes] は、uriReference
というプリミティブデータ型を定義する。XMLデータ型仕様書は、このデータ型を認識し、そうしたURIを解釈するアプリケーションが、XMLベース仕様を認識することを必須としたいと思うかもしれない。
XLink [XLink] 仕様書は、XMLベース仕様のサポートを必須としている。
XHTML [XHTML] は、XLinkで表記可能なものを超えたURI参照を使う。これらのURI参照は、アプリケーションが、XMLベース仕様によって定義されるベースURIを基準とした相対関係で解釈するかもしれない。XHTML仕様書は、XMLベース仕様のサポートのレベルを記述したいと思うかもしれない。