Subject: RE: Linking Variable to the Path
From: "Yaswanth Kumar Ravella" <yaswanth.mtrx@xxxxxxxxx>
Date: Wed, 22 Aug 2007 16:57:50 +0530
|
Hi Matthieu,
As you suggested I worked for a while to implement dyn:evaluate
function in my work but I am unable to get it done.
I am getting Error :
Description :
Error during XSLT transformation: An unknown XPath extension function was
called.
I am using Mozilla's Processor !
http://www.xmleverywhere.com/tips/xslt.htm
How can I get it work ? Any sample Implementation ?
Regards
Yaswanth Kumar Ravella
-----Original Message-----
From: Matthieu Ricaud [mailto:matthieu.ricaud@xxxxxxxxx]
Sent: Wednesday, August 22, 2007 2:41 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: Linking Variable to the Path
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: 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: 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.
|