[135]
[DFN[[RUBYB[素片識別子] [fragment identifier]]]]は、
[[URL]] の一部分であり、[[素片識別子]]''以外''の部分により識別される[[資源]]の一部分、
あるいは[[表現]]の一種を識別するために使われます。

[349] [[URL]] に現れる [CODE[#]] とそれ以降の部分が[[素片識別子]]です。

[EG[
[560] <https://www.example.com/foo#hello> では、 [CODE[#hello]]
の部分が[[素片識別子]]です。
]EG]

* 仕様書

[REFS[
- [318] '''[CITE@en-US[URL Standard]] ([TIME[2014-07-28 16:26:47 +09:00]] 版) <http://url.spec.whatwg.org/#concept-url-fragment>'''
- [320] [CITE@en-US[URL Standard]] ([TIME[2014-07-28 16:26:47 +09:00]] 版) <http://url.spec.whatwg.org/#writing>
- [319] [CITE@en-US[URL Standard]] ([TIME[2014-07-28 16:26:47 +09:00]] 版) <http://url.spec.whatwg.org/#fragment-state>
- [146] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-09-02 22:35:05 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#the-indicated-part-of-the-document>
- [392] [CITE@en[Best Practices for Fragment Identifiers and Media Type Definitions]] ([TIME[2013-04-29 23:11:19 +09:00]] 版) <http://www.w3.org/2001/tag/doc/mimeTypesAndFragids>
-- [388] [CITE@en[Best Practices for Fragment Identifiers and Media Type Definitions]] ([TIME[2013-04-29 23:11:19 +09:00]] 版) <http://www.w3.org/2001/tag/doc/mimeTypesAndFragids#dfn-fragid>
-- [391] [CITE@en[Best Practices for Fragment Identifiers and Media Type Definitions]] ([TIME[2013-04-29 23:11:19 +09:00]] 版) <http://www.w3.org/2001/tag/doc/mimeTypesAndFragids#h-registrations>
-- [297] [CITE@en[Best Practices for Fragment Identifiers and Media Type Definitions]] ([TIME[2013-04-29 23:11:19 +09:00]] 版) <http://www.w3.org/2001/tag/doc/mimeTypesAndFragids#h-structures>
-- [358] [CITE@en[Best Practices for Fragment Identifiers and Media Type Definitions]] ([TIME[2013-04-29 23:11:19 +09:00]] 版) <http://www.w3.org/2001/tag/doc/mimeTypesAndFragids#authors>
- [467] [CITE@en[RFC 6838 - Media Type Specifications and Registration Procedures]] ([TIME[2015-02-11 00:35:08 +09:00]] 版) <http://tools.ietf.org/html/rfc6838#section-4.11>
- [257] [CITE@en[RFC 6839 - Additional Media Type Structured Syntax Suffixes]] ([TIME[2013-06-28 00:23:48 +09:00]] 版) <http://tools.ietf.org/html/rfc6839#section-3>
- [387] [CITE@en[RFC 7049 - Concise Binary Object Representation (CBOR)]] ([TIME[2014-12-30 16:14:51 +09:00]] 版) <http://tools.ietf.org/html/rfc7049#section-7.5>
- [592] [CITE@en[RFC 8091 - A Media Type Structured Syntax Suffix for JSON Text Sequences]] ([TIME[2017-02-23 00:58:07 +09:00]]) <https://tools.ietf.org/html/rfc8091#section-4>
]REFS]

* 呼称

[512] [[URL]] の現行仕様である [[URL Standard]] は、
「[DFN[[F[[RUBYB[[[素片]]]@en[fragment]]]]]]」と呼んでいます。

[513] 一般的には、単に[[素片]]だけでは文脈上意味が明確でないこともあるので、
[RUBYB[素片識別子]@en[fragment identifier]]や[RUBYB[URL素片]@en[URL fragment]]などと修飾して呼ぶこともあります。

[136] '''俗称''':
[[DOM]] では、[[素片識別子]]を表す[[属性名]]として「[CODE(DOMa)@en[[[hash]]]]」
を使っています。これは、[[素片識別子]]の先頭を表す[[文字]]「[CODE(char)[#]]」
の俗称に由来しています。

[137] 特に [[HTML]] [[文書]]の[[素片識別子]]については、「[[アンカー]]」や
「[[アンカー名]]」と呼ばれることもあります。

[389] >>388 は [DFN[[[fragid]]]] と呼んでいます。

[21] '''日本語訳''':
「[[素片識別子]]」 (fragment identifier) は、
[DFN[フラグメント識別子]]、[DFN[断片識別子]]などとも訳されます。

[462] [DFN[[[hash fragment]]]] と呼ぶこともあります [SRC[>>461]]。

[REFS[
- [461] [CITE[Yahoo OAuth 2.0 Guide - Yahoo Developer Network]] ([TIME[2015-03-06 08:55:41 +09:00]] 版) <https://developer.yahoo.com/oauth2/guide/>
]REFS]

* 意味

[503] [[URL]] (を表す[[データ構造]]) は、[[素片]]を持ちます。
[DFN[[RUBYB[[[素片]]]@en[fragment]]]]は、
[[null]] か、
[[URL]] の他の部分が識別する[[資源]]の更なる処理に使うことができるデータを保持する[[文字列]]のいずれかです
[SRC[>>318]]。

[516] [[URL]] 一般に対しては、[[素片識別子]]の意味はこのように抽象的なもので、
構文もほとんど何でもありになっています。 [[URL]] が表す[[資源]]の形式
([[MIME型]]) によっては構文上の制限を規定したり、意味や処理方法を規定したりしています。

[EG[
[517] 例えば [[HTML]] ([CODE(MIME)@en[[[text/html]]]]) では[[要素]]の
[CODE(HTMLa)@en[[[id]]]] [[属性値]]と一致するなら、その[[要素]]を表すと規定されています。
]EG]

[518] 歴史的には [[MIME型]]によって解釈が定められるというのが仕様書の「正式」
な[[素片識別子]]の意味でしたが、実際には徐々に意味が拡大し、
色々な用法が存在しています。

[FIG(list)[
- [519] [[資源]]の一部分の識別に使い、その構文と意味が [[MIME型]]により決まる場合
- [520] [[URL scheme]] に依存して構文と意味が決まる場合
- [521] [[資源]]の[[スクリプト]]の処理に使われる場合
- [522] [[資源]]についての情報を予め提示するために使われる場合
]FIG]

;; 詳細は後述。

* 構文

[504] [[素片]]は、0個[[以上]]の[[URL符号位置]]の列でなければ[['''なりません''']] [SRC[>>320]]。

;; [509] 定義上、最初の [CODE[#]] は[[素片]]の一部ではありません。

;; [510] [[空文字列]]でも構いません。長さの上限はありません。

;; [511] [[非ASCII文字]]が含まれることがあります。

[FIG(railroad)[
= [CODE[#]]
= *
== [[URL符号位置]]
]FIG]

[628] [[URL構文解析器]]は、[[素片識別子]]を[[正準形]]に変換します。
この時[[パーセント符号化]]では[[素片パーセント符号化集合]]が使われます。

-*-*-

[649] 
一般の [[URL]] の[[素片識別子]]の構文には、これ以上の制約はなく、
構造はありません。

[650] 
[[素片識別子]]が使われる場面によっては、その文脈に依存した追加的な制約が定められていることがあります。

[EG[
[651] 
[[XML文書]]の [[URL]] では [[XPointer]] が使われることがありました。
その場合は [[XPointer]] [[仕様書]]の規定する制約が適用されました。
]EG]


* 文脈

[8] [[素片識別子]]は、 [[URL]] の一部として使うことができます。
[[素片識別子]]のみで構成される [[URL]] もあります (それを特に[[同文書参照]]ということがあります)。

** 素片識別子だけを使うプロトコル要素

[17] [[SMIL]] の [CODE(XMLa)[[[fragment]]]] 属性は、
[[HTML]] の [CODE(HTMLa)[[[name]]]] 属性や [CODE(HTMLa)[[[id]]]]
属性や、 [[XML]] 
の素片識別子を使ってある資源の一部を識別するために使うことができます。

[18] [[XInclude]] の [CODE(XMLa)[[[xpointer]]]] 属性は、
[[XPointer]] を使って XML の一部を識別するために使うことができます。

[586] [[Web Annotation]] の [DFN[[CODE[FragmentSelector]]]]
も[[素片識別子]]の [CODE[#]] の後 ([CODE[#]] は含まない。)
を使っています [SRC[>>585]]。

[HISTORY[
[529] [[HTML]] の [CODE(HTMLa)@en[[[usemap]]]] [[属性値]]は、元々は [[URL]]
でした。現在では [CODE[#]] と [CODE(HTMLa)@en[[[name]]]] 
[[属性値]]を指定するものと再定義されています。
]HISTORY]

[REFS[
- [585] [CITE@en[Web Annotation Data Model]] ([TIME[2017-02-24 02:14:26 +09:00]]) <https://w3c.github.io/web-annotation/model/wd2/#h-fragment-selector>
]REFS]

* 構文解析

[505] [[URL構文解析器]]は、最初の [CODE[#]] の後を[[素片]]として扱います。
基本的には、 [CODE[#]] よりも後に記述された[[文字列]]がそのまま[[素片]]となります。 [SRC[>>319]]

;; [[パーセント復号]]は行われません。

[506] [CODE[[[U+0000]]]]、[CODE[[[U+0009]]]]、[CODE[[[U+000A]]]]、[CODE[[[U+000D]]]]
は、無視されます [SRC[>>319]]。

[507] [CODE[#]] がなければ、[[素片]]は [[null]] です [SRC[>>318, >>319]]。

[508] 次の場合は、[[構文解析誤り]]です。
[FIG(list)[
- [[URL符号位置]]以外が含まれる場合
- [CODE[%]] の後に[[16進数]]が2桁指定されたいない場合
]FIG]

* 処理

[FIG(short list)[
- [[素片識別子へのスクロール]]
]FIG]

** 誤り

[414] [[素片識別子]]は、それが[[文書]]中の何らかの部分を示す場合の他に、
構文的に誤りがある場合、構文的に誤ってはいないが指すものが存在しない場合があります。 [SRC[>>391]]

[415] しかし、そのような誤りであっても、
[FIG(list)[
- [416] [[文書]]中の何かではなく、[[文書]]が説明する何かを表す場合 ([[Semantic Web]] での用法)
- [417] [[活性内容]]が解釈する場合
- [418] [[内容折衝]]の他の[[表現]]では意味を持つ場合
]FIG]
... のように正当な理由があることもあります [SRC[>>391]]。

;; [419] >>418 が正当な理由と言えるのかは怪しいですが...

[420] ですから、[[MIME型]]の[[素片識別子]]の規定は構文の制約を設けるものではなく、
認識できる[[素片識別子]]をどう解釈するかを決めるものとなります [SRC[>>391]]。
解決できない[[素片識別子]]を与えられた[[応用]]の動作は、[[実装定義]]とするべきです
[SRC[>>391]]。

;; [421] >>415 のような理由があるから[[実装定義]]だと >>391 は言っていますが、
そうであるからこそ[[実装定義]]ではなく処理モデルを明確に決めないと[[相互運用性]]に問題が出る気がしますが...

* API

[FIG(short list)[
- [CODE(JS)@en[[[location.hash]]]]
- [CODE(DOMe)@en[[[hashchange]]]]
- [CODE(CSS)@en[[[:target]]]]
]FIG]

* 素片識別子と URI scheme

[23] URI の素片識別子と scheme 以外の部分の構文は、
[WEAK[(URI 全体の規定の範囲内で)]]
使用している [[URI scheme]] によって規定されています。
古くは素片識別子も URI scheme に依存すると考えられたこともあり、
古い URI scheme の中には素片識別子の扱いについて触れているものもあります。
しかし、現在では素片識別子は URI によって識別される[[資源]]の性質に依存するものであり、
'''URI scheme とは独立'''であると考えられています。

[142] [[URI scheme]] によっては、歴史的、その他の理由により、
構文的に[[素片識別子]]と矛盾する規定・実装がなされていることがあります。
詳しくは >>95 を参照してください。

[480] [CODE(URI)@en[[[ws:]]]]/[CODE(URI)@en[[[wss:]]]] では[[素片識別子]]が禁止されています
[SRC[>>479]]。

[REFS[
- [479] [CITE@en[RFC 6455 - The WebSocket Protocol]] ([TIME[2015-03-11 20:42:50 +09:00]] 版) <http://tools.ietf.org/html/rfc6455#section-3>
]REFS]


[655] 
[CODE[corbaname:]] ではオブジェクト名の記述に使われます。

* 文書形式と素片識別子

** 素片識別子と MIME 型

[468] [[素片識別子]]の解釈は、当該 [[URL]] を[[解決]]して得られる[[文書]]の種別によって異なります。

[469] [[MIME型]]に関する[[IANA登録簿]]への登録の際には、
当該[[MIME型]]における[[素片識別子]]の解釈を規定できます [SRC[>>467]]。

;; [470] しかしこれは義務ではなく、規定していない[[MIME型]]が大多数です。

[24] URI の仕様書によれば、素片識別子の構文はその URI 
参照による[[取出し]]行為 
[WEAK[([[RDF]] のように仮想的な[Q[取出し]]行為も含まれます。)]]
の結果得られる[[資源]]の[[媒体型]]に依存するとされています。
[Q[取出し]]が行われなければ、素片識別子の構文と解釈はできず、
実質無制約になります [SRC[WebArch 3.2.1]]。

[25] URI 参照によって識別される資源は[[内容折衝]]の対象になっているかもしれません。
そうでなくても、一つの URI 参照に対応する資源を取出す手段
[WEAK[(仮想的なものかもしれません。)]] が複数あれば、
それぞれによって違うものが取出されるかもしれません。
動的表現 (>>26) をも一つの URI 参照に対応する[[資源]]の[[表現]]の一種と考えることもできます。

取出された資源の媒体型が異なると、同じ素片識別子であっても異なるものを指し得ます。
あるいは、一方に対しては構文や意味が定義されていなかったり正しくなかったりすることも起こり得ます。

実際に識別されるものが意味的に異なっている場合は、
鯖の設定の誤りと考えられます。構文や意味が未定義であるのは、
すべての媒体型が同じ機能を提供していないのですから仕方が無いことです。
[SRC[WebArch 3.2.2]]

このような問題をできるだけ避けるために、
各媒体型で素片識別子の構文や意味論は大きく変えてしまわないことが好ましいと考えられています。

[HISTORY[
[29] 素片識別子を媒体型から独立したものにしようという提案もありますが、
今のところ広く受け入れられてはいません。

[REFS[
- [561] [CITE[A generic fragment identifier syntax]] 
<http://www.rddl.org/fragment-syntax>,
<urn:ietf:id:draft-borden-frag-00>
]REFS]
]HISTORY]

[96]
[[URI]]が単なる所在指示子としてだけではなく、[[識別子]]として重要性を帯びてからは、
[[素片識別子]]もが[[取出し]]を伴わない文脈で用いられるようになりました。
仕様の側もそれを容認すると明記しています。
構文と[[素片識別子]]単体での意味も事実上不定になります。
(>>24, [WebArch], [RFC 3986])

[97]
この問題に遭遇した[[RDF]]は、 
(当時の[[URI]]仕様である[[RFC 2396]]との整合性のため)
[Q[[[RDF URI参照]]における[[素片識別子]]は、[CODE(MIME)@en[[[application/rdf+xml]]]]で解釈することとする]]とのやや無理のある規定を設けています。

[104] '''[CODE(URI)@en[xmpp:]] URI scheme''':
[CODE(URI)@en[[[xmpp]]:]] [[URI scheme]]
では、 [[XMPP]] においては[[資源]]が[[表現]]を持たないので、
[[媒体型]]もなく、 [[RFC 3986]] にある通り実質無制約になり、
[[XMPP]] [[応用]]は好きに使って良い、とされています。
[SRC@en[[[RFC 4622]] 2.6, >>543]]

[REFS[
- [543] [CITE@en[RFC 5122 - Internationalized Resource Identifiers (IRIs) and Uniform Resource Identifiers (URIs) for the Extensible Messaging and Presence Protocol (XMPP)]] ([TIME[2015-07-26 16:55:44 +09:00]] 版) <https://tools.ietf.org/html/rfc5122#section-2.6>
]REFS]

[98]
[[名前空間URI]]では[[局所名]]と結合した時に[[素片識別子]]付き[[URI]]となることを期待して[CODE(URI)[#]]で終わらせた[[URI]]を使うことがよくありますが、
これも[[取出し]]て得られる[[表現]]とは (あったとしても)
なんら関係がなく、単に形式的なものです。

[390] [[MIME型]]の [[IANA登録簿]]への登録には、[[素片識別子]]の情報を含められることになっています。
しかし登録時期が古い [[MIME型]]のほとんどには、[[素片識別子]]の情報が含まれていません。

[393] [[MIME型]]の[[素片識別子]]の解釈を定義するに当っては、
次の目標を念頭に調整しなければならない [SRC[>>391]] とされています。

[FIG(list)[
- [394] 特定の[[MIME型]]に対応している[[応用]]による処理と、
[[メタ書式]]がある場合にはその[[共通処理器]]による処理とが一貫した形にできること。
- [395] 同じ[[資源]]の[[表現]]で使う可能性のある他の [[MIME型]]の[[文書]]との[[内容折衝]]を促進すること。
- [396] [[スクリプト]]に対応している場合、[[著者]]が適宜[[応用]]の状態を[[素片識別子]]に[[符号化]]できること。
]FIG]

[483] [[IETF]] は [[MIME型]]によって[[素片識別子]]の解釈が決まると言っていますが、
実際には [[MIME型]]そのものによらないで決まる場合もあります。
[FIG(list)[
- [484] [[プロトコル]]上で [[MIME型]]が現れない場合。例えば 
[[ファイルシステム]]上の[[HTML文書]]は [[MIME型]]によって識別されないかもしれませんが、
[[素片識別子]]は使われます。
-- [485] もっともこのケースは、仮想の [[MIME型]]が [CODE(MIME)@en[[[text/html]]]]
と ([[拡張子]]などに基づき) 指定されたと考えることができます。 [[fetch]]
などはそのような立場をとっています。
- [486] データ形式特有の [[MIME型]]が定義されていない場合。
専用の [[MIME型]]のない [[XML]] [[マーク付け言語]]で、独自の[[素片識別子]]を使うものも含みます。
- [487] [[URL scheme]] や利用される文脈によって[[素片識別子]]が解釈される場合。
[CODE(URI)@en[[[irc:]]]] [[URL]] などが該当します。
- [488] [[URL]] が不透明な識別子として使われ、[[素片識別子]]が解釈されることが無い場合。
[[XML名前空間]]や [[RDF]] の [[URL]] などが該当します。
]FIG]

** 構造化構文と素片識別子

[403] [[XML]] や [[JSON]] のような[[構造化構文]]に関しては、
[[XPointer]] や [[JSON Pointer]] のように構文一般に適用される[[素片識別子]]の仕組みもありますし、
特定の[[応用]]で必要な[[素片識別子]]を規定することもあります。

[471] 一般に[[MIME型]]は意味的に似た[[MIME型]]が使っている[[素片識別子]]の形式を採用することを[RUBYB[推奨]@en[encourage]]されています [SRC[>>467]]。

[472] 特に登録された[[構造化構文接尾辞]]を使う場合には、
[[構造化構文接尾辞]]における[[素片識別子]]の規則に従わなければ[['''なりません''']]
[SRC[>>467]]。

[397] [[構造化構文]]の場合には、特定の[[MIME型]]の知識を持った[[応用]]と、
そうでない[[共通処理器]]とで[[素片識別子]]は同じものを識別する
[WEAK[(ように[[素片識別子]]の構文と意味が規定される)]] べきです [SRC[>>391]]。

;; [404] 特定の[[応用]]のみの[[素片識別子]]の構文と意味を規定してはいけないということではなく、
共通の構文と意味に矛盾しない形で拡張するべきだということです。

[398] これは[[構造化構文]]のみならず、 [CODE(MIME)@en[[[text/*]]]] や
[CODE(MIME)@en[[[image/*]]]] のような[[最上位型]]など、
[[共通処理器]]によって処理されるもの一般に適用される [SRC[>>391]] とされています。

[402] [[構造化構文]]の[[共通処理器]]による処理と[[最上位型]]の[[共通処理器]]による処理とが両方適用される場合、
両者で[[素片識別子]]の処理が衝突してしまうことが無いように規定するべきですが、
それができない場合には[[構造化構文接尾辞]]を使わないべきです [SRC[>>391]]。

[256] [[構造化構文接尾辞]] ([CODE(MIME)@en[[[+xml]]]] や [CODE(MIME)@en[[[+json]]]] のような接尾辞)
は [[IANA]] 登録時に[[素片識別子]]についての欄があります。 

[FIG(list)[
- [[RFC 6839]] で登録されている接尾辞
([CODE(MIME)@en[[[+json]]]]、[CODE(MIME)@en[[[+ber]]]]、[CODE(MIME)@en[[[+der]]]]、
[CODE(MIME)@en[[[+fastinfoset]]]]、[CODE(MIME)@en[[[+wbxml]]]]、[CODE(MIME)@en[[[+zip]]]])
[SRC[>>257]]
- [[RFC 7049]] の [CODE(MIME)@en[[[+cbor]]]] [SRC[>>387]]
- [[RFC 8091]] の [CODE(MIME)@en[+json-seq]] [SRC[>>592]]
- [CODE[+tlv]] 
]FIG]

... に関しては、次のように規定があります。

[FIG(steps)[
= [258] [[構造化構文接尾辞]]の[[素片識別子]]の構文と意味は、
相当する単体の [[MIME型]] ([CODE[+tlv]] の場合、 [CODE[application/vnd.oma.lwm2m+tlv]]) 
の[[素片識別子]]の構文と意味と同じとする
= [259] 所属する[[MIME型]]の[[素片識別子]]の構文と意味は、
== [260] [[構造化構文接尾辞]]で定義されている場合、
=== [573] それにより解決できる場合は、それによる
=== [261] 解決できない場合は、[[MIME型]]による
== [262] [[構造化構文接尾辞]]で定義されていない場合は、[[MIME型]]による
]FIG]

[EG[
[574] この規定は、 [CODE[+tlv]] の [CODE[application/vnd.oma.lwm2m+tlv]]
のように、参照先で[[素片識別子]]の構文と意味が規定されていない場合にも存在しています。
実質的に[[MIME型]]によると言っているのと同じなのですが、将来の改訂で[[構造化構文接尾辞]]全体の[[素片識別子]]を追加できる余地を最初から設けておくという趣旨なのでしょうか。
]EG]

** 内部参照に使う URI 参照としての素片識別子

[50] 同じ[[文書]]内で参照を行うためには [[SGML]]
の [CODE(SGML)[[[IDREF]]]] 
のように専用の機構を用意しているものもありますが、
[[URI参照]]や [[IRI参照]]を採用して外部への参照と兼用していることもよくあります。
その場合、当然[[素片識別子]]が使われることになります。

素片識別子の構文と意味は、
その参照先の[[資源]]の[[表現]]の[[媒体型]]によります (>>24)。ですから、
そのような使い方をする文書形式では[[素片識別子]]の構文と意味が陽に定義されている必要があります。

[51] ところが、特に [[XML]] 系の文書形式の仕様で、 [CODE(XML)[ID]]
属性を参照先として使っている場合には自明なためか明確に規定されることがあまりありません。
[[XML]] の場合、[[名前空間]]を使って複数の[[語彙]]を混在させられるのですから、
[[素片識別子]]の解釈が異なる[[語彙]]が共存するとき、どう処理されるのかが問題となります
(>>538)。そうでなくても、 [[XML]] には多くの文脈でそれぞれの [CODE(XML)[ID]]
の定義が用意されており、どれに従うべきかを本来は明確に規定しなければならないはずですが、
おざなりにされています。

;; [CODE[ID]] も参照。

[575] また、[[基底URL]]を指定できる時、内部参照のつもりの[[素片識別子]]のみの [[URL]]
をどう解釈するかが問題となることもあります。

;; [[同文書参照]]も参照。

** MIME 型のない形式と素片識別子

[52] [[HTTP]] や [[MIME]] での利用を想定していない (他のプロトコルを使う、プロトコルで転送せずメモリー上のみ存在するなど。)、
[[マーク付け言語]]の汎用の[[MIME型]] ([CODE(MIME)@en[[[text/xml]]]] など) を使う、
といったような理由で専用の [[MIME型]]を持たない文書形式も存在します。
中には、にも関わらず、独自の[[素片識別子]]を (明示的または暗示的に) 規定するものもあります。

** 複合文書との関係

[538] [[XML]] のように複数の[[語彙]]を組み合わせることができる[[マーク付け言語]]では、
それぞれの[[語彙]]が[[素片識別子]]の解釈を持っている時、その組み合わせで[[素片識別子]]をどう解釈するべきかが問題となります。

[539] [[XML]] としてはその解決方法を持っておらず、
本来なら[[語彙]]を組み合わせた[[マーク付け言語]]の側で明確に規定する必要があるのですが、
実際には曖昧なままにされていることがほとんどです。

[540] 特に [[XML署名]] (>>49) や [[XML Events]] (>>53) 
のように他の[[語彙]]と組み合わせることが想定された[[語彙]]では問題となります。
[[RDF/XML]] (>>13) も、他の[[語彙]]と組み合わせた時に意味が衝突する例です。

[EG[
[53]
例: [[XML事象]]は [CODE(XMLa)[[[handler]]]] 属性などで
[[URI参照]]を使っていますが、
それが[[同文書参照]]である時の意味を特に規定していません。
意味的には [CODE(XML)[[[IDREF]]]] として扱われることが期待されていますが、
[[XML事象]]は[[ホスト言語]]と組合せて使うものですから、
その組合せの[[プロファイル]]でこれと矛盾しないように[[素片識別子]]の規定を行わなければなりません。
(その例: [[SVG 1.2]])

[CITE[XML Events]] <http://www.w3.org/TR/2003/REC-xml-events-20031014/>
]EG]

[EG[
[482] [[XHTML+Voice]] の仕様書は、 [[XML Events]] と[[同文書参照]]を使う例を示しています。
[[X+V]] 本体仕様書は [[MIME型]]には言及していないのですが、 [[MIME型]]
[CODE(MIME)@en[[[application/xv+xml]]]] (>>103) を規定する [[RFC]] では、
[[ID]] を指すと解釈することが規定されています。
]EG]

[541] 理論上は、[[MIME型]]によって[[素片識別子]]の解釈は変わるはずで、
規定がなければ何を表すか不明になってしまいます。しかし、
特に同じ[[文書]]内の他の[[要素]]を指している場合には、
[[著者]]にとって難解で、実装も複雑になってしまいます。

[542] 実際上は、[[平名前素片識別子]] ([[XPointer]] [[速記指示子]])
によって他の[[要素]]の [CODE(XML)@en[[[ID]]]] を指すことがほとんどで、
それ以外の方法は実装もほぼされていないので、あまり問題とはなりません。
[[MIME型]]で明確に[[素片識別子]]が規定されていない [[XML]]
系[[マーク付け言語]]でも、 ([[素片識別子]]を使うなら) そう実装されているのが普通です。

** 内容折衝との関係

[399] [[内容折衝]]により同じ [[URL]] で違う[[表現]]が返される可能性がある場合、
[[素片識別子]]は同等のものを指していることもあれば、
一方でしか存在しないものを指している場合や、一方ではエラーになる場合もあります。
同じ[[素片識別子]]が異なるものを指す場合もあり得ます。

;; [400] これは[[内容折衝]]を使うのが好ましくない理由の一つでもあります。

[401] [[MIME型]]の[[素片識別子]]を規定する場合には、[[内容折衝]]される可能性のある他の
[[MIME型]]との整合性を検討しなければならない [SRC[>>391]] と指摘されています。

[425] [[著者]]は、[[内容折衝]]で提供される[[表現]]間で同じ[[素片識別子]]が意味的に同じ構造を指すように、
また意味的に同じ構造は同じ[[素片識別子]]で参照できるようにする[['''べきです''']] [SRC[>>358]]。

[426] [[素片識別子]]を使って参照する場合は、何らかの手段で単一の[[表現]]しか無いと確認できない限り、
[[構文に基づく素片識別子構造]]を使う[['''べきではありません''']] [SRC[>>358]]。

;; [427] そのような手段は事実上存在しないので、実質的に[[著者]]以外は使わないよう求めていることになります...

** 動的表現との関係や状態保存のための用法

[410] [[文書]]の状態が[[スクリプト]]その他によって変化すると、
[[素片識別子]]が指すもの、あるいは差し得るものが変化することがあります。
また[[スクリプト]]が[[素片識別子]]を参照し、何らかの処理を実行したり、
表示状態を変化させたりすることがあります。
特に後者は、[[MIME型]]によって規定される[[素片識別子]]の意味を実質的に拡張するもの [SRC[>>391]]
です。

[EG[
[26] 例えばある XML 文書 <http://www.example.org/xml> で、
はじめ [SAMP(XML)[id]] という識別子は定義されていなかったとします。
この時、 URI 参照 <http://www.example.org/xml#id> は指すものがありません。

ところが、 Web ブラウザにおける何らかの処理の過程においてこの文書のある要素の
[CODE(XML)[[[ID]]]] が [SAMP(XML)[id]] と設定されたとします。すると
URI 参照 <http://www.example.org/xml#id> はその要素を識別するようになります。

このような状況は、便利なこともありますし、混乱を招くこともあります。
]EG]

[EG[
[27] ある XML 文書を [[XSLT]] [[スタイル・シート]]によって変換したとします。
変換した結果には、元の文書に存在していた [CODE(XML)[ID]]
が (それに対応する要素と共に) 残っているかもしれませんし、
残っていないかもしれません。ある[[原始要素]]に対応する[[結果要素]]の識別子は元とは違った識別子になっているかもしれません。
ある識別子に対応するのは原始要素に対応する結果要素とは違う
(関係のない別の) 要素かもしれません。元の文書とは無関係に、
スタイル・シートが新しい識別子を導入するかもしれません。

このような状況は、便利なこともありますし、混乱を招くこともあります。
]EG]

[EG[
[448] [[DocBook]] では同じ[[XML文書]]の[[要素]]は [CODE(XML)@en[[[IDREF]]]] 型の[[属性]]で参照できますが、
[[XInclude]] で取り込まれた部分の[[要素]]を参照する時には[[素片識別子]]を使う必要が生じます
[SRC[>>447]]。つまり [CODE(XML)@en[[[IDREF]]]] は読み込み時点での状態を指しており、
[[素片識別子]]は参照時点での状態を指していると思われます。

[REFS[
- [447] [CITE[DocBook V5.0]] ([TIME[2015-02-05 23:48:50 +09:00]] 版) <http://docbook.org/docs/howto/#changes-linking>
]REFS]
]EG]

[EG[
[165] [[Webアプリケーション]]では、1つの [[HTML]] [[文書]]が複数の「状態」を持つことがあります。
例えば [[Webメイル]]の[[メイル]]一覧画面を表す [[HTML]] [[文書]]1つで[[クライアント]]側[[スクリプト]]を使って日付順、送信者順など複数の表示方法を実現している場合に、
[[素片識別子]]にその「状態」の情報を詰め込むことで、1つの[[文書]]の「状態」を [[URL]]
として表すことができます。
]EG]

[166] [[スクリプト]]による状態保存に使う用法は元々 [CODE(HTMLa)@en[[[name]]]] や [CODE(HTMLa)@en[[[id]]]]
を表すものとして用意された [[HTML]] の[[素片識別子]]の使い方からは外れていますが、
ある[[資源]]の一部分や一表現法を表すとの [[URL]] 一般の[[素片識別子]]の意味論的には間違ってはいません。
[[URL]] の一部分という性質上、多量・大容量の「状態」を詰め込むのには適していませんが、
手軽に実現可能かつ[[ハイパーリンク]]可能な点が優れています。

[167] [[HTML5]] はこのような用法の応用への期待が高まっていることも踏まえて、
[CODE(DOMe)@en[[[hashchange]]]] [[事象]]を追加しました。

[411] [[著者]]は[[スクリプト]]による[[素片識別子]]の解釈が
[[MIME型]]による[[素片識別子]]の解釈と衝突しないようにする必要がありますから、
[[MIME型]]の[[素片識別子]]の規定の際は[[著者]]が動作を理解しやすいように配慮し、
[[著者]]がどのような構文を使うことができるのか明確にする必要があります。 [SRC[>>391]]

[412] 2011年頃には [CODE(URI)[[[''#!'']]]] を[[スクリプト]]による解釈に使う構文とすることが流行りました
(が2,3年で廃れました)。

;; [CODE(URI)[[[''#!'']]]] 参照。

;; [413] >>391 は >>411 のような構文の例として [CODE(URI)[[[''#!'']]]] を挙げています。

[EG[
[409] <https://twitter.com/#!/twitter> は <https://twitter.com/twitter>
に相当する内容が[[スクリプト]]によって表示されるようになっていました。
]EG]

[430] [[OAuth 2.0]] は[[鯖]]から[[利用者エージェント]]上で動作する
[[JavaScript]] [[応用]]への情報伝達に[[素片識別子]]を使っています (>>428)。

[431] [CODE(DOMm)@en[[[postMessage]]]] が実装される以前には、
異なる[[起源]]の [[URL]] (の [CODE(HTMLe)@en[[[iframe]]]] 内の[[文書]])
との通信に[[素片識別子]]を使う手法が用いられることもありました。

** 部分資源を識別しない、あるいは何を識別するか未定義の場合

[140] 本来、[[媒体型]]についての[[素片識別子]]の仕様書は、
[[素片識別子]]がどのような[[部分資源]]を識別するのかを完全に定義するべきです。
例えば、 [CODE(HTMLa)@en[[[id]]]] [[属性]]の値が[[一致]]する[[要素]]を識別するような場合、
[[一致]]する[[要素]]が存在しない場合に何を識別するのか (しないのか)、
実装がどのように動作するべきなのかを規定しておくべきです。

[141] ですが、現実には、多くの仕様はそれを曖昧にしています。
更には、ほとんどの[[媒体型]]については、そもそも[[素片識別子]]が定義されていません。

[3] [[HTML]] [[文書]] ([CODE(MIME)@en[[[text/html]]]]) の場合、
[[文書]]内に存在しない[[素片識別子]]つきの [[URI参照]]を[[レンダリング]]させようとすると、
[[文書]]の最初を表示する [[Webブラウザ]] 
[WEAK[(例: [[WinIE]] や [[Mozilla]] ([[Gecko]]))]] と、
最後を表示する [[Webブラウザ]] [WEAK[(例: [[Classic Mozilla]])]] があります。

* 素片識別子とプロトコル

[523] [[HTTP]] では、[[要求URL]]に[[素片識別子]]は含まれません。
[[ハイパーリンク]]などで指定された [[URL]] のうち、[[素片識別子]]以外の部分が
[[HTTP]] で送信され、その結果の[[資源]]に対して[[クライアント]]側で[[素片識別子]]を解釈します。

[524] [[素片識別子]]を[[サーバー]]が取得できる方が便利な場合もあるとして、
[[素片識別子]]を送信させるような [[HTTP]] の拡張が提案されたこともありました。
しかし現在まで受け入れられるには至っていません。

[527] [[媒体素片]]は、[[クライアント]]が解釈する[[素片識別子]]構文と[[サーバー]]が解釈する
[[URL query]] 構文の両方を用意しています。しかしこの両者を自由に相互変換できるというものでもありません。
[[素片識別子]]に基づき[[範囲要求]]を送信する方式も提案されていましたが、
未完成に終わっています。

[HISTORY[
[525] [[検索エンジン]]などは [CODE(URI)[[[''#!'']]]] 構文 (>>412) により、
[[スクリプト]]が使う[[素片識別子]]と [[path]] との変換規則を定めていたことがあります。

;; この方式は2011年頃に流行しましたが、その後あまり見かけなくなりました。
[[スクリプト]]で生成する内容と[[サーバー]]が生成する内容との対応関係を維持したいとき、
現在では [[Pjax]] ([CODE(DOMm)@en[[[pushState]]]]) により [[path]] や [[query]]
を使うのが一般的になっていますから、そのために[[素片識別子]]と [[path]]
との対応関係を定めて使う必然性が無いのでしょう。
]HISTORY]

[528] [[OAuth 2.0]] の[[認可エンドポイント]]は、[[クライアント]]上の[[スクリプト]]に向けた
([[サーバー]]に送られるべきではない) [[引数][引数 (OAuth 2.0)]]を [[URL]] に入れて引き渡すとき、
[[素片識別子]]を使っています。

[526] [[素片識別子]]を[[サーバー]]に送ってはいけないという決まりはありませんから、
([[HTTP]] 以外の[[プロトコル]]では)
[[素片識別子]]が[[サーバー]]に送られないと仮定するべきではありません。

[559] 実際のところ、 [[HTTP]] であっても、 [[Webページ]]で動作する[[スクリプト]]は表示中の[[文書]]の [[URL]] の一部として[[素片識別子]]を取得できます。
[[スクリプト]]はいつでもこれを[[サーバー]]に送信できます。
つまり[[素片識別子]]は不用意に情報を[[サーバー]]に送信してしまわないために使うことはできますが、
漏洩してはまずい情報のために使ってはいけません。

* 文書の示された部分

[181] [[文書]]が [[DOM]] で表される場合、
「[DFN[[RUBYB[文書の示された部分]@en[the indicated part of the document]]]]」
は[[素片識別子]]によって表される[[文書]]の部分のことをいいます。
この場合に[[素片識別子]]から [[DOM]] の[[節点]]にどう対応付けられるかは、
その[[文書]]の[[MIME型]]の仕様によって決められることとなっています [SRC[>>146]]。

[359] 現時点でこれが厳密に規定されているのは、 [[HTML]] ([CODE(MIME)@en[[[text/html]]]])
の場合 (>>360) のみです。

;; [367] [[文書の示された部分]]は、[[要素]]であることもあれば、
「[[文書]]の[RUBYB[先頭]@en[top]]」であることや、
存在しないこともあります。

[473] [[XML]] においては [[XPointer]] 仕様書により[[XML情報集合]]上で一致する[[要素情報項目]]が規定されていますから、それに相当する 
[[DOM]] 上の[[要素]]が (あれば) [[文書の示された部分]]と解釈するべきと思われます。
ただし、かつて [[DOM3]] では[[XML情報集合]]と[[DOM]]の関係が規定されていましたが、
現在はどこにもそれに相当する規定がありません。

[474] また、 [[XML]] でも [CODE[#top]] が先頭を表すのかどうか不明です。

;; [564] 現実には [[HTML]] の場合と同じ処理が行われているのではないかと思われます。
例えば [CODE(HTMLe)@en[a]] [[要素]]の [CODE(HTMLa)@en[name]]
[[属性]]へと[[スクロール]]されます。

[475] [[平文]]でも理論上は示された部分が存在しますが、そのような実装が存在するのかは不明です。

[570] [[平文]]や[[媒体文書]]の場合、[[スクリプト]]で適宜変形して任意の [[DOM]]
を構築することができますが、[[文書]]の[F[内容型]]に関わらず [[HTML]]
と同じ方法で[[文書の示された部分]]が決められるとも考えられます。

[369] [[擬似クラス]] [CODE(CSS)@en[[[:target]]]] は、[[文書の示された部分]]が[[要素]]の場合、その[[要素]]と[[一致]]します
[SRC[>>146]]。

[FIG(corollary)[
[370] 「[[文書]]の先頭」が[[文書の示された部分]]の場合や[[文書の示された部分]]が存在しない場合には、
[CODE(CSS)@en[[[:target]]]] と[[一致]]するものはありません。
]FIG]

[476] [[素片識別子へのスクロール]]は、[[viewport]] 上に[[文書の示された部分]]を表示する操作です。

* 素片識別子構造

[240] [[素片識別子]]の意味や構文、処理方法の規定のことを[[素片識別子構造]]と呼びます
[SRC[>>297]]。[[素片識別子]]の共通の意味や構文、処理方法の他に、
適用対象の[[文書]]の [[MIME型]]などによって個別の規定があります。

[298] 具体的な[[素片識別子構造]]については、本項の以降の章や各
[[MIME型]]の項を参照してください。

[299] 特定の[[MIME型]]専用の[[素片識別子構造]]を発明するよりは、
できるだけ[[MIME型]]共通の[[素片識別子構造]]を共有する[['''べき''']]
[SRC[>>297]] とされています。

* 資源取得のためのメタ情報を埋め込む用法

** 要約値の埋め込み

[143] [[素片識別子]]を、 [[URL]] によって識別される[[資源]]の[[表現]]が正当なものである、
あるいはある特定の版であることを確認するための[[ハッシュ値]]、
あるいは[[指紋]]を埋め込む場所として用いようとする提案があります。

[112]
[CITE[Link Fingerprints]] <http://www.gerv.net/security/link-fingerprints/>
([[名無しさん]] [WEAK[2006-11-11 03:36:08 +00:00]])

[144] 詳しくは [CODE(URI)@en[#[[hash]]()]] の項を参照してください。

[145] このような提案は、実装実験も行われている一方で、
元々の[[素片識別子]]の意味から逸脱しているとの批判もあります。

[458] [[JWT]] で使われることがあります (>>455)。

[150]
>>15 や >>90 のような[[版]]を指定する[[素片識別子]]もこれに類するといえるかもしれません。

** 履歴管理制御のための用法

[161] [[Webブラウザー]]によっては、[[素片識別子]]を含む [[URL]] 全体を[[未読]]かどうかの判定に用いています。

;; 例えば、 [[Firefox]] は [[URL]] 全体からリンク先が[[未読]]か[[既読]]かを判定し、
[CODE(CSS)@en[:[[visited]]]] [[擬似クラス]]に[[一致]]するかを決めています。
[[WinIE]] は[[素片識別子]]を除く [[URL]] によって判断しているようです。

[162] [[アンテナ]]や [[wiki]] の更新頁一覧などリンク先が頻繁に変更されることが前提となっている場面では、
[[Webブラウザー]]による[[未読]]・[[既読]]判定をある程度制御するため、
[[日付]]などの適当な文字列を[[素片識別子]]として付与することがあります。

[163] 例えば[[アンテナ]]が a.html が2009年12月31日に更新されたことを検知した場合、
[[URL]] として a.html#20091231 を使います。[[利用者]]がその[[リンク]]をたどると、
[[Webブラウザー]]は a.html#20091231 を[[履歴]]データベース上で[[既読]]とします。
[[利用者]]が次にその[[アンテナ]]の頁を見たときには、 a.html#20091231 へのリンクは[[既読]]になっています。

次に[[アンテナ]]が a.html が 2010年1月2日に更新されたことを検知すると、
[[URL]] は a.html#20100102 になります。[[利用者]]がその[[アンテナ]]の頁を見たときには
a.html#20100102 へのリンクは[[未読]]になっています。

[164] 同様の目的で[[照会]]を用いる方法もあります。[[照会]]を使えばどの[[Webブラウザー]]でもこの効果が得られるという利点がありますが、
[[素片識別子]]とは違って[[照会]]は実際に[[鯖]]に送信されるため相手方に動作が依存してしまうという欠点があります。
[SEE[ [[朝日奈クエリ]] ]]

* 複数の素片識別子

[514] [[素片識別子]]は、1つの [[URL]] に高々1つしか記述できません。
[CODE[#]] は[[URL符号位置]]なので、[[素片識別子]]内で [CODE[#]] を使うこともできません。

;; [515] が、それでも使われていた場合は、[[素片識別子]]の一部とみなされます。

[2] [[GNOME]] [ABBR[VFS] [仮想ファイル・システム]] URI とやら (''Writing Modules'' <http://developer.gnome.org/doc/API/gnome-vfs/writing-modules.html#URIS>) は、素片識別子 (のようなもの) を複数つけることができます。 
(例: [SAMP(URI)[ftp://username:password@host.net/path/to/file.tar.gz#gzip#tar/path/to/hello.c]])

[28]
[[WinIE]] は [CODE(CSS)['[[behavior]]']] で [[default behavior]] (組み込みの
[[HTC]]) を参照するために [CODE[#default]] という [[URL]] と機能を指定する[[素片識別子]]の組み合わせを使っており、
つまり [CODE(URI)[#]] が2つ入った文字列の指定を受け付けていました。

* 素片識別子と基底 URL

@@ この項は書きかけです。 [[基底URL]] の解説とあわせて内容をなんとかしたいところです。。。

[79]
[CITE[The Linear Topic Map Notation]] 
<http://www.ontopia.net/download/ltm.html#N565>

[[LTM]] ([[線形Topic Map記法]]) の [CODE@en[[[BASEURI]]]]
[[指令]]は、[[RFC 2396]] 的解釈に基づき、
[[素片識別子]]だけの [[URI]] には適用されないことになっています。

* 歴史

[20] '''主たる仕様''':
- [DEL@en[[[RFC 1630]] ([[URI]] 1[SUP[st]])]]
- [DEL@en[[[RFC 1738]] ([[URL]] 2[SUP[nd]])]]
- [DEL[[[RFC 1808]] ([[相対URL]])]]
- [DEL@en[[[RFC 2396]] ([[URI]] 3[SUP[rd]])]]
- [[RFC 3986]] ([[URI]] 4[SUP[th]])
- [[RFC 3987]] ([[IRI]])
- [WebArch] [CITE[Architecture of the World Wide Web, Volume One]] 
-- [CSECTION[2.6. Fragment Identifiers]]
<http://www.w3.org/TR/webarch/#fragid>
-- [CSECTION[3.2.1. Representation types and fragment identifier semantics]]
<http://www.w3.org/TR/webarch/#media-type-fragid>
-- [CSECTION[3.2.2. Fragment identifiers and content negotiation]]
<http://www.w3.org/TR/webarch/#frag-coneg>
-- [CSECTION@en[4.5.8. Fragment identifiers in XML]]
<http://www.w3.org/TR/webarch/#xml-fragids>
- [[HTML 5]] ([[URL]])

[137] '''関連仕様''':
- [[ISO‐HTML]] <http://purl.org/NET/ISO+IEC.15445/15445.html#DEFS>
-- 4.9

** 定義

[1] '''ISO-HTML における定義''':

>
:[RUBYB[素片識別子] [Fragment identifier]]:
[CODE(HTMLa)[[[href]]]] 属性値の [CODE(URI)[#]]
に続く部分。[SRC[ISO‐HTML 4.9]]

[152] '''RELAX NG における定義''':

>
:3.6 fragment identifier:
additional information in a URI reference used by a user agent after the retrieval action on a URI has been
successfully performed

;; [[ISO/IEC 19757]]‐2:2003

** 生成規則 [CODE(ABNF)[fragment]]

[227] [[URI]] 系規格で構文規則 [DFN[[CODE(ABNF)[fragment]]]]
は、[[素片識別子]]を表しています。

[FIG[
= [228] [CODE(ABNF)[[DFN[fragmentid]]   :=          [[xalphas]] ;; [[RFC 1630]]]]
= [229] [CODE(ABNF)[[DFN[fragment]]   :=  *( [[uchar]] / [[reserved]] ) ;; [[RFC 1808]]]]
= [230] [CODE(ABNF)[[DFN[fragment]]      := *[[uric]] ;; [[RFC 2396]] 4.1]]
]FIG]

** URI/URL と素片識別子

[22] [[RFC 2396]] においては[[素片識別子]]は [[URI]] の一部とはされていませんでした。
[[絶対URI]], [[相対URI]], [[素片識別子]]をあわせたものを
[[URI参照]]と呼んでいました。

[138]
新しい [[RFC 3986]] は、[[素片識別子]]を [[URI]] の一部としています。

[139]
非公式には、以前から[[素片識別子]]を [[URI]] の一部としている人も多くいました。
(単なる無知からそうしている人もいれば、そう定義するべきと考えてそうしている人もいました。)
[[HTML 4]] のように、[[素片識別子]]を [[URI]] の一部としない仕様書を参照しておきながら、
(「[[URI参照]]」ではなく) 「[[URI]]」という用語を使い、
しかも[[素片識別子]]も使えるような規定が含まれる仕様も存在し、
混乱の元となっていました。

[643] [CITE[Fragment Identifiers -- Axioms of Web architecture]], [TIME[2009-08-27T21:38:06.000Z]], [TIME[2021-04-12T12:08:16.991Z]] <https://www.w3.org/DesignIssues/Fragment.html>

* テストケース

[207] ([TIME[2011-09-11 03:41:55 +09:00]] 版) <http://people.mozilla.org/~dholbert/dataURIHashTests/tests_v1.xhtml>

* 関連

[16] [CODE(URI)[[[jar]]:]] [[URI scheme]] は、
[[ZIP]] 形式の圧縮ファイルの中のファイルを識別できます。
本来、[Q[ある資源の中に含まれる資源]]ですから、
素片識別子を使って表現するのが適当にも思えますが、
[CODE(URI)[jar:]] は[Q[資源の中の資源]]まで一つの
URI 本体だけで識別できます。

(この方式を推進する人は、[Q[ある資源の中の資源の中の資源]]
のような入れ子の場合を素片識別子は綺麗に表現できないことを問題視しています。)

同様な [[URI scheme]] は [CODE(URI)@en[[[zip]]:]], [CODE(URI)@en[[[tar]]:]],
[CODE(URI)@en[[[pack]]:]] など多数あります。

[32]
>>16 他に、素片識別子を使った表現の方法を採ると[[相対参照]]が使えなくなってしまう問題もあります。

[123]
[[CSS]] などで用いられる[[識別子選択子]]は本質的に[[素片識別子]]と同じものです。

[132]
[[HTML]] の [CODE(HTMLa)@en[[[usemap]]]] [[属性]]の値は元々 [[URI参照]]であるとされていましたが、諸々の事情により、
現在は [CODE(char)[#]] の後に参照する [CODE(HTMLe)@en[[[map]]]]
[[要素]]の [CODE(HTMLa)@en[[[name]]]]
[[属性]]の値を指定することになっています。


[151]
[[Webブラウザ]]で表示中の[[文書]]で[[ナビゲーション]]の結果[[素片識別子]]が変更された時に発生する
[[DOM]] [[事象]] [CODE(DOMe)@en[[[hashchange]]]] が [[HTML 5]]
で定義されています。


[626] [[MRL]] は [[URL]] を含み、その前後に追加の文字列で指定ができるものです。
[[MRL]] 自体が [[URL]] であるか否かはどちらとも明言されていません。
その [[MRL]] の中の [[URL]] の直後の部分は、 [CODE[#]]
から始まることになっています。つまり見た目は[[素片識別子]]を使うことができる
[[URL]] と区別できません。


* 平名前素片識別子

[405] [[素片識別子]]の全体が[[文書]]中の構造の[[識別子]]であるような[[素片識別子]]を、
[[平名前素片識別子]]と呼ぶことがあります。

;; [[平名前素片識別子]]参照。

[EG[
[406] [[HTML]] では [CODE(HTMLa)@en[[[id]]] [[属性]]の値を[[素片識別子]]として指定することで、
その[[要素]]を示すことができます。
]EG]

[407] [[識別子]]のみで識別することができる構造がある [[MIME型]]では、
[[平名前素片識別子]]をその用途に使うよう定義する[['''べき''']] [SRC[>>391]]
と言われています。

[408] [[平名前素片識別子]]は最も基本的で古くからある[[素片識別子]]の形態で、
[[HTML]] や [[XML]] など多くの[[言語]]で広く採用されています。

** HTML の素片識別子

[566] [[HTML]] では、[[文書木中]]の任意の[[要素]]の [CODE[id]] [[属性]]と、
[CODE(HTMLe)@en[a]] [[要素]]の [CODE(HTMLa)@en[name][<a name>]] [[属性]]が、
その[[要素]]を表す[[素片識別子]]の値として使えることになっています。

;; [616] 構文その他の制約については、それぞれの[[属性]]の項を参照。

[612] [CODE[<a name>]] は[[廃止]]され [CODE[id]] に置き換えられましたが、
互換性のため、 [[Webブラウザー]]は両方に対応しなければなりません。

[613] 同じ識別子の[[要素]]が複数ある場合、 [CODE[id]] [[属性]]が優先され、
同じ[[属性]]では[[木順]]で先にある方が優先されることになっています。

[614] 互換性のため、[[素片識別子]]は[[パーセント符号化]]された状態でも、
[[復号]]した状態でも、どちらでも構わないことになっています。
[[パーセント符号化]]された状態で一致するものが先に探されます。

[617] 特別な値である [CODE[top]] は、一致する[[要素]]がない場合には、
[[文書]]の先頭を表すことになっています。

[621] [[HTML文書]]の[[DOM木]]は、いつでも[[変異]]する可能性があります。
[[素片識別子]]の指すものの評価は、必要になった時点での結果となります。

[EG[
[622] [[素片識別子]] [CODE[#abc]] のついた [[URL]] への [[navigate]] 
に伴う[[文書]]の[[構文解析]]の途中で[[スクリプト]]により
[CODE[[[id]]=abc]] の[[要素]]が[[挿入][要素の挿入]]される場合、
[[navigate]] の最後の[[素片識別子へのスクロール]]で、その[[要素]]が表示された状態になります。
]EG]

[EG[
[623] [[利用者]]が[[リンク]]を[[クリック]]して同じ[[文書]]の [CODE[#abc]]
という[[素片識別子へのnavigate]]
が発生した場合、[[擬似クラス]] [CODE[:target]] に一致する[[要素]]は、その時点で
[CODE[[[id]]=abc]] の[[要素]]となります。
]EG]

[624] [[スクリプト]]は、その他の任意の方法で[[素片識別子]]を活用できます。
[[Webブラウザー]]の処理では何の意味も持ちませんが、害もありません。

[EG[
[625] [[スクリプト]]は、[[素片識別子]]が [CODE[#edit]] であるとき、
当該[[文書]]の編集モードに切り替える、という処理にすることができます。
[[文書]]中に [CODE[[[id]]=edit]] な[[要素]]が存在していなくても、問題ありません。
]EG]

-*-*-

[360] [CODE(MIME)@en[[[text/html]]]] では、[[文書]][VAR[文書]]の[[文書の示された部分]] (>>181) 
は次の方法で決定します [SRC[>>146]]。

[FIG(steps)[
= [361] [VAR[素片]]を、[VAR[文書]]の[F[番地][文書の番地]]の[F[素片][素片識別子]]に設定します。
= [362] [VAR[素片]]が[[空文字列]]なら、
== [565] [[文書]]の[RUBYB[先頭]@en[top]]を返し、ここで停止します。
= [602] [VAR[結果]]を、[VAR[文書]]と[VAR[素片]]について [[find a potential indicated element]]
した結果に設定します。
= [603] [VAR[結果]]が [CODE[null]] ''以外''の場合、
== [604] [VAR[結果]]を返し、ここで停止します。
= [363] [VAR[復号素片]]を、[VAR[素片]]を[[文字列パーセント復号]]し、
[[utf-8 decode without BOM]] を適用した結果に設定します。
= [605] [VAR[結果]]を、[VAR[文書]]と[VAR[復号素片]]について 
[[find a potential indicated element]] した結果に設定します。
= [606] [VAR[結果]]が [CODE[null]] ''以外''の場合、
== [607] [VAR[結果]]を返し、ここで停止します。
= [365] [VAR[復号素片]]が[[ASCII大文字・小文字不区別]]で [CODE[top][#top]] の場合、
== [569] 「[VAR[文書]]の[RUBYB[先頭]@en[top]]」を返し、ここで停止します。
= [366] [CODE[null]] を返します。
]FIG]

;; [608] [[要素]]、「[VAR[文書]]の先頭」、[CODE[null]] のいずれかが返されます。

[609] [DFN[find a potential indicated element]] は、[VAR[文書]]と[VAR[素片]]について、
次のようにします [SRC[>>146]]。

[FIG(steps)[
= [610] [VAR[文書]]の[[文書木中]]に [F[ID]] が[VAR[素片]]の[[要素]]が存在する場合、
== [567] [VAR[文書]]の[[文書木中]]で [F[ID]] が[VAR[素片]]である、
[[木順]]で最初の[[要素]]を返し、ここで停止します。
= [364] [VAR[文書]]の[[文書木中]]に [CODE(HTMLa)@en[name][<a name>]] [[属性値]]が[VAR[素片]]の
[CODE(HTMLe)@en[a]] [[要素]]が存在する場合、
== [568] [VAR[文書]]の[[文書木中]]に [CODE(HTMLa)@en[name][<a name>]] 
[[属性値]]が[VAR[素片]]である、[[木順]]で最初の [CODE(HTMLe)@en[a]] [[要素]]を返し、
ここで停止します。
= [611] [CODE[null]] を返します。
]FIG]

;; [618] [VAR[素片]]は[[失敗]]かもしれませんが、その場合どの[[要素]]にも一致せず
[CODE[null]] が返されることになります。つまり[[パーセント符号化]]を[[復号]]して正しい
[[UTF-8]] にならない場合には、何にも一致しません。

[HISTORY[

[615] 現在は [CITE[HTML Standard]] で厳密な動作が規定されていますが、
過去には色々な[[仕様書]]でそれぞれの曖昧な挙動が説明されていました。

[REFS[
- [37] [CODE(HTMLa)[[[name]]]] 属性を参照
-- [CODE(MIME)[[[text/html]]]]: [[RFC 1866]]
--- [CODE(MIME)[[[text/x-hdml]]]]
---- [CITE[3 Language Elements]] 
<http://www.w3.org/TR/hdml20-6.html#MARKER-9-4>
-- [7] [CODE(HTMLa)[[[name]]]] 属性や [CODE(HTMLa)[[[id]]]] 属性を参照
--- [CODE(MIME)[[[text/html]]]]: 
---- [54] [[HTML 4]], [[XHTML 1.0]], [[RFC 2854]]
---- [55] [[ISO-HTML]]
<http://purl.org/NET/ISO+IEC.15445/Users-Guide.html#ANCHOR-FOLDING>
--- [100] [[XDML]] ([CODE(MIME)@en[[[application/xhtml+xml]]]])
---- [[DASE]]-2 5.1.1.5.1.1
- [198] [[ID]] や [CODE(HTMLa)@en[[[name]]]] [[属性]]を参照
-- [[HTML MIME型]] ([CODE(MIME)@en[[[text/html]]]], [CODE(MIME)@en[[[text/html-sandboxed]]]])
--- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#the-indicated-part-of-the-document>
--- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#text/html>
--- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#text/html-sandboxed>
- [14] [CODE(XML)[[[ID]]]] 属性を参照
--- [47] [[XHTML 1.0]]
---- [[適合利用者エージェント]]は [[XHTML]]
[[文書]]の [CODE(XML)[[[ID]]]] 属性だけを[[素片識別子]]に使わなければなりません。
---- <IW:XHTML10:"uaconf">
---- [CSECTION[4.10. The elements with 'id' and 'name' attributes]] 
(参考) <IW:XHTML10:"h-4.10">
---- [CSECTION[C.8. Fragment Identifiers]] (参考)
<IW:XHTML10:"C_8">
--- [48] [[XHTML m12n]]
---- [CSECTION[3.5. XHTML Family User Agent Conformance]]
<IW:XHTML1m12n:"conformance.html#s_conform_user_agent">
--- [34] [CODE(MIME)[[[application/xhtml+xml]]]]: [[RFC 3236]]
---- [[RFC 3023]] を参照しています。
---- しかし、 RFC 3023 は実質無規定なので、新版になるまでは
[CODE(XML)[[[ID]]]] 属性に拠ると規定しています。
--- [103] [[XHTML+Voice]] ([CODE(MIME)@en[[[application/xv+xml]]]])
---- [[RFC 4374]] <urn:ietf:rfc:4374>
---- [[RFC 3236]] を参照しています。
---- 旧 [[I-D]] では [CODE(MIME)@en[[[application/xhtml-voice+xml]]]]
--- [108]
[CODE(MIME)@en[[[text/x-oeb1-document]]]]
---- 仕様書には明記なし。
]REFS]

]HISTORY]

** 名前や識別子だけの素片識別子

[REFS[
- [315] [[XML]] [CODE(XML)@en[[[ID]]]] を使うもの
--- [36] [CITE[XBL - XML Binding Language]] 
<http://www.w3.org/TR/2001/NOTE-xbl-20010223/#attach-css>
--- [73] [[SMIL]] ([CODE(MIME)@en[[[application/smil+xml]]]],
[CODE(MIME)@en[[[application/smil]]]])
---- [74]
[CITE@en[Synchronized Multimedia Integration Language]] 
([[SMIL 1.0]]) <http://www.w3.org/TR/REC-smil/#hyperlinking>
---- [75] [CITE@en[The SMIL 2.0 Linking Modules]] 
<http://www.w3.org/TR/2005/REC-SMIL2-20050107/extended-linking.html#SMILLinking-Into>
---- [76] [[RFC 4536]]
----- [656] 
[CITE@en[[[RFC 4536]]: The application/smil and application/smil+xml Media Types]], [TIME[2023-03-24T05:36:20.000Z]] <https://www.rfc-editor.org/rfc/rfc4536.html#page-3>
----- [657] [[SMIL]] 仕様書 (版指定なし) を参照。

--- [459] [CODE(MIME)[[[text/vnd.wap.wml]]]]
---- [CODE(XMLe)[[[deck]]]] 名を表します。
---- <http://www.openmobilealliance.org/release_program/docs/CopyrightClick.asp?pck=Browsing&file=V2_3-20050118-C/WAP-191-WML-20000219-a.pdf>
--- [[WML 2.0]] ([CODE(MIME)@en[[[application/wml+xml]]]])
---- [CODE(XMLa)@en[[[id]]]] を表します。
---- [CSECTION@en[5.3.1. The Go Task]] 他
---- [CSECTION@en[5.13. User Agent Conformance Rules]]
--- [60] [[XForms]]
---- [CITE@en[Document Structure]] 
<http://www.w3.org/TR/2003/REC-xforms-20031014/slice3.html#structure-model>
----- [CODE(XMLe)[[[model]]]] 要素の [CODE(XMLa)[[[schema]]]]
属性で同じ文書内の [CODE(XML)[[[ID]]]] を参照できます。
--- [42] [CODE(MIME)[[[application/srgs+xml]]]] ([[SRGS]] [[XML]] 形)
---- [CODE(XMLe)[[[rule]]]] 名を表します。
---- [CITE[Speech Recognition Grammar Specification Version 1.0]] 
<http://www.w3.org/TR/2004/REC-speech-grammar-20040316/#S2.2>
---- [DEL[以前媒体型登録のための [[I-D]] が出ていましたが、その後音沙汰なし。 (2005年3月現在) 素片識別子については [[RFC 3023]] と同じとか書いてありましたが・・・。]]
---- その後 [[RFC 4267]] で登録されました (>>83)。
--- [56] [[XTD]]
---- [CITE[tradic論理フォーマット]] 
<http://www.tradic.jp/format_tradic_logical#reference>
---- [CITE[tradic物理フォーマット: XMLバインディング]] 
<http://www.tradic.jp/format_tradic_xml>
]REFS]

[76] [[EMMA]] ([CODE(MIME)@en[[[application/emma+xml]]]])
は仕様書中に[[媒体型]]登録のための雛形がありますが、[[素片識別子]]については言及がありません。

仕様書中の例には[[同文書参照]]が頻出しますが、
同じ文書内の [CODE(XML)@en[xs:[[ID]]]] 型[[属性]]の値を使っているようです。

- [CITE[EMMA: Extensible MultiModal Annotation markup language]] ([[W3C]] [[勧告]])
-- <http://www.w3.org/TR/2009/REC-emma-20090210/>

--- [109] [[CellML]] ([CODE(MIME)@en[[[application/cellml+xml]]]])
---- [[媒体型]]を登録する [[RFC 4708]]
([[IETF]] [[情報提供]] [[RFC]]) <urn:ietf:rfc:4708>
に[[素片識別子]]への言及はありません。
---- [[CellML 1.0]]
<http://www.cellml.org/specifications/cellml_1.0/index_html#sec_metadata>
---- [[CellML 1.1]]
<http://www.cellml.org/specifications/cellml_1.1/index_html#sec_metadata>
---- 同じ[[文書]]内の [[RDF/XML]] から[[参照]]するために、
[[素片識別子]]として [CODE(XML)@en[[[ID]]]]
[[属性]]を使う方法が規定されています。
--- [110] [[WADL]]
([CODE(MIME)@en[[[application/vnd.sun.wadl+xml]]]])
---- 仕様書に例がありますが、明確な規定はありません。
---- [[IANA]] [[媒体型]]登録にも言及はありません。
--- [113] [[DSML]]
---- [CITE[Directory Services Markup Language (DSML)]] 
<http://www.dsmltools.org/dsml.org/dsml.html>
---- 明確な規定はありませんが、頻用されています。
--- [120] [[VoiceXML 1.0]]
---- 
<http://www.voicexml.org/specs/VoiceXML-100.pdf#page=74>
---- 
[CITE[Voice eXtensible Markup Language (VoiceXML) version 1.0]] <http://www.w3.org/TR/2000/NOTE-voicexml-20000505/#s19.7>
--- [122] [[SCXML]]
---- [CITE@en[State Chart XML (SCXML): State Machine Notation for Control Abstraction]]
<http://www.w3.org/TR/2007/WD-scxml-20070221/#files>

[114] [[APEX]] ([CODE(MIME)@en[[[application/beep+xml]]]])

- [[BEEP]] ([CODE(MIME)@en[[[application/beep+xml]]]])
を規定・登録する [[RFC 3080]] <urn:ietf:rfc:3080>
には、[[素片識別子]]への言及がありません。
- [[BEEP]] の[[プロファイル]]たる [[APEX]] は、
同じ[[文書]]内の[[要素]]の[[ID]]を[[参照]]するために[[素片識別子]]だけの
[[URI参照]]を使っています。
- [[RFC 3340]] ([[IETF]] [[提案標準]]) <urn:ietf:rfc:3340>
4.1, 4.4.4

[153] [[KML]] 
([CODE(MIME)@en[[[application/vnd.google-earth.kml+xml]]]],
[CODE(MIME)@en[[[application/vnd.google-earth.kmz]]]])
では[[要素]]の [CODE(XML)@en[xs:[[ID]]]] [[属性値]]を[[素片識別子]]に使えるようです。

;; [CITE[KML リファレンス]] ([TIME[2008-01-09 04:59:52 +09:00]] 版) <http://earth.google.co.jp/kml/kml_tags_21.html#styleurl>

正式な仕様書は [[KML]] (OGC 07-147r2) の [CSECTION@en[6.4 Shared Styles]]、
[CSECTION@en[9.1.3.10 kml:description]]、
[CSECTION@en[12.9.3.1 kml:href]]、他何箇所か。
12.9.3.1 は [[XPointer]] [[速記指示子]]を使って [[KML]] 内の[[要素]]を表せると述べています。
9.1.3.10 は [[escape]] された [[HTML]] 中のリンクについて触れていますが、
そこでは[[速記指示子]]になる前に指令部分を削ぎ落とさないといけないと規定しています。

;;いろいろややこしいな。

[563] [[TTML]] ([CODE(MIME)@en[application/ttml+xml]]) は、
[[素片識別子]]は [CODE(XMLa)@en[xml:id]] [[属性]]を参照するものとしています
[SRC[>>384, >>562]]。

[REFS[
- [384] [CITE@en-us[Timed Text Markup Language 1 (TTML1) (Second Edition)]] ([TIME[2013-09-23 10:19:57 +09:00]] 版) <http://www.w3.org/TR/ttaf1-dfxp/#media-types-registration>
- [562] [CITE@en[TTML Media Type Definition and Profile Registry]] ([TIME[2016-05-07 03:08:58 +09:00]]) <https://w3c.github.io/tt-profile-registry/#mediatype>
]REFS]

[433] [[XSLT 1.0]] は [CODE(XMLa)@en[[[id]]]] [[属性]]の用法として、
同じ[[文書]]の [CODE(XML)@en[[[xml-stylesheet]]]] から[[素片識別子]]によって参照できる
[SRC[>>432]] と示しています。ただし他の [[XML]] [[語彙]]の[[文書]]への埋め込み例であり単独の
[[MIME型]]での用法を示したものではありませんし、 [CODE(XMLa)@en[[[id]]]]
[[属性]]を使う際に [[DTD]] で [CODE(XML)@en[[[ID]]]] [[型]]と宣言しなければならないことにも言及があります。

[REFS[
- [432] [CITE[XSL Transformations (XSLT)]] ([TIME[2003-05-14 23:32:34 +09:00]] 版) <http://www.w3.org/TR/xslt#section-Embedding-Stylesheets>
]REFS]

[500] [[GEDCOM X XML serialization format]] ([CODE(MIME)@en[[[application/x-gedcomx-v1+xml]]]])
は [CODE(XMLa)@en[[[id]]]] [[属性]]の値を使います [SRC[>>499]]。

[502] [[GEDCOM X JSON serialization format]] ([CODE(MIME)@en[[[application/x-gedcomx-v1+json]]]])
も相当する [CODE@en[[[id]]]] [[特性]]の値を使います [SRC[>>501]]。

[REFS[
- [499] [CITE@en[gedcomx/xml-format-specification.md at master · FamilySearch/gedcomx]] ([TIME[2015-06-25 15:54:46 +09:00]] 版) <https://github.com/FamilySearch/gedcomx/blob/master/specifications/xml-format-specification.md#7-fragment-identifiers>
- [501] [CITE@en[gedcomx/json-format-specification.md at master · FamilySearch/gedcomx]] ([TIME[2015-06-25 15:56:58 +09:00]] 版) <https://github.com/FamilySearch/gedcomx/blob/master/specifications/json-format-specification.md#7-fragment-identifiers>
]REFS]

- [661] [[DTBook]]
-- [660] [CITE@en-US[DAISY ANSI/NISO Z39.86-2002 - The DAISY Consortium]], [TIME[2023-11-26T04:45:46.000Z]] <https://daisy.org/info-help/document-archive/archived-projects/daisy-ansi-niso-z39-86-2002-archived/>
-- [662] 例示により定義。 [CODE[id=""]] [[属性]]を参照。



- [663] [[XPL]]
-- [664] [CITE@EN[XML Pipeline Language (XPL) Version 1.0 (Draft)]], [TIME[2023-09-05T12:42:21.000Z]], [TIME[2024-09-25T14:26:32.936Z]] <https://www.w3.org/submissions/2005/SUBM-xpl-20050411/#d1056e1941>
-- [665] [[XML Infoset identifier]] と呼ばれる文書内で定義された識別子
([[XML]] [CODE[ID]] とはされていない。)
を参照する。



** GML・SensorML

[156] [[GML]] では [CODE(XMLa)@en[gml:[[id]]]] [[属性]]を指すと規定されています。

[155] [[SensorML]] は、明確な規定はありませんが、
[CODE(XML)@en[[[ID]]]] [[属性]]を指しているようです。

[157] なお、 [[GML]] で [[XLink]] を使うときの[[素片識別子]]には制約があって、
[[速記]]、 [CODE(XPointerScheme)[[[element]]()]]、
[CODE(XPointerScheme)[[[xmlns]]()]] 0個以上 + [CODE(XPointerScheme)[[[xpointer]]()]]
のいずれかでなければなりません。

[255] [[国土数値情報]]は [[GML]] を埋め込んだ[[文書型]]を使っています。
[[XLink]] で同じ[[文書]]内の [[GML]] の[[要素]]を
[CODE(XMLa)@en[[[gml:id]]]] 値と[[速記]]により参照しています。

[584] [CODE(MIME)@en[application/gml+xml]] の登録には、
「[CODE[gml:id]] を使っており、これは [CODE[xs:ID]] である」
と述べています [SRC[>>583]]。

[REFS[
- [253] [[GML]]
-- [CSECTION@en[7.2.4.5 id]]
-- [CSECTION@en[8.1 Xlinks — Object associations and remote properties]]
-- [583] ([TIME[2017-01-10 14:01:06 +09:00]]) <https://www.iana.org/assignments/media-types/application/gml+xml>
- [254] [[SensorML]] <http://portal.opengeospatial.org/files/?artifact_id=21273>
]REFS]

** VRML / X3D

[67] [[X3D]] 系 ([[視点]]の名前を指定)

[REFS[
- [66] [[VRML]] ([CODE(MIME)@en[[[model/vrml]]]])
-- <http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1/part1/nodesRef.html#Anchor>
-- <http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1/part1/nodesRef.html#Viewpoint>
-- [641] [CITE[VRML97, ISO/IEC 14772-1:1997 -- 4 Concepts]], [TIME[2014-01-31 07:20:50 +09:00]] <https://www.web3d.org/documents/specifications/14772/V2.0/part1/concepts.html#4.9.3>
-- [642] [CITE[VRML97, ISO/IEC 14772-1:1997 -- 6 Node Reference]], [TIME[2014-01-31 07:20:50 +09:00]] <https://www.web3d.org/documents/specifications/14772/V2.0/part1/nodesRef.html#Viewpoint>
- [68] [[X3D]]
-- 
[CITE@en[Extensible 3D (X3D), ISO/IEC 19775-1:200x, Part 1 -- 23 Navigation component]] 
<http://www.web3d.org/x3d/specifications/ISO-IEC-19775-IS-X3DAbstractSpecification/Part01/components/navigation.html#Viewpoint>
-- 
[CITE@en[Extensible 3D (X3D), ISO/IEC 19775-1:200x, Part 1 -- 9 Networking component]] 
<http://www.web3d.org/x3d/specifications/ISO-IEC-19775-IS-X3DAbstractSpecification/Part01/components/networking.html#Anchor>
]REFS]

[547] [CODE(MIME)@en[[[model/v3d-vrml]]]] の [[IANA登録簿]]の登録雛形 [SRC[>>546]]
は、[[素片識別子]]を「[[UTF-8]] でなければならない」と(だけ)述べています。

[REFS[
- [546] ([TIME[2014-01-16 07:11:53 +09:00]] 版) <https://www.iana.org/assignments/media-types/model/x3d-vrml>
]REFS]

** XTM

[154] [[XTM 1.0]] は、明確な規定はないのですが、 Note として、[[素片識別子]]だけの [[URI参照]]を
[CODE(XMLe)@en[[[topic]]]] [[要素]]の [CODE(XMLa)@en[[[id]]]] [[属性値]]を指しているものとして使っている旨の記述があります。
([[XTM 1.0]] では [[URI参照]] (に変換されるもの) は [[XLink 1.0]] [CODE(XMLa)@en[xlink:[[href]]]]
[[属性]]で使われています。)

- [CITE[XML Topic Maps (XTM) 1.0]] ([TIME[2005-10-25 23:11:49 +09:00]] 版)
--[CSECTION@en[2.1 A Gentle Introduction to Topic Maps]]
<http://www.topicmaps.org/xtm/1.0/xtm1-20010806.html#desc-intro>

** WS-EventDescriptions

[216] [[WS-EventDescriptions]] ([CODE(MIME)@en[[[application/evd+xml]]]]) 
では[RUBYB[[[事象記述文書]]]@en[Event Description document]]の[RUBYB[[[事象型]]]@en[Event Type]]を指します。
これは [CODE(XMLa)@en[[[id]]]] [[属性]] ([CODE(XML)@en[[[xs:ID]]]] 型) の値によって識別します。 [SRC[>>215]]

[REFS[
- [215] [CITE@en[Web Services Event Descriptions (WS-EventDescriptions)]] ([TIME[2011-12-13 20:09:52 +09:00]] 版) <http://www.w3.org/TR/2011/REC-ws-event-descriptions-20111213/#EVD_MIME>
]REFS]

** ALPS

[379] [[ALPS]] ([CODE(MIME)@en[[[application/alps+xml]]]], [CODE(MIME)@en[[[application/alps+json]]]]) では [CODE(XMLa)@en[[[id]]]]
[[属性値]]を参照しています [SRC[>>378, >>550]]。

[REFS[
- [378] [CITE@en[draft-amundsen-richardson-foster-alps-00 - Application-Level Profile Semantics (ALPS)]] ([TIME[2014-10-16 14:34:48 +09:00]] 版) <https://tools.ietf.org/html/draft-amundsen-richardson-foster-alps-00#section-2.2.7.2>
- [550] [CITE@en[Application-Level Profile Semantics (ALPS)]] ([TIME[2015-03-03 02:35:31 +09:00]] 版) <http://alps.io/spec/drafts/draft-01.html#prop-id-frag>
]REFS]

** 明記されていないが XML [CODE(XML)@en[ID]] を参照するらしいもの

-[CITE@en-US[Elements of an EmotionML 1.0]] ([TIME[2008-11-19 23:37:02 +09:00]] 版) <http://www.w3.org/2005/Incubator/emotion/XGR-emotionml-20081120/>

[REFS[
- [309] [[ITS]] ([CODE(MIME)@en[[[application/its+xml]]]])
-- [CITE@en-US[Internationalization Tag Set (ITS) Version 2.0]] ([TIME[2013-10-27 19:39:43 +09:00]] 版) <http://www.w3.org/TR/its20/>
]REFS]

[310] [CODE(XMLa)@en[[[xml:id]]]] を参照している例が何度も出てきます。

** その他の名前型素片識別子

- [43] [[N-Gram]]
-- [[開始記号]]を素片識別子で指定します。
-- [CITE[Stochastic Language Models (n-gram) Specification]] 
<http://www.w3.org/TR/2001/WD-ngram-spec-20010103/>
-- [CITE[Speech Recognition Grammar Specification Version 1.0]] 
<http://www.w3.org/TR/2004/REC-speech-grammar-20040316/#S2.2.4>
- [77] [[LTM]] ([[線形Topic Map記法]])
-- [[話題ID]] を使用します。
-- [CITE[The Linear Topic Map Notation]] 
<http://www.ontopia.net/download/ltm.html#N870>
- [58] [[P3P]] <IW:P3P:"">
-- [CODE(XMLe)[[[POLICY]]]] [[要素]] [CODE(XMLa)[[[name]]]] [[属性]]
([CODE(XML)[[[ID]]]] 型):
[[素片識別子]]として使われます。
<IW:P3P:"#POLICY">
-- [CODE(XMLe)[[[POLICY-REF]]]] [[要素]] [CODE(XMLa)[[[about]]]] 
[[属性]]で使う[[素片識別子]]: [CODE(XMLe)[[[POLICY]]]]
[[要素]]で [CODE(XMLa)[[[name]]]] [[属性]]が一致するものを指します。
<IW:P3P:"#ref_file_policyref">
-- [CODE(XMLe)[[[DATA]]]] [[要素]] [CODE(XMLa)[[[ref]]]] 
[[属性]]で使う[[素片識別子]]:
[[データ要素]]や[[データ集合]]を指します。
[[要素型名]]を[[親]]から[[子]]に向かって [CODE(char)[.]] 
で連結したものを使います。
<IW:P3P:"#DATA">
-- [CODE(XMLe)[[[DATA-STRUCT]]]], [CODE(XMLe)[[[DATA-DEF]]]] [[要素]]
[CODE(XMLa)[[[structref]]]] [[属性]]:
[[構造]]を指します。構造の名前 ([CODE(XMLa)[[[name]]]] [[属性]]
([CODE(XML)[[[ID]]]] 型) の
[CODE(char)[.]] で階層を区切った文字列) を使います。
指される方の定義が明示的に[[要素]]として存在するとは限りません。
[WEAK[(例えば [SAMP(URI)[#a]] が指すものは [SAMP[a.b]] や [SAMP[a.c]] などによって暗示的に定義され得ます。)]]
<IW:P3P:"#DATA-DEF-TYPE">
- [65] [[DITA]]
-- [CITE@en[OASIS Standards and Other Approved Work]] 
<http://www.oasis-open.org/specs/index.php#ditav1.0>
-- [CITE@en[topic]] <http://docs.oasis-open.org/dita/v1.0/langspec/topic.html>
--- [CODE(XML)@en[[[ID]]]]
-- [CITE@en[xref]] <http://docs.oasis-open.org/dita/v1.0/langspec/xref.html>
--- [CODE(ABNF)[[CODE(XML)@en[[[ID]]]] "/" [CODE(XML)@en[[[ID]]]]]]
-- [CITE@en[link]] <http://docs.oasis-open.org/dita/v1.0/langspec/link.html>
--- [CODE(XML)@en[[[ID]]]]
-- [CITE@en[%id-atts;]] 
<http://docs.oasis-open.org/dita/v1.0/langspec/id-atts.html>
--- [CODE(ABNF)[[CODE(XML)@en[[[ID]]]] "/" [CODE(XML)@en[[[ID]]]]]]
- [87] [[J#]] [[マネージ・ライブラリ]]
-- [[クラス名]]を[[素片識別子]]として使用
-- [CITE[Java アプレットから Microsoft J# ブラウザ コントロールへの移行]] 
<http://www.microsoft.com/japan/msdn/vs/vj/vjtskMigratingJavaAppletsToMicrosoftJBrowserControls.asp>

- [41] [CODE(MIME)[[[application/srgs]]]] ([[SRGS]] [[ABNF]] 形)
-- XML 形の [CODE(XML)[ID]] に相当する規則名を指します。
-- [CITE[Speech Recognition Grammar Specification Version 1.0]] 
<http://www.w3.org/TR/2004/REC-speech-grammar-20040316/#S2.2>
-- [DEL[以前媒体型の IANA 登録のための [[I-D]] が出ていて、素片識別子は [[RFC 3023]] と同じなどと頓珍漢なことが書かれていました。登録手続きはその後音沙汰なし。 (2005年3月現在)]]
-- その後 [[RFC 4267]] で登録されましたが、
[[素片識別子]]に関する規定はなくなっています。
- [42] [[TTZ]] ([[T-Time]] 文書)
-- [[TTZ]] [[ファイル]]内の[[名前]]。
- [88] [[Texinfo]]
-- [[Texinfo]]系[CODE(URI)@en[[[info]]:]] [[URI]]で[[節点名]]が[[素片識別子]]として使われます。
- [89] [[HORB]] [[ACL]][[ファイル]]
-- [CODE(URI)@en[[[horb]]:]] [[URI]]で[[ACL]]名が[[素片識別子]]として使われます。
- [93] [CODE(URI)@en[[[irc]]:]] [[URI scheme]]
-- [[チャンネル名]]を[[素片識別子]]とする流儀があります。
- [94] [[名前空間]]に属する[[語彙]]
-- [CITE[XML Schema Part 2: Datatypes Second Edition]] 
<http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#built-in-datatypes>
-- [CITE[Associating Resources with Namespaces]] 
<http://www.w3.org/2001/tag/doc/nsDocuments-2005-12-13/#div.fragid>

[281] [[MathML]] の [CODE(XMLa)@en[[[definitionURL]]]] では[[素片識別子]]を含む [[URL]] の構文が決められています。
([[RDF]] などが想定されていますが、特定のデータ形式の[[素片識別子]]として定義されているわけではありません。)

[REFS[
- [280] [CITE[Mathematical Markup Language (MathML) Version 3.0 2nd Edition -- single page HTML + MathML Version]] ([TIME[2014-02-10 20:00:21 +09:00]] 版) <http://www.w3.org/Math/draft-spec/mathml.html#chapter4_contm.csymbol.extended>
]REFS]

** Git の素片識別子

[272] [[Git]] の[[フロントエンド]]である [[Cogito]] (旧 [[git-pasky]]) は [[Git]]
の[[リポジトリー]]の [[URL]] に[[素片識別子]]として[[ブランチ]]の名前を付加できました。

[REFS[
- [270] [CITE[cg-branch-add(1)]] ([TIME[2013-11-07 02:40:05 +09:00]] 版) <http://web.archive.org/web/20110612174908/http://www.kernel.org/pub/software/scm/cogito/docs/cg-branch-add.1.html>
- [271] [CITE[LKML: Petr Baudis: Re: ia64 git pull]] ([TIME[2011-09-08 00:16:43 +09:00]] 版) <https://lkml.org/lkml/2005/4/21/252>
]REFS]

[274] [[npm]] [SRC[>>273]] ([CODE[git:]] も参照。) や [[Heroku]] ([[buildpack]] の指定 [SRC[>>374]])
も同様に[[素片識別子]]として[[コミット]]的なもの ([[SHA-1]] 値、[[ブランチ]]名等)
を指定できるとしています。

[REFS[
- [273] [CITE[npm-faq]] ([TIME[2013-10-28 21:09:47 +09:00]] 版) <https://npmjs.org/doc/faq.html#What-is-a-package>
- [374] [CITE@en[Buildpacks | Heroku Dev Center]] ([TIME[2014-10-02 02:37:18 +09:00]] 版) <https://devcenter.heroku.com/articles/buildpacks#using-a-custom-buildpack>
]REFS]

[381] [[Git]] 本家も同様の構文を使っています [SRC[>>380]]。

[REFS[
- [380] [CITE@en[Git - git-push Documentation]] ([TIME[2014-11-09 18:00:20 +09:00]] 版) <http://git-scm.com/docs/git-push#_named_file_in_code_git_dir_branches_code>
]REFS]

** hyper-item

[596] [[hyper-item]] ([CODE(MIME)@en[application/vnd.hyper-item+json]])
は [CODE[id]] の値を[[素片識別子]]として使えるとしています。

[REFS[
- [597] [CITE@en[mdemuth/hyper-item: hyper-item]] ([TIME[2017-05-12 13:21:07 +09:00]]) <https://github.com/mdemuth/hyper-item#user-content-313-id>
- [598] [CITE[application/vnd.hyper-item+json]] ([TIME[2017-05-12 00:26:29 +09:00]]) <https://www.iana.org/assignments/media-types/application/vnd.hyper-item+json>
]REFS]

* XPointer に基づく素片識別子

[321] [[XPointer]] は [[XML]] の[[素片識別子]]の大本命とされていましたが、
開発が混乱し完全な形の実装もほとんどありません。元々は [[XML]]
の一部だった[[リンク]]機能が [[XLink]] として分離され、更に[[素片識別子]]機能が
[[XPointer]] として分離されましたが、 [[CR]] の後 [[XPath]] 相当の部分の開発は凍結され、
残りの基本的な部分のみ [[W3C勧告]]となりました。実際に広く実装されているといえるのは、
その内のさらに一部、 [CODE(XML)@en[[[ID]]]] による識別 ([[速記指示子]]) のみです。

;; 詳しくは [[XPointer]] の項を参照。

** RFC 3023 と分割前の XPointer

[322] [CODE(MIME)@en[[[text/xml]]]] と [CODE(MIME)@en[[[application/xml]]]]
をはじめに定義した [[RFC 2376]] は、[[素片識別子]]に関する規定を含んでいませんでした。

[6] [[RFC 2376]] の改訂である [[RFC 3023]] は、[[素片識別子]]の仕様として確立されたものはないと述べつつも、
[[XPointer]] [[WD]] が [CODE(MIME)@en[[[text/xml]]]] と [CODE(MIME)@en[[[application/xml]]]]
の[[素片識別子]]を規定していると言及しています [SRC[>>323]]。ここで参照されているのがどの版かは明記されていませんが、
2000年6月の [[CR]] (>>324) が記述と合致します。その次の2001年1月 [[LCWD]] (>>325) 以降は、
[CODE(MIME)@en[[[text/xml-external-parsed-entity]]]] と
[CODE(MIME)@en[[[application/xml-external-parsed-entity]]]] にも適用範囲が拡大されています。

;; [326] [CODE(MIME)@en[[[application/xml-dtd]]]] には言及がありません。

[REFS[
- [323] [CITE@en[RFC 3023 - XML Media Types]] ([TIME[2014-07-11 12:46:44 +09:00]] 版) <http://tools.ietf.org/html/rfc3023#section-5>
- [324] [CITE@en[XML Pointer Language (XPointer) Version 1.0]] ([TIME[2000-06-06 15:25:33 +09:00]] 版) <http://www.w3.org/TR/2000/WD-xptr-20000607>
- [325] [CITE@en[XML Pointer Language (XPointer) Version 1.0]] ([TIME[2001-01-08 14:54:52 +09:00]] 版) <http://www.w3.org/TR/2001/WD-xptr-20010108/>
- [332] [CITE@en[XML Pointer Language (XPointer) Version 1.0]] ([TIME[2001-09-11 19:46:11 +09:00]] 版) <http://www.w3.org/TR/2001/CR-xptr-20010911/>
]REFS]

[327] この通り [[RFC 3023]] はほとんど[[素片識別子]]の規定が無い状態ですが、
[[RFC 3023]] 時代に登録された多くの [[XML MIME型]]は「[[RFC 3023]] と同じ」
のような形の規定を含んでいます。従ってこの時代の [[XML MIME型]]の多くは、
[[素片識別子]]をどう解釈するべきか明確ではありません。

;; [331] 後に規定された[[構造化構文接尾辞]]の[[素片識別子]]に関する要件 (>>256) 
によれば、[[素片識別子]]が定義されていない[[XML MIME型]]の[[素片識別子]]は、
[[RFC 3023]] に従い解釈することに ([[RFC 7303]] 出版以前は)
なっていました。

[333] 分割前の [[XPointer]] 仕様書では、 [[XML MIME型]]で使われることを想定した
[[XPointer]] と呼ばれる構文を定義していました。[[応用]]においては、
[CODE(MIME)@en[[[text/xml]]]]、[CODE(MIME)@en[[[application/xml]]]]、
[CODE(MIME)@en[[[text/xml-external-parsed-entity]]]]、
[CODE(MIME)@en[[[application/xml-external-parsed-entity]]]] については完全な実装を、
それ以外の [[XML MIME型]]で [[XPointer]] を採用するものについてはそれぞれで要求される水準の実装を要求していました
[SRC[>>332]]。

[335] 分割前の [[XPointer]] 仕様書は、 [[RFC 3023]] より後に出版されていますが、
これは異なる[[標準化団体]]の手続きでタイミングを揃えるのが難しいためとしつつも、
[[W3C会員]]に対して [[XPointer]] を[[素片識別子]]として採用する改訂を [[IETF]]
に求めるべきか否か意見を求めています [SRC[>>332]]。

;; [336] この少し後の時代になると [[W3C]] の仕様書で定義された言語の
[[MIME型]]は [[W3C]] の仕様書を出典として [[IANA]] に登録されていましたが、
この時代までは [[RFC]] を出版して登録する形になっていました。
[[W3C]] と [[IETF]] で作業が分断されているのはそのためなのでしょうか。
技術的な問題ではなく、手続き的、政治的な問題で不安定な規定が長年放置されていたようにみえますが...

;; [334] [[XPointer]] についての詳細は、 [[XPointer]] の項を参照してください。

;; [328] 分割以後の [[XPointer]] 仕様の状況については、次章 (>>329) を参照してください。

[REFS[
--- [33] [[SOAP]] ([CODE(MIME)[[[application/soap+xml]]]])
---- [115] [[RFC 3902]] ([[IANA]] 登録)
----- [[RFC 3023]] を参照。
---- [116] [CITE@en[Web Services Security: SOAP Message Security 1.1 (WS-Security 2004)]]
<http://docs.oasis-open.org/wss/v1.1/>
----- [CODE(XML)@en[[[IDREF]]]] による[[参照]]について規定しています。
--- [35] [CODE(MIME)[[[application/xop+xml]]]]
---- [46] [CITE[XML-binary Optimized Packaging]]
<http://www.w3.org/TR/2005/REC-xop10-20050125/#id2270207>
([[RFC 3023]] を参照。)
---- [45] [IANAREG] 
([[RFC 3023]] を参照。)
--- [57] [[CCXML]] ([CODE(MIME)[[[application/ccxml+xml]]]])
---- 
[CITE[Voice Browser Call Control: CCXML Version 1.0]] <http://www.w3.org/TR/2005/WD-ccxml-20050629/#media-type-fragid>
----- [[RFC 3023]] を参照。
---- [[RFC 4267]] ([[IANA]] 登録)
----- [[RFC 3023]] を参照。
--- [82] [[VoiceXML]] ([CODE(MIME)@en[[[application/voicexml+xml]]]])
---- [[RFC 4267]] ([[IANA]] 登録)
----- [[RFC 3023]] を参照。
--- [83] [[SRGS]] ([[XML]] 表現) 
([CODE(MIME)@en[[[application/srgs+xml]]]])
---- [[RFC 4267]] ([[IANA]] 登録)
----- [[RFC 3023]] を参照。
--- [85] [[SSML]] ([CODE(MIME)@en[[[application/ssml+xml]]]])
---- [[RFC 4267]] ([[IANA]] 登録)
----- [[RFC 3023]] を参照。
--- [84] [[PLS]] ([CODE(MIME)@en[[[application/pls+xml]]]])
---- [[RFC 4267]] ([[IANA]] 登録)
----- [[RFC 3023]] を参照。
--- [64] [[DocBook]] ([CODE(MIME)@en[[[application/docbook+xml]]]])
---- [CITE@en[The DocBook Document Type]] 
<http://www.oasis-open.org/docbook/specs/cd-docbook-docbook-4.4.html#fragid>
----- [[RFC 3023]] を参照。
---- [[DocBook]] 4.3 [[WD]]
----- [[RFC 3023]] を参照。
--- [81] [[WS-CDL]] ([CODE(MIME)@en[[[application/cdl+xml]]]])
---- [CITE@en[Web Services Choreography Description Language Version 1.0]] 
<http://www.w3.org/TR/2005/CR-ws-cdl-10-20051109/#Mime-Type-definition>
----- [[RFC 3023]] を参照。
--- [101] [[Atom]] ([CODE(MIME)@en[[[application/atom+xml]]]])
---- [[RFC 4287]] <urn:ietf:rfc:4287> 7.
----- [[RFC 3023]]を参照。
--- [159] [[Atomサービス文書]] ([CODE(MIME)@en[[[application/atomsvc+xml]]]])
---- [[RFC 5023]] <urn:ietf:rfc:5023>
----- [[RFC 3023]]を参照。
--- [158] [[Atom分類文書]] ([CODE(MIME)@en[[[application/atomcat+xml]]]])
---- [[RFC 5023]] <urn:ietf:rfc:5023>
----- [[RFC 3023]]を参照。
--- [102] [[SPARQL]]結果 
([CODE(MIME)@en[[[application/sparql-result+xml]]]])
---- [CITE@en[SPARQL Query Results XML Format]]
<http://www.w3.org/TR/2008/REC-rdf-sparql-XMLres-20080115/#mime-form>
---- [CITE@en[SPARQL Query Results XML Format (Second Edition)]] ([TIME[2013-03-21 20:27:51 +09:00]] 版) <http://www.w3.org/TR/2013/REC-rdf-sparql-XMLres-20130321/#mime-form>
----- [[RFC 3023]]を参照。
--- [117] [[XSLT 2.0]] ([CODE(MIME)@en[[[application/xslt+xml]]]])
---- [CITE@en[XSL Transformations (XSLT) Version 2.0]] 
<http://www.w3.org/TR/2007/REC-xslt20-20070123/#media-type-fragid>
----- [[RFC 3023]] を参照。
----- 本文中に [CODE(XML)@en[[[ID]]]] [[属性]]を[[参照]]する例あり。
- [118] [[XQueryX]] ([CODE(MIME)@en[[[application/xquery+xml]]]])
-- [186] [CITE@en[XML Syntax for XQuery 1.0 (XQueryX)]] 
<http://www.w3.org/TR/2007/REC-xqueryx-20070123/#xqueryx-mime-fragments>
--- [[RFC 3023]] を参照。
-- [185] [CITE@EN[XML Syntax for XQuery 1.0 (XQueryX) (Second Edition)]]
<http://www.w3.org/TR/2010/REC-xqueryx-20101214/#xqueryx-mime-fragments>
-- [285] [CITE@EN[XQueryX 3.0]] ([TIME[2014-04-08 08:22:50 +09:00]] 版) <http://www.w3.org/TR/xqueryx-3/#xqueryx-mime-fragments>
-- [CITE@EN[XQueryX 3.1]] ([TIME[2017-03-20 09:32:28 +09:00]]) <https://www.w3.org/TR/2017/REC-xqueryx-31-20170321/#xqueryx-mime-fragments>
- [129] [[WS-Policy]] 1.5 
([CODE(MIME)@en[[[application/wspolycy+xml]]]])
---- [CITE@en-US[Web Services Policy 1.5 - Framework]] 
<http://www.w3.org/TR/2007/REC-ws-policy-20070904/#ietf-reg>
----- [[RFC 3023]] を参照。
---- [CITE@en-US[Web Services Policy 1.5 - Framework]] 
<http://www.w3.org/TR/2007/REC-ws-policy-20070904/#Policy_Identification>
----- [CODE(XMLa)@en[[VAR@en[wsu]]:[[Id]]]] [[属性]]を使った[[素片識別子]]について
[[WS-Security]] 2004 を参照。
- [171] [[POWDER]]
([CODE(MIME)@en[[[application/powder+xml]]]])
-- [CITE@en[Protocol for Web Description Resources (POWDER): Description Resources]] ([TIME[2009-08-29 01:37:33 +09:00]] 版) <http://www.w3.org/TR/2009/REC-powder-dr-20090901/#appB>
--- [[RFC 3023]] [CODE(MIME)@en[[[application/xml]]]] を参照。
- [172] [[POWDER-S]]
([CODE(MIME)@en[[[application/powder-s+xml]]]])
-- [CITE@en[Protocol for Web Description Resources (POWDER): Description Resources]] ([TIME[2009-08-29 01:37:33 +09:00]] 版) <http://www.w3.org/TR/2009/REC-powder-dr-20090901/#appC>
--- [[RFC 3023]] [CODE(MIME)@en[[[application/xml]]]] を参照。
- [195] [[TEI]] ([CODE(MIME)@en[[[application/tei+xml]]]])
-- [CITE@en[RFC 6129 - The \x27application/tei+xml\x27 Media Type]] ([TIME[2011-04-21 05:04:28 +09:00]] 版) <http://tools.ietf.org/html/rfc6129#section-3>
-- [[RFC 3023]] [CODE(MIME)@en[[[application/xml]]]] を参照。
- [199] [CODE(MIME)@en[[[application/xhtml+xml]]]]
-- [210] <http://www.whatwg.org/specs/web-apps/current-work/complete.html#application/xhtml+xml>
- [208] [CODE(MIME)@en[[[application/inkml+xml]]]]
-- [209] [CITE[Ink Markup Language (InkML)]] ([TIME[2011-09-20 17:16:49 +09:00]] 版) <http://www.w3.org/TR/2011/REC-InkML-20110920/#media-type-fragid>
-- [[RFC 3023]] [CODE(MIME)@en[[[application/xml]]]] を参照。
- [452] [CODE(MIME)@en[[[application/cmisquery+xml]]]],
[CODE(MIME)@en[[[application/cmisallowableactions+xml]]]],
[CODE(MIME)@en[[[application/cmistree+xml]]]],
[CODE(MIME)@en[[[application/cmisatom+xml]]]],
[CODE(MIME)@en[[[application/cmisacl+xml]]]]
-- [CITE[OASIS Specification Template]] ([TIME[2010-04-13 02:41:48 +09:00]] 版) <http://docs.oasis-open.org/cmis/CMIS/v1.0/cs01/cmis-spec-v1.0.html#_Toc235259822>
-- [[RFC 3023]] 6章を参照
- [545] [CODE(MIME)@en[[[application/scxml+xml]]]]
-- [CITE@EN[State Chart XML (SCXML): State Machine Notation for Control Abstraction]] ([TIME[2015-09-01 05:30:17 +09:00]] 版) <http://www.w3.org/TR/scxml/#media-type-fragid>
-- [[RFC 3023]] [CODE(MIME)@en[[[application/xml]]]] を参照。
- [CODE(MIME)@en[application/davmount+xml]]
-- [[RFC 3023]] [CODE[application/xml]] を参照。
]REFS]

[307] [[EmotionML]] ([CODE(MIME)@en[[[application/emotionml+xml]]]]) は [[RFC 3023]] [CODE(MIME)@en[[[application/xml]]]]
を参照しています [SRC[>>305]] が、 [[XPointer Framework]] を参照しつつ[[速記指示子]]によって [CODE(XMLa)@en[[[id]]]]
[[属性]] ([CODE[[[xsd:ID]]]]) を識別できるという説明 [SRC[>>306]] をしています。

;; [308] [[EmotionML]] [[文書]]には [[XML Schema]] への参照を含めることが義務付けられているわけでは無いようですし、
実装も [[XML Schema]] の処理が義務付けられているわけではなさそうですが、 [[EmotionML]] における
[CODE(XMLa)@en[[[id]]]] [[属性]]が [CODE[[[xsd:ID]]]] と定義されていることにより、
([[XML Schema]] [[妥当性検証]]によらない[[応用]]特有の方法で) [[PSVI]] における[[属性]]の型が
[CODE[[[xsd:ID]]]] となり、[[schema決定ID]]とみなせることから[[速記指示子]]により識別できる、という解釈でいいのでしょうか...

[REFS[
- [305] [CITE@en[Emotion Markup Language (EmotionML) 1.0]] ([TIME[2014-05-20 20:02:30 +09:00]] 版) <http://www.w3.org/TR/emotionml/#media-type-fragid>
- [306] [CITE@en[Emotion Markup Language (EmotionML) 1.0]] ([TIME[2014-05-20 20:02:30 +09:00]] 版) <http://www.w3.org/TR/emotionml/#s3.2>
]REFS]

** 分割後の XPointer

[329] [[XPointer]] は [[CR]] まで到達した後4分割され、そのうちの3つが [[W3C勧告]]
(>>337) となりました。
残り1つの開発は凍結され、しかし完全に廃棄はされず、放置状態となっています。

;; 詳細は [[XPointer]] の項を参照してください。

[340] 分割後の [[XPointer]] も、 [CODE(MIME)@en[[[text/xml]]]]、
[CODE(MIME)@en[[[application/xml]]]]、
[CODE(MIME)@en[[[text/xml-external-parsed-entity]]]]、
[CODE(MIME)@en[[[application/xml-external-parsed-entity]]]]
の[[素片識別子]]として使えることになっています。また、他の 
[[XML MIME型]]の[[素片識別子]]を定義するための基礎としても使えるとされています。 [SRC[>>337]]

[341] [[LCWD]] 時点では、 [[XPointer Framework]] 
を4つの[[MIME型]]の[[素片識別子]]で対応するべき最低水準として推奨するべきかどうか意見を求めたい、
とされていました。しかし [[RFC 3023]] の改訂で規定することになるだろうとも述べていました。 
[SRC[>>339]] こうした記述は [[PR]] 以後削除されています。最終的な [[W3C勧告]]にも
[[Normative Reference]] として [[RFC 3023]] への参照は残っていますが、
なぜか本文中ではまったく言及がなくなっています。

[REFS[
- [339] [CITE@en[XPointer Framework]] ([TIME[2002-07-10 19:10:00 +09:00]] 版) <http://www.w3.org/TR/2002/WD-xptr-framework-20020710/>
- [338] [CITE@en[XPointer Framework]] ([TIME[2002-11-13 19:47:05 +09:00]] 版) <http://www.w3.org/TR/2002/PR-xptr-framework-20021113/>
- [337] [CITE@en[XPointer Framework]] ([TIME[2011-10-24 15:32:50 +09:00]] 版) <http://www.w3.org/TR/2003/REC-xptr-framework-20030325/>
]REFS]

[342] [[XPointer]] の開発を担当していた [[W3C XML Linking Working Group]]
は [[XPointer]] 分割後の4つのうちの3つの [[W3C勧告]]が出版された後解散し、
以後 [[XPointer]] は [[W3C XML Core Working Group]] の担当となっています。
[[RFC 3023]] の改訂作業は [[IETF]] で進められ、 [[W3C XML Core Working Group]]
の作業項目にも挙げられていましたが、完了までその後十年以上、
非常にゆっくりとした速度で続けられました。

;; [343] そんな無責任な状態で十年間も誰も困らなかったのか、
と不思議な感じもしますが、 [[RFC 3023]] と [[XPointer]] が事実上世間から無視された、
実効性のない仕様書であった (から誰も困らなかった) と理解せざるを得ないでしょう。
実世界で使われているのは [[HTML]] 以来の [CODE(XML)@en[[[ID]]]] による参照
([[XPointer]] で言うところの[[速記指示子]]) だけで、それ以外は誰も使っていませんでした。
[[Mozilla]] が [[FIXptr]] を実装したり、数年経って誰も使わなかったので削除したりしましたが、
これらの仕様書からは離れたところでの出来事でした。真の [[XPointer]]
はほとんど誰も実装しませんでした。

** RFC 7303

[344] [[RFC 7303]] は [[RFC 3023]] の改訂版ですが、[[素片識別子]]としては正式に
[[XPointer]] (分割後) を参照しています。

[346] [[RFC 7303]] で定義されている [[MIME型]]の[[素片識別子]]の構文と意味は、
[[XPointer Framework]] によります [SRC[>>345]]。該当するのは
[CODE(MIME)@en[[[text/xml]]]]、[CODE(MIME)@en[[[application/xml]]]]、
[CODE(MIME)@en[[[text/xml-external-parsed-entity]]]]、
[CODE(MIME)@en[[[application/xml-external-parsed-entity]]]]、
[CODE(MIME)@en[[[application/xml-dtd]]]] です。ただし
[CODE(MIME)@en[[[application/xml-dtd]]]] について [[XPointer Framework]]
は言及しておらず、これをどう解釈するべきかは不明です。

[351] [CODE(XML)@en[[[+xml]]]] [[構造化構文接尾辞]]を使う [[MIME型]]を登録する際は、
[[素片識別子]]の定義に当たって [[RFC 7303]] を参照しなければ[['''なりません''']] [SRC[>>350]]。

[REFS[
- [345] [CITE@en[RFC 7303 - XML Media Types]] ([TIME[2014-07-07 20:56:43 +09:00]] 版) <http://tools.ietf.org/html/rfc7303#section-5>
- [350] [CITE@en[RFC 7303 - XML Media Types]] ([TIME[2014-07-07 20:56:43 +09:00]] 版) <http://tools.ietf.org/html/rfc7303#section-9.6>
]REFS]

[347] [[適合]]する[[応用]]は、 [[XPointer Framework]] と、 [[XPointer scheme]]
を定義する各[[仕様書]]に従って[[素片識別子]]を解釈しなければ[['''なりません''']]。
[CODE(XPointerScheme)@en[[[element()]]]] [[XPointer scheme]]
は対応しなければ[['''なりません''']]が、他の [[XPointer scheme]]
に対応する義務はありません。汎用の [[XML MIME実体]]の[[処理器]]は、
[[XPointer Registry]] に登録されていない [[XPointer scheme]]
を実装する[['''べきではありません''']]。 [SRC[>>345]]

;; [348] [[XPointer Framework誤り]]も参照してください。

[352] [CODE(XML)@en[[[+xml]]]] [[構造化構文接尾辞]]を使う [[MIME型]]の登録の際は、
- [356] 利用可能な [[XPointer scheme]] を制限しても構いません [SRC[>>350]]。
- [353] [[速記指示子]]と [CODE(XPointerScheme)@en[[[element()]]]] を禁止しては[['''なりません''']]
[SRC[>>350]]。
- [354] 特定の登録済み [[XPointer scheme]] への対応を[['''必須''']]としても構いません 
[SRC[>>350]]。
- [355] [[XPointer Framework]] と重ならない独自の構文と意味を定義して構いません [SRC[>>350]]。
- [357] [[速記指示子]]に独自の意味を追加して構いません [SRC[>>350]]。

** XLink

[61] [[XLink]] の [CODE(XMLa)[[QN[xlink:[[href]]] [[[http://www.w3.org/1999/xlink]]]]]]
[[属性]]の値が [[XML]] を指す場合は[[素片識別子]]は [[XPointer]] です。

;; <http://www.w3.org/TR/xlink#link-locators>

[178]  [[XLink]] 仕様書のこの部分は規定ですが、参照されている [[XPointer]]
仕様書は古い [[WD]] ([[勧告]]とは非互換) で、 Informative Reference になっています。

[179] [[XLink 1.1]] [[WD]] でも [[XLink 1.0]] [[勧告]]と同じ古い [[WD]]
が Informative に参照されています。

[180] 結局 [[XLink 1.1]] [[勧告]]では、該当する記述は削除されて、かわりに[[素片識別子]]は
[[MIME型]]に依存するという説明に差し替えられています。[[XML]] については特に
[[RFC 3023]] またはその改訂版に依るとされています。その中で、現時点 ([[RFC 3023]])
では[[素片識別子]]は定義されていないものの、いくつかの仕様では ([[勧告]]になった) [[XPointer]]
を使っていると述べています [WEAK[(現状に即してはいるものの、矛盾した記述です)]]。
また、あいかわらず古い [[XPointer]] の参照もなぜか残っています。

;; <http://www.w3.org/TR/2010/REC-xlink11-20100506/>

--- [80] [[XBRL]]
---- [[XBRL]] は [[XLink 1.0]] を使用しており、
[[XLink 1.0]] の [[XPointer]] を使うという規定を引用しつつ、
[[XBRL]] [[要素]]を参照するための[[素片識別子]]について、
[[XPointer]] [[勧告]]に基づき[[速記識別子]]と
[CODE(XPointerScheme)@en[[[element]]()]] が使えると規定しています。
---- [[JIS X 7206]]:2005 ([[XBRL 2.1]]) 3.5.4
--- [99] [[SVG 1.0]], [[SVG 1.1]]
---- <IW:SVG:"struct.html#xlinkusage">
---- [[XLink 1.0]]を参照していますが、リンク先が[[XML]]なら[[素片識別子]]は[[XPointer]]という同じ規定があり、
こちらでは[[XPointer]][[勧告]]が参照されています。
-- [44] [[MathML]] では [[XPointer]] を使うことができます。
--- [CITE[Combining Presentation and Content Markup]] 
<http://www.w3.org/TR/2003/REC-MathML2-20031021/chapter5.html#id.5.3.4>

** [[SVG]] 素片識別子

--- [29] [[SVG]] は [[XPointer]] 
と互換な簡単な素片識別子の構文を規定しています。
--- [30] [CODE(MIME)[[[image/svg+xml]]]]
---- [CITE[Linking - SVG 1.0]] 
<http://www.w3.org/TR/SVG10/linking.html#SVGFragmentIdentifiers>
---- [CITE[Linking - SVG 1.1]] 
<http://www.w3.org/TR/SVG11/linking.html#SVGFragmentIdentifiers>
----[CITE[Linking – SVG Tiny 1.2]] ([TIME[2008-12-20 02:31:29 +09:00]] 版) <http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/linking.html#SVGFragmentIdentifiers>

** XML 署名における XPointer

[49] [[XML署名]]や、 [[XML暗号化]] ([CODE(MIME)[[[application/xenc+xml]]]])
は、単体の[[文書]]として存在したり、他の[[言語]]に埋め込まれたりして存在しますが、
いずれにせよ、処理対象を表すために [[URL]] と[[素片識別子]]を使っています。

[536] [[XML署名]]は[[素片識別子]]の処理方法を規定していますが、
[[MIME型]]は規定していません。理論上は利用する [[MIME型]]において
[[XML署名]]と (つまり [[XPointer]] と) 整合する[[素片識別子]]の規定が必要ですが、
そのような言及はありません。

[535] [[XML暗号化]] ([CODE(MIME)[[[application/xenc+xml]]]])
の仕様書やその中の登録雛形には素片識別子に関する明確な規定がありませんが、
[[XML署名]]の仕様の処理モデルに従うようです。

[235] [[XML署名1.0]] では[[素片識別子]]は [[XPointer]] [[CR]] とされています [SRC[>>49]]。

[237] [[XML署名1.1]] では[[素片識別子]]は [[XPointer]] [[勧告]] (および [CODE(XPointerScheme)@en[[[xpointer()]]]]
[[WD]]) を参照しており、 [CODE(XPointerScheme)@en[[[xpointer()]]]] は[RUBYB[非推奨]@en[discouraged]]とされています
[SRC[>>286]]。

[267] [[XML署名 2.0]]では[[素片識別子]]は [[ID]] を表すものとされており、 [CODE(XPointerScheme)@en[[[xpointer()]]]]
は認められていません [SRC[>>268, >>532]]。ただし[[互換モード]]では、
従前の例に倣って処理されます [SRC[>>531]]。

;; [537] 両仕様における [[URL]] と[[素片識別子]]は、外部からの参照を目的としたものではなく、
同じ[[文書]]内の処理対象を識別することを目的としたものです。ネットワークアクセスを伴わない処理では、
(元の [[URL]] 仕様の想定とは異なるとはいえ) [[MIME型]]に紐付かない定義と処理も頷けますし、
むしろ [[MIME型]]によって識別されるものが違ってしまうのでは処理も複雑になりそうです。
[[XML署名 2.0]] ではこの辺りの規定と理論上の整合性を整理しようとした痕跡が見られ、
[[同文書参照]]では[[XML署名]]の規定に従い [[XPointer]] として処理し、
そうでない [[URL]] の[[素片識別子]]は取得した[[資源]]の [[MIME型]]により処理するよう求めています。

[450] その他[[XML署名]]を使う仕様も[[XML署名]]の規定にそった[[素片識別子]]の利用を明記していることがあります [SRC[>>449]]。

;; [[XML署名]]以外での[[素片識別子]]の利用は明記していなかったりします。

[REFS[
- [534] [CITE[XML-Signature Syntax and Processing]] <http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/#sec-Same-Document>
- [533] [CITE[Decryption Transform for XML Signature]] 
<http://www.w3.org/TR/2002/REC-xmlenc-decrypt-20021210#sec-syntax>
- [236] [CITE@en[XML Signature Syntax and Processing Version 1.1]] ([TIME[2013-04-16 23:47:22 +09:00]] 版) <http://www.w3.org/TR/2013/REC-xmldsig-core1-20130411/#Note-Xpath>
- [532] [CITE@en[XML Signature Syntax and Processing Version 2.0]] ([TIME[2013-02-05 03:22:09 +09:00]] 版) <http://www.w3.org/2008/xmlsec/Drafts/xmldsig-core-20/#sec-SelectionAlgorithms>
-- [268] [CITE@en[XML Signature Syntax and Processing Version 2.0]] ([TIME[2013-04-23 19:47:19 +09:00]] 版) <http://www.w3.org/TR/xmldsig-core2/#sec-Type-xml>
- [531] [CITE@en[XML Signature Syntax and Processing Version 2.0]] ([TIME[2013-02-05 03:22:09 +09:00]] 版) <http://www.w3.org/2008/xmlsec/Drafts/xmldsig-core-20/#sec-ReferenceProcessingModel>
- [449] [CITE[Web Services Security: SAML Token Profile 1.1]] ([TIME[2006-10-12 23:25:44 +09:00]] 版) <http://docs.oasis-open.org/wss/v1.1/wss-v1.1-spec-os-SAMLTokenProfile.pdf>
]REFS]

[644] [CITE@en[RFC 3075 - XML-Signature Syntax and Processing]], [TIME[2021-04-11T09:35:23.000Z]], [TIME[2021-04-21T02:46:40.976Z]] <https://tools.ietf.org/html/rfc3075#section-4.3.3.3>

** XFrames 素片識別子

[38] [[XFrames]] は [[XPointer scheme]] に似た構文の [CODE(URI)@en[[[frames()]]]]
を規定しています。ただし [[XPointer]] であるとは書かれていません。

[39] 単純な [[XFrames]] の[[素片識別子]]は単純な [[XPointer]]
で [CODE(URI)@en[[[frames()]]]] [[scheme]] を使ったものと互換性がある、と言える程度ではあります。
ただし現時点で [[W3C]] の [[XPointer scheme]] 登録簿に [CODE(URI)@en[[[frames()]]]]
はありません。 [TIME[2011-04-25T23:24:26.800Z]]

- [40] [CITE[XFrames]] 
<http://www.w3.org/TR/2002/WD-xframes-20020806/#s_populating>
- ...
- [194] [CITE@en[XFrames]] ([TIME[2010-12-17 00:45:08 +09:00]] 版) <http://www.w3.org/TR/2010/NOTE-xframes-20101216/#s_populating>

** Web Annotation

[591] [[Web Annotation]] は [[XPointer scheme]] のようにも見える (と[[仕様書]]にも書いてあるが具体的な構文の規定が無い)
独自の [CODE[selector()]] 構文を用意しています。

;; [CODE[selector()]] 参照。

** XPointer の速記指示子

[435] [[COLLADA]] は [[XPointer]] の[[速記指示子]]のみを使っています [SRC[>>434]]。

[REFS[
- [434] [CITE[COLLADA – Digital Asset Schema Release 1.5.0 ]] ([TIME[2014-04-08 22:35:48 +09:00]] 版) <https://www.khronos.org/files/collada_spec_1_5.pdf#page=22>
]REFS]

[552] [CODE(MIME)@en[[[application/rfc+xml]]]] は [CODE(XMLa)@en[[[anchor]]]]
[[属性値]]を [[XPointer]] [[速記指示子]]として使っています [SRC[>>551, >>581]]。

[REFS[
- [551] [CITE@en[RFC 7749 - The "xml2rfc" Version 2 Vocabulary]] ([TIME[2016-02-04 22:54:51 +09:00]] 版) <https://tools.ietf.org/html/rfc7749#section-8.1>
- [581] [CITE@en[RFC 7991 - The "xml2rfc" Version 3 Vocabulary]] ([TIME[2016-12-17 03:25:21 +09:00]]) <https://tools.ietf.org/html/rfc7991#section-8.1>
]REFS]

** その他の XPointer 系素片識別子

-- [69] [[WSDL 2.0]] 方式
--- [70] [[WSDL 2.0]] [[XML]] [[直列化]] 
([CODE(MIME)@en[[[application/wsdl+xml]]]])
---- [71] 
[CITE@en[Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language]]
<http://www.w3.org/TR/2007/REC-wsdl20-20070626/#ietf-draft>
---- [72] 
[[RFC 3023]] の定義とこの仕様の附属書の定義のどちらかを使うと定義されています
(なんだそりゃ)。附属書で定義されているのは [[XPointer]]
の[[プロファイル]]です。
-- [119] [[WSDL 1.1]]
--- [CITE@en[WSDL 1.1 Element Identifiers]] ([CODE[2007-01-30 07:47:21 +09:00]] 版) 
<http://www.w3.org/TR/2007/WD-wsdl11elementidentifiers-20070131/>
--- [[比較]]のための[[正準形]]も定義されています。
-- [91] [[TEI]]
--- [[TEI]]では[[XPointer]]を[[素片識別子]]として使います。
--- [CITE[Linking, Segmentation, and Alignment]] 
<http://www.tei-c.org/P5/Guidelines/SA.html#SATSLR>
-- [92] [[XSD]]
--- [CSECTION@en[3.15.2.2 References to Schema Components from Elsewhere]]
<IW:XMLSchema1:"#d0e16826">
-- [125] [[SML]]
--- [CITE[Service Modeling Language, Version 1.0]] 
<http://www.w3.org/Submission/2007/SUBM-sml-20070321/#Fragment_Identifier>
--- [[XPointer]] の[[プロファイル]]。
-- [124] [[XFA]]
--- [[XFA]] 2.4 195頁
--- 明確に[[素片識別子]]であるとは書かれていませんが、
見た感じ[[URI参照]]である[[構文]]が定義されています。
--- [[素片識別子]]部は明らかに [[XPointer]] を意識しています。
--- [[素片識別子]]部内に[[百分率符号化]]されていない
[CODE(URI)[#]] が登場し得るようです。
-- [[WebCGM]] 方式
--- [4]
[[WebCGM]] ([CODE(MIME)[[[image/cgm]]; [[version]]=4; [[profileid]]=WebCGM]])
は [[XPointer]] に似ている [WEAK[(もののやや異なる)]] 
構文の素片識別子を使っています。
--- 初版: [CITE[WebCGM Intelligent Content]] 
<http://www.w3.org/TR/1999/REC-WebCGM-19990121/REC-03-CGM-IC#webcgm_3_1_1>
--- 第2版: [CITE[WebCGM Intelligent Content]] 
<http://www.w3.org/TR/2001/REC-WebCGM-20011217/REC-03-CGM-IC.html#webcgm_3_1_1>
--- 2.0 [[会員提出]]: 
[CITE@en[OASIS CGM Open specification - WebCGM 2.0 - WebCGM Intelligent Content]] 
<http://www.w3.org/Submission/2006/SUBM-WebCGM20-20060313/WebCGM20-IC.html#webcgm_3_1_1>
--- 2.0 [[勧告]]:
[CITE[WebCGM 2.0 - WebCGM Intelligent Content]] ([CODE[2007-01-25 02:12:49 +09:00]] 版) 
<http://www.w3.org/TR/2007/REC-webcgm20-20070130/WebCGM20-IC.html#webcgm_3_1_1>
--- 2.0 [[標準]]:
[CITE[WebCGM 2.0 - WebCGM Intelligent Content]] ([CODE[2006-11-04 01:53:46 +09:00]] 版) 
<http://docs.oasis-open.org/webcgm/v2.0/OS/WebCGM20-IC.html#webcgm_3_1_1>
--- 2.1 [[勧告]]
---- <http://www.w3.org/Graphics/WebCGM/drafts/REC/WebCGM21-Concepts.html#webcgm_2_3_6>
---- <http://www.w3.org/Graphics/WebCGM/drafts/REC/WebCGM21-IC.html#webcgm_3_1_1_1>
-- [19] [[FIXptr]]
--- [CODE(MIME)[[[application/xml]]]], [CODE(MIME)[[[text/xml]]]]:
[[Gecko]] などが実装。
--- [[XPointer]] の古い案の簡略版。現在の [[XPointer]] とは非互換。

** 「RFC 3023 またはその改訂版」を参照

[REFS[
- [177] [[XProc]] ([CODE(MIME)@en[[[application/xproc+xml]]]])
-- [CODE(MIME)@en[[[application/xml]]]] と同じ
-- [CITE[XProc: An XML Pipeline Language]] ([TIME[2010-05-11 22:38:07 +09:00]] 版) <http://www.w3.org/TR/2010/REC-xproc-20100511/#fragid>
-- [CITE@en[XProc 2.0: An XML Pipeline Language]] ([TIME[2016-07-21 14:35:49 +09:00]]) <https://www.w3.org/TR/2016/NOTE-xproc20-20160721/#fragid>
]REFS]

** SML の素片識別子

[170] [[SML 1.1]] の [[SML URI Reference Scheme]] では、[[素片識別子]]に[[速記指示子]]または
[CODE(XPointerScheme)@en[[[smlxpath1()]]]] [[XPointer scheme]] のいずれかが利用できることになっています。

;; [CITE@en-US[Service Modeling Language, Version 1.1]] ([TIME[2009-05-12 17:50:10 +09:00]] 版) <http://www.w3.org/TR/2009/REC-sml-20090512/#URI_Reference_Scheme>

** ElementPointer

[442] [[ElementPointer]] は、[[動画]]などを含む「任意のコンテンツ」
を対象として、 [[XPointer]] 風の構文を定義しています。
(構文としては [[XPointer scheme]] の形を取っていますが、独自の[[素片識別子]]構文としています。)

** MPEG の素片識別子

[188] [[ISO/IEC 21000-17]] は [[MP3]] と [[MP4]] のための[[素片識別子]]を規定しています。
これは実質的には [[XPointer]] の[[プロファイル]]ですが、 [[XPointer]] 
を引用しつつも独自に定義しています。

[REFS[
- [189] [[ISO/IEC 21000-17:2006]]
]REFS]

** EPUB CFI

[234] [[EPUB]] は [[CFI]] と呼ばれる [[XPointer]] ベースの独自の構文を[[素片識別子]]として採用しています。

[REFS[
- [233] [CITE[EPUB Canonical Fragment Identifier (epubcfi) Specification]] ([TIME[2011-10-11 03:59:06 +09:00]] 版) <http://idpf.org/epub/linking/cfi/epub-cfi.html>
]REFS]

** XTM 2.0 素片識別子

[436] [[XTM 2.0]] ([[ISO 13250-3]]) は、
[[素片識別子]]の意味を明確に規定しているわけではないのですが、
その [CODE(XMLe)@en[[[topic]]]] [[要素]] [SRC[>>437]] や [CODE(XMLe)@en[[[topicRef]]]]
[[要素]] [SRC[>>438]] の規定より、次のように解釈できます。

[439] [[XTM 2.0]] [[文書]]の[[素片識別子]]は、[[百分率符号化]]を解いて [[UTF-8]]
[[文字列]]として解釈した時、
[FIG(steps)[
= [440] [CODE(XMLa)@en[[[id]]]] が一致する [CODE(XMLe)@en[[[topic]]]]
があれば、その ([[名前]]の) [[話題]]を指します
= [441] なければ、その[[名前]]の[[話題]]を指します
]FIG]

[316] 構文的には、[[素片識別子]]を解いた[[文字列]]は [[XPointer]] 
[[速記指示子]]でなければなりません [SRC[>>438]]。

[REFS[
- [317] [CITE[ISO 13250-2: Topic Maps — Data Model]] ([TIME[2008-06-04 22:00:09 +09:00]] 版) 
<http://www.isotopicmaps.org/sam/>
-- [437] [CITE[Topic Maps — XML Syntax]] ([TIME[2007-12-04 20:04:09 +09:00]] 版) <http://www.isotopicmaps.org/sam/sam-xtm/#d0e535>
-- [438] [CITE[Topic Maps — XML Syntax]] ([TIME[2007-12-04 20:04:09 +09:00]] 版) <http://www.isotopicmaps.org/sam/sam-xtm/#sect-proc-topicRef>
]REFS]

** XPath

[593] [[Oracle]] の [CODE[XDBURIType]] は、[[XML文書]]の[[素片識別子]]に
[[XPath]] ([[XPointer]] ではないただの [[XPath]]) を採用しています [SRC[>>276]]。

[REFS[
- [276] [CITE@ja[データ型]] ([TIME[2017-02-24 10:24:15 +09:00]]) <https://docs.oracle.com/cd/E57425_01/121/SQLRF/sql_elements001.htm>
]REFS]

** メモ

[107]
[CITE[Re: XPointer considered incomprehensible from Bjoern Hoehrmann on 2006-09-05 (www-tag@w3.org from September 2006)]] <http://lists.w3.org/Archives/Public/www-tag/2006Sep/0019.html>
([[名無しさん]] [WEAK[2006-09-07 23:21:03 +00:00]])

[CODE(MIME)@en[[[[VAR[*]]/[VAR[*]]+xml]]]] [[媒体型]]の[[素片識別子]]の定義の実態を調査した報告です。

[130]
[CITE@en[Numbers as anchors]] ([[Henry S. Thompson]] 著, [CODE[2008-02-15 02:28:33 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-xml-core-wg/2008Feb/0026.html>

[[数値]]からはじまる[[素片識別子]]を [[XML]] では定義できないことが問題提起されています。

;; この問題は、連番や日付を使いたいときによく遭遇します。

[283] [[OMDoc]] では [[XPointer]] が使えるようです。

[REFS[
- [282] [[OMDoc]] ([TIME[2010-10-13 07:54:48 +09:00]] 版) <http://omdoc.org/pubs/omdoc1.2.pdf#page=107>
]REFS]

* 引数構文の素片識別子

[9] いくつかの [[MIME型]]では [CODE[[VAR@en[name]]=[VAR@en[value]];[VAR@en[name]]=[VAR@en[value]]]]
のような形式が採用されています。

- [10] [CODE(MIME)@en[[[text/plain]]]]
-- [[RFC 5147]]
--- 長らく [[I-D]] で半放置状態でしたが、ようやく [[RFC]] になりました。
-- [CODE(ABNF)@en[[[param]]]] 型構文で文章の行や文字列を指定できます。
- [241] [CODE(MIME)@en[[[text/csv]]]]
-- [CITE@en[RFC 7111 - URI Fragment Identifiers for the text/csv Media Type]] ([TIME[2014-01-27 23:43:58 +09:00]] 版) <http://tools.ietf.org/html/rfc7111>
- [652] [[CEA-2014-B]] [SRC[PDF p.115]]

** PDF

[31] [CODE(MIME)[[[application/pdf]]]]
でも [CODE(ABNF)[param]] 型構文で命令を指定できます。

;; 詳しくは [CODE(MIME)@en[application/pdf]] 参照。

** 版番号指定

[491] [[Microsoft]] は[[版]]番号の指定に[[素片識別子]]を使っています。

[15] [[CABファイル]]、[[DLLファイル]]、[[OCXファイル]]で版を指定できます [SRC[>>493]]。

>
[PRE(HTML code)[
CODEBASE="http://example.microsoft.com/mydir/polygon.dll#version=1,0,0,1"
]PRE]

>
[PRE(HTML code)[
CODEBASE="http://example.microsoft.com/mydir/polygon.cab#version=1,0,0,1"
]PRE]

[REFS[
- [493] [CITE@en[Embedding a Signed CAB File on a Web Page]] ([TIME[2015-06-23 02:47:07 +09:00]] 版) <https://msdn.microsoft.com/en-us//library/z6h8ccx1(v=vs.80).aspx>
]REFS]

** 媒体素片 URL

[245] [[W3C]] の[RUBYB[[[媒体素片作業部会]]]@en[Media Fragments Working Group]]による[RUBYB[[[媒体素片URL]]]@en[Media Fragments URL]]仕様は、
[[画像]]、[[音声]]、[[動画]]の一部を識別する[[素片識別子]]の構文を規定しています。ただし、 ([[URL]] 全般の原則に従い、)
実際にその規定を適用するためには当該
[[MIME型]]の仕様から本仕様を参照しないといけないことになっています。

[REFS[
- [244] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/2012/REC-media-frags-20120925/>
]REFS]

[248] この仕様の策定の過程で既存の[[MIME型]]の[[素片識別子]]の調査が行われています。それによると、
MIME型の登録で素片識別子を定義しているものはなく、(仕様上は) 本仕様と衝突するおそれはないとされています。

[REFS[
- [246] [CITE[MediaTypeReview - Media Fragments Working Group Wiki]] ([TIME[2013-06-13 21:01:58 +09:00]] 版) <http://www.w3.org/2008/WebVideo/Fragments/wiki/MediaTypeReview>
- [247] [CITE@en[Results of the media type review regarding fragment identifier  (semantics)]] ([[Michael Hausenblas]] 著, [TIME[2009-04-18 23:07:07 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-media-fragment/2009Apr/0125.html>
]REFS]

ただし、この調査自体では当時知られていた [CODE(MIME)@en[[[audio/mpeg]]]] 等の[[素片識別子]]の定義
([[MIME型]]の登録には含まれておらず [[ISO]] の仕様で規定されている。) を検出できていません。
また、当時未登録とはいえ同じ [[W3C]]  内の [CODE(MIME)@en[[[image/svg+xml]]]] で[[SVG素片識別子]]が定義されていますし、
[[WebCGM]] ([CODE(MIME)@en[[[image/cgm]]]]) にも[[素片識別子]]がありますが、これらはまったく言及もされていません。
既存の[[MIME型]]の調査としてはとても杜撰と言わざるを得ません。 ([[MIME型]]の登録自体に[[素片識別子]]の定義が言及されていることを期待しているようですが、
[[URI]] の [[RFC]] は別にそれを要求していません。)

[423] [[媒体素片]]は、 [[HTML]] の[[媒体要素]]において様々な[[動画]]や[[音声]]のデータに対して用いられています。

;; [[媒体素片]]参照。

[126] >>127 は[[媒体素片]]の元となった仕様で、[[素片識別子]]に関してはほぼ同じものが規定されています。
[[媒体素片]]の [[W3C勧告]]で削除された機能の分、こちらの方がより大きな仕様となっています。
(しかしメンテナンスはされていないようです。)

[424] >>127 は [[HTTP]] のみならず、 [CODE(URI)@en[[[rtsp:]]]] [[URL]]
で [[RTSP/1.0]] での[[素片識別子]]の利用方法も規定しています。

[REFS[
- [127]
[CITE@en[Specifying time intervals in URI queries and fragments of time-based Web resources]] ([CODE[2006-05-06 10:39:46 +09:00]] 版) 
<http://annodex.net/TR/URI_fragments.html#rfc.section.4>
-- [[満期]] ([DEL@en[[[IETF]] [[I-D]]]])
-- この仕様自体は特定の[[媒体型]]には依存していません。
- [128] [[CMML]] ([CODE(MIME)@en[[[text/cmml]]]])
-- [CITE@en[The Continuous Media Markup Language (CMML), Version 2.1]] ([CODE[2006-05-06 10:39:46 +09:00]] 版) 
<http://annodex.net/TR/cmml.html#rfc.section.10>
-- [[満期]] ([DEL@en[[[IETF]] [[I-D]]]])
-- >>127 を採用しています。
]REFS]

[454] [[MPEG DASH]] ([CODE(MIME)@en[[[application/dash+xml]]]]) は、
[[媒体素片]]の拡張である [[MPD Anchor]] を[[素片識別子]]として使っています。

;; [[MPD Anchor]] 参照。

** Markdown

[386] [[Markdown]] ([CODE(MIME)@en[[[text/markdown]]]]) の [[RFC]]
は [[HTML]]、[CODE(MIME)@en[[[text/plain]]]]、[[CSV]] の[[素片識別子]]をもとに独自の[[素片識別子]]の規定を設けています。

;; [CODE(MIME)@en[text/markdown]] 参照。

[REFS[
- [385] [CITE@en[draft-ietf-appsawg-text-markdown-04 - The text/markdown Media Type]] ([TIME[2014-12-18 15:13:44 +09:00]] 版) <https://tools.ietf.org/html/draft-ietf-appsawg-text-markdown-04#section-4>
- [556] [CITE@en[RFC 7763 - The text/markdown Media Type]] ([TIME[2016-03-28 02:57:21 +09:00]] 版) <https://tools.ietf.org/html/rfc7763#section-3>
]REFS]

** OAuth 2.0

[428] [[OAuth 2.0]] は [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]]
を[[素片識別子]]による[[引数][引数 (OAuth 2.0)]]の記述の構文に採用しています。

[429] 普通、これは[[HTML文書]]に埋め込まれた [[JavaScript]] 
等により処理されます。

;; [[認可エンドポイント]]を参照。

** pip

[443] [[pip]] は [[Git]] や [[Subversion]] など [[VCS]] の [[URL scheme]]
を独自に規定していますが、[[素片識別子]]については
[FIG(quote)[
>
[PRE(URI code)[
git+https://git.repo/some_repo.git#egg=subdir&subdirectory=subdir_path
]PRE]
]FIG]
... のような構文を使っています。

[445] ドキュメント [SRC[>>444]] には次のような説明があります。
[FIG(quote)[
>
The “project name” component of the url suffix “egg=<project name>-<version>” is used by pip in its dependency logic to identify the project prior to pip downloading and analyzing the metadata. The optional “version” component of the egg name is not functionally important. It merely provides a human-readable clue as to what version is in use.
]FIG]

;; [446] なお Git の標準的な方法 (>>272) とは互換性がありません。
コミットやブランチの指定には[[素片識別子]]ではなく、独自の [CODE[@]]
構文を採用しています。 ([[VCSのURL]]参照。)

[451] [CODE(URI)@en[https://pypi.python.org/packages/source/s/six/six-1.9.0.tar.gz#md5=476881ef4012262dfc8adc645ee786c4]]
のように [[MD5]] [[要約値]]を指定するためにも[[素片識別子]]を使っています。

[REFS[
- [444] [CITE@en[pip install — pip 6.0.8 documentation]] ([TIME[2015-02-05 11:45:03 +09:00]] 版) <https://pip.pypa.io/en/latest/reference/pip_install.html#git>
]REFS]

* XLIFF 素片識別子

[600] [[XLIFF]] は [[XML文書]]ですが、 [[XPointer]] とは異なる独自の[[素片識別子]]構文を規定しています。

[REFS[
- [599] [CITE[XLIFF Version 2.0]] ([TIME[2014-08-06 01:00:00 +09:00]]) <http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/xliff-core-v2.0-os.html#fragid>
]REFS]

* OData 素片識別子

[377] [[OData]] では[[メタデータ文書]] ([CODE(MIME)@en[[[application/xml]]]]) の一部を表す[[素片識別子]] [SRC[>>376]]
が規定されています。

[REFS[
- [376] [CITE[OData Version 4.0 Part 1: Protocol Plus Errata 01]] ([TIME[2014-09-04 16:00:00 +09:00]] 版) <http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part1-protocol.html#_Toc370374842>
-- [263] 旧版: [CITE[OData Version 4.0 Part 1: Protocol]]
( ([TIME[2013-08-14 16:00:00 +09:00]] 版))
<http://docs.oasis-open.org/odata/odata/v4.0/cs01/part1-protocol/odata-v4.0-cs01-part1-protocol.html#_Toc365046268>
- [264] [CITE[OData Atom Format Version 4.0]]
( ([TIME[2013-08-14 16:00:00 +09:00]] 版))
<http://docs.oasis-open.org/odata/odata-atom-format/v4.0/cs01/odata-atom-format-v4.0-cs01.html>
]REFS]

* Blorb 素片識別子

[111]
[CITE[Suggested Interactive Fiction Mediatypes]]
<http://purl.org/int-fiction/ifmi/documents/mediatypes>

[[Blorb]] ([CODE(MIME)@en[[[application/prs.blorb]]]],
[CODE(MIME)@en[[[[VAR[*]]/[VAR[*]]+blorb]]]]) の[[素片識別子]]として、
[CODE(URI)@en[#Pict([VAR[n]])]] や [CODE(URI)@en[#Fspc]] 
のようなものを提案しています。

また、関連して、 [[TADS]] 3 ([CODE(MIME)@en[[[application/prs.t3vm.image]]]])
の[[素片識別子]]として [CODE(URI)@en[#mres([VAR[path]])]] を提案してます。

* ファイル名の素片識別子

[580] [[PHP]] が実装する [CODE(URI)@en[rar:]] [[URL]]
では、[[RAR]] 内の[[ファイル名]]を[[素片識別子]]として使えることになっています。

;; [CODE(URI)@en[rar:]] 参照。

* プログラムコードの素片識別子

** 変数名

[292] [[JsonT]] ファイルの[[素片識別子]]として、 [[JavaScript]] [[変数名]]が用いられることがあります [SRC[>>291]]。

[REFS[
- [291] [CITE[Buzzword.org.uk Draft: jsonGRDDL]] ([TIME[2010-09-03 07:08:39 +09:00]] 版) <http://buzzword.org.uk/2008/jsonGRDDL/spec#sec_jsont_fragment>
]REFS]

** 関数呼び出し型素片識別子

- [5] [CODE(MIME)[[[text/vnd.wap.wmlscript]]]]
-- 関数呼出しを記述できます。
-- 
<http://www.openmobilealliance.org/release_program/docs/Browsing/V2_3-20050118-C/WAP-193_101-WMLScript-20010928-a.pdf?page=70>
- [78] [[Java]]
-- [CODE(URI)@en[[[java]]:]] [[URI scheme]] (非標準) の実装で、
[CODE(ABNF)@en[[[path]]]] で[[クラス]]を識別し、
素片識別子で[[メソッド]]を識別するものがあります
[WEAK[([[Java]] におけるメソッドの識別法 (非 URI) に倣っています)]]。

** プログラム片

[REFS[
- [278] [CODE(MIME)@en[[[text/vnd.a]]]]
-- [279] ([TIME[2014-02-07 21:35:44 +09:00]] 版) <http://www.iana.org/assignments/media-types/text/vnd-a>
-- [[A言語]]のプログラムを記述できます。
]REFS]

** Android Intents

[266] [CODE(URI)@en[[[intent:]]]] [[URL scheme]] では [[Android]] の[[インテント]]を表す[[素片識別子]]の構文が定義されています。

[REFS[
- [265] [CITE@en[Android Intents with Chrome - Google Chrome Mobile — Google Developers]] ([TIME[2013-03-28 22:26:25 +09:00]] 版) <https://developers.google.com/chrome/mobile/docs/intents>
]REFS]

** Microsoft PE

[477] [[Microsoft PE]] ([CODE(MIME)@en[[[application/vnd.microsoft.portable-executable]]]])
では、外部に晒されているデータの名前や番地を[[素片識別子]]として使うことができます。

[489] >>453, >>490 では [[DLLファイル]]で同様な[[素片識別子]]が使われています。

> [SRC[>>453]]
[PRE(HTML code)[
<object id="myCtl" 
  classid="http://www.mycode.Microsoft.com/mycode.dll#myClass"> 
</object>
]PRE]

> [SRC[>>490]]
[PRE(HTML code)[
<OBJECT id="ctrl" classid="YourDllName.dll#ActiveXSourcing.MyWindowControl">
]PRE]

;; >>491 も参照。

[REFS[
- [478] ([TIME[2015-04-24 07:06:31 +09:00]] 版) <http://www.iana.org/assignments/media-types/application/vnd.microsoft.portable-executable>
- [453] [CITE@en[Deploying a Runtime Application Using Internet Explorer]] ([TIME[2015-06-23 02:39:02 +09:00]] 版) <https://msdn.microsoft.com/en-us//library/a7as3z1d(VS.80).aspx>
- [490] [CITE@ja[HOW TO: Sink Managed C# Events in Internet Explorer Script]] ([TIME[2015-06-23 02:40:59 +09:00]] 版) <https://support.microsoft.com/ja-jp/kb/313891/en-us>
]REFS]

* JSON Pointer

[252] [[JSON Pointer]] は[[素片識別子]]としての利用が想定されています。

[REFS[
- [251] [CITE@en[RFC 6901 - JavaScript Object Notation (JSON) Pointer]] ([TIME[2013-08-08 13:44:36 +09:00]] 版) <http://tools.ietf.org/html/rfc6901>
]REFS]

[330] ただしなぜか [CODE(MIME)@en[[[application/json]]]] の定義は更新されていません。
この後 [[RFC 7159]] が発行されていますが、やはり何の言及もありません。

[549] 次の [[MIME型]]が [[RFC 6901]] を[[素片識別子]]として採用しています
[SRC[>>548]]。

[REFS[
- [548] [CODE(MIME)@en[[[application/vnd.collection.doc+json]]]] ([TIME[2014-02-01 10:24:41 +09:00]] 版) <http://www.iana.org/assignments/media-types/application/vnd.collection.doc+json>
]REFS]

* 数値型素片識別子

- [11] 数値系
-- [12] [CODE(MIME)[[[text/plain]]]]
--- 行数などを指定。
--- [[w3m]] などが実装。
-- [86] [[ニュース組]]の[[記事番号]]
--- [[w3m]] が以前実装していました。
--- [CODE(URI)@en[[[news]]:]] [[URI]] 
が[[ニュース組]]を表す際に使えました。
-- [90] [CODE(URI)@en[[[artifact]]:]], [CODE(URI)@en[[[link]]:]],
[CODE(URI)@en[[[local]]:]] [[URI scheme]]では、
版番号のために[[素片識別子]]が使われています。

[481] [[azur]] は、 [CODE(URI)@en[#.18642-18898]] のような[[素片識別子]]で
[[HTML文書]]中の表示上の[[文字]]数指定による選択範囲を表すようです。

;; [[ブックマーク]]も参照。

* バージョン番号素片識別子

[464] [[bower]] は次の通りバージョンやバージョンの範囲の指定を[[素片識別子]]により行っています
[SRC[>>465]]。

>
,semver version	,[CODE[#1.2.3]]
,version range	,"[CODE[#1.2]], [CODE[#~1.2.3]], [CODE[#^1.2.3]], [CODE[#>=1.2.3 <2.0]]"
,Git tag	,[CODE[#<tag>]]
,Git commit SHA	,[CODE[#<sha>]]
,Git branch	,[CODE[#<branch>]]
,Subversion revision	,[CODE[#<revision>]]

;; [466] [[Git]] の[[素片識別子]] (>>272) も含まれています。

[REFS[
- [465] [CITE[API · Bower]] ([TIME[2015-03-31 22:22:29 +09:00]] 版) <http://bower.io/docs/api/#install>
]REFS]

;; [492] >>491 も参照。

* ハッシュ値素片識別子

[455] [[OpenID Connect]] は、 [[JWT]] の[[素片識別子]]をその[[資源]]の内容の
[[SHA-256]] [[ハッシュ値]]を [[base64url]] [[符号化]]したものとすることを求めています
[SRC[>>456, >>460]]。

;; [457] 現時点 ([[draft-ietf-oauth-json-web-token-32]] → [[RFC 7519]]) で [[JWT]]
側に[[素片識別子]]の規定はなく、 [[OpenID Connect]] 独自のものとみられます。

[REFS[
- [456] [CITE@en[Final: OpenID Connect Core 1.0 incorporating errata set 1]] ([TIME[2014-11-09 04:00:29 +09:00]] 版) <http://openid.net/specs/openid-connect-core-1_0.html#RequestUriParameter>
- [460] [CITE@en[Final: OpenID Connect Dynamic Client Registration 1.0 incorporating errata set 1]] ([TIME[2014-11-09 04:02:08 +09:00]] 版) <http://openid.net/specs/openid-connect-registration-1_0.html#ClientMetadata>
]REFS]

* フォント

[277] [[font collection]] に含まれる[[フォント]]を識別する[[素片識別子]]として、
[[文字列]]を記述して[[名前]]で選択する方式と、
[[数値]]を記述して順序で選択する方式があります。

;; [[フォントの素片識別子]]参照。

* RDF 系素片識別子

[13] [[RDF 1.0]] は >>97 のような事情から、 [[RDF URI参照]]における[[素片識別子]]は
[CODE(MIME)@en[[[application/rdf+xml]]]] の[[表現]]のものである、
などといった辻褄あわせともいえる規定を持っています。

[REFS[
- [148] [[RDF/XML]] ([CODE(MIME)[[[application/rdf+xml]]]])
-- [[RFC 3870]]
-- [CITE@en[Resource Description Framework (RDF): Concepts and Abstract Syntax]] 
[CSECTION@en[7. Fragment Identifiers]]
<http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-fragID>
-- [301] [CITE@en[RDF 1.1 XML Syntax]] ([TIME[2014-04-25 12:19:19 +09:00]] 版) <https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-xml/index.html#h3_section-baseURIs>
]REFS]

[147] [[RDF]] の[[具象構文]]の1つ、 [[N3]] は、 [[RDF]]
を直接参照せず、このように[[素片識別子]]を規定しています。
- [[素片識別子]]以外の部分が [[N3]] [[表現]]を持つ[[資源]]を識別する場合、
その[[素片識別子]]は、抽象的であろうが具象的であるが、
任意の[[情報資源]]を識別することができます。
- その [[N3]] [[表現]]は、その[[情報資源]]についての情報を[[文]]として含めることができます。
- 構文的には、 [[N3]] における [[qname]] の [CODE(char)[[[:]]]] 以降の部分と一致するべきです

[REFS[
- [149] [[N3]] ([CODE(MIME)@en[[[text/n3]]]], [CODE(MIME)@en[[[text/rdf+n3]]]],
[CODE(MIME)@en[[[application/n3]]]])
-- [CITE@en[Notation3 (N3): A readable RDF syntax]] ([CODE[2008-01-16 03:12:43 +09:00]] 版) <http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/#frag>
]REFS]

[303] [[RDF 1.1]] は、なぜか[[参考]]として、 [[RDF]] における[[素片識別子]]は、[[RDFグラフ]]中でその[[素片識別子]]つき
[[URL]] によって表されるものを意味する [SRC[>>302]] としています。

[304] [[RDFグラフ]]が他の[[文書]]に埋め込まれる時はその埋め込み先、[[内容折衝]]される時には他の[[表現]]の[[素片識別子]]の意味とも整合する使い方をするべきである
[SRC[>>302]] ともされています。

[496] [[JSON-LD]] ([CODE(MIME)@en[[[application/ld+json]]]]) は、
[[RDF 1.1]] と同じと規定しています [SRC[>>495]]。

;; [498] 以前の仕様案では比較的 (現在より少しは) 正確な規定がありましたが [SRC[>>497]]、
なぜかその後 [[RDF]] に一任する形の曖昧性が増した形に改訂されています。

[REFS[
- [302] [CITE@en[RDF 1.1 Concepts and Abstract Syntax]] ([TIME[2014-04-27 13:02:17 +09:00]] 版) <https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-concepts/index.html#h2_section-fragID>
- [495] [CITE@en[JSON-LD 1.0]] ([TIME[2015-06-25 15:34:20 +09:00]] 版) <https://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld/index.html#application-ld-json>
- [497] [CITE@en[How fragment identifiers are interpreted (IANA considerations) · Issue #107 · json-ld/json-ld.org]] ([TIME[2015-06-25 15:36:12 +09:00]] 版) <https://github.com/json-ld/json-ld.org/issues/107>
]REFS]

-*-*-


[647] [CITE[Systems Biology Markup Language (SBML) Level 3Core - sbml-level-3-version-2-release-2-core.pdf]], [TIME[2019-04-26T19:11:44.000Z]], [TIME[2021-06-09T06:42:28.163Z]] <http://sbml.org/Special/specifications/sbml-level-3/version-2/core/release-2/sbml-level-3-version-2-release-2-core.pdf#page=102>

[648] [[SBML]] ([CODE[application/sbml+xml]])
は[[MIME型]]の登録に[[素片識別子]]への言及がありません。
[[ID]] 属性があり、
埋め込まれた [[RDF/XML]] 内では[[素片識別子]] [[URL]]
がそれを指すことが明記されています [SRC[>>647]]。


* 含まれている内容に依存する素片識別子

[211] [CODE(MIME)@en[[[multipart/x-mixed-replace]]]] の[[素片識別子]]は、
含まれている[[本体部分]]それぞれに、それぞれの[[MIME型]]に従い適用されます。

[REFS[
- [212] [CITE@en-US-x-hixie[Web Applications 1.0]] ([TIME[2011-09-29 00:25:11 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/complete.html#multipart/x-mixed-replace>
]REFS]

* 素片識別子は未定義と明記されている MIME 型

[105] [[素片識別子]]を定義している[[媒体型]]はほんの一握りで、
[[IANA]] に登録されているほとんどの[[媒体型]]の仕様では[[素片識別子]]は言及すらされていません。
しかし、一部の[[媒体型]]に関しては、「[[素片識別子]]は未定義」
の旨が明確に規定されています。

[REFS[
- [106] [[JavaScript]]・[[ECMAScript]]
([CODE(MIME)@en[[[text/javascript]]]],
[CODE(MIME)@en[[[text/ecmascript]]]],
[CODE(MIME)@en[[[application/javascript]]]],
[CODE(MIME)@en[[[application/ecmascript]]]])
-- [653] [[RFC 4329]] <urn:ietf:rfc:4329>
--- [654] [CITE@en[[[RFC 4329]]: Scripting Media Types]], [TIME[2022-11-22T07:29:26.000Z]] <https://www.rfc-editor.org/rfc/rfc4329.html#section-3>
- [197] [CODE(MIME)@en[[[text/event-stream]]]]
-- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#text/event-stream>
- [200] [DEL[[CODE(MIME)@en[[[application/x-www-url-formencoded]]]]]]
-- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#application/x-www-form-urlencoded>
-- >>554 で消失
- [201] [CODE(MIME)@en[[[text/cache-manifest]]]]
-- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#text/cache-manifest>
- [202] [CODE(MIME)@en[[[text/ping]]]]
-- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#text/ping>
- [203] [CODE(MIME)@en[[[text/vtt]]]]
-- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#text/vtt>
- [205] [DEL[[CODE(MIME)@en[[[application/html-peer-connection-data]]]]]]
-- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#application/html-peer-connection-data>
]REFS]

** 未定義

[REFS[
- [544] [CODE(MIME)@en[[[multipart/form-data]]]]
-- [CITE@en[RFC 7578 - Returning Values from Forms: multipart/form-data]] ([TIME[2015-07-19 23:17:07 +09:00]] 版) <https://tools.ietf.org/html/rfc7578#section-8>
]REFS]

** N/A

[REFS[
- [239] [CODE(MIME)@en[[[application/provenance+xml]]]]
-- [CITE@en[PROV-XML: The PROV XML Schema]] ([TIME[2013-04-30 13:05:52 +09:00]] 版) <http://www.w3.org/TR/2013/NOTE-prov-xml-20130430/#media-type>
-- 「N/A」とされています。
- [286] [CODE(MIME)@en[[[application/cms]]]]
-- [CITE@en[RFC 7193 - The application/cms Media Type]] ([TIME[2014-04-05 10:16:52 +09:00]] 版) <http://tools.ietf.org/html/rfc7193>
-- 「N/A」とされています。
- [287] [CODE(MIME)@en[[[application/reputon+json]]]]
-- [CITE@en[RFC 7071 - A Media Type for Reputation Interchange]] ([TIME[2014-03-02 12:26:56 +09:00]] 版) <http://tools.ietf.org/html/rfc7071>
-- 「N/A」とされています。
- [311] [CODE(MIME)@en[[[application/http]]]], [CODE(MIME)@en[[[message/http]]]]
-- [CITE@en[RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing]] ([TIME[2014-06-07 01:59:35 +09:00]] 版) <https://tools.ietf.org/html/rfc7230#section-8.3>
-- 「N/A」とされています。
- [312] [CODE(MIME)@en[[[application/cms]]]]
-- [CITE@en[RFC 7193 - The application/cms Media Type]] ([TIME[2014-04-05 01:16:52 +09:00]] 版) <http://tools.ietf.org/html/rfc7193>
-- 「N/A」とされています。
- [313] [CODE(MIME)@en[[[application/calendar+json]]]]
-- [CITE@en[RFC 7265 - jCal: The JSON Format for iCalendar]] ([TIME[2014-05-30 22:56:16 +09:00]] 版) <http://tools.ietf.org/html/rfc7265#section-7>
-- 「N/A」とされています。
- [372] [CODE(MIME)@en[[[multipart/byteranges]]]]
-- [CITE@en[RFC 7233 - Hypertext Transfer Protocol (HTTP/1.1): Range Requests]] ([TIME[2014-09-11 09:57:55 +09:00]] 版) <https://tools.ietf.org/html/rfc7233#section-5.4>
]REFS]

** JSON と同じ

[REFS[
- [204] [CODE(MIME)@en[[[application/microdata+json]]]]
-- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#application/microdata+json>
-- [[JSON]] ([CODE(MIME)@en[[[application/json]]]]) と同じとされています。
-- ただし現時点で [[JSON]] に[[素片識別子]]は定義されていません。
- [382] [CODE(MIME)@en[[[application/jrd+json]]]]
-- [CITE@en[RFC 7033 - WebFinger]] ([TIME[2014-10-26 16:32:10 +09:00]] 版) <https://tools.ietf.org/html/rfc7033#section-10.2>
-- [CODE(MIME)@en[[[application/json]]]] と同じとする[['''べき''']]、
ただし執筆時点で定義されていない、と規定されています。
]REFS]

** 意味を持たない

[REFS[
- [494] [CODE(MIME)@en[[[application/frame-ld+json]]]]
-- [CITE@en[JSON-LD Framing 1.0]] ([TIME[2013-03-28 23:16:48 +09:00]] 版) <http://json-ld.org/spec/latest/json-ld-framing/#application-ld-frame-json>
-- 「no meaning」
]REFS]

** URL scheme の規定で未定義とされているもの

- [219] [CODE(URI)@en[[[rtsp:]]]], [CODE(URI)@en[[[rtspu:]]]]
-- [[RFC 2326]] は、構文上[[素片識別子]]を使っておらず、本文でその意味は未定義であると説明しており、
解釈は[[鯖]]に委ねられると述べています。

* 特別な値

[368] [[HTML文書]]では、 [CODE(URI)[[['''#'''top]]]] は、 (他に一致する[[要素]]がなければ)
「[[文書]]の先頭」を表します。

;; [CODE(URI)[[['''#'''top]]]] を参照。

[422] [CODE(URI)[[[''#!'']]]] から始まる[[素片識別子]]に特別な意味を与える実装もあります。

;; [CODE(URI)[[[''#!'']]]] 参照。

* URL scheme 依存のデータを構成する素片識別子

[95] [[RFC 3986]]/[[RFC 3987]] の定義に従えば、 [[URI]] 中の[[文字]] [CODE(char)[#]]
は[[素片識別子]]のはじまりを表します。これは [[URI scheme]] によらず、
すべての [[URI]] に適用されます。

[62] ですが、現実には、[[URI]] の中で使われる[[文字]] [CODE(char)[#]] 
が[[素片識別子]]の始まりとして扱われないことがあります
(もちろん'''仕様違反'''です)。

[63] [[Vodafone]] の独自 [[HTML]] 仕様では、 [CODE(URI)[[[tel]]:]]
[[URI scheme]] および [CODE(URI)[[[vtel]]:]] [[URI scheme]]
で[[電話]]の [CODE(char)[#]] ボタンの意味で生の
[CODE(URI)[#]] を使います。

[658] 
[[Lモード]]の独自 [[HTML]] 仕様では、
[CODE[tel:]]
および
[CODE[fax:]]
[[URL]]
で[[電話]]の [CODE[#]] ボタンの意味で生の
[CODE[#]] 
を使います。
[SRC[>>659]]

[133]
'''[CODE(URI)@en[[[irc]]:]] [[URI scheme]]'''は、
[[IRC]]の[[チャンネル名]]に[CODE(char)[#]]が使われるのをそのまま[[URI]]で用いることがあり、
標準化案 ([[Internet Draft]]) もそれを容認し、さらに拡張しようとしていました。

[134]
[[Webブラウザ]]の実装では [CODE(URI)@en[[[data]]:]],
[CODE(URI)@en[[[javascript]]:]], [CODE(URI)@en[[[mailto]]:]]
のような [[URL scheme]] で [CODE(char)[#]] が[[素片識別子]]のはじまりとして扱われないことがあります。

;; 
[131]
この記事はその例を紹介しています:
[REFS[
- [557] [CITE@ja[冬様もすなる☆日記というもの (2008年6月)]]
([[わかば]] 著, [CODE[2008-06-28 21:18:51 +09:00]] 版)
<https://suika.fam.cx/~wakaba/d/d200806#d28-1>
]REFS]

[558] [CODE(URI)@en[file:]] [[URL]] の実装によっては、
[CODE[#]] を[[ファイル名]]の一部と扱うことがあります。

[REFS[

- [659] 
[CODE[「Lモード」コンテンツプロバイダ向け技術条件説明書(2.2版).pdf]],
#page=39

]REFS]


* メモ

[59]
[CITE@en[XML Schema Datatypes in RDF and OWL]] 
<http://www.w3.org/TR/2005/WD-swbp-xsch-datatypes-20050427/#sec-user-defined-problem>

[[XML Schema]] で定義された[[データ型]]をどういう [[URI]]
([[素片識別子]]) で識別するべきかという議論があります。

[121]
[CITE[Fragment Search]] ([CODE[2007-02-10 03:37:54 +09:00]] 版) <http://www.gerv.net/software/fragment-search/>
([[名無しさん]] [WEAK[2007-02-14 22:56:14 +00:00]])

> Fragment Search is a Greasemonkey script which allows people to create URLs which link to content within a page without having control over that page.

> So, for example, http://www.gerv.net/#!s!design searches for the word "design" on the front page of this site. "#" starts the fragment identifier, "!" is the special character so it's obvious it's not a normal fragment identifier, "s" stands for search (there are several other things we want to do with the fragment identifier, like link fingerprints, so we need to keep them all separate) and the second "!" separates the command name from the instruction - i.e. what to search for, in this case "design". 

[160] [CITE[秋元@サイボウズラボ・プログラマー・ブログ: ブラウザのアドレスバーに動くアスキーアートを組み込む]] ([TIME[2009-01-14 14:00:00 +09:00]] 版) <http://labs.cybozu.co.jp/blog/akky/archives/2009/01/ascii-art-animation-on-browser-addressbar.html>

[168] [CITE@en-US[Usage Patterns For Client-Side URI parameters]] ([TIME[2009-04-17 01:15:21 +09:00]] 版) <http://www.w3.org/TR/2009/WD-hash-in-uri-20090415/>

[169] [CITE@en-us[Use cases and requirements for Media Fragments]] ([TIME[2009-05-01 02:03:22 +09:00]] 版) <http://www.w3.org/TR/2009/WD-media-frags-reqs-20090430/>

[173] [CITE[auでLocatiuonヘッダにフラグメント識別子を入れた場合の挙動 - maru.cc@はてな]]
([TIME[2009-09-19 18:13:22 +09:00]] 版)
<http://d.hatena.ne.jp/maru_cc/20080208/1202436438>

[174] [CITE@EN[XForms 1.1]]
([TIME[2009-10-20 22:51:54 +09:00]] 版)
<http://www.w3.org/TR/2009/REC-xforms-20091020/#def-schema-applicable>

[175] [CITE@en[(X)HTML5 Tracking]]
([TIME[2009-12-05 01:03:33 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=4402&to=4403>

[176] [CITE@en-us[Media Fragments URI 1.0]]
([TIME[2010-04-13 21:53:59 +09:00]] 版)
<http://www.w3.org/TR/2010/WD-media-frags-20100413/>

[182] [CITE[IRC logs: freenode / #whatwg / 20100525]]
([TIME[2010-06-15 22:35:31 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100525>

[183] [CITE@en-us[Media Fragments URI 1.0]]
([TIME[2010-06-24 18:17:25 +09:00]] 版)
<http://www.w3.org/TR/2010/WD-media-frags-20100624/>

[184] [CITE[Getting Started - Making AJAX Applications Crawlable - Google Code]]
( ([TIME[2010-10-14 00:08:52 +09:00]] 版))
<http://code.google.com/intl/ja/web/ajaxcrawling/docs/getting-started.html>

[187] [CITE@en[Repurposing the Hash Sign for the New Web]]
( ([TIME[2011-01-16 06:03:54 +09:00]] 版))
<http://www.w3.org/2001/tag/2011/01/HashInURI-20110115>

[190] [CITE[Tagneto: Cross Domain Frame Communication with Fragment Identifiers (for Comet?)]]
( ([TIME[2011-03-04 15:42:42 +09:00]] 版))
<http://tagneto.blogspot.com/2006/06/cross-domain-frame-communication-with.html>

[191] [CITE@en-us[Media Fragments URI 1.0]]
( ([TIME[2011-03-18 02:20:59 +09:00]] 版))
<http://www.w3.org/TR/2011/WD-media-frags-20110317/>

[192] [CITE[MediaTypeReview - Media Fragments Working Group Wiki]]
( ([TIME[2011-03-16 01:29:58 +09:00]] 版))
<http://www.w3.org/2008/WebVideo/Fragments/wiki/MediaTypeReview>

[193] [CITE@en[RFC 5122 - Internationalized Resource Identifiers (IRIs) and Uniform Resource Identifiers (URIs) for the Extensible Messaging and Presence Protocol (XMPP)]]
( ([TIME[2011-01-27 11:38:10 +09:00]] 版))
<http://tools.ietf.org/html/rfc5122#section-2.6>

[196] [CITE@en[draft-hoehrmann-javascript-scheme-03 - The \x27javascript\x27 resource identifier scheme]]
( ([TIME[2011-03-02 19:54:01 +09:00]] 版))
<http://tools.ietf.org/html/draft-hoehrmann-javascript-scheme-03#section-4>

[206] [CITE@en[Web Applications 1.0 r6519 Allow frag IDs to be used by scripts rather than having them point to IDs only.]]
( ([TIME[2011-08-23 07:36:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6518&to=6519>

[213] [CITE@en-us[Media Fragments URI 1.0]]
( ([TIME[2011-12-01 17:05:44 +09:00]] 版))
<http://www.w3.org/TR/2011/CR-media-frags-20111201/>

[214] [CITE@en-us[Protocol for Media Fragments 1.0 Resolution in HTTP]]
( ([TIME[2011-12-01 17:49:26 +09:00]] 版))
<http://www.w3.org/TR/2011/WD-media-frags-recipes-20111201/>

[217] [CITE@en[Identifying Application State]]
( ([TIME[2011-12-10 07:10:28 +09:00]] 版))
<http://www.w3.org/2001/tag/doc/IdentifyingApplicationState>

[218] [CITE@en[mozdev.org - mdhashtool: lfinfo]]
([TIME[2012-02-17 17:48:42 +09:00]] 版)
<http://mdhashtool.mozdev.org/lfinfo.html>

[220] [CITE@en-us[Media Fragments URI 1.0 (basic)]]
( ([TIME[2012-03-14 02:53:51 +09:00]] 版))
<http://www.w3.org/TR/2012/PR-media-frags-20120315/>

[221] [CITE[TAG Product: Fragment Identifiers and Mime Types]]
( ([TIME[2012-05-29 06:09:08 +09:00]] 版))
<http://www.w3.org/2001/tag/products/fragids.html>

[222] [CITE@en[Best Practices for Fragment Identifiers and Media Type Definitions]]
( ([TIME[2012-05-29 04:35:36 +09:00]] 版))
<http://www.w3.org/2001/tag/doc/mimeTypesAndFragids.html>

[223] [CITE@en[Session on mime types and fragids]]
( ([[Jeni Tennison]] 著, [TIME[2011-06-01 07:33:32 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-tag/2011May/0089.html>

[224] [CITE[Web Application Description Language]]
( ([TIME[2009-09-10 03:59:24 +09:00]] 版))
<http://www.w3.org/Submission/2009/SUBM-wadl-20090831/#x3-60002.1>

[225] [CITE@en[Best Practices for Fragment Identifiers and Media Type Definitions]]
( ([TIME[2012-07-26 00:15:04 +09:00]] 版))
<http://www.w3.org/TR/2012/WD-fragid-best-practices-20120726/>

[226] [CITE[The SMIL 3.0 Linking Modules]] ([TIME[2008-12-02 00:45:09 +09:00]] 版) <http://www.w3.org/TR/2008/REC-SMIL3-20081201/smil-extended-linking.html#SMILLinking-Fragment>

[FIG(quote)[
[FIGCAPTION[
[231] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/2012/REC-media-frags-20120925/#standardisation-terminology>
]FIGCAPTION]

>URI fragment: The fragment component is indicated by the presence of a number sign ("#") character and terminated by the end of the URI.
]FIG]


[232] [CITE@en[Best Practices for Fragment Identifiers and Media Type Definitions]]
( ([TIME[2012-10-25 03:38:57 +09:00]] 版))
<http://www.w3.org/TR/2012/WD-fragid-best-practices-20121025/>

[238] [CITE[IRC logs: freenode / #whatwg / 20130424]]
( ([TIME[2013-05-04 00:32:00 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130424>

[242] [CITE[Bug 100841 – Allow CSS selectors as fragment identifiers]]
( ([TIME[2013-07-04 09:25:06 +09:00]] 版))
<https://bugs.webkit.org/show_bug.cgi?id=100841>

[243] [CITE@en[Floating Quotable Citations (FQC)]]
( ([[David Cuenca]] 著, [TIME[2013-02-20 23:40:47 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-cssselfrags/2013Feb/0000.html>

[249] [CITE[zip fragments]]
( ([TIME[2013-08-26 12:06:02 +09:00]] 版))
<https://gist.github.com/annevk/6295844>

[250] [CITE[IRC logs: freenode / #whatwg / 20130822]]
( ([TIME[2013-08-26 10:03:00 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130822>

[269] [CITE@en[905766 – Allow XPaths, RegExps and CSS selectors as fragment identifiers in URLs]]
( ([TIME[2013-10-31 23:56:37 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=905766>

[275] [CITE@en[Web Applications 1.0 r8323     Make the fragment identifier handling rules match browsers better]]
( ([TIME[2013-12-03 08:55:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8322&to=8323>

[284] [CITE@en-us[Metadata API for Media Resources 1.0]]
( ([TIME[2014-03-12 15:50:19 +09:00]] 版))
<http://www.w3.org/TR/mediaont-api-1.0/#widl-MediaAnnotation-fragmentIdentifier>

[288] [CITE[chapmanu/fragmentions]]
( ([TIME[2014-04-18 05:36:35 +09:00]] 版))
<https://github.com/chapmanu/fragmentions>

[289] [CITE@en[''''''[''''''charter'''''']'''''' Addressable Ranges?]]
( ([[Doug Schepers]] 著, [TIME[2014-04-19 04:45:33 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-webapps/2014AprJun/0180.html>

[290] [CITE[IRC logs: freenode / #whatwg / 20140419]]
( ([TIME[2014-04-20 22:25:45 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140419#l-70>

[293] ( ([TIME[1999-08-25 08:03:02 +09:00]] 版))
<http://zesty.ca/crit/draft-yee-url-textsearch-00.txt>

[294] [CITE@en[fragmention - IndieWebCamp]]
( ([TIME[2014-04-24 04:01:08 +09:00]] 版))
<http://indiewebcamp.com/fragmention>

[295] [CITE@en[mozdev.org - liveurls: tech]]
( ([TIME[2014-04-24 23:41:12 +09:00]] 版))
<http://liveurls.mozdev.org/tech.html>

[296] [CITE@en[minitage.recipe.egg 1.41 : Python Package Index]]
( ([TIME[2014-04-24 23:42:05 +09:00]] 版))
<https://pypi.python.org/pypi/minitage.recipe.egg/1.41#pypi-md5-check-support>

[300] [CITE[IRC logs: freenode / #whatwg / 20140424]]
( ([TIME[2014-04-25 14:36:12 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140424>

[FIG(quote)[
[FIGCAPTION[
[314] ( ([TIME[2013-09-26 01:33:53 +09:00]] 版))
<http://www16.ocn.ne.jp/~sanbou/li1.html>
]FIGCAPTION]

[PRE(HTML code)[
 <A HREF="index.html#最初の入り口に戻ります" TARGET="_parent"><IMG SRC="sozai/to1.gif" ALT="最初の入り口に行きます。" ALIGN=BOTTOM></A><BR>
 <A HREF="r1/in02.htm#もっきりやトイレ風呂等を紹介します。" TARGET="r1"><IMG SRC="sozai/to2.gif" ALT="トイレや風呂等の写真があります。" ALIGN=BOTTOM></A><BR>
 <A HREF="r1/in03.htm#料金やお願い等を書いてあります。" TARGET="r1"><IMG SRC="sozai/to3.gif" ALT="料金、お願い等書いてあります。" ALIGN=BOTTOM></A><BR>
]PRE]

;; [[リンク]]に対する[[注釈]]として[[素片識別子]]が用いられているようです。
(リンク先に該当する[[アンカー]]はありません。)
]FIG]

[371] [CITE@en-us[Protocol for Media Fragments 1.0 Resolution in HTTP]]
( ([TIME[2011-12-01 08:49:26 +09:00]] 版))
<http://www.w3.org/TR/media-frags-recipes/>

[373] [CITE@en[Bug 23492 – Linking to a page with a fragment identifier that causes a particular media element to be shown and to seek to a particular position]]
( ([TIME[2014-10-01 09:49:00 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=23492>

[375] [CITE@en[Bug 26988 – We need a way to parse URLs without decoding the fragment identifier]]
( ([TIME[2014-10-07 08:40:19 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26988>

[383] [CITE@en[Annoshape]]
( ([TIME[2014-08-29 00:30:51 +09:00]] 版))
<http://shepazu.github.io/annoshape/annoshape.html>

[463] [CITE[returnurl - Facebook Callback appends '#_=_' to Return URL - Stack Overflow]]
([TIME[2015-03-11 00:10:40 +09:00]] 版)
<http://stackoverflow.com/questions/7131909/facebook-callback-appends-to-return-url>

[FIG(quote)[
[FIGCAPTION[
[530] [CITE[URLの#(シャープ)から後の部分の名称=「ハッシュ」「フラグメント」「ページ内リンクアンカー」と,SEO対策上の重要性 - プログラミングとIT技術をコツコツ勉強するブログ]]
([TIME[2015-07-23 12:37:02 +09:00]] 版)
<http://d.hatena.ne.jp/TipsMemo+computer-technology/20141230/p1>
]FIGCAPTION]

> URLのハッシュには,呼び方がいくつかある。

]FIG]

[553] [CITE@en[Use utf-8 decode without BOM rather than UTF-8 decoder · whatwg/html@39a2e6c]]
([TIME[2016-02-10 21:45:28 +09:00]] 版)
<https://github.com/whatwg/html/commit/39a2e6cde3b4820db56fabe1859de0dc0e6ed8d9>

[554] [CITE@en[Let the URL Standard deal with application/x-www-form-urlencoded · whatwg/html@0fef169]]
([TIME[2016-02-11 11:44:26 +09:00]] 版)
<https://github.com/whatwg/html/commit/0fef169e6fca7433e3aac2a3640b4665b791ff8e>

[555] [CITE@en[Align with URL spec's terminology: "fragment identifier" => "fragment" · whatwg/html@472bd07]]
([TIME[2016-03-02 15:18:40 +09:00]] 版)
<https://github.com/whatwg/html/commit/472bd07726db580b97b9d775996e9d895cda8be0>

[571] [CITE@en[Fragments can only point to nodes in documents]]
( ([[annevk]]著, [TIME[2016-05-26 22:05:50 +09:00]]))
<https://github.com/whatwg/html/commit/fc90400dfd72fd99072668248161c90c993014bc>

[572] [CITE@en[Make :target definition sticky based on last scroll-to-fragment]]
( ([[domenic]]著, [TIME[2016-06-07 22:08:31 +09:00]]))
<https://github.com/whatwg/html/commit/1488bb6f765e41558bb221dc247012a35d88527b>

[FIG(quote)[
[FIGCAPTION[
[576] [CITE@ja[ページ単位の広告の設定方法 - AdSense ヘルプ]]
([TIME[2016-10-16 11:32:19 +09:00]])
<https://support.google.com/adsense/answer/6245305?hl=ja&ref_topic=1307438>
]FIGCAPTION]

> (オプション)プレビュー ツールでページ単位の広告のテストを実施します。
> ページ単位の広告は最適なタイミングでのみサイトに表示されるため、プレビュー ツールを使って広告が正しく配信されることを確認する必要があります。
> ページ単位の広告のテストを実施するページにモバイル デバイスでアクセスします。
> モバイル ブラウザのアドレスバーの URL 末尾に #googleads という文字列を追加します(例: www.example.com#googleads)。
> テストを実施する広告のフォーマットを選択します。
> テスト結果をデバイスで確認します。

]FIG]


[577] [CITE@en[Editorial: give URL syntax components their own terms]]
([[annevk]]著, [TIME[2016-11-01 00:05:41 +09:00]])
<https://github.com/whatwg/url/commit/451696e4297c4c676fae21dbc926aeafb2477e6c>

[578] [CITE@en[Percent encode fragments too]]
([[annevk]]著, [TIME[2016-12-10 02:43:08 +09:00]])
<https://github.com/whatwg/url/commit/373dbedbbf0596f723ce8a195923da98b698aeb0>

[579] [CITE@en[Percent encode fragments too]]
([[annevk]]著, [TIME[2016-12-10 02:43:08 +09:00]])
<https://github.com/whatwg/url/commit/373dbedbbf0596f723ce8a195923da98b698aeb0>

[582] [CITE@ja[芸名に句読点が含まれる芸能人の一覧 - Wikipedia]]
([TIME[2016-12-31 17:32:04 +09:00]])
<https://ja.wikipedia.org/wiki/%E8%8A%B8%E5%90%8D%E3%81%AB%E5%8F%A5%E8%AA%AD%E7%82%B9%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%82%8B%E8%8A%B8%E8%83%BD%E4%BA%BA%E3%81%AE%E4%B8%80%E8%A6%A7>

[587] [CITE@en[Web Annotation Vocabulary]]
([TIME[2017-02-24 02:14:26 +09:00]])
<https://w3c.github.io/web-annotation/vocab/wd/#h-fragmentselector>

[FIG(quote)[
[FIGCAPTION[
[588] [CITE@en[Embedding Web Annotations in HTML]]
([TIME[2017-02-24 02:14:26 +09:00]])
<https://w3c.github.io/web-annotation/serialization-html-note/#embed-json-ld>
]FIGCAPTION]

> While an HTML <script> node may itself have an id attribute, implementers are discouraged from using an HTML URL with fragment identifier to identify an annotation. An HTML fragment identifier is only intended to indicate and help navigate to a specific DOM node in an HTML document (see HTML5 Recommendation '''['''html5''']''' Section 5.6.9, "Navigating to a fragment identifier"). A fragment identifier does not unambiguously identify the contents of this node as a separate resource.

]FIG]

[589] [[Wikipedia]] だと「[[独自研究]]」って注記が付きそうですけど、 
[[W3C]] [[WG Note]] にはさも事実かのようにこんな適当なことが書けるようです。
こんなわけのわからない理屈がまかり通るなら、「[[IRI]] は[[利用者エージェント]]の取得操作のためだけのもので、
[[資源]]の[[表現]]を独立した[[資源]]として曖昧なく識別するものではない」
ってことになりますよね (書いててわけがわからない)。

[FIG(quote)[
[FIGCAPTION[
[590] [CITE@en[Selectors and States]]
([TIME[2017-02-24 02:14:26 +09:00]])
<https://w3c.github.io/web-annotation/selector-note/#h-fragmentselector_def>
]FIGCAPTION]

> Instance
> An element of a group of Resources represented by a particular Class.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[594] [CITE@en[Linked Data Notifications]]
([TIME[2017-05-02 20:42:58 +09:00]])
<https://linkedresearch.org/ldn/#test-consumer-header-discovery>
]FIGCAPTION]

> Senders and consumers should omit the Link header discovery when specifically targeting URIs with fragment identifiers.

]FIG]


[595] [CITE@en[RFC 8141 - Uniform Resource Names (URNs)]]
([TIME[2017-05-07 23:08:37 +09:00]])
<https://tools.ietf.org/html/rfc8141#section-2.3.3>

[601] [CITE@en[Fix scrolling to fragments]]
([[annevk]]著, [TIME[2017-08-19 16:01:50 +09:00]])
<https://github.com/whatwg/html/commit/c230f55027b070f7a663efc3bc360316168e30bb>

[619] [CITE@en[Interoperability of 'The indicated part of the document' for HTML documents · Issue #2902 · whatwg/html]]
([TIME[2017-08-22 18:14:05 +09:00]])
<https://github.com/whatwg/html/issues/2902>

[620] [CITE@en[Fix scrolling to fragments by annevk · Pull Request #2901 · whatwg/html]]
([TIME[2017-08-22 18:14:58 +09:00]])
<https://github.com/whatwg/html/pull/2901>

[627] [CITE@en[Percent-encode additional characters in "fragment state"]]
([[mikewest]]著, [TIME[2017-12-05 17:19:26 +09:00]])
<https://github.com/whatwg/url/commit/7a3c69f8a1583b33e730c3fea85141a618e7c697>

[629] [CITE@en[Percent-encode additional characters in "fragment state"]]
([[mikewest]]著, [TIME[2017-12-05 17:19:26 +09:00]])
<https://github.com/whatwg/url/commit/7a3c69f8a1583b33e730c3fea85141a618e7c697>

[630] [CITE@en[Consider percent-encoding more characters in "fragment state" · Issue #344 · whatwg/url]]
([TIME[2017-12-10 17:57:46 +09:00]])
<https://github.com/whatwg/url/issues/344>

[631] [CITE@en[Percent-encode additional characters in "fragment state". by mikewest · Pull Request #347 · whatwg/url]]
([TIME[2017-12-10 17:59:18 +09:00]])
<https://github.com/whatwg/url/pull/347>

[632] [CITE@en[bryanmcquade/scroll-to-css-selector: Explainer for supporting CSS selectors when navigating to a URL fragment]]
([TIME[2018-05-23 16:58:46 +09:00]])
<https://github.com/bryanmcquade/scroll-to-css-selector>

[633] ([TIME[2014-12-12 04:40:56 +09:00]])
<http://zesty.ca/crit/draft-yee-url-textsearch-00.txt>

[634] [CITE@en[fragmention - IndieWeb]]
([TIME[2018-05-10 02:17:10 +09:00]])
<https://indieweb.org/fragmention>

[635] [CITE@en[Do not use percent decode on strings]]
([[annevk]]著, [TIME[2017-10-10 21:54:23 +09:00]])
<https://github.com/whatwg/html/commit/ce8404fa5d8c2c91725c5262fd69d0d45c227ec8>

[636] [CITE@en[Do not use percent decode on strings by annevk · Pull Request #3111 · whatwg/html]]
([TIME[2018-05-25 01:08:57 +09:00]])
<https://github.com/whatwg/html/pull/3111>

[637] [CITE@en[import.meta.url needs its fragment censored · Issue #3622 · whatwg/html]]
([TIME[2018-06-04 18:59:06 +09:00]])
<https://github.com/whatwg/html/issues/3622>

[638] [CITE@en[Do not use percent decode on strings]]
([[annevk]]著, [TIME[2017-10-10 21:54:23 +09:00]])
<https://github.com/whatwg/html/commit/ce8404fa5d8c2c91725c5262fd69d0d45c227ec8>

[639] [CITE@en[Do not use percent decode on strings by annevk · Pull Request #3111 · whatwg/html]]
([TIME[2019-02-25 17:54:46 +09:00]])
<https://github.com/whatwg/html/pull/3111>

[640] [CITE@en[Scroll To Text · Issue #392 · w3ctag/design-reviews]]
([TIME[2019-10-25 13:00:05 +09:00]])
<https://github.com/w3ctag/design-reviews/issues/392>

[645] [CITE@ja-JP[『FFBE幻影戦争 リオニス国営放送♯7』「FFVII REMAKE」コラボ詳細発表!気になる情報盛りだくさんスペシャル! - YouTube]]
([TIME[2021-04-22T11:53:45.000Z]])
<https://www.youtube.com/watch?v=8aDTvX8kjGw>

[FIG(quote)[
[FIGCAPTION[
[646] [CITE@ja[KDDI au: 技術情報 > オープンアプリ]]
([TIME[2021-06-05T11:51:28.000Z]])
<https://www.au.com/ezfactory/tec/spec/openappli.html>
]FIGCAPTION]

> JadファイルのURLの後ろに#から続くパラメータを記載します。例を以下に示します。
> <a href="device:jam?http://www.au.kddi.com/marubatsu/marubatsu.jad#param=1">○×アプリで遊ぶ</a>
> 上記例の場合、オープンアプリ起動時に " param=1 " の起動引数がシステムプロパティ
> " com.kddi.midlet.args " 経由で引き渡されます。

]FIG]

