如何将XML文档作为参数传递给java(oracle xdk)中的XSL转换?

时间:2010-01-04 19:21:55

标签: java xslt oracle-xdk

我正在尝试将XML文档作为参数传递给XSLT样式表。我相信代码是使用oracle XDK进行转换(它使用的是JDK 1.4.2和Spring,而且我是代码库的新手,所以我不确定最终会加载什么)。在我的第一次尝试中,我刚刚创建了一个文档对象并将其设置为变换器上的参数,但是尝试将变量复制到树中没有结果。想到的问题是:

  1. 在XSLT变换器的一般情况下,这是否可能? (看起来它应该是,因为通常XSLT变量/参数可以包含节点集)

  2. 是否可以使用oracle XDK(或xalan,也在类路径中)?

  3. 如果是这样,我该如何使其发挥作用?

1 个答案:

答案 0 :(得分:0)

答案是这是可能的,但是,它是非直观的,至少对于Oracle XSL处理器而言。我尝试了以下(非工作)调用(名称已更改以保护无辜者):

Document x = createDocumentForMe();
transformer.addParameter("param",x);

Document x = createDocumentForMe();
transformer.addParameter("param",new DOMSource(x));

(第二个可能是DOMSource可以工作,因为它是DOM的java.xml.transform接口)。最终对我有用的调用是采用XSL使用XPath的洞察力,变量的有效类型本质上是字符串或节点集,XPath返回节点集。以下适用于我:

Document x = createDocumentForMe();
XPathExpression xpe = XPathFactory.newInstance().newXPath().compile("/");
transformer.addParameter("param",xpe.evaluate(x, XPathConstants.NODESET));

其中基本上使用XPath来获取仅包含传入的DOM对象的根文档的节点集。但是,这看起来有点像黑客,可能不适用于其他XSL处理器,所以YMMV ...