Фрагмент URI

редактировать

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

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

Содержание
  • 1 Основы
  • 2 Примеры
  • 3 Предложения
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
Основы

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

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

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

Примеры
  • В URI для MIME текст / html страницы, такие как http://www.example.org/foo.html#bar, фрагмент относится к элементу с id = "bar".
    • Графические веб-браузеры обычно выполняют прокрутку, чтобы расположить страницы так, чтобы верх элемента, идентифицированного идентификатором фрагмента, был выровнен с верхом области просмотра; таким образом, идентификаторы фрагментов часто используются в таблицах содержания, а в постоянных ссылках.
      • Chrome версии 80 и выше реализуют W3C WICG Text Fragments, поэтому #: ~: text = fooзаставит браузер искать foo, выделить соответствующий текст и перейти к нему. Помимо начала и конца, фрагмент также может указывать контекст: текст, который должен предшествовать или следовать за foo, но не будет выделен (пример, который ищет «видение», которому предшествует «ночь» ).
    • Внешний вид идентифицированного элемента можно изменить с помощью псевдокласса :targetCSS ; Википедия использует его для выделения выбранной ссылки. В частности, CSS display: blockможет использоваться для отображения содержимого только в том случае, если он является целью, и в противном случае скрыт display: none.
    • У устаревшего атрибута name(разрешенного только для некоторых элементов) аналогичная цель в устаревших браузерах. Если присутствует nameи id, должны быть идентичны.
  • Во всех типах документов XML, включая XHTML фрагменты, соответствующие атрибуту xml: idили аналогичному id, следуют за синтаксисом Nameи начинаются с буквы, подчеркивания или двоеточия. В частности, они не могут начинаться с цифрой или дефисом.
    • xml: id- один из немногих общих атрибутов XML, e.g., xml: lang, которые можно использовать без явного объявления пространства имен. В XHTML необходимо использовать id, потому что 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, OWL или SKOS, идентификаторы фрагментов используются для идентификации ресурсов в том же пространстве имен XML, но не обязательно соответствуют определенной части документа. Например, http://www.w3.org/2004/02/skos/core#broaderопределяет понятие «более широкий» в словаре SKOS Core, но не относится к определенной части ресурс, обозначенный как http://www.w3.org/2004/02/skos/core, полный RDF-файл, в котором объявлена ​​семантика этого конкретного понятия вместе с другими понятиями из того же словаря.
  • В URI для документов MIME text/plain RFC 5147 определяет идентификатор фрагмента для позиций и диапазонов символов и строк в документе, используя ключевые слова «char» и «line». Поддержка браузера отсутствует. В следующем примере идентифицируются строки с 11 по 20 текстового документа:
    • http://example.com/document.txt#line=10,20
  • В URI для документов MIME RFC 7111 определяет идентификатор фрагмента в качестве селектора для строк, столбцов и ячеек с помощью ключевых слов «row», «col» и «cell", например:
    • 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 / * очень немногие имеют определенные фрагменты или семантика фрагментов. Синтаксис Media Fragments URI 1.0 (базовый) поддерживает адресацию медиаресурса в двух измерениях (временном и пространственном) с использованием ключевых слов tи xywh. Следовательно, можно использовать следующие URI мультимедийных фрагментов в атрибуте srcэлемента audioили videoHTML5 :
    • http : //example.com/foo.mp4#t=10,20
    • http://example.com/bar.webm#t=40,80xywh=160,120,320,240
    • Другие веб-сайты используют часть фрагмента для передачи некоторых дополнительная информация для запущенных на них скриптов - например, Google Video понимает постоянные ссылки в формате # 01div class="ht"5m30s, чтобы начать воспроизведение в указанной позиции, а YouTube использует аналогичный код, такой как # t = 3m25s.
  • В JavaScript идентификатор фрагмента текущей HTML- или XHTML-страницы можно получить в свойстве «hash» location.hash- обратите внимание, что Javascript также можно использовать с другими типами документов. С появлением AJAX некоторые веб-сайты используют идентификаторы фрагментов для имитации поведения кнопки «Назад» в браузерах для изменений страниц, которые не требуют перезагрузки, или для имитации подстраниц.
    • Например, Gmail использует один URL-адрес почти для каждого интерфейса - почтовых ящиков, отдельных писем, результатов поиска, настроек - фрагмент используется, чтобы сделать эти интерфейсы напрямую связанными.
    • Веб-сайты Adobe Flash могут использовать фрагмент, чтобы информировать пользователя о состоянии веб-сайта или веб-приложения, а также для облегчения глубинных ссылок, обычно с помощью SWFAddress Библиотека JavaScript.
  • В URI для документов MIME application/pdf программы просмотра PDF распознают ряд идентификаторов фрагментов. Например, URL-адрес, заканчивающийся на .pdf # page = 35, заставит большинство читателей открыть PDF-файл и перейти к странице 35. Возможны несколько других параметров, включая # nameddest =( аналогично привязкам HTML), # search = "word1 word2", # zoom =и т. д. Несколько параметров можно комбинировать с амперсандами:
    • http://example.org /doc.pdf#view=fitbnameddest=Chapter3.
  • В SVG фрагментам разрешено указывать такие аргументы, как viewBox (), preserveAspectRatio (), и transform ().
