[xsl] Positional grouping with exceptions

Subject: [xsl] Positional grouping with exceptions
From: "Fredrik Geers" <fredrik@xxxxxxxxxx>
Date: Wed, 20 Dec 2006 15:48:06 +0100
I have the following xml:

<book>
  <header>title</header>
  <a>text</a>
  <a>text</a>
  <otherelement>title</otherelement>
  <a>text</a>
  <a>text</a>
  <a/>
  <a>text</a>
</book>

I want to group each block of consecutive <a> tags inside an <al> tag,
like this:

<book>
  <header>title</header>
  <al>
    <a>text</a>
    <a>text</a>
  </al>
  <otherelement>title</otherelement>
  <al>
    <a>text</a>
    <a>text</a>
  </al>
  <al>
    <a>text</a>
  </al>
</book>

And like you can see in the example, I want to start a new <al> block
when an empty <a> tag is found. That's the hard part. Well, the other
part also isn't that easy...

I can't use the technique described on
http://www.dpawson.co.uk/xsl/sect2/N4486.html#d5280e424, because the <a>
nodes are not always preceded by an element that marks a new group.

What would be the best technique to solve this? I'm using Saxon 8.7.1
and XSLT 2.0.

--
Fredrik Geers

Current Thread