Фрагмент URI - URI fragment

В компьютере гипертекст, а Фрагмент URI это нить из символы это относится к ресурс это подчиняется другому, первичному ресурсу. Первичный ресурс обозначен Единый идентификатор ресурса (URI), а идентификатор фрагмента указывает на подчиненный ресурс.

Идентификатор фрагмента, обозначенный решеткой. # необязательная последняя часть URL для документа. Обычно он используется для идентификации части этого документа. Общий синтаксис указан в RFC 3986. В знак решетки разделитель в URI не является частью идентификатора фрагмента.

Основы

В URI хэш-метка # вводит необязательный фрагмент в конце URL-адреса. Общий RFC 3986 синтаксис для URI также допускает необязательный запрос часть, введенная знаком вопроса ?. В URI с запросом и фрагментом фрагмент следует за запросом. Части запроса зависят от схемы URI и оцениваются сервером, например, http: поддерживает запросы в отличие от ftp:. Фрагменты зависят от документа Тип MIME и оцениваются клиентом (веб-браузер ). Клиенты не должны отправлять фрагменты URI на серверы при получении документа, и без помощи локального приложения (см. Ниже) фрагменты не участвуют в HTTP перенаправления.[1]

URI, заканчивающийся на # разрешено общим синтаксисом и представляет собой своего рода пустой фрагмент. В типах документов MIME, таких как текст / html или любого типа XML пустые идентификаторы, соответствующие этой синтаксически допустимой конструкции, не допускаются. Веб-браузеры обычно отображают верхнюю часть документа для пустого фрагмента.

Идентификатор фрагмента функционирует иначе, чем остальная часть URI: его обработка исключительно клиентский без участия веб сервер, хотя сервер обычно помогает определить тип MIME, а тип MIME определяет обработку фрагментов. Когда агент (например, веб-браузер) Запросы а веб-ресурс с веб-сервера агент отправляет URI на сервер, но не отправляет фрагмент. Вместо этого агент ожидает, пока сервер отправит ресурс, а затем агент обрабатывает ресурс в соответствии с типом документа и значением фрагмента.[2]

