标签: xsl-grouping

XSLT分组和子分组

我有以下代码:

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" />

  <xsl:key name="categories" match="Category" use="." />
  <xsl:key name="clients" match="Category" use ="Category/Client" />

  <xsl:template match="/">
    <ul id="red" class="treeview-red">
      <xsl:for-each select="/Promotions/Promotion/Category[  
        generate-id(.) = generate-id(key('categories', .)[1])  
      ]">
        <xsl:variable name="cname" select="." />

        <li>
          <span>
            <xsl:value-of select="$cname" />
          </span>

          <xsl:for-each select="/Promotions/Promotion[Category=$cname]">
            <ul>
              <li>
                <span>
                  <xsl:value-of select="Client" />
                </span>
              </li>
              <ul>
                <li>
                  <span>
                    <xsl:value-of select="Title" />
                  </span>
                </li>
              </ul>
            </ul>
          </xsl:for-each>
        </li>
      </xsl:for-each>

    </ul>
  </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

我的XML:

<Promotions>
  <Promotion>
    <Category>Arts &amp; Entertainment</Category>
    <Client>Client 1</Client>
    <Title>Get your Free 2</Title>
  </Promotion>
  <Promotion> …
Run Code Online (Sandbox Code Playgroud)

xslt xsl-grouping muenchian-grouping

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

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
查看次数

Muenchian Grouping - 节点内的组,而不是整个文档中的组

我正在尝试在我的XSLT中使用Muenchian分组来对匹配的节点进行分组,但我只想在父节点内进行分组,而不是在整个源XML文档中进行分组.

给出XSLT和XML如下(对我的示例代码的长度表示道歉):

XSLT

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> 
 <xsl:output method="html" indent="yes"/>

 <xsl:key name="contacts-by-surname" match="contact" use="surname" />
 <xsl:template match="records">
  <xsl:for-each select="contact[count(. | key('contacts-by-surname', surname)[1]) = 1]">
   <xsl:sort select="surname" />
   <xsl:value-of select="surname" />,<br />
   <xsl:for-each select="key('contacts-by-surname', surname)">
    <xsl:sort select="forename" />
    <xsl:value-of select="forename" /> (<xsl:value-of select="title" />)<br />
   </xsl:for-each>
  </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

XML

<root>
 <records>
  <contact id="0001">
   <title>Mr</title>
   <forename>John</forename>
   <surname>Smith</surname>
  </contact>
  <contact id="0002">
   <title>Dr</title>
   <forename>Amy</forename>
   <surname>Jones</surname>
  </contact>
  <contact id="0003">
   <title>Mrs</title>
   <forename>Mary</forename>
   <surname>Smith</surname>
  </contact>
  <contact id="0004">
   <title>Ms</title>
   <forename>Anne</forename>
   <surname>Jones</surname>
  </contact>
  <contact …
Run Code Online (Sandbox Code Playgroud)

xml xslt xsl-grouping muenchian-grouping

2
推荐指数
1
解决办法
1589
查看次数

标签 统计

xsl-grouping ×3

xslt ×3

muenchian-grouping ×2

xml ×1