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

如何将XSL转换中的<i></i>改写为<i />?附样式表示例

把空<i>标签改成自闭合形式的解决方案

没问题!针对你的需求,我整理了两种处理方式,看你是静态写死的标签还是动态生成的:

静态固定标签:直接改写

如果你的<i>标签是像例子里这样固定的空标签,最简单的方法就是直接把闭合的</i>删掉,写成自闭合的<i />就行:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="html" version="4.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/TestPage" xml:space="preserve" >
    <ul>
      <li class="first complete-tab">
        <i class="fa fa-check-circle"/>Step 1
      </li>
      <li class="active">
        <i class="fa fa-pencil"/>Step 2
      </li>
      <li class="last">...</li>
    </ul>
  </xsl:template>
</xsl:stylesheet>

动态生成的空<i>标签:两种进阶方法

如果这些<i>标签是根据数据或条件动态生成的空元素,那可以用下面两种方式:

方式1:用<xsl:element>生成

通过<xsl:element>创建元素,当没有子节点时,处理器会自动输出自闭合标签(如果输出方法是XML风格的话):

<!-- 代替原来的<i class="fa fa-check-circle"></i> -->
<xsl:element name="i">
  <xsl:attribute name="class">fa fa-check-circle</xsl:attribute>
</xsl:element>

方式2:调整输出方法为XML

把<xsl:output>的method改成xml,这样所有空元素都会被处理成自闭合形式:

<xsl:output method="xml" version="4.0" encoding="UTF-8" indent="yes"/>

⚠️ 注意:这种方式会让整个输出变成XML风格的HTML,所有标签都会严格闭合,可能会影响一些HTML4的兼容性,你需要根据实际场景判断是否适用。

小补充:其实HTML4规范里并不推荐自闭合标签(这是XHTML的写法),但如果你的场景确实需要这种格式,上面的方法都能满足要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:23:36