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