リンクとは複数のファイルまたはファイルのある一部を、別のファイルまたはファ イ丿部と関連づけることです。 HTML のリンクは単純なものでしたが、 XML の リンクはかなり複雑なものになります。 XML でのリンクについて解説する前に、 HTML でのリンクについてまとめておきます。 ・ HTML でのリンク HTML のリンク機能は大変単純です。 URI で別のファイルへ、あるいは同じ ファイル内の指定箇所へリンクすることができます。リンクはリンク元からリ ンク先への片方向で、リンク先をクリックしてリンク元へもどるようなことは できません。また、リンク情報はリンク元の HTML ファイル内に埋め込まれて 7 ー 1 HTML でのリンク います。 マ HTML のリンク リンク元 リンク 片方向のリンク 156 リンク先からはリンク元はたどれない リンク先
7 章リンクとポインタ 7-1. HTML でのリンク HTML でのリンク 別のファイルや場所にリンクする ファイルの特定の場所にリンクする 7-2. XLink のリンク形式・ 2 種類のリンク形式 単純リンク 拡張リンク XML のアンカー指定 リンク情報を別ファイルに指定できる リンク情報に説明を付加できる リンク動作か複数ある 7-3. 単純リンクの指定 名前空間の指定 リンクの種類 リンク先 リンクの説明 リンクの役割 リンク先の内容の表示方法 リンクの起動タイミング 7-4. 拡張リンクの指定 拡張リンクの定義 リンク先に識別名をつける リンクの起点と終点を指定する 7-5- XPointer アンカー指定による固定的なリンク XPointe 「では多彩な条件でリンク位置か指定できる XPointe 「ではリンクの対象領域か指定できる 7-6. XPointer でのリンク位置指定 リンク位置指定の基本 7-7. 絶対位置の指定 基準位置の指定 7-8. 相対位置の指定 相対位置指定での書式 相対位置指定キーワード 位置指定 要素指定 属性名と属性値指定 7-9. 文字指定と範囲指定 文字列バターンの指定 範囲の指定 コラムメタデータ 155 ′ contents ・・ 156 ・・ 158 ・ 164 ・・ 167 ・・ 170 ・・ 172 ・・ 174 ・・・ 175 ・ 180 9
2 XLink の リンク形式 ここから、 XML のリンク仕様である XLink について解説していきます。本書の解 説は http://www.w3.org/TR/2000/CR-xlink-20000708/に基づいています。 仕様は今後も変わりますので、関心のある人は W3C のサイトを参照してください。 ・ 2 種類のリンク形式 XLink (XML Linking Language) は、 XML のリンク仕様で、単純リンクと 拡張リンクという 2 種類のリンク形式があります。単純リンクは、これまでの HTML のリンクに似た機能を持ち、拡張リンクは複数リンクや、双方向リンク など新しい概念を含んでいます。 ・単純リンク (simple link) ひとつのリンク元に単一のリンクが設定されるもので、リンクの機能自体は これまでの HTML のリンクと基本的に変わりませんが、いくつかリンクに対す る名前や役割などが設定できるようになっています。 マ単純リンク 単純リンク リンク情報 158
・リンク情報を別ファイルに指定できる 拡張リンクは複数のリンク先を持つのが特徴です。リンク先に対する指定は xl 土 nk : セ ype = 。 loca セ or " 属性で行い、その間を結ぶリンク ( 点線であらわ してあります ) の指定は xl 土 nk : type = " arc " 属性で行います。 右図は、実際の拡張リンクの記述例です。 xlink:type="locator" 属性 によってリンクの対象場所を指定し、 xlink:type="arc" 属性で 2 つのリン ク対象の関係を指定します。また、 x 1 土 nk :typ e = 。 1 。 c a し。 r " や xl 土 nk : し ype = " arc " などのリンク情報が実際のリンク対象である 3 つのファ イルの外側に記述されていることに注意してください。 これまでのリンクと機能的に異なるのは、リンク情報を保持している XML 文 書からリンクをたどらなくても、 hardware . xml 、 s 0 f tware . xml 、 sho Ⅲ。 h 土 n. 訌の各 XML 文書間で直接リンクをたどることができる点です。 感覚的にいえば、リンク対象の hardware. 刈 11 、 software . 灯n1 、 shomo- h 土 n. 矼の 3 つの XML 文書は変更せずに、第 4 の XML 文書にリンク情報を 指定することで、 3 つの文書間に仮想的なリンクを張ることができるのです。 拡張リンクが実現されれば、面白い応用が考えられます。たとえば投資家 は、市況のサイトと企業情報を提供するサイトをリンクするでしようし、卸売 り業者は市場サイトが提供する卸売りの情報と、発注した品物の到着時刻を知 るためにトラック情報を提供している輸送業者のサイトをリンクするでしよう。 このように拡張リンクを張ることによって、サイト上の XML 文書にはじめか らリンクカ在するかのように、関連する複数のサイト内の情報をグループ化 できます。 0 リンク情報に説明を付加できる このほか、 HTML と比べてみた場合の XLink の特徴を 2 つあげてみます。 HTML のリンクでは、リンクの名称や、リンク先の説明あるいはリンクの役 割などを明確にあらわす方法がなかったので、説明的な内容記述でリンクの解 160
リンクとポインタ Chapter vXPointer でのリンク XLink でリンクの入り口を探す △ ホインタ クは、単純な移動の手段だけでなく、リンク先の対象領域の内容を取り扱うこ は、リンク対象の範囲を明確に指定することができます。これによって、リン 象を範囲としてとらえる「どこまで」の概念がありませんでした。 XPointer で これまでのリンクは、どこにリンクするか位置を指し示すもので、リンク対 ・ XPointer ではリンクの対象領域旨定できる す条件を満たす場所が見つかったら、そこが最終的なリンク先となります。 先の入り口カ定したあと、そこを起点として検索を行います。 xpointer が示 上の図は、 XLink と XPointer の関係を示すものです。 XLink によってリンク える機能です。 置から離れた場所へもリンクを張ることができます。いわば検索リンクともい : XPointer で条件に見合った場所を探す になります。 なリンクとプロセスの実行を連携させるようなアプリケーションの構築も可能 たとえば、対象の範囲を SQL の記述部分に対応させ、それを実行するよう ともできるようになりました。 171
リンクとポインタ Chapter ・拡張リンク (extended link) XML のリンクでは多方向へのリンク先を保持できる拡張リンクが考えられ ています。下図はその概念で、図の下部にある 3 つのファイルは既存の XML あるいは HTML のファイルです。これらに対してリンクを記述しているのが図 の上部に描かれた XLink が記された XML 文書で、 とは独立した別のファイルであっても構いません。 マ拡張リンク 拡張リンク 0 XML のアンカ --$ 旨定 リンク情報 これは下の 3 つのファイル リンク動作 ユーザーが感じる リンク位置の指定 XML では、土 d 属性を使って、任意の要素にアンカー ( リンク場所 ) を指定 できます。次は工し e Ⅲ要素に。 A1234 。というアンカーを設定する例です。 くエ te 爪土 d = ” A1234 ” > . . く / 工に e 爪 > 159
リンクとポインタ Chapter xlink: し。の各属性で利用できます。 ・リンクの種類 ~ xlink : type xlink:type 属性でリンクの種類を指定します。単純リンクの場合 s 土Ⅲー ple を、拡張リンクの場合 ex し ended を指定します。なお、 xlink:type 属 性は省略できません。 ・リンク先 xlink:href 属性でリンク先を URI で指定します。 product-view. 刈n1 の pl 3 と名前付けされた箇所がリンク先として指定されています。 xlink:href 属性も省略できません。 xlink:type と xlink:href 以外の 属性は省略可能です。 ・リンクの説明 ~ xl 土 nk : し辻 le xl 土 nk : 巨し le 属性で、リンクの説明文を指定します。プラウザでは、リン クの移動を実際に行う前に、 xl 土 nk : セ辻 le 属性の値をリンクの説明文とし て表示できます。 0 リンク殳割 Aex1ink:r01e xl 土 nk : role 属性には、リンクの役割などを記述します。 xl 土 nk : セ土に le 属性は人間に見せるための説明でしたが、 xlink:role 属性はリンクの役割 など意味的な記述を行うもので、主としてアプリケーションソフトウェアが利 用します。 ・リンク先の内容示方法 ~ xlink : show xlink : sh 。 w 属性で、リンク先の対象領域の内容がどのように表示されるか を指定します。例では、新しいウインドウにリンク内容が表示される指定になっ ています。 165
・リンク動作カ報数ある HTML のリンクでは、リンク先のファイル全体をプラウザに取り込んでいま した。したがって、リンクの対象が小さな部分でも、いったんはファイル全体 が画面に表示されます。これは回線の利用効率からみても効率的ではありませ ん。 XLink では、リンクの範囲がファイル全体か一部かを明確に示すことによ って、必要な部分だけを転送できるような仕様が考えられています。 リンクを実行したときの 3 種の動作を示します。これらの値は、 xl 土 nk : sh 。 w という属性に対して指定されます。 vXLink でのリンク動作 ( 一部省略 ) 指定 new embed replace 動作 新しいウインドウが開き、そこにリンク先の情報が表示 される リンク対象部分がリンク元の画面に取り込まれる。その 他の部分は変わらない リンク先の場所に移動する リンク元の画面にリンク先の一部分を取り込む例を見てみましよう。 teachers . 訌に以下のような部分があるとします。 <teacher id= "Joe">Joe Allen</teacher> 一一 . Joe Allen をこ oe と id 指 定する リンク元の XML 文書で、リンク先にセ eachers . x Ⅲ 1 # こ oe を指定し、 xlink: show 属性として e ed を設定します。 く student id="Fred" :xlink="http: //www.w3 .org/XML/XLink/Ø . 9 “ > 162 く /student> <name>F 「 ed</name> すると、リンク元の画面に JoeA Ⅱ en が読み込まれます。 <teacher xlink:href="teachers . 刈矼 # こ oe xlink: show="embed" / >
リンクとポインタ Chapter 0 別のファイル所にリンクする 具体的にリンクの例を見てみましよう。リンク指定には、 A 要素を用います。 リンク指定された部分をアンカーといいます。なお、 <A href=" リンク . 先こ工” > で指定します。 リンク先は、 href 属性 ・ファイ ) 寺定の場所にリンクする また、ファイルの特定の場所に名前をつけて、そこにリンクすることもでき く /A> く A href=" # 名前。 > <A href= ”リンク . 先し沢工 # 名前・” > -V</A> 名前付けられたリンク先を指定するには、 URI に続けて # と名前を指定します。 く A name=" 名目リ " > ~ く / A > ます。名前付けには n e 属性を用います。 リンク先が同じファイルの リンク先が別のファイルの 157 ltems Section</A> <A href="http://www. gihyo. CO. jp/list. れし爪1# 工 TEM—START">Sale ・ほかのファイルにある工 T 4 ー START ヘリンク <A href="# 工 TEM_START">SaleS ltems Section</A> ・同じファイル内から工 TEM-START ヘリンク <A name=n 工 TEM_START"><HI> Sales ltems く / HI > く / A > ・く HI > SaIes ltems く / HI > 部分に工 T { ー ST 、 T という名前をつける 以下に、 HTML でのリンク例を示します。
Vx1ink : sh 。 w 属性で指定できるリンク動作 ( 一部省略 ) 指定 replace embed 動作 新しいウインドウが開き、そこにリンク先の内容が表示 される リンク先のファイルや領域の内容がロードされ、現在の 表示と入れ替わる。ファイル全体がリンク先の場合、現 在の HTML リンクと同等の機能 リンク先のファイル全体か指定領域の内容が、現在のリン ク元の画面に取り込まれる。そのほかの部分は変わらない。 ・リンクの起動タイミング eexlink:actuate xlink:actuate 属性で、リンクの実行が何によって起動されるかを指定 します。属性値には、 onLoad と onRequest などのオプションを指定します。 vxlink : actua し e 属性で指定できるリンク起動 ( 一部省略 ) 指定 onLoad onReq ユ est 166 説明 自動起動。リンクが表示対象となると、自動的にリン クが起動する。実際の利用では、 xlink:show 属性に e 曲 ed を指定して、リンク先の領域の内容で表示中の 画面の一部が置きかえるような用途が想定される。 ユーザーの動作によって起動。ユーザーがクリックなどを 行うと、リンクの動作か開始される。現在の方式と同じ