You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT 1.0中如何对变量内字面指定节点应用模板?

解决XSLT 1.0中结果树片段转节点列表及DSL展开问题

方法一:用EXSLT扩展函数转换结果树片段

XSLT 1.0里,多数主流处理器(比如xsltproc依赖的libxslt)支持EXSLT的exsl:node-set()函数,可直接将结果树片段转为节点列表。操作步骤如下:

  1. 在XSLT根元素中声明EXSLT命名空间:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:exsl="http://exslt.org/common"
                extension-element-prefixes="exsl">
  1. 转换变量后再应用模板:
<xsl:variable name="tmp">
  <xsl:text>hi: </xsl:text>
  <myelm />
</xsl:variable>

<xsl:apply-templates select="exsl:node-set($tmp)/node()" />

这样就能正常触发你编写的<myelm />匹配模板,输出hi: MYELM。

方法二:绕开结果树片段,直接通过模板逻辑实现

如果不想依赖扩展函数,可调整实现逻辑,避免用变量存储混合内容:

  • 直接在模板中编写输出逻辑,把静态文本和待处理节点放在模板内,而非变量中:
<xsl:template name="generate-dsl-content">
  <xsl:text>hi: </xsl:text>
  <xsl:apply-templates select="document('')//myelm" />
</xsl:template>

若<myelm />是动态生成的,也可通过模板参数传递节点,避开结果树片段的限制。

内容的提问来源于stack exchange,提问作者Jason Siefken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:54:57