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

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

 //   

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

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

CDATA – (Unparsed) Персональные данные

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

Символы типа «< » и «&» являются незаконными в элементах XML.

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

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

Некоторые тексты, такие как код JavaScript, содержат много символов «< » или «&». Чтобы избежать ошибок, код сценария может быть определен как CDATA.

Синтаксический анализатор игнорирует все содержимое раздела CDATA.

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

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

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

Краткое руководство SGML .

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

CDATA вообще не имеет смысла в HTML.

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

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

С http://en.wikipedia.org/wiki/CDATA :

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

  

CDATA устарел .

Поэтому не используйте его в HTML 5.

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

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

В HTML, - это волшебство, которое ускоряет все, пока не появится .

Поэтому вы можете написать:

  

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

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

 x = '' 

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

 x = '' 

См .: Зачем расписывать тег

Но XML (и, следовательно, XHTML, являющийся «подмножеством» XML, в отличие от HTML ), не обладает этой магией:
будет рассматриваться как тег.

< ![CDATA[ это способ XHTML:

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

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

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

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