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

求助:如何使用XSLT将指定XML转换为目标HTML表格格式

解决方案:将XML转换为指定格式的HTML表格

我来帮你搞定这个XSLT转换需求!要实现把你提供的XML转换成指定的HTML表格,核心是先对相同的lineType值进行分组,再按顺序生成对应的Banner行和表格内容。

输入XML

<Items> 
  <item><lineType>STX</lineType></item> 
  <item><lineType>STZ</lineType></item> 
  <item><lineType>STY</lineType></item> 
  <item><lineType>STY</lineType></item> 
  <item><lineType>STZ</lineType></item> 
  <item><lineType>STX</lineType></item> 
</Items>

对应的XSLT代码

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" indent="yes"/>
  
  <!-- 定义分组键,用于按lineType聚合item -->
  <xsl:key name="lineTypeGroup" match="item" use="lineType"/>
  
  <xsl:template match="/Items">
    <html>
      <body>
        <table border="1">
          <!-- 遍历所有唯一的lineType分组 -->
          <xsl:for-each select="item[generate-id() = generate-id(key('lineTypeGroup', lineType)[1])]">
            <!-- 按STX→STY→STZ的固定顺序排序分组 -->
            <xsl:sort select="
              choose(
                lineType='STX', 1,
                lineType='STY', 2,
                lineType='STZ', 3
              )"/>
            <!-- 输出Banner行,跨3列 -->
            <tr>
              <td colspan="3">Banner - <xsl:value-of select="position()"/></td>
            </tr>
            <!-- 遍历当前分组下的所有item,输出对应行 -->
            <xsl:for-each select="key('lineTypeGroup', lineType)">
              <tr>
                <td></td>
                <td><xsl:value-of select="lineType"/></td>
                <td><xsl:value-of select="lineType"/></td>
              </tr>
            </xsl:for-each>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

关键逻辑说明

  • 分组实现:通过<xsl:key>定义分组规则,再用generate-id()筛选出每个lineType分组的第一个元素,以此获取所有唯一的分组项。
  • 顺序控制:用<xsl:sort>配合choose函数,强制让STX、STY、STZ按指定顺序排列,保证Banner的顺序符合预期。
  • 表格结构:每个分组先输出一行跨列的Banner,再遍历分组内的所有item,输出包含两个lineType值的行。

转换后的效果

处理后生成的HTML表格渲染后,会呈现你期望的格式:

Banner - 1
STX STX
STX STX
Banner - 2
STY STY
STY STY
Banner - 3
STZ STZ
STZ STZ

内容的提问来源于stack exchange,提问作者ramesh.metta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:44:34