[xsl] reversing or swapping nested node hierarchy

Subject: [xsl] reversing or swapping nested node hierarchy
From: Chris Capon <abyss@xxxxxxxxxxx>
Date: Sun, 19 Mar 2006 13:40:52 -0500
Hi all.
In an XML document:

<root>
  <a>
    <b />
  </a>
  <a />
</root>

Is it possible to reverse the a/b hierarchy to produce b/a on output?
To complicate the problem, not all <a>'s have <b>'s.

So, in solving the problem, I've come up with something like this:

<template name="a" match="a">
  <a />
</template>

<template match="a[b]">
  <b>
    <call-template name="a" />
  </b>
</template>

..which works, but the <b> template now has working knowledge of <a>.

I'd like to find a generic solution where <b> doesn't have to know about
<a> so that <b> can be nested inside other elements too and yet work the
same way.

Thanks, Chris.

Current Thread