gpt4 book ai didi

Java/撒克逊 : Running an XSL function programmatically

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:37 27 4
gpt4 key购买 nike

我有一个定义了多个函数的 XSL。

我想编写 Java 代码,它采用 XSL 函数的名称(和参数列表)并运行该函数(当然,还将参数绑定(bind)到函数的形式参数)。

到目前为止,我唯一的解决方案是使用运行所选函数的主模板动态生成 XSL 代码。这是相当尴尬的。我正在寻找一种解决方案,让我可以直接通过 Saxon API 运行函数。

最佳答案

XPath Visualizer 执行此操作的方式(无论使用哪种 XSLT 处理器)是将主 XSL 样式表作为 XML 文档加载,并使用必要的 XPath 表达式动态修改一个 select 属性。

类似这样的:

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="yourTrueMainStylesheetModule"/>
<xsl:output omit-xml-declaration="yes" indent="yes"/>

<xsl:variable name="vResult" select="."/>

<xsl:template match="/">
<xsl:sequence select="$vResult"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
  1. 将上述样式表模块加载为 XmlDocument。

  2. 问题:SelectNodes("/*/xsl:variable[@name='vResult']/@select")

  3. 使用 DOM API 将所选属性的值修改为所需的值,例如:my:foo(1,2,3)

  4. 使用已加载(且动态修改的样式表)启动转换。

我多年来一直使用 XPath Visualizer 2(用于 XSLT 2.0 - 未发布)作为 FXSL 函数的命令行解释器。我可以自由地写:

f:fold(f:mult(), 1, 1 to 4)

并显示正确的结果:

24

以下是使用 XPath Visualizer 2 作为 FXSL 解释器的屏幕截图:

enter image description here

关于Java/撒克逊 : Running an XSL function programmatically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7789863/

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