如何使用node-set()函数编写XSL 1.0样式表,该函数将同时在MSXML和libxml上运行
我有一个XSLT1.0样式表,它使用PHP(libxml)附带的XSL处理器运行。我希望在Microsoft XSL处理器MSXML 6.0(msxml6.dll)上运行相同的样式表,理想情况下,使相同的样式表可以在任何一个处理器上运行 不幸的是,目前我需要两个样式表——每个处理器一个 此代码段调用PHP处理器上的node-set()函数如何使用node-set()函数编写XSL 1.0样式表,该函数将同时在MSXML和libxml上运行,msxml,xslt-1.0,libxml2,Msxml,Xslt 1.0,Libxml2,我有一个XSLT1.0样式表,它使用PHP(libxml)附带的XSL处理器运行。我希望在Microsoft XSL处理器MSXML 6.0(msxml6.dll)上运行相同的样式表,理想情况下,使相同的样式表可以在任何一个处理器上运行 不幸的是,目前我需要两个样式表——每个处理器一个 此代码段调用PHP处理器上的node-set()函数 <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transfo
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl">
<xsl:template match="root">
<xsl:variable name="rtf">
<a>hello</a><b>world</b>
</xsl:variable>
<xsl:variable name="ns" select="exsl:node-set($rtf)"/>
<xsl:copy-of select="$ns/b"/>
</xsl:template>
</xsl:transform>
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
extension-element-prefixes="msxsl">
<xsl:template match="root">
<xsl:variable name="rtf">
<a>hello</a><b>world</b>
</xsl:variable>
<xsl:variable name="ns" select="msxsl:node-set($rtf)"/>
<xsl:copy-of select="$ns/b"/>
</xsl:template>
</xsl:transform>
地狱世界
此代码段调用Microsoft处理器上的node-set()函数
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl">
<xsl:template match="root">
<xsl:variable name="rtf">
<a>hello</a><b>world</b>
</xsl:variable>
<xsl:variable name="ns" select="exsl:node-set($rtf)"/>
<xsl:copy-of select="$ns/b"/>
</xsl:template>
</xsl:transform>
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
extension-element-prefixes="msxsl">
<xsl:template match="root">
<xsl:variable name="rtf">
<a>hello</a><b>world</b>
</xsl:variable>
<xsl:variable name="ns" select="msxsl:node-set($rtf)"/>
<xsl:copy-of select="$ns/b"/>
</xsl:template>
</xsl:transform>
地狱世界
如果输入文件是
<root/>
两种样式表的结果都是:
<b>world</b>
世界
我想要一个可以在PHP处理器和Microsoft处理器上运行不变的样式表
虽然我的实际样式表大约有400行长,并且node-set()函数在四个位置使用,但我希望上面的示例能够说明问题。在libxml和msxsl上检查,在这两种情况下都有效 问候 迈克
地狱世界