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 |