Введение

Общая конструкция разметки, используемая в SGML, XML и HTML.

Числовая ссылка на символ (NCR) – это общая конструкция разметки, используемая в SGML и языках разметки, производных от SGML, таких как HTML и XML. Она состоит из короткой последовательности символов, которая, в свою очередь, представляет один символ. Начиная с WebSgml, XML и HTML 4, используются кодовые точки универсального набора символов (UCS) Unicode. NCR обычно используются для представления символов, которые нельзя непосредственно закодировать в конкретном документе (например, потому что это международные символы, не помещающиеся в используемый 8-битный набор символов, или потому, что они имеют специальное синтаксическое значение в языке). При интерпретации документа программой, учитывающей разметку, каждый NCR обрабатывается как символ, который он представляет.

Ограничения

Универсальный набор символов, определенный стандартом ISO 10646, является "набором символов документа" для SGML и HTML 4, поэтому по умолчанию любой символ в таком документе и любая ссылка на символ в таком документе должны быть представлены в UCS. Хотя синтаксис SGML не запрещает ссылки на недействительные или неназначенные кодовые точки, такие как , языки разметки, производные от SGML, такие как HTML и XML, могут и часто ограничивают числовые ссылки на символы только теми кодовыми точками, которым назначены символы. Ограничения могут применяться и по другим причинам. Например, в HTML 4 ссылка , представляющая непечатаемый управляющий символ "перевод страницы", разрешена, поскольку сам символ "перевод страницы" допустим. Однако в XML символ перевода страницы нельзя использовать, даже по ссылке. В качестве другого примера, ссылка €, представляющая другой управляющий символ, не разрешена ни в HTML, ни в XML, но при использовании в HTML она обычно не отмечается веб-браузерами как ошибка – некоторые из них интерпретируют её как ссылку на символ с кодом 128 в кодировке Windows 1252 в целях совместимости. Этот символ, "€", должен быть представлен как € в HTML-коде, соответствующем стандарту. В качестве еще одного примера, до публикации XML 1.0 Second Edition 6 октября 2000 года, XML 1.0 основывался на более ранней версии ISO 10646 и запрещал использование символов выше U+FFFD, за исключением данных символов, что делало ссылку, например, 𐀀 (U+10000), недопустимой. В XML 1.1 и более поздних версиях XML 1.0 такая ссылка разрешена, поскольку доступный репертуар символов был явно расширен. Языки разметки также накладывают ограничения на места, где могут появляться ссылки на символы.

Вопросы совместимости

В ранних версиях SGML и HTML числовые ссылки на символы интерпретировались в соответствии с кодировкой символов документа, а не с Unicode. Для документов, использующих латинский шрифт, числовые ссылки на символы в диапазоне x80–x9F в этих документах будут некорректными при сопоставлении с Unicode и должны быть перекодированы. Стандарты HTML до HTML 4 поддерживали только документы с использованием западноевропейской латинской кодировки: обработка ссылок на символы с кодом выше #7F может различаться в зависимости от приложений и национальных стандартов. Например, как упоминалось выше, правильная числовая ссылка на символ евро "€" U+20AC при использовании Unicode – десятичная € и шестнадцатеричная €. Однако, если используются инструменты, поддерживающие устаревшие реализации HTML, ссылка € (символ евро в кодовой странице CP 1252) или ¤ (символ евро в ISO/IEC 8859-15) может работать. В качестве другого примера, если текст изначально был создан с использованием набора символов MacRoman, левая двойная кавычка будет представлена кодовой точкой xD2. Она не будет отображаться правильно в системе, ожидающей документ, закодированный в UTF-8, ISO 8859-1 или CP 1252, где эта кодовая точка занята буквой Ò. Правильная числовая ссылка на символ в HTML 4 и более поздних версиях – “, поскольку U+201C – это его код UCS. В некоторых системах также может быть доступна именованная ссылка на символ “.