WikiDer > CDATA
Эта статья не цитировать любой источники. (Апрель 2014 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
Период, термин CDATA, смысл символьные данные, используется для различных, но связанных целей в языки разметки SGML и XML. Термин указывает на то, что определенная часть документа носит общий характер. символьные данные, а не несимвольные данные или символьные данные с более конкретной ограниченной структурой.
Разделы CDATA в XML
В XML-документе или внешнем объекте Раздел CDATA - это часть содержимого элемента, которая размечена для буквального толкования, как текстовые данные, а не как размеченное содержимое. Раздел CDATA - это просто альтернативный синтаксис для выражения символьных данных; нет семантической разницы между символьными данными в разделе CDATA и символьными данными в стандартном синтаксисе, где, например, "<
" и "&
"представлены"& lt;
" и "& amp;
", соответственно.
Синтаксис и интерпретация
Раздел CDATA начинается со следующей последовательности:
<! [CDATA [
и заканчивается следующим появлением последовательности:
]]>
Все символы, заключенные между этими двумя последовательностями, интерпретируются как символы, а не как ссылки на разметку или сущности. Каждый персонаж воспринимается буквально, за исключением ]]>
последовательность символов. В:
<sender>Джон Смит</sender>
начальный и конечный теги «отправитель» интерпретируются как разметка. Однако код:
<![CDATA[<sender>John Smith</sender>]]>
эквивалентно:
& lt;отправитель& gt;Джон Смит& lt;/ отправитель& gt;
Таким образом, «теги» будут иметь тот же статус, что и «Джон Смит»; они будут рассматриваться как текст.
Аналогично, если ссылка на числовой символ ð
появляется в содержимом элемента, он будет интерпретирован как единственный Unicode символ 00F0 (строчная буква eth). Но если то же самое появляется в разделе CDATA, он будет проанализирован как шесть символов: амперсанд, решетка, цифра 2, цифра 4, цифра 0, точка с запятой.
Использование разделов CDATA
Новые авторы XML-документов часто неправильно понимают назначение раздела CDATA, ошибочно полагая, что его цель - «защитить» данные от обработки как обычные символьные данные во время обработки. Некоторые API-интерфейсы для работы с XML-документами действительно предлагают варианты независимого доступа к разделам CDATA, но такие возможности существуют сверх обычных требований систем обработки XML и по-прежнему не меняют неявного значения данных. Символьные данные - это символьные данные, независимо от того, выражены ли они через раздел CDATA или обычную разметку. Разделы CDATA полезны для написания кода XML в виде текстовых данных в документе XML. Например, если кто-то хочет набрать книгу с XSL поясняя использование приложения XML, разметка XML, которая появится в самой книге, будет записана в исходном файле в разделе CDATA.
Гнездование
Раздел CDATA не может содержать строку "]]>
"и поэтому раздел CDATA не может содержать вложенные разделы CDATA. Предпочтительный подход к использованию разделов CDATA для кодирования текста, содержащего триаду"]]>
"заключается в использовании нескольких разделов CDATA путем разделения каждого вхождения триады непосредственно перед">
". Например, чтобы закодировать"]]>
"можно было бы написать:
<![CDATA[]]]]><![CDATA[>]]>
Это означает, что для кодирования "]]>
"в середине раздела CDATA заменить все вхождения"]]>
"со следующим:
]]]]><![CDATA[>
Это эффективно останавливает и перезапускает раздел CDATA.
Проблемы с кодировкой
В текстовых данных любой символ Юникода, недоступный в кодировке, объявленной в <?xml ...?>
заголовок может быть представлен с помощью & # nnn;
цифровая ссылка на символ. Но текст в разделе CDATA строго ограничен символами, доступными в кодировке.
Из-за этого программное использование раздела CDATA для цитирования данных, которые потенциально могут содержать '&
' или же '<
'символы могут вызвать проблемы, когда данные содержат символы, которые не могут быть представлены в кодировке. В зависимости от реализации кодировщика эти символы могут теряться, могут быть преобразованы в символы & # nnn;
ссылка на символ или может вызвать сбой кодирования. Но они не будут поддерживаться.
Другая проблема в том, что XML документ можно перекодировать из одной кодировки в другую во время транспортировки. Когда XML документ преобразуется в более ограниченный набор символов, такой как ASCII, символы, которые больше не могут быть представлены, преобразуются в & # nnn;
ссылки на символы для преобразования без потерь. Но внутри раздела CDATA эти символы вообще не могут быть представлены, и их необходимо удалить или преобразовать в какой-либо эквивалент, изменяя содержимое раздела CDATA.
Использование CDATA в выводе программы
Разделы CDATA в XHTML документы могут анализироваться веб-браузерами по-разному, если они отображают документ как HTML, поскольку анализаторы HTML не распознают маркеры начала и конца CDATA, а также не распознают ссылки на объекты HTML, такие как & lt; внутри тегов
Значение атрибута типа CDATA
В Определение типа документа (DTD) для SGML и XML значение атрибута может быть обозначено как имеющее тип CDATA: произвольные символьные данные. В атрибуте типа CDATA разрешена разметка символов и ссылок на объекты, которые будут обрабатываться при чтении документа.
Например, если XML DTD содержит
фу а CDATA # ПРЕДПОЛАГАЕТСЯ>
это означает, что элементы с именем foo могут дополнительно иметь атрибут с именем "а"который имеет тип CDATA. В XML-документе, который действителен согласно этому DTD, может появиться такой элемент:
<фу а ="1 и 2 равны & lt; & # 51; & # x0A;" />
а синтаксический анализатор XML интерпретирует "а"значение атрибута как символьные данные"1 и 2 <3".
Сущность типа CDATA
SGML или XML DTD может также включать в себя объявления объектов, в которых используется токен CDATA, чтобы указать, что объект состоит из символьных данных. Символьные данные могут появляться в самом объявлении или могут быть доступны извне, на которые ссылается URI. В любом случае в сущности разрешены ссылки на символы и разметки ссылок на сущности параметров, которые будут обрабатываться как таковые при чтении.
Атрибут ="Y"><![CDATA[PFTEST0__COUNTER_6__:4:199:, PFTEST0__COUNTER_7__:4:199:]]></DISPLAY_NAME> имя ="" val ="" ЦЕЛОЕ имя ="" val ="" ДЛИННЫЙ имя ="" val =""/>