Я уверен, что разделы <![CDATA[...]]>
могут использоваться в XHTML5, но как насчет HTML5?
Должен ли я использовать <! [CDATA [...]]> в HTML5?
Ответ 1
Структура CDATA
на самом деле не для HTML, это для XML.
Люди иногда используют их в HTML внутри тегов script
, потому что они устраняют необходимость их удаления определенных специальных символов. Это отнюдь не требование, хотя (для HTML 4 или 5).
Изменить:. Здесь мы открываем, что на самом деле размытая старая червь из червей с 2002 года, отправляете ли вы XHTML как text/html
или как application/xhtml+xml
, как будто вы "предположили": )
Ответ 2
С той же страницы @pst, связанной с:
Элемент-специфический синтаксический анализ для тегов
script
иstyle
, Руководство по совместимости с XHTML-HTML: "Следующий код с экранированием может гарантировать, что script и элементы стиля будут работать как в XHTML, так и в HTML, включая старые браузеры."
Максимальная обратная совместимость:
<script type="text/javascript"><!--//--><![CDATA[//><!--
...
//--><!]]></script>
Упрощенная версия, вроде несовместимой с "гораздо более старыми браузерами":
<script>//<![CDATA[
...
//]]></script>
Итак, CDATA
может использоваться в HTML5 и рекомендуется в Руководстве для совместимости с XHTML-HTML. Это полезно для страниц polyglot HTML/XML/XHTML, которые создаются и анализируются как XML во время разработки, но служат как HTML5 для лучшего кросс-браузера совместимость. Страницы Polyglot имеют свои преимущества, и я сам использовал это, так как гораздо проще отлаживать XML/XHTML5. Например, Google Chrome выдает ошибку для недопустимого XML/XHTML5 (включая, например, escape-символ символа), тогда как та же страница служила HTML5 будет "просто работать", иначе "возможно, работает".
Ответ 3
Спекуляция, похоже, устраняет эту проблему. script и теги стиля считаются "исходными текстовыми элементами". CDATA не нужен или не разрешен для них. CDATA используется только с "внешним контентом", то есть MathML и SVG. Обратите внимание, что есть некоторые ограничения на то, что может быть в теге script - в основном вы не можете поместить там что-то вроде var x = '</script>'
, потому что он закроет тег и должен быть разбит, как указано в ответе pst. http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions
Ответ 4
Возможно, посмотрите: http://wiki.whatwg.org/wiki/HTML_vs._XHTML
<! [CDATA [...]] > является фальшивым комментарием.
В HTML, <script>
уже защищен - вот почему иногда он должен быть записан как a = "<" + "/script>"
, чтобы избежать путаницы с браузером. Обратите внимание, что код действителен вне CDATA в HTML.