【发布时间】:2021-10-22 00:12:01
【问题描述】:
我正在使用 Saxon HE 10 (使用 Xslt30Transformer)
如何将输入流作为参数传递给 XSL?
我看到有一个 setStylesheetParameters 。如何发送输入流,因为这需要 XdmValue 类型的对象?
我以前是设置文件名参数,而是尝试传递流
【问题讨论】:
-
为什么您的 XSLT 2 代码需要接收和使用流?如果您使用 Java 或 C# API 设置参数并希望设置从流中解析的 XdmNode 参数,您可以使用 DocumentBuilder 将流解析为 XdmNode 并将其传入。
-
我认为如果你真的希望 XSLT 处理一个流,你宁愿有一个 URL 解析器来确保某个 URI 参数,例如
doc()从该流中读取数据。 -
@MartinHonnen 谢谢你的意见。我能够使用 URIResolver 来实现这一点。基本上得到了 Document form input stream ,将其设置为参数。转换器中的 SetURI 解析器。 transformer.setURIResolver((href, base) -> new DOMSource(parameters.get(href)));
-
如果您还需要使用 W3C DOM API,则使用 DOMSource 只是一个很好的输入源,否则 Saxon 有自己的原生树模型,它应该性能更好并且消耗更少的内存。