提问者:小点点

XSLT求和分组表单元格


也许你能帮我。我不知道如何对按“标题”分组的一些表格的单元格“年份”进行求和。我需要那个求和单元格也将合并为第一个单元格“标题”。

我使用sum(),但它返回0。

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>

现在的结果是:


共1个答案

匿名用户

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