1

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

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

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

  3. 如果是这样,我该如何让它工作?

4

1 回答 1

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 对象的根文档的节点集。但是,这似乎有点像 hack,并且可能不适用于其他 XSL 处理器,所以 YMMV...

于 2010-01-04T20:09:59.970 回答