[xsl] Re: Adding hierarchy

Subject: [xsl] Re: Adding hierarchy
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
Date: Mon, 13 Oct 2003 06:31:14 +0200
This transformation:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:key name="kLGroup" match="lineGroup"
  use="generate-id(preceding-sibling::blankLine[1])"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="blankLine">
   <lineGroup type="stanza">
     <xsl:copy-of select="key('kLGroup', generate-id())"/>
   </lineGroup>
  </xsl:template>

  <xsl:template match="lineGroup"/>

</xsl:stylesheet>

when applied on this source.xml:

<text>
  <blankLine/>
  <lineGroup>
    <line> </line>
    <line> </line>
  </lineGroup>
  <lineGroup>
    <line> </line>
    <line> </line>
    <lineGroup>
      <line> </line>
      <line> </line>
    </lineGroup>
    <line> </line>
  </lineGroup>
  <p/>
  <blankLine/>
  <lineGroup>
    <line> </line>
    <line> </line>
  </lineGroup>
  <lineGroup>
    <line> </line>
    <line> </line>
    <lineGroup>
      <line> </line>
      <line> </line>
    </lineGroup>
    <line> </line>
  </lineGroup>
  <p/>
  <blankLine/>
  <lineGroup>
    <line> </line>
    <line> </line>
  </lineGroup>
  <lineGroup>
    <line> </line>
    <line> </line>
    <lineGroup>
      <line> </line>
      <line> </line>
    </lineGroup>
    <line> </line>
  </lineGroup>
  <p/>
</text>

produces the wanted result:

<text>
   <lineGroup type="stanza">
      <lineGroup>
         <line/>
         <line/>
      </lineGroup>
      <lineGroup>
         <line/>
         <line/>
         <lineGroup>
            <line/>
            <line/>
         </lineGroup>
         <line/>
      </lineGroup>
   </lineGroup>
   <p/>
   <lineGroup type="stanza">
      <lineGroup>
         <line/>
         <line/>
      </lineGroup>
      <lineGroup>
         <line/>
         <line/>
         <lineGroup>
            <line/>
            <line/>
         </lineGroup>
         <line/>
      </lineGroup>
   </lineGroup>
   <p/>
   <lineGroup type="stanza">
      <lineGroup>
         <line/>
         <line/>
      </lineGroup>
      <lineGroup>
         <line/>
         <line/>
         <lineGroup>
            <line/>
            <line/>
         </lineGroup>
         <line/>
      </lineGroup>
   </lineGroup>
   <p/>
</text>


=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL

<Jim_Albright@xxxxxxxxxxxx> wrote in message
news:OFEB5B1B12.8FD1C074-ON85256DBD.00499DAA-85256DBE.000A4F05@xxxxxxxxxxxxxxxx
> Thank you for help in the past. Next question.
>
> Starting with this piece, I want to add a wrapper around a whole set of
> lineGroup elements
>
> <blankLIne>
> <lineGroup>
>         <line></line>
>         <line></line>
> </lineGroup>
> <lineGroup>
>         <line></line>
>         <line></line>
>         <lineGroup>
>                 <line></line>
>                 <line></line>
>         </lineGroup>
>         <line></line>
> </lineGroup>
> <p>.......or any non lineGroup element .....
>
> should change to
> <lineGroup type="stanza">
>         <lineGroup>
>                 <line></line>
>                 <line></line>
>         </lineGroup>
>         <lineGroup>
>                 <line></line>
>                 <line></line>
>                 <lineGroup>
>                         <line></line>
>                         <line></line>
>                 </lineGroup>
>                 <line></line>
>         </lineGroup>
> </lineGroup>
> <p>.......or any non lineGroup element .....
> So a blankLine as preceding-sibling to lineGroup is the trigger to then
> process all following-sibling lineGroups.
>
> A 2.0 solution is welcome if needed.
>
>
> Jim Albright
> 704 843-0582
> Wycliffe Bible Translators
>
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread