答案是这是可能的,但是,这是不直观的,至少对于 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...