it-roy-ru.com

Что такое CDATA в HTML?

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

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

// ]]>
</script> 
162
SexyMF

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

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

CDATA без разбора) символьные данные

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

Символы типа "<" и "&" недопустимы в элементах XML.

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

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

Некоторый текст, такой как код JavaScript, содержит много символов "<" или "&". Во избежание ошибок код скрипта можно определить как CDATA.

Все внутри секции CDATA игнорируется парсером.

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

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

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

--- (краткое руководство по SGML .

Также см. запись в Википедии на CDATA .

119
Ahsan Rathod

CDATA не имеет никакого значения в HTML.

CDATA - это конструкция XML, которая устанавливает содержимое тега, которое обычно представляет собой #PCDATA-анализируемые символьные данные, и вместо этого принимается за #CDATA, то есть не анализируется символьные данные. Это актуально и действительно только в XHTML.

Он используется в тегах script, чтобы избежать анализа < и &. В HTML это не нужно, потому что в HTML script уже #CDATA.

82
Delan Azabani

От http://en.wikipedia.org/wiki/CDATA :

Поскольку полезно использовать в сценариях веб-страницы меньше знаков (<) и амперсандов (&) и, в меньшей степени, стили, не забывая их избегать, часто используют маркеры CDATA вокруг текст inline и элементы в документах XHTML. Но для того, чтобы документ мог также быть проанализирован анализаторами HTML, которые не распознают маркеры CDATA, маркеры CDATA обычно закомментированы, как в этом примере JavaScript:

<script type="text/javascript">
//<![CDATA[
document.write("<");
//]]>
</script>
16
user823959

Способ написания общего подмножества HTML и XHTML в надежде на большую переносимость.

В HTML <script> - это волшебство, которое ускользает от всего, пока не появится </script>.

Таким образом, вы можете написать:

<script>x = '<br/>';

и <br/> не будет считаться тегом.

Вот почему такие строки:

x = '</scripts>'

должен быть экранирован как:

x = '</scri' + 'pts>'

Смотрите: Зачем разделять тег <script> при написании его с помощью document.write ()?

Но XML (и, следовательно, XHTML, который является "подмножеством" XML, в отличие от HTML ), не обладает такой магией: <br/> будет рассматриваться как тег.

<![CDATA[ - это способ XHTML сказать:

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

Добавлен //, чтобы CDATA работала хорошо и в HTML.

В HTML <![CDATA[ не волшебство, поэтому он будет работать на JavaScript. Таким образом, // используется для комментирования.

XHTML также видит //, но воспринимает его как пустую строку комментария, что не является проблемой:

//

Это говорит:

  • совместимые браузеры должны распознавать, является ли документ HTML или XHTML из исходного типа документа <!DOCTYPE html> vs <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  • совместимые веб-сайты могут полагаться на совместимые браузеры и координировать тип документа с одним допустимым синтаксисом script

Но это нарушает золотое правило Интернета:

не доверяйте третьим лицам, иначе ваш продукт сломается

CDATA является устаревшим .

Обратите внимание, что разделы CDATA не должны использоваться в HTML; они работают только в XML.

Так что не используйте его в HTML 5.

https://developer.mozilla.org/en-US/docs/Web/API/CDATASection#Specifications

Screenshot from MDN

6
Daniel De León

CDATA - это последовательность символов из набора символов документа и может включать в себя объекты символов. Пользовательские агенты должны интерпретировать значения атрибутов следующим образом: заменить символьные объекты на символы,

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

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

4
Tushar Ahirrao