我正在尝试修改旧版本的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>`.
如何按照最新标准执行此操作????
答案 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本身声明“样式表函数”。