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(_dot_)hofman(_at_)logicacmg(_dot_)com]
Sent: Wednesday, August 22, 2007 1:54 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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(_dot_)mtrx(_at_)gmail(_dot_)com]
Sent: woensdag 22 augustus 2007 10:16
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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.
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--