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

如何使用XSLT对XML文档分组输出并仅显示唯一标题?

按Subsystem分组并显示唯一标题的XSLT解决方案

针对你提供的XML结构,我们可以用XSLT的<xsl:key>分组技巧来实现按Subsystem聚合,只显示唯一的分组标题,同时列出对应组下的所有输入名称。

先确认补全后的源XML:

<?xml version="1.0" encoding="UTF-8"?>
<Mod>
  <Input1>
    <Name>BackInput</Name>
    <Transform>
      <Subsystem>Transmission</Subsystem>
    </Transform>
  </Input1>
  <Input2>
    <Name>NeutralInput</Name>
    <Transform>
      <Subsystem>Transmission</Subsystem>
    </Transform>
  </Input2>
  <Input3>
    <Name>LightingInput</Name>
    <Transform>
      <Subsystem>Lighting</Subsystem>
    </Transform>
  </Input3>
</Mod>

下面是实现需求的XSLT代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" indent="yes"/>

  <!-- 定义分组规则:按Subsystem的值对所有Input开头的节点分组 -->
  <xsl:key name="subsystem-group" match="Mod/*[starts-with(local-name(), 'Input')]" use="Transform/Subsystem"/>

  <xsl:template match="/Mod">
    <html>
      <body>
        <!-- 筛选出每个分组的第一个节点,确保只输出唯一的Subsystem标题 -->
        <xsl:for-each select="*[starts-with(local-name(), 'Input')][generate-id() = generate-id(key('subsystem-group', Transform/Subsystem)[1])]">
          <h2><xsl:value-of select="Transform/Subsystem"/></h2>
          <!-- 遍历当前分组下的所有Input,列出名称 -->
          <ul>
            <xsl:for-each select="key('subsystem-group', Transform/Subsystem)">
              <li><xsl:value-of select="Name"/></li>
            </xsl:for-each>
          </ul>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

代码逻辑说明:

  • <xsl:key>:创建分组索引,把所有Input节点按所属的Subsystem值归类。
  • generate-id()对比:只保留每个分组的第一个节点,以此实现"唯一标题"的效果。
  • 内层循环:通过索引key取出当前分组下的所有Input节点,逐个输出名称。

最终输出效果:

<html>
  <body>
    <h2>Transmission</h2>
    <ul>
      <li>BackInput</li>
      <li>NeutralInput</li>
    </ul>
    <h2>Lighting</h2>
    <ul>
      <li>LightingInput</li>
    </ul>
  </body>
</html>

如果需要调整输出格式(比如纯文本或自定义XML结构),只需修改<xsl:output>的method属性,替换对应的输出标签即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:45:48