При создании XML мне интересно, почему блоки CDATA используются, а не просто экранируют данные.Есть ли что-то разрешенное в блоке CDATA, которое нельзя экранировать и поместить в обычный тег?
<node><![CDATA[ ...something... ]]></node>
вместо
<node>...something...</node>
Естественно, вам необходимо экранировать данные вВ любом случае:
function xmlspecialchars($text)
{
return str_replace(''', ''', htmlspecialchars($text, ENT_QUOTES, 'utf-8'));
}
Из spec кажется, что CDATA была просто возможным решением, когда у вас нет возможности скрыться от данных - но вы все еще доверяете этому.Например, RSS-канал из вашего блога (который по тем или иным причинам не может избежать сущностей).