2013-03-14 73 views
0

我有一組項目,使用按鍵的muenchian方法進行分組。這很好,我的問題是,如何獲得分組後的記錄數並在郵件頭中使用數字?分組後的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="xml" indent="yes"/> 
    <xsl:key name="groups" match="RECORD" use="VALUE"/> 
    <xsl:template match="Test"> 
    <Header> 
     <NoOfRecords> 
     <HOW TO GET THE NO OF RECORDS= HERE?/> 
     </NoOfRecords> 
    </Header> 
    <Message> 
     <xsl:for-each select="RECORD[generate-id(.)=generate-id(key('groups',VALUE))]"> 
      <Value> 
      <xsl:value-of select="VALUE/text()" /> 
      </Value> 
     </xsl:for-each> 
    </Message> 
    </xsl:template> 
</xsl:stylesheet> 

回答

0

這應做到:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:key name="groups" match="RECORD" use="VALUE"/> 
    <xsl:template match="Test"> 
    <xsl:variable name="distinctItems" 
        select="RECORD[generate-id()=generate-id(key('groups',VALUE)[1])]" /> 
    <Header> 
     <NoOfRecords> 
     <xsl:value-of select="count($distinctItems)"/> 
     </NoOfRecords> 
    </Header> 
    <Message> 
     <xsl:for-each select="$distinctItems"> 
     <Value> 
      <xsl:value-of select="VALUE/text()" /> 
     </Value> 
     </xsl:for-each> 
    </Message> 
    </xsl:template> 
</xsl:stylesheet> 

雖然我當然會推薦這種分離成兩個模板:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:key name="groups" match="RECORD" use="VALUE"/> 
    <xsl:template match="Test"> 
    <xsl:variable name="distinctItems" 
        select="RECORD[generate-id()=generate-id(key('groups',VALUE)[1])]" /> 
    <Header> 
     <NoOfRecords> 
     <xsl:value-of select="count($distinctItems)"/> 
     </NoOfRecords> 
    </Header> 
    <Message> 
     <xsl:apply-templates select="$distinctItems" /> 
    </Message> 
    </xsl:template> 

    <xsl:template match="RECORD"> 
    <Value> 
     <xsl:value-of select="VALUE/text()" /> 
    </Value> 
    </xsl:template> 
</xsl:stylesheet>