Warning: session_name(): Cannot change session name when session is active in /home/stalko/rodina-ru.com/docs/dokuwiki/inc/init.php on line 231
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in /home/stalko/rodina-ru.com/docs/dokuwiki/inc/init.php on line 232
======CDATA======
**CDATA** (/ˈsi.deɪ.tə/) — сокращение от character data, что в переводе с английского обозначает «символьные данные». Используется для разных, но связанных между собой целей в языках разметки [[sgml|SGML]] и [[xml|XML]]. CDATA показывает, что определённая часть документа представляет собой символьные данные, в отличие от несимвольных или символьных, но особым образом структурированных, данных.
=====CDATA в XML=====
В XML документах фрагмент, помещённый внутрь CDATA, — это часть содержания элемента, которая помечена для парсера как содержащая только символьные данные, а не разметку. CDATA — это просто альтернативный синтаксис для отображения символьных данных, нет никакой смысловой разницы между символьными данными, которые объявлены как CDATA и символьными данными, которые объявлены в обычном синтаксисе и где «''<''» и «>» будут представлены как «''<''» и «''>''», соответственно.
====Синтаксис и ====
Раздел CDATA начинается со следующей последовательности [[символ|символов]]:
''
и заканчивается с первым появлением последовательности:
'']]>''
Все символы, заключённые между этими двумя последовательностями, интерпретируются как символы, а не как разметка или ссылки на объект. Например, в этой строке:
''John Smith''
открывающий и закрывающий теги «sender» будут интерпретированы как разметка. Однако, если записать её вот так:
''John Smith]]>''
то этот [[код]] будет интерпретирован так же, как если бы было записано:
''<sender>John Smith</sender>''
Таким образом, [[тег-языки-разметки-|теги]] sender будут восприниматься так же, как «John Smith», то есть как текст.
Аналогично, если в содержимом элемента появляется цифровая последовательность ''ð'', это будет интерпретировано как простой символ [[юникод|Юникода]] 00F0. Но если эта последовательность появится в разделе CDATA, она будет разделена на 6 символов: [[амперсанд]], знак [[октоторп|октоторпа]], [[цифра|цифру]] 2, цифру 4, цифру 0 и [[точка-с-запятой|точку с запятой]].
====Использование CDATA====
Новички в использовании XML часто неверно представляют назначение раздела CDATA, как «защиту» от обработки данных внутри этого раздела наряду с обычными символьными данными. Некоторые API для работы с XML документами предоставляют независимый доступ к разделу CDATA, но эти возможности существуют поверх и вне обычных требований к системе обработки XML и не меняют смысл этих данных. Символьные данные — это символьные данные, независимо от того, записаны они в раздел CDATA или же с помощью обычной разметки.
Раздел CDATA полезен, когда надо написать XML код как текстовые данные внутри XML документа. Например, если надо набрать [[книга|книгу]] про XML на [[xsl|XSL]] с примерами использования XML приложений, то встречающиеся примеры будут заключены в CDATA. Однако, CDATA не может содержать строку «]]>» и, следовательно, невозможно создавать вложенные разделы CDATA. Если текст содержит «]]>», то можно его отобразить, используя, например, несколько разделов CDATA, оканчивая один из них перед символом «>». Пример:
]]>
Поэтому для того чтобы закодировать «]]>» в разделе CDATA, заменяют все вхождения этого набора символов на следующее:
]]]]>
=====CDATA в DTD=====
====Значения атрибутов типа CDATA====
В [[dtd|DTD]] файлах и в SGML и в XML атрибуту может быть назначен тип CDATA — произвольные символьные данные. Внутри атрибута типа CDATA разрешены указатели на символ и ссылки на сущность, они будут обрабатываться при чтении документа.
Например, если XML DTD содержит
это значит, что элементы, названные foo, имеют необязательный атрибут «//a//» типа CDATA. В XML документе, который соответствует этому DTD, может появиться такой элемент:
и XML [[парсер]] интерпретирует атрибут «//a//» как символьные данные «//1 & 2 are < 3//».
====Сущности типа CDATA====
SGML и XML DTD могут также включать объявления [[сущность-xml-|сущностей]], в которых маркер CDATA используется, чтобы указать, что сущность представляет собой символьные данные. Символьные данные могут появиться в самом описании или же могут быть доступны как внешний ресурс по ссылке [[uri|URI]]. Так или иначе в этой сущности разрешены указатели на символ и ссылки на сущность, которые будут обрабатываться при чтении документа.
====Содержание элемента типа CDATA====
SGML DTD может объявить содержание элемента типом CDATA. Внутри элемента типа CDATA не обрабатывается никакая разметка. Можно провести аналогию с разделом CDATA в XML, но в данном случае нет никакой специальной разметки, тип CDATA действует сразу на всё содержимое элемента.
====Смотри также====
* [[мнемоники-в-html|Мнемоники в HTML]]
* [[pcdata|PCDATA]]
{{tag>XML}}