- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个定义了多个函数的 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>
将上述样式表模块加载为 XmlDocument。
问题:SelectNodes("/*/xsl:variable[@name='vResult']/@select")
使用 DOM API 将所选属性的值修改为所需的值,例如:my:foo(1,2,3)
。
使用已加载(且动态修改的样式表)启动转换。
我多年来一直使用 XPath Visualizer 2(用于 XSLT 2.0 - 未发布)作为 FXSL 函数的命令行解释器。我可以自由地写:
f:fold(f:mult(), 1, 1 to 4)
并显示正确的结果:
24
以下是使用 XPath Visualizer 2 作为 FXSL 解释器的屏幕截图:
关于Java/撒克逊 : Running an XSL function programmatically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7789863/
我有一个 JSP,它将 XSL 附加到从数据库中提取的 XML 文档。该应用程序正在使用 Saxon 解析器,但我的 XML 需要使用 Xalan 解析器。 JSP 页面可以覆盖要使用的解析器吗? 最
我们最近更新了我们的 Tomcat 网络服务。我们唯一真正更新的是我们将 XMLBeans 更新到 2.4 版,将 Saxon 更新到版本 9。 运行 Netbeans 和 eclipse,我们的项目
我尝试使用 Altova Map Force 中生成的 XSLT 将一个 XML 文件 XSLT 转换为另一个 XML。 起初,当 saxon 处理器找不到此处描述的 Altova 特定功能时,我遇到
当我运行 XQuery 命令行时,只要结果是一个元素,它就可以工作。 当我扩展该 XQuery 以仅获取属性值时,它会失败并出现以下错误: SENR0001: Cannot serialize a f
我想通过 Java Saxon API 修改 XML 文档。 我从 DocumentInfo 开始,深入到我想要更改的 NodeInfo-s。这很好用。但是,我没有找到允许我更改这些节点属性的 API
我有一个定义了多个函数的 XSL。 我想编写 Java 代码,它采用 XSL 函数的名称(和参数列表)并运行该函数(当然,还将参数绑定(bind)到函数的形式参数)。 到目前为止,我唯一的解决方案是使
我正在使用 Saxon HE 9.5.1.8 将 XML 转换为另一个 XML 文件。 我的问题是,由 Saxon 的 Serializer() 类编写的 XML 内容会打印出几个我不想在其中出现的额
我的公司在我们的产品中大量使用 XSLT,并且我们即将从 Java 的 javax.xml API 迁移到 Saxon 的 s9api。因此,我的任务是探索新的 API 并找出我们需要进行哪些更改。
我想对多个输出文件进行 XSLT 转换。我在那里使用了“xsl:结果文档”。当转换失败时,应删除所有输出文件。但是,如果由“xsl:result-document”创建的文档生成失败,我的程序将无法再
我有一个简单的 jar 测试程序,我用它来通过 xquery 文件解析 xml。问题是在 xquery 文件中我声明了一个 java 命名空间: declare namespace java="jav
我正在使用 JAXP 规范 API 与 Saxon-HE API 相结合,主要目的是开发一个应用程序,该应用程序使用可配置的 XSLT 样式表转换 XML 文件,能够覆盖生成的输出文档。我跳过详细信息
我使用 Saxon(Java) 将 *.xhtml 转换为 *.xml。 这是我的java代码: System.setProperty("javax.xml.transform.Transformer
我使用 Saxon HE 9.2 进行一些 XSLT 转换,随后由 Castor 1.3.1 对输出进行解码。整个过程都在 JDK 6 上使用 Java 运行。 我的 XSLT 转换如下所示:
我有以下 XSLT 2.0 模板: .. 我正在努力以编程方式提供 currentTotal 作为变压器的参数,如下所示: transformer.setParameter("currentTo
我正在尝试从 Xalan 迁移到 Saxon(为了 xslt 2.0 支持)并且遇到以下异常。我已确保环境中不再有所有 Xalan jar ,现在包括一些 Saxon 9.1.0.8 jar 。 转换
我是一名优秀的程序员,十分优秀!