Вот полный пример :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"
cdata-section-elements="num"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
, когда это преобразование применяется к следующему образцу XML-документа:
<nums>
<num>01</num>
<num>02</num>
<num>03</num>
<num>04</num>
<num>05</num>
<num>06</num>
<num>07</num>
<num>08</num>
<num>09</num>
<num>10</num>
</nums>
результатимеет все текстовые узлы (все они являются дочерними элементами num
элементов), представленные в разделах CDATA :
<nums>
<num><![CDATA[01]]></num>
<num><![CDATA[02]]></num>
<num><![CDATA[03]]></num>
<num><![CDATA[04]]></num>
<num><![CDATA[05]]></num>
<num><![CDATA[06]]></num>
<num><![CDATA[07]]></num>
<num><![CDATA[08]]></num>
<num><![CDATA[09]]></num>
<num><![CDATA[10]]></num>
</nums>
Пояснение :
Использование правила идентификации для вывода каждого узла как есть.
Использование атрибута cdata-section-elements
в xsl:output
для указания разделенного пробелами списка элементов, текстовый узел которогодочерние элементы должны быть сериализованы как секции CDATA.
Примечание : в вашем случае было бы удобно вообще не изменять существующие преобразования, а иметь пост-процесс обработки их результатов, аналогичный этому примеру.