Re: [xsl] Terminate <xsl:for-each>

Subject: Re: [xsl] Terminate <xsl:for-each>
From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx>
Date: Sat, 3 Sep 2005 17:53:38 +0530
Please try this stylesheet

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                       xmlns:text="http://whatever";
                       exclude-result-prefixes="text"
                       version="1.0">

<xsl:output method="xml" indent="yes" />

<xsl:template match="/text:root">
   <root>
     <xsl:for-each select="text:p">
       <xsl:element name="{text:bookmark-start/@text:name}">
         <xsl:for-each select="text:user-field-get">
           <tag><xsl:value-of select="." /></tag>
         </xsl:for-each>
       </xsl:element>
     </xsl:for-each>
   </root>
</xsl:template>

</xsl:stylesheet>

Please note the use of namespace declaration
xmlns:text="http://whatever";. This has to be same as in the XML
document.

Regards,
Mukul

On 9/3/05, aaron apigo <aaronjose_apigo2001@xxxxxxxxx> wrote:
> Hi All,
>
>   I have this sample XML,
>
> <text:root>
> <text:p>
>       <text:bookmark-start text:name="bib1"/>
>
> <text:user-field-get>data1</text:user-field-get>
>
> <text:user-field-get>data2</text:user-field-get>
>
> <text:user-field-get>data3</text:user-field-get>
>
> <text:user-field-get>data4</text:user-field-get>
>
> <text:user-field-get>data5</text:user-field-get>
>       <text:bookmark-end text:name="bib1"/>
> </text:p>
> <text:p>
>       <text:bookmark-start text:name="bib2"/>
>
> <text:user-field-get>data6</text:user-field-get>
>
> <text:user-field-get>data7</text:user-field-get>
>
> <text:user-field-get>data8</text:user-field-get>
>
> <text:user-field-get>data9</text:user-field-get>
>
> <text:user-field-get>dat10</text:user-field-get>
>       <text:bookmark-end text:name="bib2"/>
> </text:p>
> <text:p>
>       <text:bookmark-start text:name="bib3"/>
>
> <text:user-field-get>dat11</text:user-field-get>
>
> <text:user-field-get>dat12</text:user-field-get>
>
> <text:user-field-get>dat13</text:user-field-get>
>
> <text:user-field-get>dat14</text:user-field-get>
>
> <text:user-field-get>dat15</text:user-field-get>
>       <text:bookmark-end text:name="bib3"/>
> </text:p>
> </text:root>
>
> and I have this XSL
>
> <xsl:template match ="text:bookmark-start">
>   <xsl:element="{@text:name}">
>
>  <xsl:for-each select="//text:p/text:user-field-get">
>
>   do something here.........
>
>  </xsl:for-each>
>
>  </xsl:element>
>
> </xsl:template>
>
> what I want is this.
>
> <root>
> <bib1>
>  <tag>data1</tag>
>  <tag>data2</tag>
>  .........
> </bib1>
> <bib2>
>   <tag>data6</tag>
>   <tag>data7</tag>
>   .........
> </bib2>
> <bib3>
>   <tag>dat11</tag>
>   <tag>dat12</tag>
>   .........
> </bib3>
> </root>
>
>  Using my logic in my sytlesheets, all the
> <text:user-field-get> are captured, is there a
> possibility that when <for-each> select
> <text:bookmark-end text:name="___"/>, <for-each> will
> automatically be terminated, and the next
> <text:bookmark-start text:name="___"/> will be the one
> to process.
>
> regards.

Current Thread