基本 URI では、ハッシュマークによって#URL の末尾付近にオプションのフラグメントが導入されます。URIの一般的なRFC 3986 構文では、疑問符によって導入されるオプション ? のクエリ部分も許可されています。クエリとフラグメントを含む URI では、フラグメントはクエリの後に続きます。クエリ部分は URI スキームに依存し、サーバーによって評価されます (たとえば、 は とはhttp:異なりクエリをサポートしています)。フラグメントはドキュメントのMIME タイプ ftp:に依存し、クライアント ( Web ブラウザ ) によって評価されます。クライアントはドキュメントを取得する際に URI フラグメントをサーバーに送信すべきではありません。[ 1 ] [ 2 ]
で終わるURI#は汎用構文で許可されており、一種の空フラグメントです。MIMEドキュメントタイプ(例:)text/htmlや任意のXMLタイプでは、この構文的に有効な構造に一致する空の識別子は許可されていません。Webブラウザは通常、空フラグメントに対してドキュメントの先頭を表示します。
フラグメント識別子はURIの他の部分とは異なる動作をします。その処理はクライアント側のみで行われ、 Webサーバー は関与しませんが、サーバーは通常MIMEタイプの決定を支援し、MIMEタイプによってフラグメントの処理が決定されます。エージェント (Webブラウザなど)がWebサーバーからWebリソースを 要求する と、エージェントはURIをサーバーに送信しますが、フラグメントは送信しません。代わりに、エージェントはサーバーがリソースを送信するのを待ち、その後、ドキュメントタイプとフラグメント値に従ってリソースを処理します。[ 3 ]
HTMLウェブページ内では、エージェントはフラグメント識別子と等しい属性id=または属性を含むHTMLタグで識別されるアンカーを探します。name=
例 text/html MIMEページのURIでは、http://www.example.org/foo.html #barフラグメントは要素を参照しますid="bar"。 グラフィカルな Web ブラウザは通常、フラグメント ID で識別される要素の上部がビューポートの上部と揃うようにページをスクロールします。[ 4 ] そのため、フラグメント識別子は目次でよく使用されます。 識別された要素の外観は、:targetCSS 擬似クラスによって変更できます。[ 5 ] Wikipedia は 、選択された参照を強調表示するためにこれを使用しています。特に、CSS を使用すると、それがターゲットである場合にのみコンテンツを表示し、それ以外の場合は非表示にすることができます。display: blockdisplay: none name要素の属性は同じ<a>目的を果たしていましたが、現在はidどの要素にも適用できる属性に置き換えられ、廃止されています。[ 6 ] XHTML フラグメントを含むすべてのXML ドキュメントタイプでは、または類似の属性に対応するものは、構文に従い、文字、アンダースコア、またはコロンで始まります。特に、数字またはハイフンで始めることはできません。[ 7 ] xml:ididNamexml:idxml:langは、名前空間を明示的に宣言せずに使用できる、数少ない汎用 XML 属性の 1 つです (例: ) 。 [ 8 ] XHTML ではidも使用でき、 が好まれるようです。 [ 9 ] [ 10 ] これは、 が存在する前に XHTML が規定されたためですxml:id。XML アプリケーションでは、特定の構文のフラグメント識別子はXPointer にすることができます。[ 11 ] [ 12 ] 例えば、URI のフラグメント識別子は、 URI http://www.example.org/foo.xml http://www.example.org/foo.xml #xpointer(//Rube)で識別されるドキュメント内の「Rube」という名前のすべての XML 要素を参照します。XPointer プロセッサは、その URI が与えられると、ドキュメントの表現を取得し (インターネットから要求するなど)、ドキュメントの「Rube」要素の表現を返します。 RDFS 、OWL 、SKOSなどの RDF 語彙では、フラグメント識別子は同じXML名前空間 内のリソースを識別するために使用されますが、必ずしもドキュメントの特定の部分に対応するわけではありません。たとえば、はSKOS Core語彙の「broader」という概念を識別しますが、で識別されるリソースの特定の部分を参照するわけではありません。完全なRDFファイルであるでは、この特定の概念の意味が、同じ語彙内の他の概念とともに宣言されています。http://www.w3.org/2004/02/skos/core #broaderhttp://www.w3.org/2004/02/skos/core text/plain MIME文書の URI では、RFC 5147 は、キーワード " char" と " " を使用して文書内の文字と行の位置と範囲を示すフラグメント識別子を指定し、" " または " "lineのいずれかで整合性チェックを追加できます。[ 13 ] ブラウザのサポートは不足しているようです。[ 14 ] 次の例は、テキスト文書の 11 行目から 20 行目までを識別します。 lengthmd5http://example.com/document.txt#line=10,20 MIME 文書の URI ではtext/csv 、RFC 7111 は、行、列、セルを選択するためのフラグメント識別子をキーワード " row" 、 " col"、および " cell"を使用して指定しています[ 15 ] 。例: http://example.com/data.csv#row=4 – 4行目を選択します。http://example.com/data.csv#col=2 – 2列目を選択します。http://example.com/data.csv#row=5-7 – 5行目から始まる連続する3行を選択します。http://example.com/data.csv#row=5-* – 5行目から始まるすべての行を選択します。http://example.com/data.csv#cell=4,1-6,2 – 4行目1列目から始まり、6行目2列目で終わる領域を選択します。 MIME audio/*、image/*、video/* ドキュメントの URI では、フラグメントやフラグメントのセマンティクスが定義されているものはほとんどありません。[ 16 ] Media Fragments URI 1.0 (基本) 構文では、キーワードとを使用してメディア リソースを 2 つの次元 (時間的および空間的) に沿ってアドレス指定することがサポートされておりt、xywhMedia Fragments 1.0 URI (高度) ではとが追加されていますtrack。id[ 17 ]したがって 、次のメディア フラグメント URI を、またはHTML5 src要素の属性で使用できます。 audiovideohttp://example.com/foo.mp4#t=10,20 (これは、10秒から始まり20秒未満で終わる時間間隔を示します)http://example.com/bar.webm#t=40,80&xywh=160,120,320,240 この仕様では、コロンを使用して時、分(2桁)、秒(2桁)を指定し、小数点を使用してミリ秒を指定することもできます。また、接頭辞を使用して他の時間表記方法を指定することも可能です。npt:(通常プレイ時間)がデフォルトです。 他のウェブサイトではフラグメント部分を使用して、その上で実行されているスクリプトに追加情報を渡します。たとえば、Google Video は の形式のパーマリンクを理解して、#01h25m30s指定された位置から再生を開始します。[ 18 ] また、YouTube は のような同様のコードを使用します#t=3m25s。[ 19 ] JavaScript では、現在の HTML または XHTML ページのフラグメント識別子は「hash」プロパティでアクセスできますlocation.hash[ 20 ] – JavaScript は他のドキュメントタイプでも使用できます。AJAX の台頭に伴い、一部の Web サイトでは、ページを再読み込みする必要のないページ変更でブラウザの戻るボタンの動作をエミュレートしたり、サブページをエミュレートしたりするためにフラグメント 識別子を使用しています。 JSON ドキュメントにリンクするURIは、特定の値へのポインタを指定できます。[ 22 ] 例えば、末尾が の URL を#/foo使用すると、 で始まるドキュメント内のキーと値のペアから値を抽出できます。{ "foo": ["bar", "baz"], ... } MIMEドキュメントのURIでは、application/pdf PDFビューアはいくつかのフラグメント識別子を認識します。[ 23 ] [ 24 ] 例えば、URLがで終わると、ほとんどのリーダーはPDFを開いて35ページまでスクロールします。他にも、 (HTMLアンカーに類似)、、など、.pdf#page=35いくつかのパラメータが可能です。複数のパラメータはアンパサンドで組み合わせることができます。 #nameddest=#search="word1 word2"#zoom=http://example.org/doc.pdf#view=fitb&nameddest=Chapter3 。SVG では、フラグメントはviewBox()、、、preserveAspectRatio()などの引数を指定できますtransform()。[ 25 ] テキスト内のテキストスニペットを識別するために、フラグメントは":~:text=[prefix-,]textStart[,textEnd][,-suffix]「textStart」をハイライトするか、適用されている場合は「textEnd」に進み移ります。接頭辞と接尾辞はハイライトされませんが、ページ上のテキストを見つけるのに役立ちます。例: https://en.wikipedia.org/w/index.php?title=Cat&oldid=916388819#:~:text=Claws-,Like%20almost,the%20Felidae%2C,-cats [ 26 ]
提案 プレーンテキスト 文書(アンカーメタデータを保存できない)で使用するフラグメント識別子、または著者がアンカータグを使用していないHTML文書内の場所を参照するためのフラグメント識別子について、いくつかの提案がなされている。
2012年9月現在、メディアフラグメントURI 1.0(基本)はW3C 勧告です。[ 27 ] Chrome バージョン 80 以降[ 28 ] [ 29 ] および Firefox バージョン 131 以降[ 30 ] はW3C の WICGテキスト フラグメント [ 31 ] を実装しているため、#:~:text=foo ブラウザは を検索しfoo、一致するテキストをハイライト表示して、そのテキストまでスクロールします。開始と終了に加えて、スニペットはコンテキストも指定できます。コンテキストとは、 の前または後に続くテキストですfooが、ハイライト表示されません (を使用する例: #:~:text=night-,vision 'vision' の前に 'night' がある検索)。 )Python Package Index は、ファイルの MD5 ハッシュをフラグメント識別子として URL に追加します。 [ 32 ] MD5が 壊れていなければ (壊れたハッシュ関数です)、パッケージの 完全性 を保証するために使用できます。https://pypi.python.org ... zodbbrowser-0.3.1.tar.gz#md5=38dc89f294b24691d3f0d893ed3c119c ハッシュバン [ 33 ] フラグメントは、感嘆符で始まるフラグメントです! 。これは、現在では非推奨となっている動的なシングルページアプリケーション のインデックス作成に使用されていました。感嘆符は HTML4 、XHTML、およびXML識別子では不正であり、その機能からある程度分離されています。ただし、 HTML5 では許可されています。[ 34 ] ETHチューリッヒ のエリック・ワイルドとマルセル・バシュナーゲルは、これを拡張して、キーワード「」を使用して、プレーンテキスト文書内の断片を正規表現で識別するようにしました。 [ 40 ] また、 Firefox ブラウザの拡張機能としてのプロトタイプ実装についても説明しています。たとえば、次のコードは、文書内のどこにでも大文字小文字を区別しないテキスト「RFC」を見つけます。 matchhttp://example.com/document.txt#match=[rR][fF][cC] Foresight Institute のK. Yeeは、アンカー識別子と区別するために、コロン とキーワードで区切られた「拡張フラグメント識別子」を提案している。wordsこのスキームにおける最初の提案は、「フラグメント仕様スキーム」ID「」を持つテキスト検索フラグメント識別子である。[ 41 ] 次の例では、文書内で「検索語のコンテキスト」という文字列の最初の出現箇所を検索し、「検索語」という単語を強調表示する。 http://example.com/index.html#:words:some-context-for-a-(search-term) LiveURLsプロジェクト[ 42 ] は、ページ内のテキスト領域を参照するためのフラグメント識別子フォーマットを提案しました。その形式は#FWS+C、F が最初の単語の長さ(最大5文字)、W が最初の単語自体、Sが 選択されたテキストの長さ、Cが 選択されたテキストの32ビットCRCです。 [ 43 ] 彼らは、このスキームのバリアントをFirefoxブラウザの拡張機能として実装しました。[ 44 ] 形式は#LFWS+C、L がフラグメント自体の長さを2桁の16進 数で表したものです。実装されたバリアントを使用して「Fragment」という単語にリンクすると、次のようになります。 http://example.com/index.html#115Fragm8+-52f89c4c Firefox 5 までは、 #xpath:/html/body/div[3] のようなXPathリンクがサポートされていました。これは、 http://antimatter15.com/wp/2009/11/xpath-bookmark-bookmarklet/のようなブックマークレット と組み合わせて使用することで、適切な ID を持たない HTML ドキュメント内のリンクを作成することができました。この機能は、 https: //bugzilla.mozilla.org/show_bug.cgi ?id=457102 のコードクリーンアップの一環として削除されました。 ePub 電子書籍フォーマットでは、EPUB Canonical Fragment Identifier(epubcfi、[ 45 ] 2011-2017)が、フラグメント識別子を使用して任意のコンテンツを参照するためのW3C / IDPF標準化された方法を定義し、文書構造と パターンマッチング によってアンカーされていないテキスト範囲を特定します。これらの動的なディープリンクは、テキストが更新された後にコンテンツを見つけるのに役立ち、たとえばApple Books で使用されています。
参考文献 1 2 "RFC 3986 Uniform Resource Identifier (URI): Generic Syntax" . Internet Engineering Task Force. 2005 年 1 月. 2012 年 3 月 6 日取得 . ↑ R. Fielding 編、Adobe; J. Reschke 編、greenbytes (2014 年 6 月)。 「Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing」 。インターネット技術タスクフォース (IETF) 。2023 年 12 月 27 日 取得 。 ターゲット URI には、参照のフラグメント コンポーネント (存在する場合) は含まれません。フラグメント識別子はクライアント側の処理用に予約されているためです。 {{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ 「表現タイプとフラグメント識別子のセマンティクス」 。 ワールドワイドウェブのアーキテクチャ、第1巻 。W3C 。2004年。2011 年7月13 日 取得 。 ↑ Coyier, Chris (2012-04-09) [最終更新日 2022年1月13日]. "CSS :targetセレクタの使用" . CSS-Tricks . 2024-10-07 に取得. ↑ MDN 貢献者 (2024-08-08). "target" . CSS: Cascading Style Sheets . MDN . 2024-10-07 に取得. ↑ 「廃止された機能」 . HTML Living Standard . WHATWG . 2024-08-07 . 2024-08-08 に取得。 ↑ 「有効性制約: ID」 。XML 1.0 (第 5 版) 。W3C。2008 年。2011 年 7 月 13 日 に取得 。 ↑ "xml:id バージョン 1.0" . W3C . 2005 . 2011-07-13 取得 . ↑ Birbeck, Mark; Gylling, Markus; McCarron, Shane; Pemberton, Steven; et al., eds. (2010-12-16) [Copyright © 2001-2010]. "12. XHTML コア属性モジュール : 12.1. コア属性コレクション" (W3C エディターズドラフト、W3C ワーキンググループノートの一部) . XHTML™ 2.0 . World Wide Web Consortium (W3C) . 2024-10-07 に取得. ↑ Axelsson, Jonny; Epperson, Beth; Ishikawa, Masayasu; McCarron, Shane; Navarro, Ann; Pemberton, Steven 編 (2003-05-06). "6. XHTML 属性コレクション : 6.1. コア属性コレクション" (W3C ワーキングドラフト) . XHTML™ 2.0 . World Wide Web Consortium (W3C) . 2024-10-07 取得 . ↑ Daniel, Ron Jr.; DeRose, Steve; Maler, Eve 編 (2000-06-07). "XML ポインタ言語 (XPointer) バージョン 1.0" (W3C 勧告候補) . World Wide Web Consortium (W3C) . 2024-10-07 取得 . ↑ Møller, Anders; Schwartzbach, Michael I. (2003 年 10 月) [初版: 2000 年 3 月]. "XPointer フラグメント識別子" . XML チュートリアル : XML 革命 : 未来の Web のためのテクノロジー . BRICS、オーフス大学. 2024 年 10 月 7 日 取得 . 注: これらのスライドは 2003 年以降更新されていません。これらは、Addison-Wesley の書籍 「An Introduction to XML and Web Technologies」 および付随するオンライン資料に置き換えられています。詳細については、 http://www.brics.dk/ixwt/ を 参照してください。 ↑ Dürst, Martin J.; Wilde, Erik (2008 年 4 月). URI フラグメント識別子 (text/plain メディアタイプ用 ) (RFC - 提案標準). ネットワークワーキンググループ コメント依頼. インターネット技術タスクフォース. doi : 10.17487/RFC5147 . ↑ 「Issue 77024」 . Chromium . 2011. 2011年7月13日 取得 。 ↑ Hausenblas, Michael; Wilde, Erik; Tennison, Jeni (2014 年 1 月). URI フラグメント識別子 (text/csv メディアタイプ用 ) (RFC - 情報提供). 独立提出によるコメント募集。(インターネット技術タスクフォースによる承認なし)。doi : 10.17487 /RFC7111 . ISSN 2070-1721 . ↑ 「メディアタイプのレビュー」 。W3C メディアフラグメントワーキンググループ 。2009年。 2009年4月29日 取得 。 ↑ マイケル・ハウゼンブラス;イェーゲンシュテット、フィリップ。ジャンセン、ジャック。ラフォン、イヴ。パーカー、コンラッド。シュタイナー、トーマス (2012-09-25)。トロンシー、ラファエル。マネンズ、エリック。ファイファー、シルビア。ヴァン・デュールセン、デイビー (編)。 「メディア フラグメント URI 1.0 (基本)」 (W3C 勧告) 。 W3C メディア フラグメント ワーキング グループ、World Wide Web コンソーシアム。 ↑ 「新機能:動画内のリンク」 。2006年7月19日。 2011年7月13日 閲覧 。 ↑ 「動画のベスト部分へのリンク」 . YouTube . 2008-10-30 . 2011-07-13 閲覧 . ↑ MDN 貢献者 ( 2024-07-18 )。 「Location: hash プロパティ」 。Web API。MDN。2024-10-07 に 取得 。 ↑ Gmailの特定コンテンツへのリンク、Google Blogoscoped、2007年11月17日 ↑ Bryan, P (2013-04-02). "RFC 6901 – JavaScript Object Notation (JSON) Pointer" . The Internet Society . 2022-07-14 に取得. ↑ 「PDF ファイルを開くためのパラメータ - URL でのパラメータの指定」 (PDF) . Adobe. 2007 年 4 月. 2017 年 9 月 20 日 に取得 . ↑ Taft, E.; Pravetz, J.; Zilles, S.; Masinter, L. (2004 年 5 月). "RFC 3778 – application/pdf メディア タイプ" . tools.ietf.org . インターネット ソサエティ. doi : 10.17487/RFC3778 . 2017 年 9 月 20 日 取得 . ↑ 「リンク – SVG 1.1 (第2版)」 。 ↑ 「テキストスニペットの識別」 。2026年3月。 ↑ 「メディアフラグメントURI 1.0(基本)W3C勧告」 。 2012年9月25日 取得 。 ↑ 「テキストフラグメントまでスクロール」 。Chrome プラットフォームステータス 。Google Chrome 。 2020年5月18日 取得。 ↑ ケリー、ゴードン。 「Google Chrome 80 が物議を醸すディープリンクのアップグレードとともにリリース」 。Forbes 。 2020年6月4日 取得 。 ↑ 「Firefox 131.0 リリースノート」 。mozilla.org 。 2024年11月12日 取得 。 ↑ "WICG/scroll-to-text-fragment: URLフラグメントでテキストスニペットを指定できるようにする提案" . GitHub . WebPlatform.org Incubator Community Group at W3C . 2020年5月18日 取得 . ↑ 「Pypi md5チェックのサポート」 。 2011年7月13日 取得。Pypi はegg URLにmd5フラグメントを追加する習慣があるので、それを使ってキャッシュに既に存在する配布ファイルをチェックします。 1 2 「ハッシュURI」 。W3C ブログ 。2011年5月12日。 2011年7月13日 取得 。 ↑ 「HTML 5.1 第2版」 。W3C 。 2017 年。 2018年8月3日 取得 。 1 2 「AJAXをクロール可能にするための提案」 . 2009-10-07 . 2011-07-13 に取得. ↑ "(仕様) AJAX アプリケーションをクロール可能にする" . Google Inc . 2013-05-04 取得 . ↑ 「ブラウザ履歴の操作」 。Mozilla Developer Network 。 2017年2月23日 取得。 ↑ 「AJAX クローリング スキームの非推奨化」 。Google 公式ウェブマスター セントラル ブログ 。2017 年 2 月 23 日 に取得。 ↑ フラグメント検索、gerv.net ↑ プレーンテキストファイルのフラグメント識別子、Erik WildeおよびMarcel Baschnagel、スイス連邦工科大学(ETHチューリッヒ)、第16回ACMハイパーテキストおよびハイパーメディア会議議事録、 doi : 10.1145/1083356.1083398 ↑ テキスト検索フラグメント識別子、K. Yee、ネットワークワーキンググループ、フォアサイト研究所、1998年3月 ↑ 「LiveURLsプロジェクト」 。 2019年8月15日に オリジナル からアーカイブ済み 。 2011年4月13日 に取得。 ↑ LiveURLsの背後にある技術2020年4月29日にWayback Machine に アーカイブされ、2011年3月13日にアクセスされました ↑ 「Web Marker」Firefoxアドオン 2018年11月3日にWayback Machine に アーカイブ済み、2011年3月13日アクセス ↑ "EPUB Canonical Fragment Identifiers 1.1" . idpf.org . 2020年6月3日 取得 .
外部リンク W3Cメディアフラグメントワーキンググループは、視聴覚素材内のメディアフラグメント(画像内の領域や動画のサブクリップなど)を扱うためのURI構文と意味論を確立する。 MediaMixerコミュニティポータルは、メディアフラグメント技術の使用に関するプレゼンテーション、チュートリアル、ユースケース、デモンストレーションを収集しています。