Весь текст в XML документе анализируется парсером.
Однако текст внутри секции CDATA парсером игнорируется.
PCDATA - Анализируемые символьные данные
Обычно XML парсеры анализируют и разбирают все текстовые данные в XML документе.
Когда парсится XML элемент, текст между тегами XML также анализируется:
<message>Этот текст тоже парсится</message>
Это делается по той причине, что XML элементы могут содержать другие элементы.
Например, в следующем примере элемент <name> содержит еще два элемента (first и last):
<name><first>Bill</first><last>Gates</last></name>
и парсер разобьет его на подэлементы следующим образом:
<name>
<first>Bill</first>
<last>Gates</last>
</name>
Анализируемые символьные данные (PCDATA) - это термин, используемый по отношению к текстовым данным, которые подвергаются анализу и разбору XML парсером.
CDATA - (Неанализируемые) Символьные данные
Термин CDATA используется по отношению текстовых данных, которые не должны анализироваться и разбираться XML парсером.
Символы вроде "<" и "&" недопустимы внутри XML элементов.
Символ "<" вызовет ошибку, потому что парсер будет интерпретировать его, как начало нового элемента.
Символ "&" вызовет ошибку, потому что парсер будет интерпретировать его, как начало символьной сущности.
Тем не менее, некоторые текстовые данные, например, код JavaScript, могут содержать множество символов "<" и "&". Чтобы избежать возникновения ошибок парсинга, такие текстовые данные можно определить, как CDATA.
Все что расположено внутри секции CDATA полностью игнорируется парсером.
Секция CDATA начинается с символов "<![CDATA[" и заканчивается "]]>":
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
</script>
В приведенном примере все текстовые данные внутри секции CDATA будут игнорироваться парсером.
Обратите внимание на особенность секции CDATA:
Вложенные секции CDATA запрещены.
Символы "]]>", обозначающие конец секции CDATA, не должны содержать пробельные символы или символы конца строки.