如何在xsl中调用外部javascript函数?

4

我有一个JS文件,其中一个函数返回值。

我想将此值与XSL文件中的XML值进行比较。

我的JavaScript代码是:

function getUser()
{
   return user;
}

在xsl文件中,我想检查条件中的这个值。
我该怎么做?

这不是一个XSLT问题,因为调用JS函数的支持不是XSLT的特性。因此,我已经重新标记为“xsltprocessor”。另外需要注意的是,在XSLT中调用扩展函数很少是合理的,应该避免作为规则。例如,许多在XSLT静态/动态上下文中不可用的所需数据项可以作为转换的参数提供。 - Dimitre Novatchev
2个回答

4

虽然这不是标准做法,但你可以从XSLT中执行JavaScript函数

使用MSXML,你可以使用msxsl:script 扩展元素实现。

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:msxsl="urn:schemas-microsoft-com:xslt"
      xmlns:user="http://mycompany.com/mynamespace">

<msxsl:script language="JScript" implements-prefix="user">
  function getUser()
  {
   return user;
  }

</msxsl:script>

<xsl:template match="/">
   <xsl:value-of select="user:getUser(.)"/>
</xsl:template>

</xsl:stylesheet>

我认为你应该提醒OP,这种非标准扩展函数实现会导致每次调用函数时都加载脚本引擎。 - user357812
很遗憾,这种方式不会在外部文件中调用函数; 它是内部的,在.xsl文件中。 - bluish

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接