我试图将XML文档传递给XSLT样式表作为参数。 我相信代码使用变换了Oracle XDK(它使用JDK 1.4.2,和春天,我是新来的代码库,所以我不知道到底是越来越加载)。 在我第一次尝试,我刚刚创建的文档对象,并将其设置为变压器的参数,而是试图将变量复制到树没有给出结果。 浮现在脑海的问题是:
这甚至可能在XSLT转换的一般情况? (好像它应该是,如通常XSLT变量/参数可以包含节点集)
是有可能特异性地与在oracle XDK(或Xalan的,这也是在类路径)?
如果是这样,我怎么做工作?
答案是,这是可能的,但是,它是不直观的,至少在甲骨文XSL处理器。 我尝试以下(非工作)调用(名称变更为保护无辜者):
Document x = createDocumentForMe();
transformer.addParameter("param",x);
和
Document x = createDocumentForMe();
transformer.addParameter("param",new DOMSource(x));
(第二次,也许会为DOMSource工作,因为它是java.xml.transform接口的DOM的基础上)。 那到底为我工作的调用是采取这样的认识XSL使用XPath和有效类型的变量基本上是字符串或节点集,和XPath返回节点集。 对我来说,以下工作:
Document x = createDocumentForMe();
XPathExpression xpe = XPathFactory.newInstance().newXPath().compile("/");
transformer.addParameter("param",xpe.evaluate(x, XPathConstants.NODESET));
基本上使用XPath来获取包含仅在DOM对象中传递的根文档节点集。 然而,这似乎是一个黑客位,并不得与其他XSL处理器工作,所以YMMV ...
文章来源: How to pass an XML document as a parameter to an XSL transform in java (oracle xdk)?