1

我有执行某些操作的自定义 Java 函数,我需要将它放到 XSL 中,以便它可以在选定节点上执行某些操作。我是这样使用的:

<msxsl:script implements-prefix="user" language="java">
   <![CDATA[
public String doSomething(String input) { 

    // does something
    return result;
}
]]></msxsl:script>

声明命名空间:

 ... xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" xmlns:user="example.com">

并致电:

<xsl:variable name="var">
    <xsl:value-of select="user:doSomething(node)"/>
</xsl:variable>

这导致“无法编译样式表”错误。

还尝试用 Javascript 替换 java 代码,错误是一样的。

您知道如何正确执行此操作或其他方法如何将 Java 代码插入 XSL 并调用它吗?

4

1 回答 1

1

从 XSLT 调用到其他语言(如 Java 或 Javascript)的机制取决于您使用的 XSLT 处理器,并且通常它们不能跨处理器移植。msxsl:script 机制专门用于 Microsoft 的 MSXML。

现在唯一常用的两个 Java 处理器是 Xalan 和 Saxon,它们都有调用 Java 代码的机制。这些机制相似,但在许多细节上有所不同。但正如 Martin Honnen 所指出的,与 1.0 相比,XSLT 2.0(或 3.0)不太可能需要扩展功能。

于 2017-03-14T10:51:06.810 回答