gpt4 book ai didi

msxml - 如何使用将在 MSXML 和 libxml 上运行的 node-set() 函数编写 XSL 1.0 样式表

转载 作者:行者123 更新时间:2023-12-01 07:34:50 26 4
gpt4 key购买 nike

我有一个使用 PHP (libxml) 附带的 XSL 处理器运行的 XSLT 1.0 样式表。我想让相同的样式表在 Microsoft XSL 处理器 MSXML 6.0 (msxml6.dll) 上运行,理想情况下,相同的样式表可以在任一处理器上运行。

不幸的是,目前我需要两个样式表 - 每个处理器一个。

此代码段调用 PHP 处理器上的 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>

此代码段调用 Microsoft 处理器上的 node-set() 函数;

<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,在这两种情况下都有效。

问候

迈克。

<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
xmlns:func="http://exslt.org/functions"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
extension-element-prefixes="exsl func msxsl"
>

<func:function name="msxsl:node-set">
<xsl:param name="node"/>
<func:result select="exsl:node-set($node)"/>
</func:function>

<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>

关于msxml - 如何使用将在 MSXML 和 libxml 上运行的 node-set() 函数编写 XSL 1.0 样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6252371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com