xsl:for-each-group element selects a sequence of nodes and/or atomic
values and organizes them into subsets called groups. There are four possible ways of defining the
group-by: This groups together all items having the same value for a grouping key.
The grouping key may have multiple values (a sequence of values) in which case the item is added
to more than one group.
group-adjacent: This groups together all items having the same value for a grouping key,
provided that they are also adjacent in the input sequence. This is useful when you need to wrap a
new element around a sequence of related elements in the source documents, for example a consecutive
<bullet> elements. In this case the grouping key must be single-valued.
group-starting-with: This processes the items in the supplied sequence in turn, starting
a new group whenever one of the items matches a specified pattern. This is useful, for example,
when matching an
<h2> element and its following
group-ending-with: This processes the items in the supplied sequence in turn, closing
the current group whenever one of the items matches a specified pattern. This is useful
when matching a sequence of items in which the last item in the group carries some distinguishing
attribute such as
Saxon implements the
xsl:for-each-group instruction in full, except that some error
conditions are not detected. For examples of using the instruction, see
the draft XSLT 2.0 specification.