如何通过作为一个XSL参数在Java(甲骨文XDK)转换XML文档?(How to pass an

2019-10-19 00:39发布

我试图将XML文档传递给XSLT样式表作为参数。 我相信代码使用变换了Oracle XDK(它使用JDK 1.4.2,和春天,我是新来的代码库,所以我不知道到底是越来越加载)。 在我第一次尝试,我刚刚创建的文档对象,并将其设置为变压器的参数,而是试图将变量复制到树没有给出结果。 浮现在脑海的问题是:

  1. 这甚至可能在XSLT转换的一般情况? (好像它应该是,如通常XSLT变量/参数可以包含节点集)

  2. 是有可能特异性地与在oracle XDK(或Xalan的,这也是在类路径)?

  3. 如果是这样,我怎么做工作?

Answer 1:

答案是,这是可能的,但是,它是不直观的,至少在甲骨文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)?