如何将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
相关产品推荐
相关产品推荐

