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.seobuilding.ru/wiki/CDATA»

Served in 0.287 secs.