378.11. 使用 XSLT 和 Java 版本的备注
以下是来自 Sameer (一个 Camel 用户)的一些观察结果,该用户完全与我们共享:
如果任何人都遇到 XSLT 端点的问题,请查看这些点。
我试图使用 xslt 端点使用简单的 xsl 从一个 xml 到另一个的转换。输出 xml 保持显示(在路由中的 xslt 处理器后),其中最外部的 xml 标签中没有内容。
DEBUG 日志中没有显示任何解释。但是,在 TRACE 日志中发现一些错误/警告表示 XMLConverter bean 无法初始化。
在经过几小时后,我必须进行以下操作才能正常工作(因为用户论坛会给用户论坛给出一些线索):
-
使用路由中的 transformerFactory 选项
("xslt:my-transformer.xsl?transformerFactory=tFactory")以及tFactorybean 为class="org.apache.xalan.xsltc.trax.TransformerFactoryImpl".
- 将 Xalan jar 添加到 my maven pom 中。
my guess 是 JDK (我使用 1.6.0_03)提供的默认 xml 解析机制无法在此上下文中正常工作,且不会抛出任何错误。当我通过这种方式切换到 Xalan 时。这不是 Camel 问题,但可能需要在 xslt 组件页面中提到。
另一个备注,jdk 1.6.0_03 附带 JAXB 2.0,而 Camel 需要 2.1。一个临时解决方案是,将 2.1 jar 添加到 jvm 的 jre/lib/endorsed 目录中,或者由容器指定的。
希望此后期可以节省一些时间。