xsl-list
[Top] [All Lists]

Problems grouping adjacent siblings

2005-06-29 23:37:54
Good morning list,

I would like to group adjacent siblings which share the same local-name
into a container element.

Given this structure

<ax>
  <e></e>
  <r></r>
  <exp>Example</exp>
  <exp>bla bla</exp>
  <exp>jada jada</exp>
  <b></b>
  <e></e>
  <exp>Example 2</exp>
  <exp>bla bla</exp>
  <v></v>
</ax>
<bx>
  <c></c>
  <exp>Example 3</exp>
  <exp>bla bla</exp>
  <b></b>
</bx>

The following output should be produced:

<ax>
  <e></e>
  <r></r>
    <remark>
        <exp>Example</exp>
        <exp>bla bla</exp>
        <exp>jada jada</exp>
    </remark>
  <b></b>
  <e></e>
  <remark>
    <exp>Example 2</exp>
    <exp>bla bla</exp>
  </remark>
  <v></v>
</ax>
<bx>
  <c></c>
  <r></r>
  <remark>  
    <exp>Example 3</exp>
    <exp>bla bla</exp>
  </remark>
  <b></b>
</bx>

I thought that this would be the classical use-case for an
<xsl:for-each-group> with @group-adjacent, but I am getting the
strangest results...
I don't even know if it is better to do the grouping in a template
matching
exp[not(preceding-sibling::*[1][local-name()='exp']) or in a template
matching exp's parent
I also tried to find a @group-starting-with solution, since the first
<exp> always starts with the string 'Example'. But with no success
either....
Can you help me with this problem?
Thank you very much for your help!

Wbr,
Roman


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>