首页 > 解决方案 > 使用 xslt 语言关闭“if”条件内的 html 标记

问题描述

我希望能够根据某些条件关闭 html 标签:

 <xsl:for-each test="">
 <table>
  <tbody>
 <tr><td></td></tr>
 <xsl:if test="position() mod 35 = 0 ">

        <xsl:text disable-output-escaping="yes"><![CDATA[</tbody>]]></xsl:text>
        <xsl:text disable-output-escaping="yes"><![CDATA[</table>]]></xsl:text>
 </xsl:if>
</xsl:for-each>

在 IE 和 Edge 中,这可以正常工作,但在 Firefox 中则不行:

在此处输入图像描述

标签: htmlxslt

解决方案


XSLT 适用于节点树,而不是标签。您不能将半个节点写入结果树。仅当您的 XSLT 转换器与串行器紧密耦合时,使用 disable-output-escaping 直接编写标签才有效,这严重限制了您的选择。

看起来您正试图将一系列项目分成 35 个一​​组。在 XSLT 1.0 中进行分组很棘手,但有大量关于该主题的文献:只需搜索“XSLT Grouping”即可。对于固定大小的分组,请参阅示例Transforming XML to group fields into columns with XSLT


推荐阅读