Я думаю, что нет никакой разницы. Я предпочитаю использовать CDATA для всего, потому что мне не нужно заботиться о символах, чтобы убежать, и единственное, о чем я должен позаботиться, это "]]>" в контенте, что, кстати, разрешено, если вы разделяете открытие CDATA и закрытие тегов на несколько фрагментов.
Пример (в PHP)
<?php
function getXMLContent($content)
{
if
(
(strpos($content, '<') !== false) ||
(strpos($content, '>') !== false) ||
(strpos($content, '&') !== false) ||
(strpos($content, '"') !== false) ||
(strpos($content, '\'') !== false)
)
{
// If value contains ']]>', we need to break it into multiple CDATA tags
return "<![CDATA[". str_replace(']]>', ']]]]><![CDATA[>', $content) ."]]>";
}
else
{
// Value does not contain any special characters which needs to be wrapped / encoded / escaped
return $content;
}
}
echo getXMLContent("Hello little world!");
echo PHP_EOL . PHP_EOL;
echo getXMLContent("This < is > a & hard \" test ' for ]]> XML!");
?>
Returns
Hello little world!
<![CDATA[This < is > a & hard " test ' for ]]]]><![CDATA[> XML!]]>
Если вы поместите это в структуру XML следующим образом:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<test>
<![CDATA[This < is > a & hard " test ' for ]]]]><![CDATA[> XML!]]>
</test>
... сохраните его в файл (например, test.xml) и откройте его с помощью браузера, вы увидите, что браузер (или любое другое приложение / парсер XML) покажет вам правильную строку вывода:
This < is > a & hard " test ' for ]]> XML!