This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: captured in a <xsl:for-each>
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] captured in a <xsl:for-each>
- From: "Alexander Gutman" <gutman at novosoft-us dot com>
- Date: Mon, 23 Jul 2001 19:32:47 +0700
- Reply-To: xsl-list at lists dot mulberrytech dot com
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