RE: [xsl] quick xpath question - using variable as attribute valu e?

Subject: RE: [xsl] quick xpath question - using variable as attribute valu e?
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 1 Jul 2003 01:11:22 +0100

> This works:  /WorkFlow/Assembly/Station[@name="Label"]/WI[1]/@doc
> This doesn't:  /WorkFlow/Assembly/Station[@name=" & strStation &
> "]/WI[1]/@doc
> 
> I've tried several renditions...
> 
> If someone sees the obvious, I would appreciate hearing it.
> 

well your second one isn't well formed XMl so it will be rejected by the
XMl parser before it ever gets to an XSLT system.
since I con't guess what you wanted those floating & to mean (they
wouldn't be XPath even if you made them legal XML as &amp;) I can't
really guess what you want other than perhaps
@name=$variable

Of course, if you are not using xpath from xslt you'll have to see if
your API lets you initialise xpath variable.

Oh 2nd guess, the & is the string concatenator in your host language, 
and strStation contains the string Label

in that case you want to generate the first expression in your host
language, but you are generating

/WorkFlow/Assembly/Station[@name=Label]/WI[1]/@doc

which is legal but tests name attribute against Label elements.
So you need quotes, something like

 /WorkFlow/Assembly/Station[@name='" & strStation & "']/WI[1]/@doc
                                  ^                  ^
                                  ^                  ^
                                  ^                  ^
                                  ^                  ^
or whatever you have to do in your host language to get " into a
"-delimuted string if you are already using ' quotes elsewhere.

David

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread