Что такое CDATA в HTML? [дубликат]
этот вопрос уже есть ответ здесь:
- когда необходим раздел CDATA в теге скрипта? 15 ответов
каково использование CDATA внутри тегов JavaScript и HTML?
<script type="text/javascript">
// <![CDATA[
// ]]>
</script>
6 ответов
весь текст в XML-документе будет проанализирован анализатором.
но текст внутри раздела CDATA, будет проигнорировано парсером.
CDATA - (Unparsed) символьные данные
термин CDATA используется для текстовых данных, которые не должны анализироваться синтаксическим анализатором XML.
символы, такие как "
"
"& " создаст ошибку, потому что анализатор интерпретирует ее как начало символьной сущности.
Некоторый текст, например код JavaScript, содержит много символов "
все внутри раздела CDATA игнорируется синтаксическим анализатором.
раздел CDATA начинается с "
<![CDATA[
" и заканчивается "]]>
"
использование CDATA в выводе программы
разделы CDATA в документах XHTML могут быть проанализированы по-разному веб-браузерами, если они отображают документ как HTML, поскольку синтаксические анализаторы HTML не распознают начальные и конечные маркеры CDATA, а также не распознают ссылки на объекты HTML, такие как
<
внутри<script>
теги. Это может вызвать проблемы с отрисовкой в веб-браузерах и привести к уязвимостям межсайтовых сценариев, если используется для отображения данных из ненадежных источников, так как два вида парсеров будут расходиться в том, где заканчивается раздел CDATA.
см. также Википедия запись на CDATA.
CDATA
не имеет никакого значения в HTML.
CDATA
- это XML-конструкция, которая задает содержимое тега, которое обычно является # PCDATA - проанализированными символьными данными, вместо этого берется как #CDATA, то есть не проанализированные символьные данные. Он релевантен и действителен только в XHTML.
он используется в script
теги, чтобы избежать парсинга <
и &
. В HTML это не нужно, потому что в HTML,script
уже #CDATA.
от http://en.wikipedia.org/wiki/CDATA:
поскольку полезно иметь возможность использовать знаки меньше (
<script type="text/javascript">
//<![CDATA[
document.write("<");
//]]>
</script>
CDATA-это устаревший.
поэтому не используйте его в HTML 5.
https://developer.mozilla.org/en-US/docs/Web/API/CDATASection
способ написать общее подмножество HTML и XHTML, в надежде на улучшение переносимости.
в HTML <script>
магия ускользает от всего, пока </script>
появляется.
вы можете написать так:
<script>x = '<br/>';
и <br/>
не является тегом.
вот почему строки, такие как:
x = '</scripts>'
должен быть спасен, как:
x = '</scri' + 'pts>'
посмотреть: зачем разбивать тег
но XML (и, следовательно, XHTML, который является" подмножеством " XML,в отличие от HTML), не имеет этой магии:<br/>
будет воспринят как тэг.
<![CDATA[
это способ XHTML сказать:
не разбирайте теги до следующего
]]>
, считайте все это строкой
на //
добавляется, чтобы сделать CDATA хорошо работать в HTML, а также.
в HTML <![CDATA[
- это не магия, так он будет работать на JavaScript. Так что //
используется для комментариев.
XHTML также видит //
, но будет наблюдать его как пустую строку комментария, которая не является проблемой:
//
что сказал:
- совместимые браузеры должны распознавать, является ли документ HTML или XHTML из начального doctype
<!DOCTYPE html>
vs<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
- совместимые веб-сайты могут полагаться на совместимые браузеры и координировать doctype с одним допустимым
script
синтаксис
но это нарушает золотое правило интернета:
не доверяйте третьим лицам, или ваш продукт сломается
CDATA представляет собой последовательность символов из набора символов документа и может включать в себя сущности символов. Агенты пользователей должны интерпретировать значения атрибутов следующим образом: Замените сущности символов символами,
игнорировать переводы строк,
замените каждый возврат каретки или вкладку одним пробелом.