我想使用 saxon9api 将对象列表从 java 传递到 xslt,或者如果可能的话传递 DOMSource。
我正在寻找的是通过 xslt 本身生成一个 xslt,我想传递他们已经有他们的孩子的节点列表......等等,我已经有了所需的 java 类,我坚持要通过列表并在 xslt
中循环我尝试过实现 ExtensionFunction 但它对我不起作用,没有找到任何有用的教程或文档
评论解决了您的一些附属问题,并描述了您可以改进帖子的方法。至于你的标题问题:
如何将对象列表或 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
. 的子类型