Jintrick.netagenda2003年03月アーカイブ → 2003年03月06日

URI、URN、URL、そしてフラグメント参照とXLink批判

明らかにURLといってよいものをURIと記述していた部分をURLに修正……しようと思ったのですが、abbr要素としてマークアップしていなかったので放置することにしました(駄目)。XSLTスタイルシートで書き出している部分は、PURLだったりしますので、これは「Locator」というより「Name」、URNなのではないかな、と。でもPR PURLはURLのような気もします(参照:URN (Uniform Resource Name) について-- ごく簡単なHTMLの説明)。

と、ここで誠に残念な記事を発見してしまいました。

URI部分のない(#fragidだけの)URI参照は、その文書の「見え方(view)」を変更するものであるとされています。

ハイパーリンク -- ごく簡単なHTMLの説明 より

次の一節をどう読むと、「見え方(view)」を変更するものであるとされていますなどと解釈できるのでしょうか。

RFC 1808 (Section 4) defined an empty URL reference (a reference containing nothing aside from the fragment identifier) as being a reference to the base URL. Unfortunately, that definition could be interpreted, upon selection of such a reference, as a new retrieval action on that resource. Since the normal intent of such references is for the user agent to change its view of the current document to the beginning of the specified fragment within that document, not to make an additional request of the resource, a description of how to correctly interpret an empty reference has been added in Section 4.

G.4. Modifications from RFC 1808 より

ここではフラグメント識別子のみで構成されたURI参照の「定義」ではなく、その一般的な目的(normal intent of such references)が述べられているだけです。不適切な引用のような気がします。私ならこちらを参考にします。

The semantics of a fragment identifier is a property of the data resulting from a retrieval action, regardless of the type of URI used in the reference. Therefore, the format and interpretation of fragment identifiers is dependent on the media type [RFC2046] of the retrieval result. The character restrictions described in Section 2

4.1. Fragment Identifier より

(フラグメント識別子の意味は、参照に用いられたURIの形式に関係なく、取得動作の結果となるデータの性質である。それゆえ、フラグメント識別子の形式と解釈は取得結果のメディア型[RFC2046]に依存する。文字の制限はSection2で説明したとおりである。)

メディア型依存ということで、RFCのこの文書を根拠としてURI参照の具体を定義することは無理そうです。メディアを特定しないならThe significance of the fragment identifier is a function of the MIME type of the objectと、精々こう定義できる程度のものです(参考:Fragment Identifiers -- Axioms of Web architecture)。

ではXHTMではどうかといえば、XHTML 1.0: The Extensible HyperText Markup Language (Second Edition)のC.8. Fragment Identifiersに、次のような記述があります。

In XML, URI-references [RFC2396] that end with fragment identifiers of the form "#foo" do not refer to elements with an attribute name="foo"; rather, they refer to elements with an attribute defined to be of type ID, e.g., the id attribute in HTML 4.

C.8. Fragment Identifiers @ XHTML 1.0: The Extensible HyperText Markup Language (Second Edition) より

「XMLでは、フラグメント識別子で終わるURI参照はID型として定義された属性をもった要素を参照する」とあります。HTML4では参照という単語は使われず、「name属性やid属性を持ったアンカーを示す」という程度の意味になっていますが、viewを変更するとった具体的な表示方法について定義した記述は見つかりませんでした。もしあったら「HTML4 is crap」と叫んでしまうところでした。

文章の読み方という点で見れば、ユーザーのアクションによってviewを変更する=異なるポジションに移動するのも、やはりハイパーリンクですね。

ハイパーリンク -- ごく簡単なHTMLの説明 より

異なるポジションに移動するというのは、ある特定のメディアに依存した参照行為の一つの手法ですが、XLinkのように、「アクション」をリンクに含んでしまうのは大反対です。もし、ユーザーのアクションによって異なるポジションに移動するのが「ハイパーリンク」であるならば、「<a href="http://example.com/">ここをクリック</a>」をクリックして移動する行為も立派なハイパーリンクになってしまいます。ユーザーのアクションを明確に示したクリック、そしてそれをハイパーリンクとする為に、aタグでその文字列を括るのです。こんな自然な行為があるでしょうか。

リンクのセマンティクスに「アクション」を含めてしまうと、このようなメディア依存なリンク(例:ここをクリック)、あるいは、ユーザーの自由を侵害するリンク(target="_blank")を含んだHTML/XHTML文書が大量に生産されることになります。その時になって初めて、具体的かつ詳細なアクセシビリティガイドラインの普及に躍起になるのと、リンクの意味からアクションの部分を最初から切り離しておくのと、どちらが良いでしょうか。「何故そのアクションを起こす必要があるのか」その理由を意味付けしてやれば機能的には同じ物を提供できるはずです。「何故文字を太くしたいのか」「強調したいからさ」

XLink批判

そういった意味で、XLinkの「behavior attributes」のshow属性などはかなり有害だと思います。

xlink:show="new"
新しいウィンドウ等を開かせる指定ですが、これはナンセンスです。そういった具体的なアクションではなくて、例えば「一時的な参照である」ことを示せば済む話です。
xlink:show="embed"
終了リソースを埋め込むという指定ですが、これはナンセンスです。そういった具体的なアクションではなくて、例えば「その文書が必要とするリソースへの参照である」ことを示せば済む話です。

要するに、参照の性質を示せば良いところを、具体的なアクションを定義する形にしてしまっているのが駄目なのです。ユーザーエージェントは、参照の性質を知ることが出来れば、新しいウィンドウで開くかどうかを決定する有益な情報をユーザーに提供することが可能です。それで十分です。一方、xlink:show="new"では、参照の性質を伝えませんから、新しいウィンドウを開きたくないユーザーは、一律にこのアクションを拒絶する設定をするかもしれません。どちらがより良いでしょうか。

特定のメディアの特定の環境向けにこういったアクションの具体を定義する言語があっても良いとは思いますが、XMLのリンク一般を叙述する言語に、そのようなものは必要ないと考えます。

  1. Get rid of XLink? (英語)
  2. The future of linking on the Web (英語)
  3. minutes of the W3C 16 Jan 2003 discussion on Linking (英語)

webmaster@jintrick.net
公開: 2003年03月06日
カテゴリ: 意見交換, 批判等 ,(ハイパー)リンク