Формальный публичный идентификатор
Формальный общедоступный идентификатор ( FPI ) — это короткий фрагмент текста с определенной структурой, который можно использовать для уникальной идентификации продукта, спецификации или документа. FPI были представлены как часть стандартного обобщенного языка разметки (SGML) и служат конкретным целям в форматах, исторически полученных из SGML ( HTML и XML ). Некоторые из их наиболее распространенных применений — это часть объявлений типов документов (DOCTYPE) и определений типов документов (DTD) в SGML, XML и исторически HTML, но они также используются в форматах файлов vCard и iCalendar для идентификации программного продукта, который сгенерировал файл.
В последнее время унифицированные идентификаторы ресурсов (URI) и универсально уникальные идентификаторы для уникальной идентификации объектов обычно используются (UUID). FPI стали устаревшей системой .
Синтаксис
[ редактировать ]FPI состоит из идентификатора владельца , за которым следует двойная косая черта ( //
), за которым следует текстовый идентификатор . [1] : 381–382 Например, идентификатор " -//W3C//DTD HTML 4.01//EN
" можно разбить на две части: идентификатор владельца , который указывает на эмитента FPI, и текстовый идентификатор , который указывает на конкретный документ или объект, который идентифицирует FPI. [2] В примере идентификатор владельца — « -//W3C
" и текстовый идентификатор " DTD HTML 4.01//EN
".
Сам текстовый идентификатор состоит из нескольких составных частей. [1] : 385 Последовательность пробелов рассматривается как эквивалент одного пробела. [1] : 381–382
Идентификатор владельца
[ редактировать ]Существует три типа идентификатора владельца, отличающиеся первыми тремя символами: ISO
для идентификатора владельца ISO , -//
для незарегистрированного идентификатора владельца или +//
для зарегистрированного идентификатора владельца . [1] : 383–384
Идентификатор владельца ISO
[ редактировать ]Идентификатором владельца ISO является либо номер публикации ISO, например ISO 8879:1986
, или регистрационный номер ISO-IR , например ISO Registration Number 111
для ISO-IR-111 . Последний тип разрешен только для CHARSET
ИФП (см. ниже). В любом случае он отличается тем, что начинается с символов ISO
и не требует какого-либо префикса перед этими символами. [1] : 383–384
Раньше год отделялся от стандартного номера дефисом ( -
, например ISO 8879-1986
), использование которого теперь устарело . [3] Вместо этого теперь используется дефис для отделения номера детали от стандартного номера; год следует за любым номером детали, если он присутствует, и отделяется двоеточием ( :
). [2]
Идентификатор незарегистрированного владельца
[ редактировать ]Идентификатор незарегистрированного владельца начинается с -//
. [1] : 384–385 К владельцам, использующим незарегистрированные идентификаторы, относятся W3C ( -//W3C
), [4] : 8–9 Интернета Инженерная группа ( -//IETF
), [5] ( Министерство обороны США англ. -//USA-DOD
), [6] Европейский Парламент ( -//EP
) [7] и другие. Поскольку он не зарегистрирован, его уникальность не гарантируется (другой владелец может выбрать тот же идентификатор владельца), что ослабляет гарантию уникальности FPI в целом, хотя его отличие от всех других FPI по-прежнему гарантировано. одного и того же владельца, а также от всех ИФУ, имеющих зарегистрированных владельцев. [1] : 186
Идентификатор зарегистрированного владельца
[ редактировать ]Идентификатор зарегистрированного владельца начинается с символов +//
. Это относится к зарегистрированному идентификатору, как это предусмотрено стандартом ISO 9070 . [1] : 384 Фактически зарегистрированная часть — это префикс зарегистрированного владельца , который следует за +//
и при необходимости может сопровождаться одной или несколькими частями, назначенными владельцем, которые могут идентифицировать, например, отделы внутри организации. [1] : 184 Если используются дополнительные к зарегистрированному префиксу компоненты имени владельца, они отделяются от префикса ::
пара. [2] [8] : 63
Префикс зарегистрированного владельца, соответствующий стандарту ISO 9070, может быть одним из следующих: [2]
- , Префикс авторитетного стандарта ISO идентификатор стандарта ISO или ISO/IEC . [2] Хотя этим ИФУ не обязательно иметь ведущего
+//
как упоминалось выше, [1] : 184, 383–384 такой префикс иногда используется в ссылках на стандарты ISO в FPI, особенно на те, которые также являются стандартами IEC . [8] : 318–319 - , Префикс центра регистрации ISO который может быть:
- Полный префикс органа регистрации (идентификатор стандарта ISO без года, за которым следует
/RA
без учета регистра) [2] - Префикс ISO 2375 (строка
ISO Registration Number
и пробел, за которым следует ISO-IR. номер [2] хотя, как уже говорилось выше,+//
в этом случае можно опустить). [1] : 383–384 - ( Префикс ISBN строка
ISBN
, пробел и ISBN), [2] [8] : 321–325 принятие которого было добавлено в более поздней поправке к ISO 9070. [1] : 184, 384 - Совсем недавно зарегистрированные доменные имена (после
IDN
и пробел) также разрешены. [9] [10] Например, владелецexample.net
может выдавать FPI, используя идентификатор владельца "+//IDN example.net
".
- Полный префикс органа регистрации (идентификатор стандарта ISO без года, за которым следует
- , Префикс органа-члена ISO т.е. идентификатор организации по стандартизации, которая является членом ISO. [2] [1] : 184, 384
- : Префикс авторитета организации, идентифицированный ISO строка
ICD
за которым, без промежуточного пробела, следует код организации ISO 6523 . [2] [1] : 184
Текстовый идентификатор
[ редактировать ]Текстовые идентификаторы можно разбить на класс , описание и язык . В примере -//W3C//DTD HTML 4.01//EN
, класс " DTD
", что указывает на то, что FPI представляет собой определение типа документа; описание имеет вид " HTML 4.01
"; и язык " EN
", что предполагает, что определение типа документа написано на английском языке (хотя документы, соответствующие DTD, не обязательно должны быть на английском языке). [4] : 7 Класс отделяется от описания пробелом; описание отделяется от языка двойной косой чертой. Текстовый идентификатор может дополнительно содержать индикатор версии после языка, также разделенный двойной косой чертой.
Сорт
[ редактировать ]Текстовый идентификатор следует сразу за //
пара после идентификатора владельца и должна начинаться с одного из следующих заглавных слов, за которым следует пробел, определяющий класс открытого текста : [1] : 385–387
CAPACITY
CHARSET
DOCUMENT
DTD
ELEMENTS
ENTITIES
LPD
NONSGML
NOTATION
SD
[11]SHORTREF
SUBDOC
SYNTAX
TEXT
DOCUMENT
, SUBDOC
и TEXT
относятся к документам SGML или фрагментам документов SGML. [1] : 386 Те из TEXT
предназначены для ссылки с использованием текстового объекта (без ключевого слова типа объекта, т. е. вставленного непосредственно в документ), тогда как классы класса SUBDOC
предназначены для ссылки на объект поддокумента (с SUBDOC
ключевое слово в объявлении объекта, т.е. интерпретируются с использованием их собственных индивидуальных схем, пространств имен и т. д.). [1] : 294–296, 400–401 Те из DOCUMENT
class не предназначены для ссылки на него как на объект из прилагаемого документа.
CAPACITY
и SYNTAX
обратитесь к частям объявления SGML. SD
(для всей декларации SGML) был добавлен в этот список более поздним расширением, добавленным к стандарту в качестве приложения, которое также определяет определенные расширения, необходимые XML. [11] LPD
относится к определению процесса связи SGML (определяющему преобразование из одного формата SGML в другой). ELEMENTS
, ENTITIES
и SHORTREF
относятся к частям определения типа документа (DTD), состоящим из определенных типов объявлений разметки. DTD
относится ко всему DTD.
Остальные три относятся к концепциям за пределами SGML: CHARSET
относится к кодированному набору символов , NOTATION
в такой формат, как формат файла (либо для ссылок на объекты из внешних файлов, либо для интерпретации текстового формата, содержащегося внутри элемента), [1] : 336–337 и NONSGML
к активу в формате, отличном от SGML.
Маркер доступности и описание
[ редактировать ]После пробела после имени текстового класса следует последовательность -//
если FPI ссылается на недоступный общедоступный текст [1] : 385 — т.е. документ, файл или спецификация, которые недоступны для доступа или покупки широкой публики. [1] : 182 Общедоступное текстовое описание следует за этим маркером; для доступного общедоступного текста описание следует сразу после пробела после имени текстового класса. [1] : 385 Для публикации ISO описание берется из последнего элемента заголовка публикации, не считая номера детали; в противном случае это может быть любая уникальная строка разрешенных символов. [1] : 387 Описание завершается другим //
пара. [1] : 385
Последовательность обозначения ISO 2022
[ редактировать ]Часть FPI, следующая за описанием, зависит от класса текста. Для CHARSET
FPI — это публичный текст, обозначающий последовательность , [1] : 385 предоставление текстового представления escape-последовательности обозначения ISO/IEC 2022 в обозначении столбца/строки (например, ESC 2/8 4/0
); Ожидается, что зарегистрированные escape-символы обозначения будут соответствовать указанному идентификатору владельца ISO, тогда как escape-коды обозначения для частного использования размещаются в пространстве имен по идентификатору владельца FPI. [1] : 389–390 В качестве примера этого типа FPI можно привести FPI. ISO Registration Number 177//CHARSET ISO/IEC 10646-1:1993 UCS-4 with implementation level 3//ESC 2/5 2/15 4/6
используется в HTML 4 объявлении SGML для идентификации Unicode . [12]
Язык
[ редактировать ]Для всех остальных FPI (т.е. тех, у которых класс не CHARSET
), часть, следующая за описанием, представляет собой общедоступный текстовый язык , представляющий собой последовательность заглавных букв, которая настоятельно рекомендуется (но не обязательно) быть кодом ISO 639-1 . [1] : 387–388 Отказ от обязательного использования кода ISO 639-1 позволяет избежать необходимости проверки программного обеспечения для проверки того, является ли язык кодом ISO 639-1, а также обеспечивает расширяемость: [1] : 387 например, небольшое количество FPI, используемых на практике, используют коды ISO 639-3 (например, NDS
для нижненемецкого языка ) [13] или языковые теги IETF с удаленными дефисами (например, SRLATN
для сербского написано на Гаице ) [14] для случаев, когда кодов ISO 639-1 оказывается недостаточно для отличия ресурса от версий на других языках или языковых разновидностях. В соответствии с рекомендациями ISO 9070 и Стивен ДеРоуз Дэвид Дж. Дюран предлагают использовать XX
если код ISO 639 не применим. [8] : 62
В спецификации отмечается, что хотя язык ресурса может влиять на определяемые данные и имена, а также на язык любых комментариев исходного кода, этот язык влияет на удобство использования некоторых текстовых классов больше, чем других. [1] : 387 Например, язык EN
заданный в FPI в объявлении DOCTYPE HTML 4 или XHTML 1, не следует изменять, независимо от языка самой веб-страницы; [4] : 7 напротив, таблицы стилей DSSSL для DocBook внутренне используют FPI с разными языками для идентификации наборов сущностей таблицы строк для конкретных локализаций . [15]
Версия отображения объекта
[ редактировать ]Дополнительно, кроме CHARSET
, CAPACITY
, NOTATION
и SYNTAX
FPI, для которых последовательность или язык обозначения должны быть завершающей частью, [1] : 390 за кодом языка может следовать другой //
пара, [1] : 385 за которым следует версия общедоступного текстового отображения , которая указывает конкретную платформу, на которую должна быть нацелена реализация объектов SGML . [1] : 389–390 Например, база ISO 8879:1986//ENTITIES Added Latin 1//EN
набор сущностей определяет сущности с именами Latin-1, используя тавтологию. SDATA
сущности, [1] : 506–507 [16] пока ISO 8879:1986//ENTITIES Added Latin 1//EN//XML
реализует их, используя ссылки на кодовые точки Unicode для использования в XML . [17] Аналогично, общий набор сущностей для HTML 5 и MathML использует FPI -//W3C//ENTITIES HTML MathML Set//EN//XML
. [18]
Примеры ИЦП
[ редактировать ]ИФП | Значение |
---|---|
+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION CompuServe Graphic Interchange Format//EN [8] : 322 |
GIF ( .gif ) формат изображения (эквивалент типа MIME image/gif ) — пример владельца ISBN FPI и NOTATION FPI используется как идентификатор формата файла.
|
+//ISO/IEC 10744//NOTATION Systeme International kilogram//EN [8] : 319 |
международной системы Базовая единица килограмм . |
ISO Registration Number 177//CHARSET ISO/IEC 10646-1:1993 UCS-4 with implementation level 3//ESC 2/5 2/15 4/6 [12] |
( Набор символов в кодировке Unicode или UCS ), на который ссылаются числовые ссылки на символы в HTML — пример CHARSET ИФП
|
-//W3C//DTD HTML 4.01 Transitional//EN [4] : 8 |
Определение типа документа HTML 4.01 Transitional ; соответствует URL-адресу системного идентификатора http://www.w3.org/TR/html4/loose.dtd [4] : 8
|
-//Facebook//NONSGML Facebook Events V1.0//EN [19] [20] |
Facebook Events как генератор файлов iCalendar — пример NONSGML FPI используется для идентификации пакета программного обеспечения.
|
-//EP//NONSGML PV 20151125 RES-RCV DOC PDF V0//EN [7] |
Результаты в Европейском парламенте поименного голосования по поддержке Стратегической рамочной программы ЕС по охране труда и технике безопасности на 2014–2020 годы (A8-0312/2015) — пример NONSGML FPI используется для идентификации документа в формате, отличном от SGML (в данном случае PDF ).
|
-//W3C//ENTITIES HTML MathML Set//EN//XML [18] |
символов Набор HTML 5 и MathML ; соответствует URL-адресу системного идентификатора http://www.w3.org/2003/entities/2007/htmlmathml-f.ent [18] — пример ENTITIES ИФП
|
+//IDN nwalsh.com//DTD DocBook DSSSL Architecture V1.0//EN [10] |
Определение типа документа варианта DocBook 3.1, который может одновременно представлять собой DSSSL. таблицу стилей [10] — пример доменного имени, используемого в качестве владельца FPI. |
+//ISBN 3-893-196463::Goosens//NOTATION Der LaTeX Begleiter//DE [21] |
Формат LaTeX , используемый для формул в академических работах. [21] — пример FPI, использующего код языка, отличный от EN для ссылки на неанглоязычный справочный материал
|
Строковые таблицы на английском, французском и греческом языках, используемые таблицами стилей DSSSL для DocBook , соответственно (например, сущность &Chapter; определяется как "Chapitre" на французском языке [25] и "Chapter" по-английски) [26] — пример использования языкового кода FPI для различения разных локализаций.
|
Использование в XML, SGML и HTML.
[ редактировать ]FPI, несомненно, является наименее понятной частью объявления типа документа (DOCTYPE), неотъемлемым компонентом действительных документов HTML , XML и стандартного обобщенного языка разметки (SGML). [27] его программы Влияние формального публичного идентификатора на исходный документ необычно тем, что оно может зависеть не только от его собственной синтаксической правильности и поведения анализирующей , но также от статуса регистрации ISO организации, ответственной за схему, на которую ссылается FPI. . [28]
Публичные идентификаторы и системные идентификаторы в SGML
[ редактировать ]SGML использует две формы идентификаторов ресурсов: системные идентификаторы уникальны и имеют смысл только внутри конкретной системы, а общедоступные идентификаторы уникальны и значимы в более широкой области. [1] : 186 Термин «публичный» здесь не обязательно означает, что ресурс доступен широкой публике — например, он может быть доступен только в пределах одной организации (в этом случае это недоступный общедоступный текст ) — а только то, что он существует. вне контекста конкретной системной среды или документа, в котором на него есть ссылка. [1] : 182 FPI — это «формальный» общедоступный идентификатор в том смысле, что он соответствует формальной структуре, установленной стандартом SGML (ISO 8879); [1] : 183 общедоступные идентификаторы, которые не соответствуют формальной структуре и, следовательно, не являются FPI, иногда называются «неформальными» общедоступными идентификаторами. [1] : 186
Хотя ограничения формальных (в отличие от неформальных) общедоступных идентификаторов являются необязательной функцией, поскольку спецификация FPI была введена на позднем этапе разработки ISO 8879, настоятельно рекомендуется использовать FPI для общедоступных идентификаторов, поскольку структура FPI гарантирует, что ИФП, назначенные одним владельцем, не конфликтуют с ИФП, назначенными другими владельцами (за исключением случаев незарегистрированных владельцев с конфликтующими именами), в то время как неофициальные публичные идентификаторы не имеют гарантии уникальности, а это означает, что идентификаторы, назначенные одним владельцем, могут конфликтовать с формальными или неофициальными идентификаторами. общедоступные идентификаторы, назначенные другим лицом. [1] : 186 Функцию, позволяющую интерпретировать общедоступные идентификаторы с использованием формальной структуры, требующую, чтобы общедоступные идентификаторы были FPI, можно включить в объявлении SGML с помощью FORMAL
название функции. [1] : 64, 88, 378
Системные идентификаторы, напротив, не имеют структуры, определенной самим SGML — они могут быть именами файлов, ключами базы данных или даже адресами индексируемого хранилища — но интерпретируются компонентом менеджера объектов системы SGML для определения местоположения объекта. [1] : 378
SGML Внешний идентификатор состоит из ключевого слова PUBLIC
за которым следует литерал общедоступного идентификатора и необязательный литерал системного идентификатора или ключевое слово SYSTEM
за которым следует необязательный литерал для системного идентификатора. [1] : 379 Литералы имеют префикс и суффикс либо буквенного разделителя , либо альтернативного буквенного разделителя . [1] : 380–381 обычно устанавливается в объявлении SGML в двойные и одинарные кавычки ASCII, как они есть в справочном конкретном синтаксисе для SGML, [1] : 372 а также в XML. [29] Использование SYSTEM
Ключевое слово в определении объекта SGML без следующего системного идентификатора разрешено, если менеджер объекта может разрешить объект только по его имени. [1] : 378 Внешние идентификаторы используются в объявлениях типов документов (DOCTYPE), ссылающихся на определения типов документов (DTD). [1] : 403 в спецификациях внешнего объекта [1] : 400 и объявления обозначений [1] : 427 в DTD и в объявлениях типов ссылок, ссылающихся на определения процессов ссылок (LPD). [1] : 433–434
Развитие XML
[ редактировать ]Введение URI и отстранение FPI
[ редактировать ]Внешние идентификаторы в XML более ограничены, чем в общем SGML, при этом изменения смещают акцент с общедоступных идентификаторов, таких как FPI, на стандартизацию формы, которую принимают системные идентификаторы. Системный идентификатор следует рассматривать как (абсолютный или относительный) URI . [30] [31] но не должен содержать идентификатор фрагмента URI (часть, начинающаяся с #
). [31] Также обычно требуется системный идентификатор: [32] тот SYSTEM
За ключевым словом должен следовать литерал системного идентификатора, а PUBLIC
За ключевым словом в синтаксисе общих внешних идентификаторов должны следовать литералы как для общедоступных, так и для системных идентификаторов. [31] Однако в качестве исключения объявления нотации могут использовать общедоступный идентификатор без системного идентификатора. [33]
В отличие от требования, чтобы системный идентификатор был URI (иногда называемый формальным системным идентификатором или FSI), [34] : 19 СГМЛ FORMAL
функция отключена в XML, [30] [35] поскольку формат общедоступных идентификаторов не определяется XML (т. е. от них явно не требуется, чтобы они были FPI, хотя они могут быть таковыми). Единственные подробности, которые спецификация XML предусматривает в отношении общедоступного идентификатора, заключаются в том, что он может быть указан вместе с системным идентификатором и может использоваться процессором XML вместе с другой информацией для определения альтернативного URI (в противном случае необходимо использовать URI, указанный в системном идентификаторе). [31]
Идентифицирующие строки для пространств имен XML должны быть непустыми URI (например, абсолютный URL-адрес; использование относительных URL-адресов не рекомендуется), [36] хотя они не обязательно должны быть разрешимыми URL-адресами и могут, например, быть URN . [32]
Замена DTD
[ редактировать ]Кроме того, альтернативные форматы схем , такие как XML Schema (XSD), служат конкурентами DTD в контексте XML, преодолевая некоторые ограничения DTD. XSD можно (в отличие от DTD) проверять с помощью тех же инструментов, что и любой другой XML-документ. [37] включает поддержку пространств имен XML (которые DTD могут интерпретировать только как фиксированные части рассматриваемых имен элементов и атрибутов), [38] позволяет регулярных выражений на формат текстовых данных, таких как телефонные номера, и позволяет лучше выражать сложные структуры модели контента. накладывать ограничения [37]
Таким образом, форматы XML реже используют DTD (например, могут использовать FPI для нотаций или внешних объектов), и, следовательно, реже содержат DOCTYPE, ссылающийся на DTD (либо по FPI, либо только по URI — хотя DOCTYPE по-прежнему может использоваться для определений объектов, встроенных в сам XML-файл). [39] Например, большинство версий RSS (за исключением RSS 0.91) не имеют официального DTD. [40] Аналогичным образом, формат DocBook , который первоначально использовал объявление типа документа, идентифицирующее DTD по FPI, переключил определение основной схемы с DTD на RELAX NG в версии 5.0 и в то время перестал использовать объявления типа документа. [41] и Scalable Vector Graphics (SVG) сделали то же самое в версии 1.2. [39]
Поиск и разрешение FPI
[ редактировать ]системы SGML Если системный идентификатор (например, путь или URL-адрес) не указан для ресурса, идентифицированного общедоступным идентификатором, например FPI, менеджер объектов сгенерирует его со ссылкой на общедоступный идентификатор. Хотя сама спецификация SGML не определяет, как менеджер объектов должен это делать, [5] : 65–66 намерение состояло в том, чтобы использовать таблицу, сопоставляющую общедоступные идентификаторы с системными идентификаторами. [1] : 180 Соответственно, был создан формат каталога SGML , содержащий сопоставления общедоступных и системных идентификаторов; файл каталога также может указывать правила для переопределения данного системного идентификатора. [5] : 65–66 [42]
Хотя XML требует использования системных идентификаторов в большем количестве мест, чем сам SGML, каталоги все равно могут потребоваться для переопределения и переопределения данного системного идентификатора: системный идентификатор, который является локальным путем, может быть бесполезен на других машинах, в то время как тот, который сетевой URL-адрес бесполезен, например, если сетевое соединение недоступно. [32] Соответственно, существует альтернативный формат каталога на основе XML для использования программным обеспечением XML, поддерживающий правила замены или перезаписи URI, а также для сопоставления FPI с URI. [32]
Например, запись в каталоге SGML может указывать локальный путь (относительно файла каталога) к копии Scalable Vector Graphics 1.1 DTD и указывать объявление SGML (в данном случае объявление синтаксиса XML), которое процессор SGML должен использовать для этого: [43]
PUBLIC "-//W3C//DTD SVG 1.1//EN" svg11.dtd DTDDECL "-//W3C//DTD SVG 1.1//EN" /usr/share/xml/declaration/xml.dcl
Схема альтернативного формата каталога XML сама определена в DTD, который сам идентифицируется FPI ( -//OASIS//DTD Entity Resolution XML Catalog V1.0//EN
). [44] Он аналогичным образом позволяет отображать сопоставления FPI с путями, хотя, поскольку он предназначен для использования только с XML, он не поддерживает указание альтернативного объявления SGML. [32] хотя существуют расширения для выражения остальной информации, выражаемой в каталоге SGML. [45] Приведенное выше сопоставление DTD FPI представлено следующим образом: [44]
<public publicId="-//W3C//DTD SVG 1.1//EN" uri="svg11.dtd"/>
Использование в HTML
[ редактировать ]HTML со 2 по 4
[ редактировать ] 1.x на основе XML Версии HTML со 2 по 4 (включая XHTML ) были определены как профили SGML и указаны с помощью объявления SGML и определения типа документа (DTD). Конкретная используемая версия DTD указывалась в объявлении типа документа с использованием FPI, иногда (особенно в более поздних версиях и требуется в XML, как упоминалось выше) в сочетании с URL-адресом файла DTD в качестве системного идентификатора. [4] : 8–9 В отличие от объявления SGML для XML, [30] декларация SGML для HTML позволила FORMAL
особенность, [12] это означает, что общедоступные идентификаторы, используемые для HTML DTD и внутри них, должны быть FPI.
Объявление типа документа (для HTML 4.01 Strict). [46] содержащий FPI:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
FPI в объявлении типа документа выше гласит: -//W3C//DTD HTML 4.01//EN
, [28] а URL-адрес указан как системный идентификатор. Строго говоря, FPI был необязательным: также можно было (но редко) определить собственное HTML DTD и опустить FPI; в этом случае включение системного идентификатора без FPI обозначается SYSTEM
ключевое слово. [4] : 6–7 Одним из примеров такого пользовательского системного идентификатора без связанного с ним FPI является: [47]
<!DOCTYPE html SYSTEM "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd">
Обнюхивание DOCTYPE
[ редактировать ]Поскольку они в основном предназначались для использования валидаторами SGML, объявления типов документов изначально игнорировались браузерами. Однако старые веб-страницы были разработаны для правильного отображения в браузерах, использовавшихся на момент их создания, что не обязательно соответствовало спецификациям, например, CSS в способе отображения веб-страниц. Поскольку это означало, что улучшение соответствия стандартам приведет к тому, что браузеры будут неправильно отображать существующие веб-страницы, браузеры использовали объявление типа документа для переключения между «режимами», в которых страница будет отображаться. [34] : 17–18
«Режим совместимости» сохранил устаревшее поведение более ранних версий браузера, чтобы избежать повреждения существующих страниц — например, версии 6 и 7 Internet Explorer отображали страницу с использованием блочной модели Internet Explorer 5.5. «Стандартный режим» будет более точно соответствовать соответствующим спецификациям. То, что в то время называлось «почти стандартным режимом» и первоначально было реализовано в Firefox и Safari, использовало традиционное поведение при определении высоты ячеек таблицы, содержащих изображения, но в остальном вел себя как стандартный режим; это соответствовало поведению «стандартного режима» Internet Explorer на момент его появления. [4] : 9–11 [34] : 18–19
Например, DOCTYPE с использованием HTML 4.01 Strict FPI ( -//W3C//DTD HTML 4.01//EN
) активирует стандартный режим в Internet Explorer 6, что означает, что он будет использовать модель блока содержимого, а DOCTYPE использует переходный FPI HTML 4.01 ( -//W3C//DTD HTML 4.01 Transitional//EN
) активирует режим совместимости, включая использование блочной модели Internet Explorer 5.5 (border-box). [4] : 9–11 Помимо FPI, браузеры будут учитывать наличие или отсутствие системного идентификатора при выборе между режимом совместимости и стандартным режимом. Отсутствие объявления DOCTYPE вообще (или, в Internet Explorer 6, объявление DOCTYPE не является первой строкой в файле) может активировать режим совместимости. [34] : 19–20
HTML 5
[ редактировать ]HTML 5 не определяется как профиль SGML, за исключением его представления XHTML. По существу, он не определен с помощью DTD.
Ранние проекты HTML 5 использовали NONSGML
-тип ИФП -//WHATWG//NONSGML HTML5//EN
в DOCTYPE вместо DTD FPI, поскольку он не активировал режим совместимости Internet Explorer 6. [48] В конечном итоге от этого полностью отказались, и окончательный вариант DOCTYPE HTML 5 не использует FPI. Предпочтительная форма – это просто <!DOCTYPE html>
(без публичного и системного идентификатора), хотя системный идентификатор about:legacy-compat
(используя о: схема URI ) одобряется. [49]
Представление XML (XHTML), напротив, разрешено, но не обязано содержать какой-либо DOCTYPE, но для схемы HTML 5 не предусмотрено проверяющее DTD. [50] Однако различные FPI для XHTML 1.0, XHTML 1.1 и MathML DTD определяются как указывающие на data: URI (чтобы избежать необходимости доступа к сети), содержащий определения символьных сущностей . [51]
Единственная функция FPI в HTML-представлении HTML 5 (в отличие от XHTML) — запуск устаревших режимов. Стандарт HTML WHATWG определяет список FPI, которые должны запускать режим совместимости. К ним относятся FPI для различных HTML DTD, настроенных поставщиком. Они также включают FPI для DTD различных «уровней» HTML 2.0, а также для HTML 3.0, 3.2 и версий Transitional и Frameset HTML 4.0 и 4.01, за исключением случаев, когда HTML 4.01 (но не HTML 4.0) Переходные FPI и FPI набора кадров сопровождаются системным идентификатором, вместо этого они запускают почти стандартный режим (переименованный в «режим с ограниченными возможностями»). XHTML 1.0 Transitional и FPI Frameset безоговорочно запускают режим ограниченных возможностей. Чаще всего они указываются в виде префиксов, включающих владельца, класс и описание (но соответствующих любой языковой части). [47]
Связь с URI
[ редактировать ]Для решения задачи уникальной идентификации в спецификациях все чаще используются URI, а не FPI. Например, имена пространств имен XML — это URI.
Было определено пространство имен универсального имени ресурса (URN), позволяющее перезаписывать любой FPI как URI. [9] замена двойных косых черт двоеточиями . Предыдущий пример может быть записан как следующий URI:
urn:publicid:-:W3C:DTD+HTML+4.01:EN
Ссылки
[ редактировать ]- ^ Jump up to: а б с д и ж г час я дж к л м н тот п д р с т в v В х и С аа аб и объявление но из в ах есть также и аль являюсь а к ап ак с как в В из Гольдфарб, Чарльз Ф. (1990). Справочник по SGML . Оксфорд : Кларендон Пресс . ISBN 0-19-853737-9 .
- ^ Jump up to: а б с д и ж г час я дж Таубер, Джеймс К. (10 апреля 1996 г.). «Формальные общедоступные идентификаторы (FPI)» . CoverPages.org.
- ^ "sgml-iso-entities-8879.1986/каталог" . Пакет Debian для базовых данных SGML . Дебиан .
- ^ Jump up to: а б с д и ж г час я Ллойд, Ян (2008). Полный справочник по HTML . Коллингвуд, Виктория : SitePoint . ISBN 978-0-9802858-8-8 .
- ^ Jump up to: а б с Бернерс-Ли, Тим ; Коннолли, Дэниел В. (ноябрь 1995 г.). Язык разметки гипертекста — 2.0 . Сетевая рабочая группа. дои : 10.17487/RFC1866 . РФК 1866 . Исторический. Устарело РФК 2854 .
- ^ «Приложение A: Пример определения типа документа» (PDF) . Применение Министерства обороны MIL-PRF-28001 с использованием стандартного обобщенного языка разметки (SGML) . Министерство обороны США . 30 июня 1995 г. п. 138. МИЛ-ХДБК-28001.
- ^ Jump up to: а б «Авторитарное право: методология исследования и данные голосования» . Корпоративная Европейская обсерватория. 15 мая 2019 г.
- ^ Jump up to: а б с д и ж ДеРоуз, Стивен Дж .; Дюран, Дэвид Г. (1994). Как заставить гипермедиа работать: Руководство пользователя по HyTime . Норвелл, Массачусетс / Дордрехт, Нидерланды : Kluwer Academic Publishers. ISBN 0-7923-9432-1 .
- ^ Jump up to: а б Уолш, Норман; Коуэн, Джон; Гроссо, Пол (август 2001 г.). Пространство имен URN для общедоступных идентификаторов . Сетевая рабочая группа. дои : 10.17487/RFC3151 . РФК 3151 . Информационный.
- ^ Jump up to: а б с Уолш, Норман (1998). «DTD для программирования DSSSL с помощью DocBook» . Таблицы стилей DSSSL для DocBook . Проект «Докбук» .
- ^ Jump up to: а б «Предлагаемый TC для адаптации WebSGML для SGML» . 01.06.1997. ISO/IEC JTC 1 /SC18/WG8 N1929.
- ^ Jump up to: а б с «20: Декларация SGML HTML 4» . Спецификация HTML 4.01 . W3C .
- ^ "dbl1nds.dsl" . Таблицы стилей DSSSL для DocBook . Проект «Докбук» .
- ^ "dbl1srLatn.dsl" . Таблицы стилей DSSSL для DocBook . Проект «Докбук» .
- ^ «общий/каталог» . Таблицы стилей DSSSL для DocBook, версия 1.79 . Проект «Докбук» .
- ^ «Набор объектов ISOlat1» . Международная организация по стандартизации . 1986.
- ^ «В ISO добавлены объекты Latin 1 V0.3» . Организация по развитию стандартов структурированной информации (OASIS). 2002.
- ^ Jump up to: а б с «набор сущностей htmlmathml-f» . W3C . 2011.
- ^ Уделл, Джон (30 сентября 2011 г.). «Длинный хвост экосистемы iCalendar» .
- ^ «Проблема № 26558: невозможно подписаться на календарь дней рождения на Facebook» . Ядро веб-сервера ownCloud .
- ^ Jump up to: а б Бек, Джефф; Лапейр, Дебора; Розенблюм, Брюс (2007). «Архивирование и обмен объявлениями нотаций DTD Suite» . NCBI Book DTD и библиотека тегов NCBI Collection DTD версии 2.3 . Национальный центр биотехнологической информации / Национальная медицинская библиотека .
- ^ "dbl1en.dsl" . Таблицы стилей DSSSL для DocBook . Проект «Докбук» .
- ^ "dbl1fr.dsl" . Таблицы стилей DSSSL для DocBook . Проект «Докбук» .
- ^ "dbl1el.dsl" . Таблицы стилей DSSSL для DocBook . Проект «Докбук» .
- ^ "dbl1fr.ent" . Таблицы стилей DSSSL для DocBook, версия 1.79 . Проект «Докбук» .
- ^ "dbl1en.ent" . Таблицы стилей DSSSL для DocBook, версия 1.79 . Проект «Докбук» .
- ^ Определение: FPI (формальный общедоступный идентификатор) [Глоссарий Интернета и XML]
- ^ Jump up to: а б "!ДОКТИП" . Проверено 10 сентября 2016 г.
- ^ «2.3 Общие синтаксические конструкции (§ литералы)» . Расширяемый язык разметки (XML) 1.0 (Пятое изд.). W3C . 26 ноября 2008 г.
- ^ Jump up to: а б с Кларк, Джеймс (15 декабря 1997 г.). «Сравнение SGML и XML» . W3C . ПРИМЕЧАНИЕ-sgml-xml-971215.
- ^ Jump up to: а б с д «4.2.2 Внешние объекты» . Расширяемый язык разметки (XML) 1.0 (Пятое изд.). W3C . 26 ноября 2008 г.
- ^ Jump up to: а б с д и Уолш, Норман (6 августа 2001 г.). «XML-каталоги» . Организация по развитию стандартов структурированной информации (OASIS).
- ^ «4.7 Объявления нотации» . Расширяемый язык разметки (XML) 1.0 (Пятое изд.). W3C . 26 ноября 2008 г.
- ^ Jump up to: а б с д Олссон, Томми; О'Брайен, Пол (2008). Полный справочник по CSS . Коллингвуд, Виктория : SitePoint . ISBN 978-0-9802858-5-7 .
- ^ "xml/declaration/xml.dcl: Декларация SGML для XML 1.0" . sgml-данные . Дебиан .
- ^ Брей, Тим; Холландер, Дэйв; Лейман, Эндрю; Тобин, Ричард; Томпсон, Генри С. (08 декабря 2009 г.). «Пространства имен в XML 1.0» (Третье изд.). W3C .
- ^ Jump up to: а б Пейн, Джеймс (2010). Начало работы с Python: использование Python 2.6 и Python 3.1 . Рокс / Уайли . стр. 268–271. ISBN 978-0-470-41463-7 .
- ^ Салл, Кеннет Б. (2002). «XML и пространства имен (§ Обработка пространств имен в DTD или схеме XML)» . Семейство спецификаций XML: Практическое руководство . ИнформИТ / Эддисон-Уэсли . ISBN 0-201-70359-9 .
- ^ Jump up to: а б «1.3 Определение документа SVG Tiny 1.2» . Масштабируемая векторная графика (SVG) Tiny 1.2. Спецификация . W3C . 22 декабря 2008 г.
Следует отметить несколько ключевых отличий от SVG Tiny 1.1: […] Для SVG 1.2 нет DTD, и поэтому нет необходимости указывать DOCTYPE для документа SVG 1.2 (если не требуется использовать внутреннее подмножество DTD ([XML10 ], раздел 2.8 и [XML11], раздел 2.8), например, для определения объектов).
- ^ Хаммерсли, Бен (2003). «Глава 4. RSS 0.91 и 0.92 (действительно простое объединение)» . Синдикация контента с помощью RSS . О'Рейли Медиа . ISBN 9780596003838 .
- ^ Косек, Йирка; Уолш, Норман; Гамильтон, Дик; Смит, Майкл (16 июня 2009 г.). «Отдыхаем с DocBook» . DocBook V5.0: Руководство по переходу . Проект «Докбук» .
- ^ Кларк, Джеймс . «СП – Каталоги» . SP: Система SGML, соответствующая международному стандарту ISO 8879 .
- ^ «xml/svg/catalog: DTD SVG» . sgml-данные . Дебиан .
- ^ Jump up to: а б "xml/svg/catalog.xml" . sgml-данные . Дебиан .
- ^ ГлобалТрансКорп (28 февраля 2004 г.). «tr9401.dtd: Расширение V1.0 на основе XML-каталогов V1.0» . Дебиан .
- ^ «Спецификация HTML 4.01» . Проверено 10 сентября 2016 г.
- ^ Jump up to: а б «13.2.6.4.1 «Начальный» режим вставки» . Стандарт HTML . ЧТОРГ .
- ^ Сивонен, Анри (8 апреля 2005 г.). «[whatwg] [html5] теги, элементы и сгенерированный DOM» . WHATWG Архив списка рассылки .
- ^ «13.1.1 ДОКТИП» . Стандарт HTML . ЧТОРГ .
- ^ «14.1 Написание документов в синтаксисе XML» . Стандарт HTML . ЧТОРГ .
- ^ «14.2 Анализ XML-документов» . Стандарт HTML . ЧТОРГ .