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

使用xsl:sort、xsl:for-each实现XML两级排序:乐队+专辑按年份排序

修正后的完整XSLT代码
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/bands">
    <bands>
      <xsl:for-each select="band">
        <xsl:sort select="@bandname" order="ascending" />
        <band>
          <!-- 复制当前band的所有原有属性 -->
          <xsl:copy-of select="@*"/>
          <!-- 对album按year属性升序排序 -->
          <xsl:for-each select="album">
            <xsl:sort select="@year" data-type="number" order="ascending"/>
            <xsl:copy-of select="."/>
          </xsl:for-each>
        </band>
      </xsl:for-each>
    </bands>
  </xsl:template>
</xsl:stylesheet>
修改说明
  • 原代码使用xsl:copy-of直接复制整个band节点,无法调整内部album的顺序,因此改为手动构造band节点结构
  • 新增album遍历逻辑,添加排序规则,显式指定data-type="number"避免年份按字符串排序出现逻辑错误
  • 手动补充根节点bands,保证输出XML格式合法
  • 如果band节点下存在album之外的其他子节点,可在album遍历逻辑后添加<xsl:copy-of select="*[not(local-name()='album')]"保留原有内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:06:07