您必须了解,虽然某些 XSLT 处理器(如 Microsoft 的 MSXML)支持使用在 XSLT 内部的 JScript 中实现的扩展功能,但您只需访问 JScript 引擎实现的对象和方法。alert
不是 JScript 函数,它是在浏览器内部暴露给 JScript 的函数。
因此,在 XSLT 的 JScript 扩展函数中没有可用的功能,您拥有http://msdn.microsoft.com/en-us/library/hbxc2t98%28v=vs.84%29.aspxalert
中记录的对象、函数和方法。
举个例子,http://home.arcor.de/martin.honnen/xslt/test2013072701.xml是一个 XML 文档,它引用了一个 XSLT 1.0 样式表,Mozilla 使用一些 EXSLT 扩展功能,而 IE 使用扩展功能在 JScript 中实现。
样式表http://home.arcor.de/martin.honnen/xslt/test2013072701.xsl如下:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:user="http://example.com/user"
xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:regexp="http://exslt.org/regular-expressions"
extension-element-prefixes="ms"
exclude-result-prefixes="user ms regexp"
version="1.0">
<xsl:output method="html" version="4.01" encoding="UTF-8"/>
<ms:script language="JScript" implements-prefix="user">
function simfunc(msg)
{
return msg.replace(/^Fa./, '');
}
</ms:script>
<xsl:template match="/">
<html lang="de">
<head>
<title>Beispiel</title>
</head>
<body>
<h1>Beispiel</h1>
<xsl:for-each select="//artikel">
<div>
<p id="{generate-id()}">
<xsl:choose>
<xsl:when test="function-available('regexp:replace')">
<xsl:value-of select="regexp:replace(lieferant, '^Fa\.', '', '')"/>
</xsl:when>
<xsl:when test="function-available('user:simfunc')">
<xsl:value-of select="user:simfunc(string(lieferant))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="lieferant"/>
</xsl:otherwise>
</xsl:choose>
</p>
</div>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>