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

如何通过XSLT为已有filter类的div标签添加新类(避免覆盖)

解决方案:保留原有类并添加新类

我懂你的问题啦——你想给原本带有filter类的<div>同时加上从Category节点获取的新类,但当前的写法会把原来的filter类覆盖掉,只留下新类,对吧?

问题出在哪?

你当前的代码里,先给<div>设置了class="filter",紧接着又用<xsl:attribute name="class">重新赋值这个属性,这会完全覆盖掉之前的class值,所以原本的filter类就丢失了,哪怕你在<xsl:if>里写了filter,也只有当条件满足时才会输出,还容易出现类名连在一起(没空格)的问题。

最简洁的解决方法:使用属性值模板

XSLT的属性值模板能帮你轻松实现这个需求,直接在class属性里插入Category的值即可,自动和原有类用空格分隔:

<div class="filter {Category}">
  <!-- 这里放div的内容 -->
</div>

这个写法的好处:

  • 自动保留filter类,同时添加Category节点的内容作为新类
  • 如果Category为空,class属性只会是filter,不会出现多余的空格

另一种写法:显式拼接类名(适合复杂场景)

如果你需要更精细的控制(比如处理Category可能为空或有多余空格的情况),可以用concat结合normalize-space函数:

<div>
  <xsl:attribute name="class">
    <xsl:value-of select="normalize-space(concat('filter ', Category))"/>
  </xsl:attribute>
  <!-- 这里放div的内容 -->
</div>

normalize-space会自动去掉字符串首尾的空格,同时把中间的多个空格换成单个,避免出现无效的空类名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:39:17