ホーム > X-Plus > XML Square >  スタンダーズ

この記事を送る はてなブックマークに追加する BuzzurlにブックマークBuzzurlにブックマーク Yahoo!ブックマークに登録
テキストリンクコードを取得する

スタンダーズコーナー:W3C規格解説 「XML Base」

2003年05月06日作成 

W3C規格解説
XML Base
   

(株)日本ユニテック
青木 秀起

「XML Base」とは、相対URIによるリンクを実現するときに基底となるURIを指定するためのもので、HTML 4の「base」要素と同様の機能を提供します。2001年6月に勧告となっています。

相対URIと基底URIとは?

まずは次のリストをご覧ください。

<?xml version="1.0"?>
<doc xml:base="http://www.utj.co.jp/xml/sta/"xmlns:xlink="http://www.w3.org/1999/xlink">
    <p>「OWL」とは、Webオントロジー言語のことです。詳細は<link xlink:type="simple" xlink:href="owl.xml">弊社サイト</link>をご覧ください。</p>
</doc>

XLinkでは、リンク先のリソースをURIで表現します。この場合、1つのデータに長いURI指定が何度も出てくると、指定するのが大変面倒です。そこで、基準となるURIを1つ指定しておき、それ以外は基準となるURIから見た相対的な指定にすれば、簡潔に表記することができます。この基準となるURIのことを「基底URI」(例では、http://www.utj.co.jp/xml/sta/)、「基底URI」を基準にして相対的に表記するURIのことを「相対URI」(例では、owl.xml)といいます。一方、http://www.utj.co.jp/xml/sta/owl.htmlのように、すべてのパス・コンポーネントを完全に指定するものを「絶対URI」といいます。「XML Base」は、相対URIを絶対URIに解決する方法を規定しています。相対URIを使えば、リンク先の指定を簡単に行えるようになります。例にあるように、xml:base属性を使って基底URIを記述することができます。

基底URIの決定方法

各要素において、基底URIは以下の手順で行われます。

  1. その要素にxml:base属性が指定されているなら、その値を基底URIとする。
  2. (1)で得られない場合、その要素の親要素の基底URIを該当要素の基底URIとする。
  3. (2)で得られない場合、要素を含む文書エンティティか外部エンティティのURIを基底URIとする。

(2)で指定される親要素が確立された基底URIを持たないなら、その親要素も同様の手順で基底URIを確立します。(3)の手順は、ルート要素まで同じ操作を繰り返して基底URIが得られない場合に使われます。          

xml:base属性が相対URI参照で記述された場合

xml:base属性に相対URIが指定される場合もあります。この場合、さらに上位の要素で指定されたxml:base属性を使って基底URIを確立した後、相対URIの解決を行います。

<?xml version="1.0"?>
<doc xml:base="http://www.utj.co.jp/publish/" xmlns:xlink="http://www.w3.org/1999/xlink">
    <p xml:base="/xml/sta/">「OWL」とは、Webオントロジー言語のことです。詳細は<link xlink:type="simple" xlink:href="owl.xml">弊社サイト</link>をご覧ください。</p>
</doc>

link要素にはxml:base属性がないので、親要素pを見ます。しかし、p要素のxml:base属性は相対URIになっています。そこで、p要素で指定されている基底URIは、その親要素docの基底URIを使って「http://www.utj.co.jp/xml/sta/」と解決されます。そして、link要素で指定されている相対URIはp要素で解決された基底URIを用いて「http://www.utj.co.jp/xml/sta/owl.xml」と解決されます。XMLにおける相対URIは、XML BaseとIETFのRFC 2396を使って解決されます。RFC2396もご覧ください。

xml:base属性で使用できる文字

xml:base で使用できる文字は、XMLと同じくUnicodeです。ただし、一部のUnicode文字は使用できません。使用できない文字は、以下の文字です。

・すべての非ASCII文字
・制御文字
・空白文字
・<、>
・"
・{、}
・|
・\
・^
・`

詳細については、IETFのRFC 2396とIETFRFC 2732もご覧ください。




関連サービス

標準化仕様の動向調査
最新動向を伝えるDXメールニュース (無料)



この記事と関連の高い記事

関連キーワード:XML関連規格




ページトップへ戻る