在这个文件中,我使用了在MSXML和xsltproc的不同名称空间中声明的节点集函数(分别为“urn:schemas-microsoft-com:xslt”和"http://exslt.org/common“)。
发布于 2008-09-18 13:26:48
您可以使用function-available()函数来确定应该使用哪个函数:
<xsl:choose>
<xsl:when test="function-available('exslt:node-set')">
<xsl:apply-templates select="exslt:node-set($nodelist)" />
</xsl:when>
<xsl:when test="function-available('msxsl:node-set')">
<xsl:apply-templates select="msxsl:node-set($nodelist)" />
</xsl:when>
<!-- etc -->
</xsl:choose>您甚至可以将此逻辑包装在命名模板中,并使用节点集作为参数来调用它。
发布于 2008-12-01 03:45:41
是的,有一个好的通用的解决方案。
的函数可以实现为内联Javascript函数,因此可用于任何支持Javascript的浏览器(几乎所有主要浏览器都无一例外)。
这项技术最早是由发现的,在他将其发布到上之后,将其公之于众。在上,还有一个指向测试页面的链接,该页面显示这样实现的公共:node-set()函数是否适用于您选择的浏览器。
总结一下:
首先转到并阅读explanation.
尽情享受吧!
发布于 2008-09-18 21:58:35
Exslt“应该是”一组独立于平台的xslt扩展,但前提是各种xslt处理器都选择实现它们。
确实有some evidence支持exsl:node-set(),但我不确定。
在MSXML之上有一个讨论exslt的an implementation的old article。
否则,我认为function-available()是您的朋友:)
https://stackoverflow.com/questions/92076
复制相似问题