XSLT总和分组表格单元格

时间:2016-10-03 08:33:44

标签: xslt

也许你可以帮助我。 我不知道如何总结一些桌子的电池"年份"它们按"标题"分组。我需要将sum单元格合并为第一个单元格" Title"。

我使用了sum(),但它重新开始。

XMl代码:

<?xml version="1.0" encoding="UTF-8"?>
<LIST>
<Row>
    <TITLE>Empire Burlesque</TITLE>
    <YEAR>2001</YEAR>
    <artist>Bob Dylan</artist>
    <artist1>Bob Dylan1</artist1>
</Row>
<Row>
    <TITLE>Empire Burlesque</TITLE>
    <YEAR>2002</YEAR>
    <artist>Bob Dylan</artist>
    <artist1>Bob Dylanas</artist1>
</Row>
<Row>
    <TITLE>Empire Burlesque</TITLE>
    <YEAR>2003</YEAR>
    <artist>Bonnie Tyler</artist>
    <artist1>Bob Dylan</artist1>
</Row>
<Row>
    <TITLE>Empire Burlesque</TITLE>
    <YEAR>2004</YEAR>
    <artist>Bonnie Tyler</artist>
    <artist1>Bob Dylanas</artist1>
</Row>
<Row>
    <TITLE>Empire Burlesque1</TITLE>
    <YEAR>2005</YEAR>
    <artist>Bonnie Tyler</artist>
    <artist1>Bob Dylan</artist1>
</Row>
<Row>
    <TITLE>Empire Burlesque1</TITLE>
    <YEAR>2006</YEAR>
    <artist>Bonnie Tyler</artist>
    <artist1>Bob Dylanas</artist1>
</Row>
</LIST>

XSLT代码:

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

    <xsl:key name="cds" match="Row" use="TITLE" />

    <xsl:template match="/">
    <html>
    <body>
    <h2>My CD Collection</h2>
    <table border="1">
    <tr bgcolor="#9acd32">
      <th>Title</th>
      <th>Year</th>
      <th>Artist</th>
      <th>Artist1</th>
    </tr> 
<xsl:for-each select="LIST/Row[generate-id() = generate-id(key('cds', TITLE)[1])]" >   
    <tr>
  <td>
      <xsl:if test="key('cds', TITLE)[1]">
          <xsl:attribute name="rowspan">
              <xsl:value-of select="count(key('cds', TITLE))" />
          </xsl:attribute>
      </xsl:if>
      <xsl:value-of select="TITLE"/>
  </td>     
  <td>
     <xsl:value-of select="YEAR"/>
  </td>
    <td>
      <xsl:value-of select="artist"/>
    </td>
  <td>      
      <xsl:value-of select="artist1"/>
  </td>
</tr>    
<xsl:for-each select="key('cds', TITLE)[position() > 1]">
<tr>
  <td>
     <xsl:value-of select="YEAR"/>
  </td>
    <td>
      <xsl:value-of select="artist"/>
    </td>
    <td>
      <xsl:value-of select="artist1"/>
    </td>
</tr>    
</xsl:for-each>
  </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

现在的结果是:

enter image description here

1 个答案:

答案 0 :(得分:1)

在for-each中尝试sum(key('cds', TITLE)/YEAR)

相关问题