RE: [xsl] Selecting an attribute value from a variable

Subject: RE: [xsl] 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: [xsl] 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

Current Thread