[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] How to retrieve value(which is copied into RTF as a variable) from RTF
Subject: Re: [xsl] How to retrieve value(which is copied into RTF as a variable) from RTF From: "Ranjan K. Baisak" <ranjanbaisak@xxxxxxxxx> Date: Tue, 4 Jan 2005 05:53:35 -0800 (PST) |
David, you are right. It has a performance impact which I can see. As I hardly work on XSLT so never get any chance to look into performance. To clarify, $leverreference contains "id" values and profession contains id and name values. I need to retrieve names from profession depending upon id values in $leverreference RTF and display only unique names with number of occurrence. I would appreciate for any suggestion on performance. regards. Ranjan I have atleast used 3 RTF to get the result. --- David Carlisle <davidc@xxxxxxxxx> wrote: > > > > I have a RTF with following declaration > <xsl:variable name="professionLevel"> > <xsl:for-each select="//profession"> > <xsl:variable name="nameval" > select="@name"/> > <xsl:variable name="parentval" > select="@parent"/> > <xsl:for-each > > select="exslt:node-set($leverreference)/*"> > <xsl:variable name="referid" > select="@levelref"/> > <xsl:if test="$referid=$parentval"> > <xsl:copy> > <xsl:copy-of select="$nameval"/> > </xsl:copy> > </xsl:if> > </xsl:for-each> > </xsl:for-each> > </xsl:variable> > > > That looks a very strange definition. The select > expression on your > inner fo-each doesn't depend on the current node so > you will iterate > over all of $leverreference)/* repeatedly, as many > times as you have > profession elements in your original source, is that > really what you > want? > > The above is euivalent to > > <xsl:variable name="professionLevel"> > <xsl:for-each select="//profession"> > <xsl:variable name="nameval" > select="@name"/> > <xsl:variable name="parentval" > select="@parent"/> > <xsl:for-each > > select="exslt:node-set($leverreference)/*[@levelref=$parentval]"> > <xsl:copy> > <xsl:copy-of select="$nameval"/> > </xsl:copy> > </xsl:for-each> > </xsl:for-each> > </xsl:variable> > > > Note that although the variable is called nameval it > does not store an > attribute value, but the attribute node so > <xsl:copy> > <xsl:copy-of select="$nameval"/> > </xsl:copy> > > generates an empty element )with name the same as > the element in > $leverreference) with a name attribute. > > So > > <xsl:for-each > select="exslt:node-set($professionLevel)/*"> > <xsl:value-of select="."/> > </xsl:for-each> > > will select a set of empty elements, <xsl:value-of > select="."/> on each > of them will be the empty string. > > You need to use <xsl:value-of select="@name"/> here > in order to get any > output, but that will just concatemate all the > values, so probably you > will need to add spaces or commas in between. > > David > > ________________________________________________________________________ > This e-mail has been scanned for all viruses by > Star. 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 > ________________________________________________________________________ > > __________________________________ Do you Yahoo!? Send a seasonal email greeting and help others. Do good. http://celebrity.mail.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How to retrieve value(whi, David Carlisle | Thread | [xsl] How to retrieve value(which i, Ranjan K. Baisak |
Re: [xsl] How to retrieve value(whi, David Carlisle | Date | Re: [xsl] Namespace issue when usin, Andrew Male |
Month |
Keywords