|
Subject: Re: [xsl] Problem with xslt recursion From: Roopesh Kumar <roopeshkumar_in@xxxxxxxxx> Date: Tue, 10 Feb 2004 09:27:41 -0800 (PST) |
Hi..
Thanks a lot David, for the quick reply and putting up
with the inconsistencies in the code that i sent..
Taking your explaination I have solved the problem by
saying..
<xsl:value-of
select="ResourceTypeSet/Type[number($Index)]"/>
instead of
<xsl:value-of select="ResourceTypeSet/Type[$Index]"/>
The purpose is solved but i want to know if it is the
right thing to do....
Also i have a very long standing problem with
specifying dynamic xpaths...
Suppose my xml is
<a>
<b>
<c>try</c>
</b>
</a>
and my xsl is something like...
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="path">c</xsl:variable>
<!-- Now i am trying to access the dynamic path a/b/c
-->
<xsl:value-of select="/a/b/$path"/>
<!-- The error shown is Nodetest expected..-->
<!-- Next i try concatenating the values in a variable
-->
<xsl:variable name="fullpath"
select="concat('/a/b/',$path)"/>
<!-- and then try to access the value for this path
-->
<xsl:value-of select="$fullpath"/>
<!-- Here the xpath /a/b/c is displayed. So how do i
use the variable path to actually get the value for
that path which happens to be "try" in this case-->
</xsl:template>
</xsl:stylesheet>
--- David Carlisle <davidc@xxxxxxxxx> wrote:
>
> and i have a recursive call to a template whose
> function is to concatenate all the values with the
> tag
>
> You don't need recursion to do that
> <xsl:copy-of select="Type/text()"/>
> is all you need.
>
>
> However
>
> <xsl:value-of select ="ResourceTypeSet/Type[$In]"/>
>
> I assume thst isn't your actual code as $In is not
> defined, assuming
> that you have
>
> <xsl:value-of select
> ="ResourceTypeSet/Type[$Index]"/>
>
> then your problem is that the short hand Type[3] for
> Type[position()=3]
> only tales place if the thing in teh [] is a number.
>
> $Index starts off as a number
> <xsl:with-param name="Index" select="1"/>
>
> but then you redeclare it to be a result tree
> fragment
> <xsl:with-param name="Index"><xsl:value-of
> select="$Index+1"/></xsl:with-param>
>
> If you use a result tree fragment as a boolean then
> it is always true as
> it corresponds to a non empty node set so
>
> ResourceTypeSet/Type[$Index]
>
> is
> ResourceTypeSet/Type[true()]
>
> which is
> ResourceTypeSet/Type
>
> ie it selects all the Tyope nodes, then
> <xsl:value-of
>
> always returns the value of (only) the first node
> selected, so you will
> always get the first one back.
>
> David
>
>
> --
> http://www.dcarlisle.demon.co.uk/matthew
>
>
________________________________________________________________________
> This e-mail has been scanned for all viruses by Star
> Internet. The
> service is powered by MessageLabs. For more
> information on a proactive
> anti-virus service working around the clock, around
> the globe, visit:
> http://www.star.net.uk
>
________________________________________________________________________
>
> XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>
=====
Luv
Roopesh
Software Engineer
Verizon Data Services India
[98842-40222]
__________________________________________________________________
One manages uncertainty; one does not solve it.
Eliminating uncertainty eliminates opportunity.
Chaos is the engine of evolution.
__________________________________
Do you Yahoo!?
Yahoo! Finance: Get your refund fast by filing online.
http://taxes.yahoo.com/filing.html
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Problem with xslt recursi, David Carlisle | Thread | Re: [xsl] Problem with xslt recursi, David Carlisle |
| Re: [xsl] Normalize / Simplify HTML, David Carlisle | Date | Re: [xsl] Problem with xslt recursi, David Carlisle |
| Month |