Subject: RE: Selecting an attribute value from a variable
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 7 Jan 2005 09:58:00 -0000
|
Variables hold values, not XPath expressions.
Many processors have a dyn:evaluate() extension that allows you to construct
and evaluate an XPath expression dynamically, but you don't need it here.
Use
@*[name()=$var]
Incidentally, it's poor practice to represent information by means of a
sub-syntax within element and attribute names. You should be using child
elements of the form
<LastId Page="1">12</LastId>
But we all sometimes need to deal with badly-designed XML.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Chris Hicks [mailto:chrish2000@xxxxxxxxxxxxxx]
> Sent: 07 January 2005 09:19
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Selecting an attribute value from a variable
>
> Hi,
>
> I'm building a variable in xslt like this:
>
> <xsl:variable name="previouspagelastid"
> select="concat('@Page',string(@pageNumber - 1),'LastID')"/>
>
> To refer to an attribute in an xml node that I know exists
> (@Page1LastID for
> example).
>
> The root node of my template match looks like this:
>
> <results pageNumber="2" pageCount="3" pageSize="10" resultCount="30"
> criteria="" Page1LastID="12" Page2LastID="" Page3LastID=""
> Page4LastID=""
> Page5LastID="" Page6LastID="">
>
> I'm not sure if its possible but after I declare this
> variable I want to get
> its value, ie. "12"
>
> Any ideas?
>
> Cheers,
>
> Chris
|