Subject: Re: [xsl] Linking Variable to the Path From: Matthieu Ricaud <matthieu.ricaud@xxxxxxxxx> Date: Wed, 22 Aug 2007 11:11:16 +0200 |
Hi Yaswanth, > Hi Peter and Everyone out there! > Thanks for the reply ~ > > I have '//every[1]/event[1]' as the destination attributes value. > And there is 'name' attribute for '//every[1]/event[1]' > i.e //every[1]/event[1]/@name gives me the Value 'Ready'. > > Why not $dest/@name gives me the same ? > How to get it ? In your fisrt xsl <xsl:variable name="dest" select="//every[1]/event[1]"/> will get a *node* /root/every[1]/event[1], which do has a @name attribute. Then $dest/@name will get this attribute value. But in your second xsl <xsl:variable name="dest" select="//pattern[1]/connection[1]/@destination"/> will get the *string* "//every[1]/event[1]" which is the value of @destination. $dest is not a node, it's a string and you can't do $dest/@name, it doesn't make sens. As said Christoph you need to evaluate the string, and there is unfortunately no xslt 1.0 native way to do this ! You need a extension eval function depending on your xslt processor. If you use saxon for example, something like this should go <xsl:value-of select="saxon:eval($dest)/@name"/>. With msxml you can do your own eval function in jscript, have a look at http://www.xmleverywhere.com/tips/xslt.htm You can also use EXSLT extensions I think. Hope this help, Cheers, Matthieu. > Regards > Yaswanth > > > -----Original Message----- > From: Hofman, Peter [mailto:peter.hofman@xxxxxxxxxxxxx] > Sent: Wednesday, August 22, 2007 1:54 PM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: RE: [xsl] Linking Variable to the Path > > Your variable $dest contains a sequence of destination attributes > values, which (of course) do not contain a name attribute. > > You need to analyze the contents of connection/@destination and use this > in a selection of event elements. > > Regards, > Peter > > >-----Original Message----- > >From: Yaswanth Kumar Ravella [mailto:yaswanth.mtrx@xxxxxxxxx] > >Sent: woensdag 22 augustus 2007 10:16 > >To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > >Subject: [xsl] Linking Variable to the Path > > > > > >Hi, > > > >::I am having an XML file like this :: > > > ><root> > > <every> > > <event name="Ready"/> > > </every> > > <pattern> > > <connection destination="//every[1]/event[1]" /> > > </pattern> > ></root> > >------------------------------- > >::When my XSL file has this code:: > > > ><xsl:template match="root"> > > <xsl:variable name="dest" select="//every[1]/event[1]"/> > > <xsl:value-of select="$dest/@name"/> > ></xsl:template> > > > >It prints 'Ready'. > >Here I am directly assigning variable 'dest' to the path of the event. > >This is ok. > >------------------------------- > >::When I changed my XSL code to :: > > > ><xsl:template match="root"> > > <xsl:variable name="dest" > >select="//pattern[1]/connection[1]/@destination"/> > > <xsl:value-of select="$dest/@name"/> > ></xsl:template> > > > >It doesn't print 'Ready' or anything. > >Here I am storing variable 'dest' with the value of the > >'connection/@destination', Which I expected to work properly > >but it is not working.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Linking Variable to the P, Yaswanth Kumar Ravel | Thread | RE: [xsl] Linking Variable to the P, Yaswanth Kumar Ravel |
Re: [xsl] Selecting First Direct Si, Andrew Welch | Date | RE: [xsl] Linking Variable to the P, Yaswanth Kumar Ravel |
Month |