html - 使用 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 中则不行:
解决方案
XSLT 适用于节点树,而不是标签。您不能将半个节点写入结果树。仅当您的 XSLT 转换器与串行器紧密耦合时,使用 disable-output-escaping 直接编写标签才有效,这严重限制了您的选择。
看起来您正试图将一系列项目分成 35 个一组。在 XSLT 1.0 中进行分组很棘手,但有大量关于该主题的文献:只需搜索“XSLT Grouping”即可。对于固定大小的分组,请参阅示例Transforming XML to group fields into columns with XSLT。
推荐阅读
- angular - '@types/chartjs-plugin-waterfall@latest' 不在 npm 注册表中
- c# - 如何使用“z”模式解析 DateTimeOffset?
- android - 在Kotlin中以有效的方式查找内部列表和外部列表的最后出现索引值
- cookies - 使用 Cookie 进行 Blazor 服务器端身份验证
- python - 如何防止标签在图表的 Edge() 中重叠箭头 - 类
- c++ - 如何使“Windows上的clang”使用LLVM libcxx而不是MSVC C++库?
- reactjs - 待办事项列表单击时将状态反转为false
- curl - 如何以编程方式从 Gitlab LFS 检索文件?
- python - Matmul 错误:输入操作数 1 的核心维度 0 不匹配
- vue.js - Vuex 命名空间存储设置两种状态