Примеры

  • В URI для MIME текст / html такие страницы как http://www.example.org/foo.html#bar фрагмент относится к элементу с id = "бар".
    • Графические веб-браузеры обычно прокручивают страницы, чтобы расположить их так, чтобы верх элемента, идентифицированного идентификатором фрагмента, был выровнен с верхом области просмотра; поэтому идентификаторы фрагментов часто используются в таблицах содержания и в постоянные ссылки.
    • Внешний вид идентифицированного элемента можно изменить с помощью :цель CSS псевдокласс; Википедия использует это, чтобы выделить выбранную ссылку. В частности, CSS дисплей: блок может использоваться для отображения контента только в том случае, если он является целью, и в противном случае скрыт дисплей: нет.
    • Устаревший имя Атрибут (разрешен только для некоторых элементов) имел аналогичное назначение в устаревших браузерах. Если имеется имя и я бы должны быть идентичными.
  • В целом XML типы документов, включая XHTML фрагменты, соответствующие xml: id или похожие я бы атрибуты следуют Имя-синтаксис и начинаются с буквы, подчеркивания или двоеточия. Примечательно, что они не могут начинаться с цифры или дефиса.[6]
    • xml: id является одним из немногих общих атрибутов XML, например, xml: lang, который можно использовать без явного объявления пространства имен.[7] В XHTML я бы необходимо использовать, потому что XHTML был указан раньше xml: id существовал.
  • В приложениях XML идентификаторы фрагментов в определенном синтаксисе могут быть XPointers; например, идентификатор фрагмента в URI http://www.example.org/foo.xml#xpointer(//Rube) относится ко всем элементам XML с именем «Rube» в документе, идентифицированном URI http://www.example.org/foo.xml. Процессор XPointer, учитывая этот URI, получит представление документа (например, запрашивая его из Интернета) и вернет представление элементов Rube документа.
  • В RDF словари, такие как RDFS, СОВА, или же SKOS, идентификаторы фрагментов используются для идентификации ресурсов в одном Пространство имен XML, но не обязательно соответствуют определенной части документа. Например, http://www.w3.org/2004/02/skos/core#broader определяет понятие «более широкий» в словаре SKOS Core, но не относится к конкретной части ресурса, обозначенной http://www.w3.org/2004/02/skos/core, полный RDF-файл, в котором объявлена ​​семантика этой конкретной концепции, а также других концепций из того же словаря.
  • В URI для MIME текст / простой документы RFC 5147 задает идентификатор фрагмента для позиций и диапазонов символов и строк в документе с помощью ключевых слов "char" и "линия". Браузерная поддержка отсутствует.[8] В следующем примере идентифицируются строки с 11 по 20 текстового документа:
    • http://example.com/document.txt#line=10,20
  • В URI для MIME текст / csv документы, RFC 7111 определяет идентификатор фрагмента в качестве селектора для строк, столбцов и ячеек с использованием ключевых слов "ряд" , "Col", и "клетка", Например:
    • 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-го ряда.
    • http://example.com/data.csv#row=5-* - Выбирает все строки, начиная с 5-го ряда.
    • http://example.com/data.csv#cell=4,1-6,2 - Выбирает регион, который начинается в 4-й строке и 1-м столбце и заканчивается 6-й строкой и 2-м столбцом.
  • В URI для документов MIME audio / *, image / *, video / * очень немногие определяют фрагменты или семантику фрагментов.[9] Синтаксис Media Fragments URI 1.0 (базовый) поддерживает адресацию медиаресурса в двух измерениях (временном и пространственном) с использованием ключевых слов т и xywh. Следовательно, можно использовать следующие URI медиа-фрагментов в src атрибут аудио или же видео HTML5 элемент:
    • http://example.com/foo.mp4#t=10,20
    • http://example.com/bar.webm#t=40,80&xywh=160,120,320,240
    • Другие веб-сайты используют фрагмент, чтобы передать некоторую дополнительную информацию скриптам, работающим на них - например, Google Video понимает постоянные ссылки в формате # 01h25m30s чтобы начать играть с указанной позиции,[10] и YouTube использует аналогичный код, например # t = 3 мин. 25 сек..[11]
  • В JavaScript, идентификатор фрагмента текущей HTML- или XHTML-страницы можно получить в свойстве "hash" location.hash - обратите внимание, что Javascript также можно использовать с другими типами документов. С ростом AJAX, некоторые веб-сайты используют идентификаторы фрагментов для имитации поведения кнопки «Назад» в браузерах для изменений страниц, которые не требуют перезагрузки, или для имитации подстраниц.
    • Например, Gmail использует один URL-адрес почти для каждого интерфейса - почтовых ящиков, отдельных писем, результатов поиска, настроек - фрагмент используется, чтобы сделать эти интерфейсы напрямую связанными.[12]
    • Adobe Flash веб-сайты могут использовать часть фрагмента, чтобы информировать пользователя о состоянии веб-сайта или веб-приложения, а также для облегчения глубокие ссылки, обычно с помощью SWFAddress Библиотека JavaScript.
  • В URI для MIME application / pdf Документы Программы просмотра PDF распознают ряд идентификаторов фрагментов.[13][14] Например, URL-адрес, заканчивающийся на .pdf # page = 35 заставит большинство читателей открыть PDF-файл и перейти к странице 35. Возможны некоторые другие параметры, включая # nameddest = (аналогично привязкам HTML), # search = "word1 word2", # zoom =и т. д. Несколько параметров можно комбинировать с амперсандами:
    • http://example.org/doc.pdf#view=fitb& nameddest=Chapter3.
  • В SVG, фрагментам разрешено указывать такие аргументы, как viewBox (), preserveAspectRatio (), и преобразовать ().[15]

Предложения

