xsl-list
[Top] [All Lists]

Re: Terminate <xsl:for-each>

2005-09-03 02:57:40
Tempore 21:30:44, die 09/02/2005 AD, hinc in 
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com scripsit aaron apigo 
<aaronjose_apigo2001(_at_)yahoo(_dot_)com>:

  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.

No, a 'for-each' loop cannot be terminated in XSLT. You will have to alter your 
algorithm.

To get some inspiration, you might take a look at this working code snippet:

<xsl:key name="bookmark" match="*"
        use="self::node()
                [preceding::text:bookmark-start[1]/@text:name
                 = following::text:bookmark-end[1]/@text:name]
        /preceding::text:bookmark-start[1]/@text:name"/>

<xsl:template match="text:root">
        <root>
                <xsl:apply-templates select=".//text:bookmark-start"/>
        </root>
</xsl:template>

<xsl:template match="text:bookmark-start">
        <xsl:element name="{(_at_)text:name}">
                <xsl:for-each 
select="key('bookmark',@text:name)[self::text:user-field-get]">
                        <tag><xsl:value-of select="."/></tag>
                </xsl:for-each>
        </xsl:element>
</xsl:template>


The 'bookmark' key will return each node, that sits between a 
'text:bookmark-start' and a 'text:bookmark-end', by the bookmark's name. It 
then suffices to filter these nodes with the [self::text:user-field-get] 
predicate to get only the 'text:user-field-get' elements.

regards,
--
Joris Gillis (http://users.telenet.be/root-jg/me.html)
Veni, vidi, wiki (http://www.wikipedia.org)

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