我写,我想在Linux和Windows使用一些XLST文件。 在这个文件中我使用的在MSXML和xsltproc的不同的命名空间中声明节点设置功能(“瓮:架构-微软COM:XSLT”和“ http://exslt.org/common ”分别)。 有没有使用节点集的任何平台无关的方式?
Answer 1:
您可以使用函数功能有效(),以确定哪些功能你应该使用:
<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>
你甚至可以把这个包逻辑命名模板,并与节点集作为参数调用它。
Answer 2:
是的,有一个很好的和通用的解决方案 。
EXSLT的功能共同点:节点集()可以实现为内嵌的JavaScript功能,因此可与任何支持JavaScript的浏览器(几乎所有的主流浏览器都无例外)。
最早是由发现这种技术朱利安雷什克后他出版它的XSL-名单 ,被公布大卫·卡莱尔 。 在大卫·卡莱尔的博客也有一个测试页面的链接显示,如果通用:节点集()函数,从而与您所选择的浏览器实现的作品。
总结:
- 首先去这里并宣读了解释。
- 然后尝试测试页。 具体地,验证它与IE(与MSXML装置)
- 最后,使用的代码。
请欣赏!
Answer 3:
EXSLT是“应该是”独立于平台的一套XSLT扩展,但也仅此而已各种XSLT处理器选择实现它们。
有一些证据是MSXML实际上并支持exsl:节点集(),但我不知道。
有一个老的文章讨论的实施 EXSLT对MSXML的顶部。
否则,我认为功能有效()是你的朋友:)
Answer 4:
Firefox 3的实现节点集合(如的EXSLT 2.0名称空间改进的一部分)在它的客户端XSLT处理。
也许不太回答你要找的人 - 但它可能是,这取决于你的问题的情况下。 ;-)
Answer 5:
如果没有使用节点设置窗口的MSXML实现你不需经过使用EXSLT一个无处不在,由包括来自下载的实行特殊原因http://exslt.org与你的样式表, EXSLT HOWTO介绍了所需的步骤。 您可以使用“扩展名的命名空间”方式或“命名的模板”的方式。
文章来源: How to use node-set function in a platform-independent way?