Что такое CDATA в HTML? [дубликат]


этот вопрос уже есть ответ здесь:

что такое использование CDATA внутри тегов JavaScript и HTML?

<script type="text/javascript"> 
// <![CDATA[

// ]]>
</script> 
6 155

6 ответов:

весь текст в XML-документе будет проанализирован анализатором.

но текст внутри раздела CDATA, будет проигнорировано парсером.

CDATA - (Unparsed) символьные данные

термин CDATA используется в отношении текстовых данных, которые не должны анализироваться анализатором XML.

символы типа "

"

"& " генерирует ошибку, потому что синтаксический анализатор интерпретирует ее как начало символьной сущности.

Некоторый текст, например код JavaScript, содержит много символов "

все, что находится внутри раздела CDATA, игнорируется интерпретатором.

раздел CDATA начинается с "<![CDATA[" и заканчивается "]]>"

использование CDATA в выводе программы

разделы CDATA в документах XHTML могут быть проанализированы по-разному веб-браузерами, если они отображают документ как HTML, поскольку синтаксические анализаторы HTML не распознают начальные и конечные маркеры CDATA, а также не распознают ссылки на сущности HTML, такие как &lt; внутри <script> теги. Это может вызвать проблемы с отображением в веб-браузерах и привести к уязвимости межсайтовых сценариев, если они используются для отображения данных из ненадежных источников, так как два вида парсеров будут расходиться в том, где заканчивается раздел CDATA.

краткий учебник SGML.

см. также запись Википедии на 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 способ сказать:

не разбирайте теги до следующего ]]>, считайте все это строкой

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

игнорировать переводы строк,

замените каждый возврат каретки или вкладку одним пробелом.