Xslt 替换<;xsl:eval>;及<;xsl:script>;在XSL中

Xslt 替换<;xsl:eval>;及<;xsl:script>;在XSL中,xslt,Xslt,我正在尝试修改旧版本的xsl。我遇到以下情况: <xsl:eval>FormatAccount(this)</xsl:eval> <xsl:script> function FormatAccount(e) { // function details } </xsl:script> FormatAccount(此) 功能设置帐户(e){ //功能详细信息 } 我试图使用调用FormatAccount()javas

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

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

<xsl:script>
    function FormatAccount(e) {
       // function details
    }
</xsl:script>
FormatAccount(此)
功能设置帐户(e){
//功能详细信息
}
我试图使用
调用
FormatAccount()
javascript函数,该函数是用
编写的


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

最新标准是XSLT 2.0,它没有任何工具可以在Javascript中定义函数,但是它允许您使用XSLT本身定义函数:。 XSLT2.0受到诸如Saxon 9、AltovaXML工具或XQSharp等XSLT2.0处理器的支持

如果要使用Javascript定义扩展函数,我们需要知道使用哪种XSLT处理器,在我提到的三种XSLT2.0处理器中,我认为只有AltovaXML工具允许这样做(http://manual.altova.com/AltovaXML/altovaxmlcommunity/index.html?xextmsxsl.htm),而且,我认为,允许更轻松地迁移为Microsoft MSXML编写的XSLT 1.0样式表


如果您想使用XSLT 1.0处理器,那么在特定的编程语言(如Javascript)中定义扩展函数也取决于您使用的处理器,对于MSXML,有一个
msxsl:script
元素:。

最新的标准是XSLT 2.0,它没有任何在Javascript中定义函数的功能,但是,它允许您使用XSLT本身定义函数:。 XSLT2.0受到诸如Saxon 9、AltovaXML工具或XQSharp等XSLT2.0处理器的支持

如果要使用Javascript定义扩展函数,我们需要知道使用哪种XSLT处理器,在我提到的三种XSLT2.0处理器中,我认为只有AltovaXML工具允许这样做(http://manual.altova.com/AltovaXML/altovaxmlcommunity/index.html?xextmsxsl.htm),而且,我认为,允许更轻松地迁移为Microsoft MSXML编写的XSLT 1.0样式表


如果您想使用XSLT 1.0处理器,那么在特定编程语言(如Javascript)中定义扩展函数也取决于您使用的处理器,对于MSXML,有一个
msxsl:script
元素:。

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

扩展元素和扩展函数是内容模型的一部分,如中所述:它的实现取决于XSLT处理器如何准确注册这些扩展


正如@Martin Honnen的回答所指出的,在XSLT 2.0中,可以用XSLT本身声明“样式表函数”。

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

扩展元素和扩展函数是内容模型的一部分,如中所述:它的实现取决于XSLT处理器如何准确注册这些扩展


正如@Martin Honnen的回答所指出的,在XSLT 2.0中,您可以用XSLT本身声明“样式表函数”。

对于输入样本和所需的输出,这只能用XSLT来完成。您描述的语言根本不是XSLT。没有任何版本的W3C规范指定
指令。上述注释不正确。有一个工作草案,其中包括输入样本和所需的输出。这只能用XSLT完成。您描述的语言根本不是XSLT。没有任何版本的W3C规范指定
指令。上述注释不正确。有一个工作草案包含相同的@Alejandro:any
不是扩展函数。这是一个本机xslt函数。@Dimitre:你说得对,规范中的正确名称是“样式表函数”。@Alejandro:any
不是扩展函数。这是一个本机xslt函数。@Dimitre:你说得对,规范中的正确名称是“样式表函数”。