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

为何我的XSL模板会重复渲染/生成两次?

排查XSL模板重复生成两次的常见思路

兄弟我太懂这种「看起来简单实则卡半天」的崩溃了!首次碰XSL就栽在模板重复上,确实够闹心的。结合你说的只需要保留<div class="columnDiv">里的那个实例,我给你列几个最常见的排查方向,你可以逐一试试:

  • 检查模板匹配规则的范围:很多新手容易犯的错是模板的match路径太宽泛,比如用了match="*"或者同时匹配了父节点和子节点,导致XSLT处理器多次触发同一个模板。你可以先看看重复生成的模板对应的<xsl:template>的match属性是不是覆盖了多个节点,或者有没有其他模板间接调用了它。
  • 排查默认模板的干扰:XSLT自带默认模板,会自动遍历所有节点并输出文本内容。如果你的模板没有明确覆盖默认行为,可能会导致某些节点被默认模板处理后,又被自定义模板再处理一次——比如XML里的换行、空格这类多余文本节点,都可能触发额外输出。你可以试试在样式表开头加上一个空的默认模板屏蔽这种干扰:
<xsl:template match="text()|@*"/>
  • 核对模板的调用逻辑:你是不是同时用了<xsl:apply-templates>和<xsl:call-template>重复调用了同一个模板?或者<xsl:apply-templates>的select属性选中了多个符合条件的节点,导致模板被多次实例化?
  • 匹配XML结构与模板对应关系:把你提供的XML片段和模板代码对应起来看,是不是有两个不同的节点都匹配到了这个模板?比如XML里有两个同类型的子节点,而你的模板刚好匹配这个类型,自然会生成两次。

另外,要是能再补充上你的XSL样式表代码片段(尤其是那个重复生成的模板部分),会更容易精准定位问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:47:29