Было сделано несколько предложений для идентификаторов фрагментов для использования с текстовыми документами (которые не могут хранить метаданные привязки) или для ссылки на места в документах HTML, в которых автор не использовал теги привязки:

  • По состоянию на сентябрь 2012 года URI 1.0 мультимедийных фрагментов (базовый) является W3C Рекомендация.[16]
  • В Python Индекс пакета добавляет MD5 хеш файла в URL-адрес в качестве идентификатора фрагмента.[17] Если бы MD5 не был прерван (это сломанная хеш-функция), его можно использовать для обеспечения честность пакета.
    • https://pypi.python.org ... zodbbrowser-0.3.1.tar.gz # md5 = 38dc89f294b24691d3f0d893ed3c119c
  • А хэш-бэнг[18] фрагмент - это фрагмент, начинающийся с восклицательного знака !. Он использовался в устаревшем подходе к динамическому индексированию. одностраничные приложения. An восклицательный знак незаконно в HTML4 (но не в HTML5[19]), XHTML и XML-идентификаторы, предоставляя определенную степень отделения от этой функциональности.
    • С 2009 по 2015 гг. Центр веб-мастеров Google предложил, а затем рекомендовал "схему сканирования AJAX"[20][21] использование начального восклицательного знака в идентификаторах фрагментов для сохранения состояния AJAX страницы:
      http://example.com/page?query#!state
    • URI с хеш-бэнгом считались проблематичными рядом авторов, включая Джени Теннисон из W3C, потому что они делают страницы недоступными для тех, у кого нет JavaScript активирован в их браузере. Они тоже ломаются HTTP-реферер заголовки, поскольку браузеры не могут отправлять идентификатор фрагмента в заголовке Referer.[18]
    • В 2015 году Google отказался от своего предложения по сканированию с помощью hash-bang AJAX, рекомендовав вместо этого использовать прогрессивное улучшение и HTML5 с history.pushState ()[22] метод.[23]
    • Фонд Mozilla Сотрудник Gervase Markham предложил идентификатор фрагмента для поиска в виде #! s! условия поиска. Добавление числа после s (#! s10!) указывает, что браузер должен искать пое вхождение поискового запроса. Отрицательное число (#! s-3!) начинает поиск назад с конца документа. А Грязная обезьяна скрипт доступен для добавления этой функции в совместимые браузеры.[24]
      • http://example.com/index.html#!s3! условия поиска
  • Эрик Уайльд и Марсель Башнагель из ETH Цюрих расширить это, чтобы также идентифицировать фрагменты в текстовых документах, используя обычные выражения, с ключевым словом "матч".[25] Они также описывают реализацию прототипа как расширение для Fire Fox браузер. Например, в любом месте документа можно найти текст RFC без учета регистра:
    • http://example.com/document.txt#match=[rR visible[fF provided[cC])
  • К. Йи из Институт Форсайта предлагает «расширенные идентификаторы фрагментов», разделенные двоеточия и ключевое слово, чтобы отличать их от идентификаторов привязки. Идентификатор фрагмента текстового поиска с "id схемы спецификации фрагмента"слова"- первое предложение в этой схеме.[26] В следующем примере выполняется поиск в документе первого вхождения строки «некоторый контекст для условия поиска», а затем выделены слова «термин поиска»:
    • http://example.com/index.html#:words:some-context-for-a-(search-term)
  • Проект LiveURLs[27] предложил формат идентификатора фрагмента для ссылки на область текста на странице в форме # FWS + C, куда F длина первого слова (до пяти символов), W это само первое слово, S длина выделенного текста и C 32-битный CRC выделенного текста.[28] Они реализовали вариант этой схемы как расширение для браузера Firefox,[29] используя форму # LFWS + C, куда L - длина самого фрагмента, в двух шестнадцатеричный цифры. Ссылка на слово «Фрагмент» с использованием реализованного варианта даст:
    • http://example.com/index.html#115Fragm8+-52f89c4c
  • Вплоть до Firefox 5 Firefox поддерживал ссылки XPath, такие как #xpath: / html / body / div [3], которые можно было использовать вместе с букмарклетом, например http://antimatter15.com/wp/2009/11/xpath-bookmark-bookmarklet/ для ссылки в HTML-документах, не имеющих правильных идентификаторов. Эта функция была удалена как часть очистки кода в https://bugzilla.mozilla.org/show_bug.cgi?id=457102
  • В ePub формат электронной книги, идентификатор канонического фрагмента EPUB (epubcfi,[30] 2011-2017) определяет W3C /IDPF -стандартизированный метод ссылки на произвольный контент с использованием идентификаторов фрагментов для нахождения незакрепленных текстовых диапазонов через структуру документа и сопоставление с образцом. Эти динамические глубокие ссылки помогают находить контент после обновления текста и используются, например, в Apple Книги.


Смотрите также

