Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分组后的XSLT记录数_Xslt_Count_Grouping - Fatal编程技术网

分组后的XSLT记录数

分组后的XSLT记录数,xslt,count,grouping,Xslt,Count,Grouping,我有一组项目,我正在使用muenchian方法使用键对它们进行分组。这很好,我的问题是,如何在分组后获得记录数并使用消息头中的数字 <?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-

我有一组项目,我正在使用muenchian方法使用键对它们进行分组。这很好,我的问题是,如何在分组后获得记录数并使用消息头中的数字

<?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>

这应该可以做到:

<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>