<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <File>

      <!-- get all the unique due dates and descriptions -->
      <xsl:variable name="unique-batches" select="/EFTOutgoingFile/EFTRecord"/>

      <xsl:for-each select="$unique-batches">
        <xsl:if test="generate-id(.) =
                      generate-id($unique-batches[dueDate=current()/dueDate and description=current()/description])">

          <Batch>
            <BatchHeader>
              <descriptiveStatement><xsl:value-of select="description"/></descriptiveStatement>
              <dueDate><xsl:value-of select="dueDate"/></dueDate>
            </BatchHeader>

            <xsl:variable name="eftRecords" select="$unique-batches[dueDate=current()/dueDate and description=current()/description]"/>

            <xsl:for-each select="$eftRecords">
              <DetailRecord>
                <amount><xsl:value-of select="amount"/></amount>
              </DetailRecord>
            </xsl:for-each>

            <BatchTrailer>
              <batchEntryCount><xsl:value-of select="count($eftRecords)"/></batchEntryCount>
              <entryDollarTotal><xsl:value-of select="sum($eftRecords/amount)*100"/></entryDollarTotal>
            </BatchTrailer>

          </Batch>

        </xsl:if>
      </xsl:for-each> 

      <FileTrailer>
        <batchCount>HELP</batchCount>
        <detailCount><xsl:value-of select="count(EFTOutgoingFile/EFTRecord)"/></detailCount>
      </FileTrailer>        

    </File>
  </xsl:template>
</xsl:stylesheet>
