在XSL中替换<xsl:eval>和<xsl:script> </xsl:script> </xsl:eval>

时间:2010-12-29 06:21:26

标签: xslt

我正在尝试修改旧版本的xsl。我遇到以下

<xsl:eval>FormatAccount(this)</xsl:eval>

<xsl:script>
function FormatAccount(e) {
   // function details
}

</xsl:script>
             I am trying to call the FormatAccount() javascript function using `<xsl:eval>` and the function is written in `<xsl:script>`.

如何按照最新标准执行此操作????

2 个答案:

答案 0 :(得分:1)

最新标准是XSLT 2.0 http://www.w3.org/TR/xslt20/,它没有任何在Javascript中定义函数的工具,但它允许您使用XSLT本身定义函数:http://www.w3.org/TR/xslt20/#stylesheet-functions。 XSLT 2.0支持XSLT 2.0处理器,如Saxon 9 http://saxon.sourceforge.net/,AltovaXML Tools http://www.altova.com/altovaxml.html或XQSharp http://www.xqsharp.com/xqsharp/beta.htm

如果你想使用Javascript来定义扩展函数,我们需要知道你使用的是哪个XSLT处理器,我提到的那三个XSLT 2.0处理器我认为只有AltovaXML工具允许(http://manual.altova.com/AltovaXML /altovaxmlcommunity/index.html?xextmsxsl.htm),我认为,只允许更轻松地迁移为Microsoft MSXML编写的XSLT 1.0样式表。

如果你想使用XSLT 1.0处理器,那么在Javascript这样的特定编程语言中定义扩展函数取决于你使用的处理器,对于MSXML,有一个msxsl:script元素:http://msdn.microsoft.com/en-us/library/ms256042.aspx

答案 1 :(得分:0)

其他语言的嵌入式扩展函数不是XSLT的内容模型。

扩展元素和扩展函数是内容模型的一部分,如http://www.w3.org/TR/xslt#extension中所述:它的实现依赖于XSLT处理器如何精确注册这些扩展。

正如@Martin Honnen所说,在XSLT 2.0中,您可以使用XSLT本身声明“样式表函数”。