用語: XML Base

2002年1月20日(日)更新


XML Baseってな〜に?

さらら: XML Baseってな〜に?

たけち: XLinkでリンク先を指定するのにURIを使ったよね。

さらら: えっ、えぇ。。。(どっ、どうしよう。すっかり忘れているわ。。。) (^ ^; そっ、そうだったわね。

たけち: XML Baseは、URIの指定の仕方についての仕様なんだ。XLinkでは、xlink:href="URI"のようにリンク先をURIで指定するよね。そのURIを指定するのに、すべてのURIを、たとえば、"http://www6.airnet.ne.jp/manyo/index.html" のように絶対URIで書くと長くなって読みにくいし、メンテナンスしたりするのも不便だよね。

さらら: そうだわね。

さらら


基底URIと相対URI

たけち: たとえば、ファイルのありかを示すのにある場所からの相対で示すように、URIも相対URIとして指定できたらいいよね。

さらら: あっ、そうね。そんな風に指定できると楽だし、読みやすいわね。その指定の仕方を決めたのが、XML Baseなのね。

たけち: そうなんだ。相対URIを指定するってことは、そのベースとなる絶対URIの指定が必要になるよね。これを基底URIっていうんだ。つまり
 求める絶対URI = 基底URI + 相対URI
ってことだね。わかるよね。

さらら: うん。基底URIが無くって、相対URIだけだと意味がないのよね。

たけち


xml:base属性

たけち: この基底URIを指定する方法なんだけど、XMLドキュメントの要素に、xml:base属性で指定するんだ。これについては、次のURLに詳しく載っているよ。

XML Basic: http://www.w3.org/TR/xmlbase/
XMLドキュメント中に指定された相対URIを絶対URIにするための仕様です。2001年6月27日にW3Cの勧告となっています。

さらら: xml:base属性に基底URIを書くのね。

たけち: そうそう。じゃあ、簡単な例で見てみてみようね。図に示すようなURIに万葉集のテキストがあるとするね。

XML Baseの簡単なサンプル説明用の図


xml:baseのサンプル

たけち: XLinkのサンプルドキュメントで、overview.xmlやvol1.xml, vol2.xml, ..... vol20.xmlドキュメントをリンクしているとするね。

さらら: えぇ。単純なリンクなのね。

たけち: じゃあ、サンプルドキュメントのリストを次に載せるね。二つの要素でxml:base属性を使っているよ。

たけち

XLink(単純リンク)でのXML Base使用の簡単な例
<?xml version="1.0" encoding="Shift_JIS"?>

<sample xml:base="http://www.manyo.org/manyosyu/"
          xmlns:xlink="http://www.w3.org/1999/xlink">
  <body>
    <p>万葉集テキストは次の20巻から構成されています。
    万葉集については
    <link xlink:type="simple" xlink:href="overview.xml">概説</link>
    をご参照ください。</p>
    <list xml:base="/volume/">
      <volume>
      <link xlink:type="simple" xlink:href="vol1.xml">巻 1</link>
      </volume>
      <volume>
      <link xlink:type="simple" xlink:href="vol2.xml">巻 2</link>
      </volume>
      ・・・・・・途中省略いたします・・・・・・・
      <volume>
      <link xlink:type="simple" xlink:href="vol20.xml">巻 20</link>
      </volume>
    </list>
  </body>
</sample>

さらら: う〜んと。。。相対URIで指定しているoverview.xmlに対する基底URIは、sample要素のxml:base="http://www.manyo.org/manyosyu/"だわよね。で。。。vol1.xmlに対する基底URIは、list要素のxml:base="/volume/"、あれ?? これって相対URIじゃないの?

さらら

たけち: あっ、そうそう。xml:baseでは相対URIも書いていいんだよ。そんなときは、上位(親や祖先)の要素で指定されたxml:baseに書かれたURIと組み合わせて、基底URIを決めるんだね。

さらら: そうなんだ。。。。。こんな風に必要な要素にxml:baseって書けばいいのね。

たけち: あっ、そうだ。xml:baseを書かなくてもいい場合もあるんだ。そんなときは、そのXMLドキュメントがある場所(そのXMLドキュメントを取得するのに使われた絶対URI)が基底URIとして使われるんだよ。

さらら: へぇ、そっかぁ。

たけち: こんなところでいいかな。

さらら: うん。ありがと。

さらら