Thank you for the explanation, Christian. I had independently figured
that it wasn't what I needed. I was originally interpreting
"following::sibling" as being the equivalent node (childnode in my
example) of the the next parent node which I now know is incorrect.
Essentially I ended up getting around it using keys because what I
needed was a grouping of every 5 childnode's (I am building a table).
A more accurate representation of my XML source structure would have
been as follows.
<xml>
<parentnode>
<childnode>value1</childnode>
<anotherChildNode>value<anotherChildNode>
<yetAnotherChildNode>value<yetAnotherChildNode>
<...>
</parentnode>
<parentnode>
<childnode>value2</childnode>
<anotherChildNode>value<anotherChildNode>
<yetAnotherChildNode>value<yetAnotherChildNode>
<...>
</parentnode>
<!-- and so on for a couple of hundred repeats -->
</xml>
So by using keys I was able to extract all childnodes into a key and
then sort the output calling key recursively.
The ultimate goal, which I have now acheived, was to output a table
which was part of a menu system. So now I have a menu of all of my
childnodes, sorted alpahbetically, each letter being grouped into a
dynamically sized table without the need for JS. :)
Thank you again for your help Your explanation helped clear up some
other cobwebs I had about "following::sibling".
Josh