В документах SGML , HTML и XML логические конструкции, известные как символьные данные и значения атрибутов , состоят из последовательностей символов, в которых каждый символ может проявляться напрямую (представляя себя) или может быть представлен серией символов, называемых ссылкой на символ , которая бывает двух типов: ссылка на числовой символ и ссылка на сущность символа . В этой статье перечислены ссылки на сущность символа, которые допустимы в документах HTML и XML.
Ссылка на сущность символа ссылается на содержимое именованной сущности. Декларация сущности создается в документах XML, SGML и HTML (до HTML5) с использованием <!ENTITY name "value">
синтаксиса в определении типа документа (DTD).
В HTML и XML числовая ссылка на символ ссылается на символ по его универсальному набору символов / кодовой точке Unicode и использует следующий формат:
&#xhhhh;
или
&#nnnn;
где x
в XML-документах должны быть строчными, hhhh — это кодовая точка в шестнадцатеричной форме, а nnnn — это кодовая точка в десятичной форме. hhhh (или nnnn ) может быть любым количеством шестнадцатеричных (или десятичных) цифр и может включать начальные нули. hhhh для шестнадцатеричных цифр может смешивать заглавные и строчные буквы, хотя обычным стилем является заглавный регистр. Однако стандарты XML и HTML ограничивают используемые кодовые точки набором допустимых значений, который является подмножеством значений кодовых точек UCS/Unicode, которое исключает все кодовые точки, назначенные несимволам или суррогатам, и большинство кодовых точек, назначенных элементам управления C0 и C1 (за исключением разделителей строк и табуляции, рассматриваемых как пробелы).
Напротив, ссылка на сущность символа ссылается на последовательность из одного или нескольких символов по имени сущности , которая имеет желаемые символы в качестве своего заменяющего текста . Сущность должна быть либо предопределена (встроена в язык разметки), либо иным образом явно объявлена в определении типа документа (DTD) (см. [a] ). Формат такой же, как и для любой ссылки на сущность:
&name;
где name — это имя сущности с учетом регистра. Точка с запятой обычно требуется в ссылке на сущность символа, если иное не указано в таблице ниже (см. [b] ).
&
, <
, >
, '
, и "
. Завершающая точка с запятой является обязательной в XML (и XHTML) для этих пяти сущностей (даже если HTML или SGML позволяют опускать ее для некоторых из них, согласно их DTD).Были разработаны многочисленные другие наборы сущностей для специальных требований, а также для основных и второстепенных алфавитов. Однако появление Unicode в значительной степени вытеснило их.
Полный формальный публичный идентификатор и системный идентификатор для подмножества сущностей DTD (где определено имя символьной сущности) фактически сопоставляется с одной из следующих трех определенных именованных сущностей:
PUBLIC "-//W3C//ENTITIES HTML MathML Set//EN//XML" "http://www.w3.org/2003/entities/2007/htmlmathml-f.ent"
Подмножества сущностей ISO представляют собой старые (документированные) подмножества символов, которым в стандартах ISO 8879 и ISO 9573 присвоены имена сущностей символов SGML , и которые использовались в устаревших кодировках до унификации в рамках ISO 10646. Их полные формальные общедоступные идентификаторы следующие:
ISO 8879-1986//
вместо , ISO 8879:1986//
считается устаревшей. [3]//HTML
иногда ошибочно используется для большего набора сущностей HTMLlat1 , т.е. вместо "-//W3C//ENTITIES Latin 1//EN//HTML"
[3] (см. выше).HTML5 определяет множество именованных сущностей, ссылки на которые действуют как мнемонические псевдонимы для определенных символов Unicode. [5] Спецификация HTML5 не позволяет пользователям определять дополнительные сущности, поскольку она больше не допускает ссылок на какие-либо DTD или их расширения внутри документов HTML (это по-прежнему необходимо в XHTML, который основан на более строгих правилах анализа XML, но позволяет ссылаться на DTD или определять его в заголовке документа, поскольку XML не предопределяет большинство сущностей HTML).
В таблице ниже столбец «Стандарт» указывает первую версию HTML DTD, которая определяет ссылку на сущность символа, и указывает символы, которые предопределены в XML без необходимости в каком-либо DTD. Чтобы использовать одну из этих ссылок на сущность символа в документе HTML или XML, введите амперсанд ( &), за которым следует имя сущности и точка с запятой (обязательно в XML и настоятельно рекомендуется в HTML для всех сущностей, даже если HTML позволяет опускать точку с запятой только в некоторых сущностях, указанных ниже как [b] ), например, введите ©
для символа авторского права © .
В HTML нет предопределенных сущностей символов для символов или последовательностей большинства сценариев, закодированных в UCS (за исключением общего подмножества пробелов, знаков препинания, математических или технических символов, символов валют, нескольких символов иврита, используемых в математических обозначениях, и наиболее распространенных букв в латинице, греческом или кириллице). Обратите внимание также, что не все двунаправленные элементы управления, определенные в UCS/Unicode, представлены как стандартные сущности символов в HTML (даже в HTML5, который определяет более общие элементы и атрибуты направления для этой цели). В частности, нет предопределенных сущностей символов HTML для элементов управления, которые были добавлены в UCS/Unicode и формально определены в версии 2 алгоритма Unicode Bidi.
Большинство сущностей предопределены в XML и HTML для ссылки только на один символ в UCS, но нет предопределенных сущностей для изолированных комбинированных символов, селекторов вариаций или символов для назначений частного использования; однако список включает некоторые предопределенные сущности для последовательностей символов из двух символов, содержащих некоторые из них. Начиная с HTML 5.0 (и MathML 3.0, который разделяет тот же набор en сущностей), все сущности кодируются в формах нормализации Unicode C и KC (это не относилось к более старым версиям HTML и MathML, поэтому более старые сущности, которые изначально были определены с символами для назначений частного использования, формами совместимости CJK или в формах, отличных от NFC, были изменены [6] ).
Однако все допустимые символы и последовательности в UCS, включая все двунаправленные элементы управления или назначения для частного использования (но за исключением непробельных элементов управления C0 и C1, несимволов и суррогатов), также могут использоваться и допустимы в HTML, XML, XHTML и MathML, как в текстовых значениях атрибутов, так и в текстовых элементах (путем их непосредственного кодирования как обычного текста или использования числовых ссылок на символы при необходимости).
"
был исключен из спецификации HTML 3.2[1], но восстановлен в версии HTML 4.0[2]. На практике большинство веб-браузеров, отображающих страницы HTML 3.2, отображают его так, как будто он был включен в спецификацию.©
: U+00A9 'символ авторского права' не то же самое, что U+24B8 'обведенная латинская заглавная буква C', хотя для изображения обоих символов можно использовать один и тот же глиф. См. также U+24D2 'латинская строчная буква c'.®
: U+00AE «зарегистрированный знак» — это не то же самое, что U+24C7 «обведенная латинская заглавная буква R», хотя для изображения обоих символов может использоваться один и тот же глиф.Å
: Использование U+212B «знак Ангстрема», который был закодирован из-за совместимости с кодировкой восточноазиатских символов , не рекомендуется, и предпочтительным представлением является U+00C5 «заглавная буква A с кружком сверху», которая имеет тот же глиф.IJ
и ij
: Использование U+0132 «лигатура IJ» или U+0133 «лигатура ij», которые были закодированы для использования в голландском языке и для совместимости с ISO/IEC 6937 и кодовой страницей 1102 (которая включает только строчную букву ij, также являющуюся частью голландской версии национального набора заменяющих символов ISO 646 ), не рекомендуется, и предпочтительным представлением является просто «IJ» или «ij» (как две отдельные буквы).ŀ
: Использование U+013F «латинская строчная буква l с точкой посередине» или U+0140 «латинская заглавная буква L с точкой посередине», которые были закодированы для использования в каталонском языке и для совместимости с ISO/IEC 6937 , не рекомендуется, и предпочтительным представлением является «L» или «l», за которым следует U+00B7.ʼn
: Использование U+0149 «n, за которым следует апостроф», которое было закодировано для использования в африкаанс и для совместимости с ISO/IEC 6937 , было объявлено устаревшим в Unicode (начиная с Unicode 5.2), и предпочтительным представлением является ʼn (U+02BC, за которым следует n). (Unicode.org – Предложение по дополнительным устаревшим символам).Ω
: Использование U+2126 «знак ома» не рекомендуется, предпочтительнее использовать обозначение U+03A9 «греческая заглавная буква омега», имеющее тот же глиф.​
, ​
, ​
, ​
: это имена, используемые в языке Wolfram Language для области частного использования символов с отрицательной шириной продвижения ; [9] [10] [11] [12] HTML5 аппроксимирует их пробелом нулевой ширины.ℑ
, ↦
: эти два имени сущностей были определены по-разному, как значки типов файлов, в заброшенной спецификации для HTML версии 3.0. [13] [14]℗
: U+2117 «авторское право на звукозапись» — это не то же самое, что U+24C5 «заглавная латинская буква P в кружке», хотя для изображения обоих символов можно использовать один и тот же глиф.ℵ
: U+2135 «символ алеф» — это не то же самое, что U+05D0 «еврейская буква алеф» (которая, в отличие от математического символа, имеет ярко выраженное двунаправленное поведение текста справа налево ), хотя для изображения обоих символов можно использовать один и тот же глиф.ℶ
: U+2136 «символ ставки» — это не то же самое, что U+05D1 «еврейская буква ставка» (которая, в отличие от математического символа, имеет ярко выраженное двунаправленное поведение текста справа налево ), хотя для изображения обоих символов можно использовать один и тот же глиф.ℷ
: U+2137 «символ гимел» — это не то же самое, что U+05D2 «еврейская буква гимел» (которая, в отличие от математического символа, имеет ярко выраженное двунаправленное текстовое поведение справа налево ), хотя для изображения обоих символов можно использовать один и тот же глиф.ℸ
: U+2138 «символ далет» — это не то же самое, что U+05D3 «еврейская буква далет» (которая, в отличие от математического символа, имеет ярко выраженное двунаправленное текстовое поведение справа налево ), хотя для изображения обоих символов можно использовать один и тот же глиф.⇐
: ISO 10646 не говорит, что «двойная стрелка влево» — это то же самое, что и стрелка «подразумевается», но и не имеет другого символа для этой функции, поэтому lArr
может использоваться для «подразумевается», как предлагает ISOtech.⇒
: ISO 10646 не говорит, что «двойная стрелка вправо» — это то же самое, что и стрелка «подразумевает», но и не имеет других символов с такой функцией, поэтому rArr
может использоваться для «подразумевает», как предлагает ISOtech.∏
: U+220F «n-арное произведение» — это не тот же символ, что U+03A0 «греческая заглавная буква Пи», хотя для обоих может использоваться один и тот же глиф.∑
: U+2211 «n-арное суммирование» — это не тот же символ, что U+03A3 «греческая заглавная буква сигма», хотя для обоих может использоваться один и тот же глиф.∼
: U+223C «оператор тильда» — это не тот же символ, что U+007E «тильда», хотя для представления обоих может использоваться один и тот же глиф.⊅
: U+2285 «не является надмножеством» входит в подмножество «ISOamsn», но не охватывается кодировкой шрифта Symbol и не указан в списке сущностей HTML 4.0 в документации, где он был ошибочно пропущен; его следует включить для симметрии и аналогии с другими сущностями.⊥
: Unicode определяет только U+22A5 как "up tack", а символ Unicode для "perpendicular" - U+27C2: эти два символа выглядят похожими, но в Unicode являются отдельными. Однако HTML использует U+22A5 как свой "perpendicular" символ: это несоответствие между HTML и Unicode. Кроме того, символ U+22A4 (символ "down tack"), отображаемый в браузере, таком как Firefox 3.6, может соответствовать шрифту либо "up tack", либо "perpendicular", но не обоим, в зависимости от того, используется ли фиксированный или пропорциональный шрифт. При просмотре в Firefox 3.6 символы, отображенные в порядке U+22A5, U+22A4, U+27C2 пропорциональным шрифтом: "⊥ ⊤ ⟂" и фиксированной ширины: ⊥ ⊤ ⟂
, показывают, что "down tack" имеет вид, похожий на U+22A5 (HTML-"perpendicular") в первом случае, но соответствует U+27C2 во втором. Это иллюстрирует трудности семиотики, связанные с интерпретацией глифов , символов и знаков в целом.⋅
: U+22C5 «оператор точки» — это не тот же символ, что U+00B7 «средняя точка».⋘
: U+22D8 «намного меньше, чем» отсутствует в списке сущностей HTML 5.2, где оно было опущено.⟨
: U+27E8 «математическая левая угловая скобка» — это не тот же символ, что и U+003C «меньше», U+2039 «одинарная левая угловая кавычка» или U+3008 «левая угловая скобка». В HTML 5.0 lang
был переназначен на этот код, так как U+2329 «левая угловая скобка» был помечен как устаревший в Unicode (начиная с версии 5.2) (Unicode.org – Proposal for Additional Deprecated Characters).⟩
: U+27E9 «математическая правая угловая скобка» — это не тот же символ, что U+003E «больше», U+203A «одинарная правая угловая кавычка» или U+3009 «правая угловая скобка». В HTML 5.0 rang
был переназначен на этот код, так как U+232A «правая угловая скобка» был помечен как устаревший в Unicode (начиная с версии 5.2) (Unicode.org – Proposal for Additional Deprecated Characters).XHTML DTD явно объявляют 253 сущности (включая 5 предопределенных сущностей XML 1.0), расширение которых представляет собой один символ, поэтому их можно неформально называть «сущностями символов». Они (за исключением сущности ) имеют те же имена и представляют те же символы, что и 252 сущности символов в HTML 4.0. Кроме того, в силу того, что они являются XML , документы XHTML могут ссылаться на предопределенную сущность, которая не является одной из 252 сущностей символов в HTML 4.0. Дополнительные сущности любого размера могут быть определены на основе документа. Однако удобство использования ссылок на сущности в XHTML зависит от того, как обрабатывается документ: [ необходима цитата ]'
'
'
или пользовательских ссылок на объекты может не поддерживаться и может привести к непредсказуемым результатам (вместо этого рекомендуется использовать числовую ссылку на символ '
).Из-за особого '
случая, упомянутого выше, только "
, &
, <
, и >
будут работать во всех ситуациях обработки XHTML.