Re: [xsl] captured in a <xsl:for-each>

Subject: Re: [xsl] captured in a <xsl:for-each>
From: "Alexander Gutman" <gutman@xxxxxxxxxxxxxxx>
Date: Mon, 23 Jul 2001 19:32:47 +0700
23.07.2001 19:08:51 owner-xsl-list wrote:
> Hi there!
> 
> I seem to be captured in a for-each loop. Can someone please help me to
> escape and get the expected result?
> 
> <xsl:template match="node()|@*">
>       <xsl:copy>
>                       <xsl:apply-templates select="node()|@*"/>
>       </xsl:copy>
> </xsl:template>
> 
> <xsl:template match="kapitel">
>       <xsl:for-each select="//title">           <!-- "title" is 
hierarchically above "kapital" -->
>                       <p>
>                               <xsl:apply-templates/>
>                        </p>
>               </xsl:for-each>
> </xsl:template>

First of all, the above two template rules "slightly" overlap,
since "kapitel" is also a "node()".
You should use "priority" attributes to disjoint the rules
or reduce the first rule so as it be not applied to "kapitel"s.

> I would like to create a <p> tag for each title and within this
> paragraph I want to copy all the nodes and attributes as they are in the
> source file.

Does this mean that you want to produce a copy
of the ENTIRE document for each "title" in it?
Then you should use a somewhat another approach.

As for the rules you specified, they indeed cause a loop
whenever a "kapitel" occurs inside a "title":
when the "apply-templates" inside your <p> works,
the rule for inner "kapitel"s are recursively applied,
thus working with all "titles" once again.

-- 
Alexander E. Gutman

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


Current Thread