Предложения

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

  • По состоянию на сентябрь 2012 года URI 1.0 мультимедийных фрагментов (базовый) является рекомендацией W3C.
  • Добавляется индекс пакета Python хеш MD5 файла для URL-адреса в качестве идентификатора фрагмента. Если бы MD5 не был нарушен (это неработающая хеш-функция ), его можно было бы использовать для обеспечения целостности пакета.
    • https://pypi.python.org... zodbbrowser-0.3.1.tar.gz # md5 = 38dc89f294b24691d3f0d893ed3c119c
  • A hash-bang фрагмент - это фрагмент, начинающийся с восклицательного знака !. Он использовался в устаревшем подходе для индексации динамических одностраничных приложений. Восклицательный знак недопустим в идентификаторах HTML4 (но не в HTML5), XHTML и XML, что дает определенную степень отделения от этой функциональности.
    • В период с 2009 по 2015 год Центр веб-мастеров Google предложил и затем рекомендовал «схему сканирования AJAX» с использованием начального восклицательного знака в идентификаторах фрагментов для страниц с отслеживанием состояния AJAX страниц: http://example.com/page?query#!state
    • Ряд авторов, в том числе Джени Теннисон из W3C, сочли URI-адреса хеширования проблемными, поскольку они делают страницы недоступными для тех, у кого нет JavaScript активирован в их браузере. Они также нарушают заголовки HTTP referer, поскольку браузерам не разрешено отправлять идентификатор фрагмента в заголовке Referer.
    • В 2015 году Google отказался от своего предложения по сканированию с помощью hash-bang AJAX, рекомендуя вместо этого использовать из прогрессивного улучшения и HTML5 метода history.pushState ().
    • Сотрудник Mozilla Foundation Гервас Маркхэм предложил идентификатор фрагмента для поиска, формы #! s! условия поиска. Добавление числа после s (#! S10!) указывает, что браузер должен искать n-е вхождение условия поиска. Отрицательное число (#! S-3!) запускает поиск в обратном направлении от конца документа. Доступен сценарий Greasemonkey для добавления этой функциональности в совместимые браузеры.
      • http://example.com/index.html#!s3! поисковые термины
  • Эрик Уайлд и Марсель Башнагель из ETH Zurich расширяет это, чтобы также идентифицировать фрагменты в текстовых документах с использованием регулярных выражений с ключевым словом «match». Они также описывают реализацию прототипа как расширение для браузера Firefox. Например, следующий код может найти текст «RFC» без учета регистра в любом месте документа:
    • http://example.com/document.txt#match=[rR ][fFestive[cC]
  • K. Йи из Foresight Institute предлагает «расширенные идентификаторы фрагментов», разделенные двоеточиями и ключевым словом, чтобы отличать их от идентификаторов привязки. Идентификатор фрагмента текстового поиска с "id схемы спецификации фрагмента" слова"является первым предложением в этой схеме. В следующем примере выполняется поиск в документе первого вхождения строки «некоторый контекст для условия поиска», а затем выделение слов «термин поиска»:
    • http://example.com/index.html#:words: some-context-for-a- (search-term)
  • Проект LiveURLs предложил формат идентификатора фрагмента для ссылки на область текста на странице в форме # FWS + C, где F - длина первого слова (до пяти символов), W - само первое слово, S - длина выделенного текста, а C - 32-битная CRC выделенного текста. Они реализовали вариант этой схемы как расширение для браузера Firefox, используя форму # 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, 2011-2017) определяет W3C / IDPF -стандартизованный метод для ссылки на произвольный контент с использованием идентификаторов фрагментов для поиска незакрепленных текстовых диапазонов с помощью структуры документа и сопоставления с образцом. Эти динамические глубокие ссылки помогают находить контент после обновления текста и используются, например, в Apple Books.
См. Также
Ссылки
Внешние ссылки
  • W3C Фрагменты мультимедиа Рабочая группа, устанавливающая синтаксис и семантику URI для обращения к фрагментам мультимедиа в аудиовизуальном материале (например, области изображения или суб-клипа видео)
  • MediaMixer Портал сообщества собирает презентации, учебные пособия, примеры использования и демонстраторы, связанные с использованием технологии Media Fragment
Последняя правка сделана 2021-06-20 06:54:59
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте