使用带有Java或JS的<msxsl:script>元素

时间:2017-03-14 08:00:12

标签: java xslt msxsl

我有我的自定义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并调用它?

1 个答案:

答案 0 :(得分:1)

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

现在常用的两个Java处理器是Xalan和Saxon,它们都有调用Java代码的机制。机制相似但在许多细节上有所不同。但正如Martin Honnen指出的那样,使用XSLT 2.0(或3.0)而不是1.0时,扩展函数的可能性较小。