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

Subject: RE: [xsl] Selecting an attribute value from a variable
From: "Chris Hicks" <chrish2000@xxxxxxxxxxxxxx>
Date: Fri, 7 Jan 2005 21:04:52 +1100
Thanks Michael,

Yes, I'm dealing with poorly formed XML output from a program I have no
control over changing.

As you can imagine its a baptism of fire for me learning how to format this
nasty XML!

Thanks again for your help this time and previously.

Cheers,

Chris

> -----Original Message-----
> From: Michael Kay [mailto:mike@xxxxxxxxxxxx] 
> Sent: Friday, 7 January 2005 8:58 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Selecting an attribute value from a variable
> 
> 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