xsl-list
[Top] [All Lists]

Re: Problems grouping adjacent siblings

2005-06-30 01:06:17
Hi Roman,
  I thought the following stylesheet would have
worked.. But its not working. Its identity template
based ..

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
        
<xsl:output method="xml" indent="yes" />
        
<xsl:template match="node() | @*">
  <xsl:copy>
    <xsl:apply-templates select="node() | @*" />           
  </xsl:copy>
</xsl:template>

<xsl:template match="exp">
  <xsl:if test="not(name(preceding-sibling::*[1]) =
'exp')">
    <remark>
      <xsl:copy-of select=". | following-sibling::exp"
/>
    </remark>
  </xsl:if>
</xsl:template>

</xsl:stylesheet>

Regards,
Mukul


--- Huditsch Roman <Roman(_dot_)Huditsch(_at_)lexisnexis(_dot_)at>
wrote:

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>
--~--




__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

--~------------------------------------------------------------------
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>