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

使用XSLT转换XML输出HTML表格仅返回首条数据该如何解决

问题原因

你的XSLT脚本存在3个核心问题:

  • 重复定义了2个匹配根节点/的模板,XSLT处理器仅会生效最后定义的那个,第一个模板里的<xsl:apply-templates/>逻辑完全没有执行
  • <xsl:value-of select="//topicref/@href"/>的写法匹配到的是所有topicref节点的href属性集合,但XSLT 1.0中<xsl:value-of>默认仅会取节点集合中第一个节点的文本值,不会自动遍历所有匹配节点
  • 没有对所有topicref节点做遍历逻辑,所以仅生成了一行表格行<tr>

修正后的XSLT脚本

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html> 
            <body>
                <h2></h2>
                <table border="1">
                    <!-- 遍历所有匹配的topicref节点 -->
                    <xsl:for-each select="//topicref">
                        <tr>
                            <!-- 取当前遍历节点的href属性 -->
                            <td><xsl:value-of select="@href"/></td>
                            <!-- 取当前遍历节点下topicsubject子节点的keyref属性 -->
                            <td><xsl:value-of select="topicsubject/@keyref"/></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

修正后的脚本删除了冗余的根模板,增加了<xsl:for-each>遍历所有topicref节点,循环内部使用相对路径读取当前节点的属性值,即可输出所有匹配的数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:45:05