The group-starting-with attribute of xsl:for-each-group element enables grouping based on nodes, which are selected with group-starting-with XPath expression. The select attribute of xsl:for-each-group selects a population of nodes. The first node of this population starts the first group and other nodes from the population are gradually added to the group till a node conforming to group-starting-with is encountered. This node starts a new group and the process is continued.
|
XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> <xsl:template match="/aaa"> <xsl:for-each-group select="*" group-starting-with="bbb"> <xsl:apply-templates select="."/> <group-members> <xsl:apply-templates select="current-group()"/> </group-members> </xsl:for-each-group> </xsl:template> <xsl:template match="*"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet> |
|
|
XML
<aaa> <sss v="0"/> <bbb v="1"/> <ccc v="2"/> <bbb v="3"/> <eee v="4"/> <fff v="5"/> <bbb v="6"/> <fff v="7"/> </aaa> |
Output
<sss v="0"/> <group-members> <sss v="0"/> </group-members> <bbb v="1"/> <group-members> <bbb v="1"/> <ccc v="2"/> </group-members> <bbb v="3"/> <group-members> <bbb v="3"/> <eee v="4"/> <fff v="5"/> </group-members> <bbb v="6"/> <group-members> <bbb v="6"/> <fff v="7"/> </group-members> |
| Previous chapter: | Elements and attributes |
| Next chapter: | Multiple source documents |
| Previous page: | Grouping with group-adjacent |
| Next page: | Grouping with group-ending-with |