スマートフォン用の表示で見る

フラグメント識別子

ウェブ

フラグメント識別子

ふらぐめんとしきべつし

概説

「id属性やa要素のname属性で指定するアレ」の正式名称。

定義でいえば、(X)HTMLなどにおいて、ページのある特定の部分(「フラグメント」と呼ばれる)を識別し指定するための名前のこと。

英語では"fragment identifier"。なおJIS用語としては「素片識別子」が正しい名称である他、翻訳者によっては「断片識別子」「部分識別子」と訳されている。

詳細

例えばこのキーワードページにおいて、見出し「概説」に付けられたname属性「about」が、概説部分という1つのフラグメントに対するフラグメント識別子である。

フラグメント識別子はa要素のname属性で指定するのがよく知られているが、HTML4からは任意の要素のid属性によって指定できる。name属性はXHTML1.1以降では完全に廃止されている(すなわちフラグメント識別子の指定はid属性でのみとなっている)ので注意されたい。

あるページの特定のフラグメントを指定したURIは、「http://d.hatena.ne.jp/keyword/フラグメント識別子#about*1というように、そのページのアドレスの後ろに「#」とフラグメント識別子を付け足した形になる。リンク元と同じページのフラグメントへのリンクは、単に「#about」というように指定すればよい。

HTML4.01においてid属性は、アルファベット(A〜Z、a〜z)で始まり、その後はアルファベット・数字(0〜9)・ハイフン(-)・アンダースコア(_)・コロン(:)・ピリオド(.)で構成されていなければならない。name属性にはこのような制限はない*2が、将来性を考えるとフラグメント識別子の命名はこのルールに従ったほうが良いだろう。ただしid属性をCSSセレクタに使いたい場合、ハイフン(-)以外の記号はセレクタに使えないので注意すること(アンダースコア(_)についてはCSS2のerrataにて使うことができるように訂正されている。また、属性セレクタを使う場合は詳細度?は下がることになるがそのほかの記号も使うことができる)。

XHTML(XML)においては、id属性の値に日本語を使うことも許されるなどHTML4.01のものと比べて使用できる文字が大幅に増えており、形式も少々異なる。また、XML名前空間(1.0 Second Editionまたは1.1)が定義する名前空間妥当とするためにはコロン(:)を含めないようにする必要がある。

フラグメント識別子は同じページで各々がただ一つでなくてはならない。name属性の重複はもちろんのこと、name属性と同じ名前を別の要素のid属性に使うこともできない*3。またアルファベットの大小文字の違いも許されない。大小文字の違いはURIでも区別され、例えばフラグメント識別子「detail」に対し「#Detail」と指定するのは間違いである。

*1:冗長になるためURLエンコード部分を元の文字列で表した。悪しからず。

*2はてなダイアリーで時刻付き見出し記法を使った時に自動的に付けられる数字のみによるフラグメント識別子は、name属性を使っているので一応間違いではない。

*3:a要素に同じ値でid属性とname属性を併記することは認められている。