Каковы специальные зарезервированные объекты символов в HTML и XML?
Информация, которую я знаю:
HTML:
-
&(замените на&) -
<(заменить на<) -
>(заменить на>) -
"(замените на") -
'(заменить на')
XML:
-
<(заменить на<) -
>(заменить на>) -
&(замените на&) -
'(замените на') -
"(замените на")
Но я не могу найти документацию ни на одном из них.
В W3C упоминается в Extensible Markup Language (XML) 1.0 (пятое издание) определенные предопределенные ссылки на сущности. Но он говорит, что эти сущности предопределены (так же, как © предопределено); не то, чтобы они были экранированы:
4.6 Предопределенные объекты
[Определение: ссылки на объекты и символы могут использоваться как вывести левую угловую скобку, амперсанд и другие разделители. Множество общих объектов (amp, lt, gt, apos, quot) указывается для этого цель. Также могут использоваться числовые ссылки на символы; они есть расширяется сразу после распознавания и должен рассматриваться как символ данных, поэтому числовые ссылки на символы "& # 60;" и "& # 38;" могут чтобы избежать < и когда они встречаются в символьных данных.]
Какие символы должны скрываться в ссылках на сущности в HTML?
Какие символы должны скрываться в ссылках на сущности в XML?
Обновление
От Расширяемый язык разметки (XML) 1.0 (пятое издание):
2.4 Символьные данные и разметка
Символ амперсанда (
&) и левая угловая скобка (<) не должныпоявляются в их буквальной форме, за исключением случаев, когда они используются в качестве разделителей разметки, или в комментарии, инструкции обработки или секции CDATA.
Если они необходимы в другом месте, они должны быть экранированы с использованием либо числовых символьные ссылки или строки "&" и "<" соответственно.Прямоугольная скобка (
>) может быть представлена с помощью строка ">" и должна, для совместимости, экранировать ">" или символьная ссылка, когда она появляется в строке "]]>" в содержании, когда эта строка не маркирует конец CDATA раздел.Чтобы разрешить значения атрибутов содержать одиночные и двойные кавычки, апостроф или символ с одной кавычкой (
') могут быть представлены как "'", а символ двойной кавычки (") как """.
я прочитал первое, сказав, что
должен быть:
-
<(<) должен быть -
&(&) должен быть
может, но должен при появлении ]]>
-
>(>) должен быть, если он выглядит как]]>
И что ' и " вообще не нужно избегать; если вы не хотите иметь кавычки внутри указанных атрибутов.
Из Спецификация HTML 4.01, представление HTML-документа:
5.3.2 Ссылки на символы символов
Авторы, желающие поместить символ "
<" в текст, должны использовать "<" (ASCII десятичный 60), чтобы избежать возможной путаницы с началом тег (открытый разделитель открытого тега).Аналогичным образом авторы должны использовать "
>" (ASCII decimal 62) в тексте вместо ">", чтобы избежать проблем с более старыми пользовательские агенты, которые неправильно воспринимают это как конец тега (тег close delimiter), когда он отображается в значениях кавычек.Авторы должны использовать "
&" (ASCII-децимал 38) вместо "&", чтобы избежать путаница с началом ссылки на символ (объект ссылочный открытый разделитель). Авторы также должны использовать "&" в значения атрибутов, поскольку в CDATA допускаются ссылки на символы значения атрибутов.Некоторые авторы используют ссылку на символ символа "
"" для кодирования экземпляры метки двойной кавычки ("), поскольку этот символ может быть используется для разграничения значений атрибутов.
HTML намного более правдоподобный по правилам, но звучит так, как будто я должен:
-
<должен быть с< -
>должен быть с> -
&должен быть с& -
"должен быть с"
и если " может быть ссылкой на сущность, я также должен заменить ' на &.
Обновить два
Из HTML5 - Словарь и связанные с ним API для HTML и XHTML:
8.3 Сериализация HTML-фрагментов
Экранирование строки (для целей вышеописанного алгоритма) состоит выполнения следующих шагов:
Заменить любое появление символа "
&" строкой "&".Заменить любые вхождения символа U + 00A0 NO-BREAK SPACE string "
".Если алгоритм был вызван в режиме атрибута, замените любой вхождения символа "
"" по строке """.Если алгоритм не был вызван в режиме атрибута, замените любой вхождения символа "
<" по строке "<" , а любая вхождения символа ">" по строке ">".
Что я читаю как HTML:
-
&&всегда -
всегда -
"", если внутри атрибута -
<<, если в атрибуте не (т.е. атрибуты могут содержать<) -
>>, если в атрибуте не (т.е. атрибуты могут содержать>)