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

如何在XSLT处理中排除指定节点?新手技术求助

解决XSLT处理时忽略指定节点的问题

嘿,作为XSLT新手遇到这种默认输出的问题太正常了!你的需求是处理时忽略<b>节点,不让结果末尾出现123,核心问题在于XSLT的内置模板行为——当你的样式表里没有匹配某个节点的模板时,它会自动用内置模板处理,其中文本节点会直接输出到结果里。所以<b>123</b>里的文本就被默认输出了。

给你两种简单的解决方案,按需选就行:

方案1:专门忽略<b>节点

直接在你的XSLT里加一个匹配<b>节点的空模板,这样它就不会输出任何内容了:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="hello-world">
    <HTML><HEAD><TITLE></TITLE></HEAD><BODY><H1>
      <xsl:value-of select="greeting"/>
    </H1>
    <xsl:apply-templates select="greeter"/>
    </BODY></HTML>
  </xsl:template>
  
  <xsl:template match="greeter">
    <DIV>from <I><xsl:value-of select="."/></I></DIV>
  </xsl:template>
  
  <!-- 新增:匹配<b>节点,不输出任何内容 -->
  <xsl:template match="b"/>
</xsl:stylesheet>

方案2:全局禁止默认文本输出(更通用)

如果以后还有其他不需要输出的文本节点,这个方法更省心。添加一个匹配所有文本节点的空模板,这样所有没被你主动用<xsl:value-of>提取的文本都不会被输出:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="hello-world">
    <HTML><HEAD><TITLE></TITLE></HEAD><BODY><H1>
      <xsl:value-of select="greeting"/>
    </H1>
    <xsl:apply-templates select="greeter"/>
    </BODY></HTML>
  </xsl:template>
  
  <xsl:template match="greeter">
    <DIV>from <I><xsl:value-of select="."/></I></DIV>
  </xsl:template>
  
  <!-- 新增:匹配所有文本节点,禁用默认输出 -->
  <xsl:template match="text()"/>
</xsl:stylesheet>

两种方案都能解决你的问题,方案1针对性强,只忽略<b>;方案2更通用,适合后续可能有更多无关节点的场景~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:17:35