小编Dou*_*oug的帖子

XSLT:分组和排序......怎么样?

我有一个XML文件,如下所示......

    <states>
 <state>
  <name>North Carolina</name>
  <city>Charlotte</city>
 </state>
 <state>
  <name>Alaska</name>
  <city>Fairbanks</city>
 </state>
 <state>
  <name>Virginia</name>
  <city>Leesburg</city>
 </state>
 <state>
  <name>Alaska</name>
  <city>Coldfoot</city>
 </state>
 <state>
  <name>North Carolina</name>
  <city>Harrisburg</city>
 </state>
 <state>
  <name>Virginia</name>
  <city>Ashburn</city>
 </state>  
</states>
Run Code Online (Sandbox Code Playgroud)

我需要生成一份列出每个州的报告,按照每个城市的字母顺序排列......例如..

Alaska - Fairbanks, Coldfoot
North Carolina - Charlotte, Harrisburg
Virginia - Leesburg, Ashburn
Run Code Online (Sandbox Code Playgroud)

(城市不必按照alpha顺序排列,只需要按州规定)

我尝试通过对状态/状态执行for-each,按名称对其进行排序并对其进行处理来解决此问题.像这样....

    <xsl:for-each select="states/state">
       <xsl:sort select="name" data-type="text" order="ascending"/>
       <xsl:value-of select="name"/>-<xsl:value-of select="city"/>
    </xsl:for-each>   
Run Code Online (Sandbox Code Playgroud)

这给了我......

 Alaska - Fairbanks
 Alaska - Coldfoot
 North Carolina - Charlotte
 North Carolina - Harrisburg
 Virginia - Leesburg
 Virginia - Ashburn
Run Code Online (Sandbox Code Playgroud)

排序工作,现在我想分组.我唯一能想到的就是比较之前的状态,因为它已经排序,它应该识别状态值是否没有改变.像这样...

<xsl:for-each select="states/state">
             <xsl:sort …
Run Code Online (Sandbox Code Playgroud)

xslt xsl-grouping

3
推荐指数
1
解决办法
5703
查看次数

标签 统计

xsl-grouping ×1

xslt ×1