コンピュータハイパーテキストでは、URI フラグメントは、別のプライマリリソースに従属するリソースを参照する文字列です。プライマリ リソースはUniform Resource Identifier (URI) によって識別され、フラグメント識別子は従属リソースを指します。
ハッシュマーク で始まるフラグメント識別子は、ドキュメントのURL#のオプションの最後の部分です。通常、ドキュメントの一部を識別するために使用されます。一般的な構文は RFC 3986 で指定されています。[1] URI のハッシュマーク区切り文字はフラグメント識別子の一部ではありません。
基礎
URI では、ハッシュ マークは#URL の末尾近くにオプションのフラグメントを導入します。URI の一般的な RFC 3986 構文では、疑問符 で導入されるオプションのクエリ?部分も許可されます。クエリとフラグメントを含む URI では、フラグメントはクエリの後に続きます。クエリ部分は URI スキームに依存し、サーバーによって評価されます (例: はhttp:とは異なり、クエリをサポートします)。フラグメントはドキュメントのMIME タイプftp:に依存し、クライアント ( Web ブラウザー) によって評価されます。クライアントは、ドキュメントを取得するときに URI フラグメントをサーバーに送信することは想定されていません。[1] [2]
で終わる URI は#汎用構文で許可されており、一種の空のフラグメントです。text/htmlや XML タイプなどの MIME ドキュメント タイプでは、この構文的に正しい構造に一致する空の識別子は許可されません。Web ブラウザーは通常、空のフラグメントに対してドキュメントの先頭を表示します。
フラグメント識別子は、URI の他の部分とは機能が異なります。フラグメント識別子の処理はクライアント側でのみ行われ、 Web サーバーは関与しません。ただし、サーバーは通常、MIME タイプの決定に協力し、MIME タイプによってフラグメントの処理が決定されます。エージェント(Web ブラウザーなど)が Web サーバーにWeb リソースを要求すると、エージェントは URI をサーバーに送信しますが、フラグメントは送信しません。代わりに、エージェントはサーバーがリソースを送信するのを待機し、その後、ドキュメント タイプとフラグメント値に従ってリソースを処理します。[3]
HTML Web ページでは、エージェントはフラグメント識別子に等しい
id=or属性を含む HTML タグで識別されるアンカーを検索します。name=
例
text/htmlフラグメントなどのMIME ページの URI では、http://www.example.org/foo.html#barを含む要素を参照しますid="bar"。- グラフィカルWebブラウザは通常、フラグメントIDで識別される要素の上部がビューポートの上部に揃うようにページをスクロールします。[4]そのため、フラグメント識別子は目次でよく使用されます。
- 識別された要素の外観は、
:targetCSS疑似クラスを通じて変更できます。[5] Wikipediaはこれを使用して、選択された参照を強調表示します。特に、CSSをdisplay: block使用すると、ターゲットである場合にのみコンテンツを表示し、それ以外の場合はによって非表示にすることができますdisplay: none。 name要素の属性も同じ目的を果たしていましたが、今ではどの要素にも適用できる属性<a>に取って代わられました。 [6]id
- または類似の属性に対応するXHTMLフラグメントを含むすべてのXML文書タイプでは、-構文に従い、文字、アンダースコア、またはコロンで始まります。数字やハイフンで始まることはできません。[7]
xml:ididNamexml:idxml:langは、明示的に名前空間を宣言しなくても使用できる数少ない汎用XML属性の1つです(例: )。 [8] XHTMLでもid使用でき、こちらの方が好まれるようです。[9] [10]これは、XHTMLが存在する前に規定されていたためですxml:id。
- XMLアプリケーションでは、特定の構文のフラグメント識別子はXPointerになることができます。[11] [12]たとえば、URIのフラグメント識別子は
http://www.example.org/foo.xml#xpointer(//Rube)、URI http://www.example.org/foo.xmlで識別されるドキュメント内の「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 - RFC 5147では、MIME 文書の URI において、
text/plainキーワード「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 (基本) 構文は、キーワード
tと を使用して、2 つの次元 (時間的および空間的) に沿ったメディアリソースのアドレス指定をサポートしxywh、Media Fragments 1.0 URI (高度)ではtrack、 と が追加されていますid。[17]したがって、またはHTML5src要素の属性で次のメディアフラグメント URI を使用できます。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ページのフラグメント識別子は「ハッシュ」プロパティ
location.hash[20]でアクセスできます。JavaScriptは他のドキュメントタイプでも使用できます。AJAXの台頭により、一部のWebサイトでは、フラグメント識別子を使用して、再読み込みを必要としないページ変更でブラウザの戻るボタンの動作をエミュレートしたり、サブページをエミュレートしたりしています。- 例えば、Gmailでは、メールボックス、個々のメール、検索結果、設定など、ほぼすべてのインターフェースに単一のURLを使用しており、フラグメントはこれらのインターフェースを直接リンク可能にするために使用されます。[21]
- Adobe Flash Web サイトでは、フラグメント部分を使用して、Web サイトまたは Web アプリケーションの状態をユーザーに通知したり、ディープ リンクを容易にしたりすることができます。これには通常、SWFAddress JavaScript ライブラリが使用されます。
- JSON文書にリンクするURIは特定の値へのポインターを指定できます。[22]
- たとえば、で終わるURLは、
#/fooで始まる文書のキーと値のペアから値を抽出するために使用できます。{ "foo": ["bar", "baz"], ... }
- たとえば、で終わるURLは、
- MIME文書のURIでは、
application/pdfPDFビューアはいくつかのフラグメント識別子を認識します。[23] [24]たとえば、で終わるURLでは、.pdf#page=35ほとんどの読者はPDFを開いて35ページまでスクロールします。他のいくつかのパラメータも可能で、#nameddest=(HTMLアンカーに似ています)、、#search="word1 word2"などがあり#zoom=ます。複数のパラメータはアンパサンドで組み合わせることができます。http://example.org/doc.pdf#view=fitb&nameddest=Chapter3。
- SVGでは、フラグメントは
viewBox()、、、preserveAspectRatio()などの引数を指定することができますtransform()。[25]
提案
プレーンテキスト文書(アンカーメタデータを保存できない)で使用するフラグメント識別子、または作成者がアンカータグを使用していない HTML 文書内の場所を参照するためのフラグメント識別子の提案がいくつかなされています。
- 2012年9月現在、メディアフラグメントURI 1.0(基本)はW3C勧告となっている。[26]
- Chromeバージョン80以上[27] [28]およびFirefoxバージョン131以上[29]はW3Cの WICG テキストフラグメント[30]を実装しているため、
#:~:text=fooブラウザはを検索しfoo、一致するテキストをハイライト表示して、そこまでスクロールします。開始と終了の他に、スニペットはコンテキストも指定できます。コンテキストとは、前または後に続く必要があるfooがハイライト表示されないテキストです(は#:~:text=night-,vision、 の前にある 'vision' を検索する の例です)。 - Pythonパッケージインデックスは、ファイルのMD5ハッシュをフラグメント識別子としてURLに追加します。 [31] MD5が壊れていなければ(壊れたハッシュ関数)、パッケージの
整合性を保証するために使用できます。
https://pypi.python.org ... zodbbrowser-0.3.1.tar.gz#md5=38dc89f294b24691d3f0d893ed3c119c
- ハッシュバン[32]フラグメントは感嘆符で始まるフラグメントです。これは、動的なシングルページアプリケーション
!をインデックスするための、現在は非推奨のアプローチで使用されていました。感嘆符は、HTML4 、XHTML、およびXML識別子では違法であり、その機能からある程度分離されています。ただし、 HTML5では許可されています。[33]- 2009年から2015年にかけて、Google Webmaster Centralは、ステートフルAJAXページのフラグメント識別子の先頭に感嘆符を使用する「AJAXクロールスキーム」[34] [35]を提案し、推奨しました。
http://example.com/page?query#!state - もう一つの実装は、を[34]
#!に置き換えることである。?_escaped_fragment_= - ハッシュバンURIは、ブラウザでJavaScriptを有効にしていないユーザーがページにアクセスできなくなるため、W3CのJeni Tennisonを含む多くの著者によって問題があると考えられてきました。また、ブラウザはRefererヘッダーでフラグメント識別子を送信できないため、HTTPリファラーヘッダーが壊れます。 [32]
- 2015年にGoogleはAJAXクロール提案を廃止し、代わりにプログレッシブエンハンスメントとHTML5の
history.pushState()[36]方式の使用を推奨しました。[37] - Mozilla Foundationの従業員であるGervase Markhamは、検索用のフラグメント識別子を提案しました
#!s!search terms。これは、 という形式です。 sの後に数字を追加すると( )、ブラウザは検索語のn#!s10!番目の出現を検索することを示します。負の数()は、文書の末尾から逆方向に検索を開始します。互換性のあるブラウザにこの機能を追加するためのGreasemonkeyスクリプトが利用可能です。[38]#!s-3!http://example.com/index.html#!s3!search terms
- 2009年から2015年にかけて、Google Webmaster Centralは、ステートフルAJAXページのフラグメント識別子の先頭に感嘆符を使用する「AJAXクロールスキーム」[34] [35]を提案し、推奨しました。
- ETHチューリッヒのエリック・ワイルドとマルセル・バシュナゲルはこれを拡張し、正規表現を使用してプレーンテキスト文書内のフラグメントも識別できるようにしました。キーワードは「
match」です。[39]彼らはまた、 Firefoxブラウザの拡張機能としてプロトタイプ実装についても説明しています。たとえば、次のコードは、文書内の任意の場所にある大文字と小文字を区別しないテキスト「RFC」を検索します。http://example.com/document.txt#match=[rR][fF][cC]
- フォーサイト研究所のK. Yeeは、アンカー識別子と区別するために、コロンとキーワードで区切られた「拡張フラグメント識別子」を提案している。「フラグメント指定スキーム」ID「
words」を持つテキスト検索フラグメント識別子は、このスキームの最初の提案である。[40]次の例では、文書内で「検索用語のコンテキスト」という文字列が最初に出現する箇所を検索し、「検索用語」という単語を強調表示している。http://example.com/index.html#:words:some-context-for-a-(search-term)
- 上記のスキームはChromeバージョン80で実装されました。[41]
- 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正規フラグメント識別子(epubcfi、[45] 2011-2017)は、フラグメント識別子を使用して任意のコンテンツを参照し、文書構造とパターンマッチングを介してアンカーされていないテキスト範囲を見つけるためのW3C / IDPF標準化された方法を定義します。これらの動的なディープリンクは、テキストが更新された後にコンテンツを見つけるのに役立ち、たとえばApple Booksで使用されます。
参照
参考文献
- ^ ab 「RFC 3986 Uniform Resource Identifier (URI): Generic Syntax」。インターネット技術タスクフォース。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: 複数の名前: 著者リスト (リンク) - ^ 「表現タイプとフラグメント識別子セマンティクス」。World Wide Web のアーキテクチャ、第 1 巻。W3C。2004年。2011年 7 月 13 日閲覧。
- ^ Coyier, Chris (2012-04-09) [最終更新日 2022年1月13日]. 「CSS :target セレクターの使用」. CSS-Tricks . 2024年10月7日閲覧。
- ^ MDN寄稿者 (2024-08-08). 「target」. CSS: カスケード スタイル シート. MDN . 2024-10-07取得。
{{cite web}}:|last=一般的な名前があります (ヘルプ) - ^ 「廃止された機能」。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年7月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閲覧。
{{cite web}}: CS1 maint: 複数の名前: 編集者リスト (リンク) - ^ 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/ を参照してください。
{{cite web}}:外部リンク(ヘルプ)|quote= - ^ Dürst, Martin J.; Wilde, Erik (2008 年 4 月)。text/plain メディア タイプの URI フラグメント識別子 (RFC - 標準提案)。ネットワーク ワーキング グループによるコメント要求。インターネット エンジニアリング タスク フォース。doi : 10.17487/RFC5147。
- ^ 「Issue 77024」。Chromium 2011年。 2011年7月13日閲覧。
- ^ Hausenblas, Michael; Wilde, Erik; Tennison, Jeni (2014 年 1 月)。text/csv メディア タイプの URI フラグメント識別子 (RFC - 情報)。Independent Submission Request for Comments。(Internet Engineering Task Force による承認ではありません)。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年7月13日閲覧。
- ^ MDN 寄稿者 (2024-07-18). 「Location: ハッシュ プロパティ」。Web API。MDN。2024年10 月 7 日閲覧。
{{cite web}}:|last=一般的な名前があります (ヘルプ) - ^ Gmail 内の特定のコンテンツへのリンク、Google Blogoscoped、2007-11-17
- ^ Bryan, P (2013-04-02). 「RFC 6901 – JavaScript Object Notation (JSON) ポインター」。インターネット協会。 2022年7月14日閲覧。
- ^ 「PDF ファイルを開くためのパラメーター - URL でのパラメーターの指定」(PDF)。Adobe。2007 年 4 月。2017 年 9 月 20 日閲覧。
- ^ Taft, E.; Pravetz, J.; Zilles, S.; Masinter, L. (2004 年 5 月). 「RFC 3778 – The application/pdf Media Type」. tools.ietf.org . インターネット協会. doi :10.17487/RFC3778 . 2017 年 9 月 20 日閲覧。
- ^ 「リンク – SVG 1.1(第2版)」。
- ^ 「メディアフラグメント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。W3CのWebPlatform.org Incubator Community Group。2020年 5 月 18日閲覧。
- ^ 「Pypi md5 チェック サポート」 。2011年 7 月 13 日取得。Pypi
は egg url に md5 フラグメントを追加する習慣があり、これを使用してキャッシュ内に既に存在する配布ファイルをチェックします。
- ^ ab 「ハッシュ URI」。W3C ブログ。2011 年 5 月 12 日。2011 年 7 月 13 日に閲覧。
- ^ 「HTML 5.1 2nd Edition」W3C 2017年2018年8月3日閲覧。
- ^ ab 「AJAX をクロール可能にするための提案」 2009 年 10 月 7 日. 2011 年 7 月 13 日閲覧。
- ^ 「(仕様) AJAX アプリケーションをクロール可能にする」。Google Inc. 2013 年 5 月 4 日閲覧。
- ^ 「ブラウザ履歴の操作」。Mozilla Developer Network 。 2017年2月23日閲覧。
- ^ 「AJAX クロール スキームの廃止」。公式 Google ウェブマスター向けセントラル ブログ。2017 年 2 月 23 日閲覧。
- ^ フラグメント検索、gerv.net
- ^ プレーンテキストファイルのフラグメント識別子、Erik Wilde および Marcel Baschnagel、スイス連邦工科大学 (ETH Zürich)、第 16 回 ACM ハイパーテキストおよびハイパーメディア会議の議事録doi :10.1145/1083356.1083398
- ^ テキスト検索フラグメント識別子、K. Yee、ネットワークワーキンググループ、Foresight Institute、1998 年 3 月
- ^ bmcquade; bokan; nburris (2022-03-24). 「機能: テキストフラグメントまでスクロール」。Chromeプラットフォーム ステータス。chromium.org。2022年 5 月 3 日閲覧。
- ^ LiveURLs プロジェクト
- ^ LiveURL の背後にあるテクノロジー、2011 年 3 月 13 日にアクセス
- ^ 「Web Marker」Firefox アドオン、2011 年 3 月 13 日アクセス
- ^ 「EPUB Canonical Fragment Identifiers 1.1」. idpf.org . 2020年6月3日閲覧。
外部リンク
- W3C メディアフラグメントワーキンググループは、オーディオビジュアル素材内のメディアフラグメント(画像内の領域やビデオのサブクリップなど)を扱うための URI 構文とセマンティクスを確立しています。
- MediaMixerコミュニティポータルは、メディアフラグメントテクノロジーの使用に関連するプレゼンテーション、チュートリアル、ユースケース、デモンストレーターを収集します。
