Поскольку разделы CDATA позволяют помещать произвольные данные в документ XML без необходимости что-либо понимать о том, как объекты XML будут обрабатывать его, они часто используются людьми, которые не понимают как работают объекты XML. Вообще говоря, когда я вижу, что кто-то создает CDATA в своем XML, я исхожу из предположения, что он действительно не знает, что делает, если не дал хорошего объяснения. (И чаще всего это хорошее объяснение показывает, что они не знали, что делают.)
Первоначальный разработчик, вероятно, путает обработку в DOM текстовых узлов, содержащих пробелы, с обработкой текстовых узлов, содержащих только пробелов. DOM часто нормализуют текстовые узлы только для пробелов, что может быть проблемой в XML, например:
<xsl:value-of select="foo"/>
<xsl:text> </xsl:text>
<xsl:value-of select="bar"/>
Если DOM нормализует четыре пробела во втором элементе до одного пробела, это меняет функциональность этого преобразования, что однозначно плохо.
Но есть причина, по которой вы не видите XSLT, которая выглядит так:
<xsl:value-of select="foo"/>
<xsl:text><![CDATA[ ]]>/xsl:text>
<xsl:value-of select="bar"/>
И это то, что процессоры XSLT написаны людьми, которые понимают, как работают объекты XML, и которые знают, что в их конкретном случае важно сказать DOM сохранить пробелы в текстовых узлах только для пробелов.