Java 为xstl转换保留CDATA?

Java 为xstl转换保留CDATA?,java,xml,saxon,Java,Xml,Saxon,我正在用saxon从XML文档进行xstl转换。 文档不是标准的有效XML,我想保留在其中找到的所有元素 但是,使用.xsl文件进行转换时 Transformer trans = TransformerFactory.newInstance().newTransformer(new StreamSource(new File("foo.xsl")); trans.transform(new StreamSource(new File("foo.xml"), new StreamResult(ne

我正在用saxon从XML文档进行xstl转换。 文档不是标准的有效XML,我想保留在其中找到的所有
元素

但是,使用.xsl文件进行转换时

Transformer trans = TransformerFactory.newInstance().newTransformer(new StreamSource(new File("foo.xsl"));
trans.transform(new StreamSource(new File("foo.xml"), new StreamResult(new File("output.xml")));

结果是剥离出这些CDATA条目。如何防止这种情况发生?

您不能,因为xslt使用的数据模型中没有区分是否来自cdata节的文本。但是,您可以在样式表中定义某些结果元素要包装在cdata中。这是使用样式表中的来完成的。

考虑使用Andrew Welch的LexEv工具(我相信是与KernowForSaxon捆绑在一起的),该工具将CDATA开始和结束标记预处理为在XSLT数据模型中可见的、因此可供应用程序使用的不同内容(可能是处理指令?)。

这非常有效!还有一个问题:如何排除特定元素?假设我有一个
,我如何才能排除带有attribute name的请求?@membersound:你的意思是,
my:request
应该包装在cdata中,除非它有一个值为“test”的name属性?我认为这是不可能的,因为
cdata节元素
只列出元素的QName。是的,
中的所有内容都应该包装。name=“test”中的所有内容都不应使用cdata包装。