Я использую следующий XSLT на моем XML для сортировкиXSLT Сортировка преобразует CDATA в обычный XML Текст
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" omit-xml-declaration="no" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[*]">
<xsl:copy>
<xsl:apply-templates>
<xsl:sort select="local-name()"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="Handling|Handling//*" priority="2">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:transform>
Проблема здесь в том, что все символьные данные в моем результате XML преобразуется в обычный текст, который трудно для моего синтаксического анализа SAX, поскольку у данных много специальных символов и тегов HTML. Есть ли способ избежать конвертации CDATA в текст?
Для примера:
<description><![CDATA[Never program while driving.<p>]]></description>
Преобразуется
<description>Never program while driving.<p></description>
Описание скважины - один из тегов. У меня есть несколько тегов с CDATA, и я хочу, чтобы все они были сохранены. Как я могу это сделать? – BrownTownCoder
@BrownTownCoder Да, «список, разделенный пробелом» этих элементов, как значение атрибута 'cdata-section-elements' элемента' xsl: output'. Я просто повторяю то, что сказал Мартин. –
С чистым XSLT вам нужно будет знать имена этих элементов при написании таблицы стилей и перечислить их все в 'xsl: output'. –