CDATA

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

CDATA (/ˈsi.deɪ.tə/) — сокращение от character data что в переводе с английского обозначает «символьные данные». Используется для разных, но связанных между собой целей в языках разметки SGML и XML. CDATA показывает, что определённая часть документа представляет собой символьные данные, в отличие от несимвольных или символьных, но особым образом структурированных данных.

Содержание

CDATA в XML

В XML документах фрагмент, помещённый внутрь CDATA,— это часть содержания элемента, помеченная для парсера, что она содержит только символьные данные, не разметку. CDATA — это просто альтернативный синтаксис для отображения символьных данных, нет никакой смысловой разницы между символьными данными, которые объявлены как CDATA и символьными данными, которые объявлены в обычном синтаксисе и где «<» и «&» будут представлены как «&lt;» и «&amp;», соответственно.

Синтаксис и интерпретация

Раздел CDATA начинается со следующей последовательности символов:

<![CDATA[

и заканчивается с первым появлением последовательности:

]]>

Все символы, заключённые между этими двумя последовательностями, интерпретируются как символы, а не как разметка или ссылки на объект. Например, в этой строке:

<sender>John Smith</sender>

открывающий и закрывающий теги «sender» будут интерпретированы как разметка. Однако, если мы запишем вот так:

<![CDATA[<sender>John Smith</sender>]]>

то этот код будет интерпретирован так же, как если бы мы записали:

&lt;sender&gt;John Smith&lt;/sender&gt;

Таким образом, теги sender будут восприниматься так же как «John Smith», то есть как текст.

Аналогично, если в содержимом элемента появляется цифровая последовательность &#240;, это проинтерпретируется как простой символ юникода 00F0. Но если эта последовательность появится в разделе CDATA, она будет разделена на 6 символов: амперсанд, знак октоторпа, цифру 2, цифру 4, цифру 0 и точку с запятой.

Использование CDATA

Новички в использовании XML часто неверно понимают назначение раздела CDATA, ошибочно полагая, что символы внутри CDATA «защищены» и не будут обрабатываться как обычные символы. Некоторые API для работы с XML документами предоставляют независимый доступ к разделу CDATA, но эта возможность существует поверх и вне обычных требований к системе обработки XML и всё же не изменяет неявное значение данных. Символьные данные — это символьные данные, независимо от того, записаны они в раздел CDATA или же с помощью обычной разметки.

Раздел CDATA полезен, когда надо написать XML код как текстовые данные внутри XML документа. Например, если надо набрать книгу про XML на XSL с примерами использования XML приложений, то встречающиеся примеры будут заключены в CDATA. Однако, CDATA не может содержать строку "]]>" и, следовательно, невозможно создавать вложенные разделы CDATA. Если текст содержит "]]>", то можно его отобразить, используя, например, несколько разделов CDATA, оканчивая один из них перед символом ">". Пример:

 <![CDATA[]]]]><![CDATA[>]]>

Значит, для того чтобы закодировать «]]>» в разделе CDATA, замените все вхождения этого набора символов на следующее:

 ]]]]><![CDATA[>

CDATA в DTD

Значения атрибутов типа CDATA

В DTD файлах и в SGML и в XML атрибуту может быть назначен тип CDATA — произвольные символьные данные. Внутри атрибута типа CDATA разрешены указатели на символ и ссылки на сущность, они будут обрабатываться при чтении документа.

Например, если XML DTD содержит

 <!ATTLIST foo a CDATA #IMPLIED>

это значит, что элементы, названные foo, имеют необязательный атрибут «a» типа CDATA. В XML документе, который соответствует этому DTD, может появиться такой элемент:

 <foo a="1 &amp; 2 are &lt; &#51; &#x10;">

и XML парсер интерпретирует атрибут «a» как символьные данные «1 & 2 are < 3».

Сущности типа CDATA

SGML и XML DTD могут также включать объявления сущностей, в которых маркер CDATA используется, чтобы указать, что сущность представляет собой символьные данные. Символьные данные могут появиться в самом описании или же могут быть доступны как внешний ресурс по ссылке URI. Так или иначе в этой сущности разрешены указатели на символ и ссылки на сущность, которые будут обрабатываться при чтении документа.

Содержание элемента типа CDATA

SGML DTD может объявить содержание элемента типом CDATA. Внутри элемента типа CDATA не обрабатывается никакая разметка. Можно провести аналогию с разделом CDATA в XML, но в данном случае нет никакой специальной разметки, тип CDATA действует сразу на всё содержимое элемента.

Смотри также

de:CDATA

en:CDATA it:CDATA

Источник — «http://www.sbup.com/wiki/CDATA»
Личные инструменты

Served in 0.145 secs.