Java、CData和多个xslt转换

Java、CData和多个xslt转换,java,xslt,transform,Java,Xslt,Transform,我已经阅读/搜索了很多关于xslt和CDATA的内容 我无法控制数据库中的原始数据。 当数据流动时,我的问题是: 当第一个转换器加载xslt文件时,调用一个Java函数从数据库检索和转换数据。xslt文件的片段: <xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" ...[more xmlns]... version="2.0" xmlns:fn="http://www.w3.org/2005/xpath-functions" ex

我已经阅读/搜索了很多关于xslt和CDATA的内容

我无法控制数据库中的原始数据。 当数据流动时,我的问题是: 当第一个转换器加载xslt文件时,调用一个Java函数从数据库检索和转换数据。xslt文件的片段:

<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" 
...[more xmlns]... 
version="2.0" xmlns:fn="http://www.w3.org/2005/xpath-functions"
exclude-result-prefixes="#all"> 
<xsl:output method="xhtml" omit-xml-declaration="yes" indent="no"/>
...[some xsl:includes]...
<xsl:variable name="myVar" select="resource:getFaq('some value')" />
<xsl:template match="/">
...[some business logic]...
    <xsl:template name="someTemplate">
        ...
        <xsl:for-each select="$myVar/faq/entry">
            ...
            <ui:cell>   
                <xsl:copy-of select="value/answer" />
            </ui:cell>
...[a lot more stuff]...
B数据库中的数据:

...
<answer><![CDATA[<p>Enter the...<some html tags>...needs.</p>]]></answer>
...
getFaq中的C第一次转换会导致org.w3c.dom.Node的手动遍历打印输出:

...
<answer><#cdata-section><p>Enter the...<some html tags>...needs.</p></#cdata-section></answer>
...
D使用getFaq中的数据生成xslt文件转换结果:

E xslt文件被另一个进程转换,结果是:

...
<td class="ui-cell "><answer xmlns="" xmlns:ui="http://www.somewhere.com/ui"><![CDATA[<p>Enter the...<some html tags>...needs.</p>]]></answer></td>
...
F浏览器Firefox 6.0.2显示的内容:

...
<td class="ui-cell "><answer xmlns:ui="http://www.somewhere.com/ui" xmlns=""><!--[CDATA[<p-->Enter the...<some html tags>...needs.</p>]]&gt;</answer></td>
...

问题是CDATA从步骤C更改为步骤D中的文本数据。输出方法必须是xhtml

如果XSLT处理器将XSLT结果序列化为XML,并且您希望将某些元素的内容序列化为CDATA节,那么您需要在xsl:output指令中告诉处理器,例如

但是,正如我所说的,这是一个序列化特性,您的描述听起来有点像您的转换创建了节点而没有序列化它们

...
<td class="ui-cell "><answer xmlns:ui="http://www.somewhere.com/ui" xmlns=""><!--[CDATA[<p-->Enter the...<some html tags>...needs.</p>]]&gt;</answer></td>
...
<xsl:output cdata-section-elements="answer"/>