XSLT 3 级属性分组 [英] XSLT 3-level grouping on attributes
本文介绍了XSLT 3 级属性分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
好的,我知道已经询问并回答了关于此的变体;我已经读了一整天,但我仍然被困住了.所以,这里是:
我需要从一些 XML 中创建一个 HTML 摘要列表.
鉴于此 XML:
<计划><Plan AreaID="1" UnitID="83"><Part ID="9122" Name="foo"/><Part ID="9126" Name="bar"/></计划><Plan AreaID="1" UnitID="86"><Part ID="8650" Name="baz"/></计划><Plan AreaID="2" UnitID="26"><Part ID="215" Name="quux"/></计划><Plan AreaID="1" UnitID="95"><Part ID="7350" Name="meh"/></计划></计划></Root>
我需要发射:
<li>区域1:<ol><!-- 区域 1 中的单位--><li>单元83:<ol><li>第 9122 部分 (foo)</li><li>第 9126 部分 (bar)</li></ol><li>单元86:<ol><li>第 8650 部分 (baz)</li></ol><li>单元95:<ol><li>第7350部分(meh)</li></ol></ol><!--/区域 1 中的单位--><li>区域2:<ol><!-- 区域 2 中的单位--><li>单元26:<ol><li>第 215 部分(quux)</li></ol></ol><!--/区域 2 中的单位--></ol>
我有外部分组工作——我获得了区域 1 和 2 的顶级列表元素.但我无法获得区域中的单位序列——我要么没有输出,要么重复相同的值.我什至还没有深入到 Part 级别:-(
我一直在研究这样的样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"<xsl:output method="html" indent="yes"/><xsl:key name="kAreaID" match="Plan" use="@AreaID"/><xsl:key name="kUnitID" match="Plan" use="@UnitID"/><xsl:template match="/Root/Plans"><html><head><title>测试分组</title></head><身体><ol><xsl:for-each select="./Plan[generate-id(.) =生成 id( key( 'kAreaID', @AreaID )[1] )]"><xsl:sort order="升序" select="./@AreaID"/><li>区域 <xsl:value-of select="@AreaID"/>:<ol><xsl:for-each select="key('kUnitID', @UnitID)"><li>Unit <xsl:value-of select="@UnitID"/>:<ol><li>(零件放在这里...)</li></ol></xsl:for-each></ol></xsl:for-each></ol>