我具有执行某些功能的自定义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:脚本机制专门用于Microsoft的MSXML。
如今,仅有的两个Java处理器是Xalan和Saxon,并且都有呼叫Java代码的机制。这些机制相似,但在许多细节上有所不同。但是,正如马丁·霍南(Martin Honnen)指出的那样,XSLT 2.0(或3.0)所需的扩展功能比1.0。