如何使用节点集功能与平台无关的方式吗?如何使用节点集功能与平台无关的方式吗?(How to use

2019-05-12 11:12发布

我写,我想在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-名单 ,被公布大卫·卡莱尔 。 在大卫·卡莱尔的博客也有一个测试页面的链接显示,如果通用:节点集()函数,从而与您所选择的浏览器实现的作品。

总结:

  1. 首先去这里并宣读了解释。
  2. 然后尝试测试页。 具体地,验证它与IE(与MSXML装置)
  3. 最后,使用的代码。

请欣赏!



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?