gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:58:35 26 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

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

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

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

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

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

关于java - 如何将 XML 文档作为参数传递给 java (oracle xdk) 中的 XSL 转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2001548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com