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