我有一个自定义的 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 中并调用它吗?
最佳答案
从 XSLT 调用其他语言(例如 Java 或 Javascript)的机制取决于您所使用的 XSLT 处理器,并且通常它们不能跨处理器移植。 msxsl:script 机制专门用于 Microsoft 的 MSXML。
现在唯一常用的两种 Java 处理器是 Xalan 和 Saxon,它们都有调用 Java 代码的机制。这些机制相似,但在许多细节上有所不同。但正如 Martin Honnen 指出的那样,XSLT 2.0(或 3.0)比 1.0 更不需要扩展函数。
关于java - <msxsl :script> element with Java or JS 的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42780592/