Рекомендации

  1. ^ «RFC 3986 Uniform Resource Identifier (URI): универсальный синтаксис». Инженерная группа Интернета. Январь 2005 г.. Получено 2012-03-06.
  2. ^ «Типы представлений и семантика идентификаторов фрагментов». Архитектура всемирной паутины, том первый. W3C. 2004. Получено 2011-07-13.
  3. ^ «Прокрутите до фрагмента текста». Статус платформы Chrome. Гугл Хром. Получено 2020-05-18.
  4. ^ Келли, Гордон. «Google Chrome 80 выпущен со спорным обновлением с глубокими ссылками». Forbes. Получено 2020-06-04.
  5. ^ "WICG / scroll-to-text-fragment: Предложение, позволяющее указывать фрагмент текста во фрагменте URL". GitHub. WebPlatform.org Группа сообщества инкубатора в W3C. Получено 2020-05-18.
  6. ^ «Ограничение срока действия: ID». XML 1.0 (пятое издание). W3C. 2008. Получено 2011-07-13.
  7. ^ "xml: id Версия 1.0". W3C. 2005. Получено 2011-07-13.
  8. ^ «Проблема 77024». Хром. 2011. Получено 2011-07-13.
  9. ^ «Обзор медиа-типа». Рабочая группа W3C Media Fragments. 2009. Получено 2009-04-29.
  10. ^ «Новая функция: ссылка в видео». 2006-07-19. Получено 2011-07-13.
  11. ^ Ссылка на конкретный контент в Gmail, Google Blogoscoped, 17 ноября 2007 г.
  12. ^ «Параметры для открытия файлов PDF - Указание параметров в URL» (PDF). Adobe. Апрель 2007 г.. Получено 2017-09-20.
  13. ^ "RFC 3778 - Тип носителя приложения / pdf". Интернет-сообщество. Май 2004 г.. Получено 2017-09-20.
  14. ^ «Связывание - SVG 1.1 (второе издание)».
  15. ^ «Рекомендации W3C Media Fragments URI 1.0 (базовые)». Получено 2012-09-25.
  16. ^ "Поддержка проверки Pypi md5". Получено 2011-07-13. Pypi имеет привычку добавлять фрагмент md5 к своим URL-адресам яиц, мы будем использовать его для проверки уже имеющихся файлов дистрибутива в кеше.
  17. ^ а б "URI хэша". Блог W3C. 2011-05-12. Получено 2011-07-13.
  18. ^ «HTML 5.1, 2-е издание». W3C. 2017. Получено 2018-08-03.
  19. ^ «Предложение сделать AJAX доступным для сканирования». 2009-10-07. Получено 2011-07-13.
  20. ^ "(Технические характеристики) Обеспечение возможности сканирования приложений AJAX". Google Inc. Получено 2013-05-04.
  21. ^ «Управление историей браузера». Сеть разработчиков Mozilla. Получено 2017-02-23.
  22. ^ «Прекращение поддержки нашей схемы сканирования AJAX». Официальный блог Центра веб-мастеров Google. Получено 2017-02-23.
  23. ^ Поиск фрагментов, gerv.net
  24. ^ Идентификаторы фрагментов для текстовых файлов, Эрик Уайлд и Марсель Башнагель, Швейцарский федеральный технологический институт (ETH Zürich), Труды шестнадцатой конференции ACM по гипертексту и гипермедиа Дои:10.1145/1083356.1083398
  25. ^ Идентификаторы фрагментов текстового поиска К. Йи, Сетевая рабочая группа, Институт Форсайта, март 1998 г.
  26. ^ Проект LiveURLs
  27. ^ Технология, лежащая в основе LiveURLs, дата обращения 13 марта 2011 г.
  28. ^ Надстройка "Веб-маркер" для Firefox, дата обращения 13 марта 2011 г.
  29. ^ "Идентификаторы канонических фрагментов EPUB 1.1". idpf.org. Получено 2020-06-03.

внешняя ссылка

  • W3C Медиа-фрагменты Рабочая группа, устанавливающая синтаксис и семантику URI для адресации фрагментов мультимедиа в аудиовизуальном материале (например, области изображения или суб-клипа видео)
  • MediaMixer Портал сообщества собирает презентации, учебные пособия, варианты использования и демонстраторы, связанные с использованием технологии Media Fragment