CDATA означает Символьные данные, и это означает, что данные между этими строками включают в себя данные, которые могут быть интерпретированы как разметка XML, но не должны.
Основные различия между CDATA и комментариями:
- Как указывает Ричард , CDATA по-прежнему является частью документа, а комментарий - нет.
- В CDATA вы не можете включить строку
]]>
( CDEnd
), в то время как в комментарии --
недопустимо .
- Ссылки на параметры объекта не распознаются внутри комментариев.
Это означает, что эти четыре фрагмента XML из одного правильно сформированного документа:
<!ENTITY MyParamEntity "Has been expanded">
<!--
Within this comment I can use ]]>
and other reserved characters like <
&, ', and ", but %MyParamEntity; will not be expanded
(if I retrieve the text of this node it will contain
%MyParamEntity; and not "Has been expanded")
and I can't place two dashes next to each other.
-->
<![CDATA[
Within this Character Data block I can
use double dashes as much as I want (along with <, &, ', and ")
*and* %MyParamEntity; will be expanded to the text
"Has been expanded" ... however, I can't use
the CEND sequence. If I need to use CEND I must escape one of the
brackets or the greater-than sign using concatenated CDATA sections.
]]>
<description>An example of escaped CENDs</description>
<!-- This text contains a CEND ]]> -->
<!-- In this first case we put the ]] at the end of the first CDATA block
and the > in the second CDATA block -->
<data><![CDATA[This text contains a CEND ]]]]><![CDATA[>]]></data>
<!-- In this second case we put a ] at the end of the first CDATA block
and the ]> in the second CDATA block -->
<alternative><![CDATA[This text contains a CEND ]]]><![CDATA[]>]]></alternative>
]]
и>
- посмотрите этот ответ, чтобы узнать, как и почему.if (a[b[c]]>10) { }
.Раздел CDATA - это « раздел содержимого элемента, помеченный для синтаксического анализа как только символьные данные, а не разметка ».
Синтаксически, он ведет себя подобно комментарию:
... но это все еще часть документа:
Попробуйте сохранить следующее в виде
.xhtml
файла ( не.html
) и открыть его с помощью FireFox ( не Internet Explorer ), чтобы увидеть разницу между комментарием и разделом CDATA; комментарий не будет отображаться при просмотре документа в браузере, а раздел CDATA:В разделах CDATA следует обратить внимание на то, что они не имеют кодировки, поэтому нет возможности включить
]]>
в них строку . Любые символьные данные, которые содержат]]>
, должны - насколько я знаю - вместо этого быть текстовым узлом. Аналогично, с точки зрения манипулирования DOM вы не можете создать раздел CDATA, который включает в себя]]>
:Этот код манипулирования DOM будет либо генерировать исключение (в Firefox), либо приводить к плохо структурированному XML-документу: http://jsfiddle.net/9NNHA/
источник
Один большой пример использования: ваш xml включает программу в качестве данных (например, учебник по веб-страницам для Java). В этой ситуации ваши данные включают в себя большой набор символов, которые включают «&» и «<», но эти символы не должны быть XML.
Для сравнения:
с
Особенно, если вы копируете / вставляете этот код из файла (или включаете его в препроцессор), было бы просто иметь нужные символы в вашем XML-файле, не путая их с тегами / атрибутами XML. Как уже упоминалось @paary, другие распространенные случаи использования включают в себя встраивание URL-адресов, содержащих амперсанды. Наконец, даже если данные содержат только несколько специальных символов, но данные очень и очень длинные (скажем, текст главы), было бы хорошо, если бы вы не редактировали эти несколько сущностей при редактировании своего XML-файла. ,
(Я подозреваю, что все сравнения с комментариями вводят в заблуждение / бесполезно.)
источник
Мне когда-то приходилось использовать CDATA, когда мой элемент xml требовал хранения HTML-кода. Что-то вроде
Таким образом, CDATA означает, что он будет игнорировать любой символ, который в противном случае может быть интерпретирован как тег XML, такой как <и> и т. Д.
источник
Содержащиеся в нем данные не будут анализироваться как XML, и поэтому не обязательно должны быть действительными XML или могут содержать элементы, которые могут выглядеть как XML, но не являются таковыми.
источник
Из Википедии:
Таким образом: текст внутри CDATA воспринимается синтаксическим анализатором, но только как символы, а не как узлы XML.
источник
В качестве другого примера его использования:
Если у вас есть RSS-канал (XML-документ) и вы хотите включить некоторую базовую кодировку HTML в отображение описания, вы можете использовать CData для его кодирования:
RSS Reader извлекает описание и отображает HTML-код в CDATA.
Обратите внимание - не все HTML-теги работают - я думаю, что это зависит от используемой вами программы чтения RSS.
И как объяснение того, почему в этом примере используются CData (а не соответствующие теги pubData и dc: creator): это для отображения веб-сайта с использованием виджета RSS, для которого у нас нет реального элемента управления форматированием.
Это позволяет нам указать высоту и положение включенного изображения, правильно отформатировать имена и дату автора и т. Д. Без необходимости создания нового виджета. Это также означает, что я могу написать это и не добавлять их вручную.
источник
CDATA расшифровывается как Character Data. Вы можете использовать это для экранирования некоторых символов, которые в противном случае будут рассматриваться как обычный XML. Данные внутри этого не будут проанализированы. Например, если вы хотите передать URL-адрес, содержащийся
&
в нем, вы можете использовать CDATA для этого. В противном случае вы получите ошибку, поскольку она будет проанализирована как обычный XML.источник
Он используется для хранения данных, которые в противном случае могут рассматриваться как xml, поскольку содержат определенные символы.
Таким образом, данные внутри будут отображаться, но не интерпретироваться.
источник
Он экранирует строку, которую нельзя передать в XML как обычно:
Пример:
Строка содержит "&" в нем.
Тебе нельзя:
Следовательно, вы должны использовать CDATA:
источник
Обычно используется для встраивания пользовательских данных, таких как изображения или звуковые данные, в документ XML.
источник
Cdata - это данные, которые вы, возможно, захотите передать в синтаксический анализатор xml, но они все еще не интерпретируются как xml.
Скажем, например: - У вас есть XML, который содержит объект вопроса / ответа. Такие открытые поля могут иметь любые данные, которые строго не подпадают под базовый тип данных или определенные пользователем типы данных xml. Нравится - Это правильный тег для комментария xml? .-- У вас может быть требование передать его в том виде, в каком оно есть, без интерпретации анализатором xml как другого дочернего элемента. Здесь Cdata приходит на помощь. Объявляя Cdata, вы говорите парсеру, что не следует обрабатывать данные, обернутые в XML (хотя они могут выглядеть как один)
источник
Обратите внимание, что
CDATA
конструкция необходима только при размещении текста непосредственно в текстовом файле XML.То есть, вам нужно только использовать,
CDATA
если вы вручную печатаете или программируете текст XML напрямую.Любой текст, введенный с использованием API процессора DOM или SimpleXML, будет автоматически экранирован, чтобы предотвратить нарушение правил содержимого XML.
источник