如何使用 Saxon 11.4 和 Saxon9api 将对象列表或 DOMSource 作为参数从 java 传递到 xslt?

问题描述 投票:0回答:1

我想使用 saxon9api 将对象列表从 java 传递到 xslt,或者如果可能的话传递 DOMSource。

我正在寻找的是通过 xslt 本身生成一个 xslt,我想传递他们已经有他们的孩子的节点列表......等等,我已经有了所需的 java 类,我坚持要通过列表并在 xslt

中循环

我尝试过实现 ExtensionFunction 但它对我不起作用,没有找到任何有用的教程或文档

java xslt saxon xslt-3.0
1个回答
0
投票

评论解决了您的一些附属问题,并描述了您可以改进帖子的方法。至于你的标题问题:

如何将对象列表或 DOMSource 作为参数从 java 传递 使用 Saxon 11.4 和 Saxon9api 到 xslt?

XsltTransformer
类有一个方法
setParameter
,而
Xslt30Transformer
setParameters
;它们的共同点是您将参数值作为
XdmValue
.

的实例传递

如果你想传递一个字符串列表作为参数,通过调用

XdmAtomicValue
将每个字符串转换为一个
new XdmAtomicValue(str)
,然后调用
new XdmValue(Iterable<? extends XdmItem>)
或新的
XdmValue(Iterator<? extends XdmItem>)
XdmAtomicValue
对象列表转换为一个
 XdmValue
代表序列。

如果你想将 DOM 树作为参数传递(我通常不会推荐它,因为使用 Saxon 的原生树模型要快得多),在 DOM

DocumentBuilder.wrap(doc)
节点上调用
Document
会给你一个
XdmNode
, 这是
XdmValue
.

的子类型
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.