Что такое 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 представляет собой последовательность символов из набора символов документа и может включать в себя сущности символов. Агенты пользователей должны интерпретировать значения атрибутов следующим образом: Замените сущности символов символами,
игнорировать переводы строк,
замените каждый возврат каретки или вкладку одним пробелом.