[xsl] [XSLT2] Grouping by matching properly nested pairs

Subject: [xsl] [XSLT2] Grouping by matching properly nested pairs
From: "Christian Roth" <roth@xxxxxxxxxxxxxx>
Date: Wed, 15 Nov 2006 22:46:15 +0100
(A grouping question - again...)

The task is to create a nested grouping from a flat list of elements
based on matching "properly nested" <start/> and corresponding <end />
elements. Nesting depth is arbitrary.

Source XML:

<root>
    <a />
    <start />
    <b />
    <start />
    <c />
    <end />
    <d />
    <start />
    <start />
    <e />
    <end />
    <f />
    <end />
    <g />
    <end />
</root>

or, for better legibility indented with the intended result in mind:

<root>
    <a />
    <start />
      <b />
      <start />
        <c />
      <end />
      <d />
      <start />
        <start />
          <e />
        <end />
        <f />
      <end />
      <g />
    <end />
</root>


The result should be:

<root>
    <a />
    <group>
      <b />
      <group>
        <c />
      </group>
      <d />
      <group>
        <group>
          <e />
        </group>
        <f />
      </group>
      <g />
    </group>
</root>

How is this best tackled? group-starting-with="" doesn't seem to be the
way to go, because it will create non-nested groups on each <start />,
but the groups need to be nested.

-Christian

Current Thread