xsl-list
[Top] [All Lists]

Re: scoping inside a select statement

2003-02-12 16:32:51
Hey Simon,

At 05:45 PM 2/12/2003, you wrote:
Why does this DWIM:
 <xsl:variable name="foobar" select="@name"/>
 <xsl:value-of select="document('inst.xml')//*[boolean(name() = $foobar)]"/>

and this doesn't:
 <xsl:value-of select="document('inst.xml')//*[boolean(name() = @name)]"/>

... or perhaps I should say, how do I scope @name inside a select to refer to the @name attribute of the context node outside the select, instead of whatever it's referring to here (... an attribute named @name in the context node inside the select?)

There is an XSLT function, current(), that returns the current node (the node matched by the template or selected by a for-each), so when the context changes in a long XPath, you can still get to it.

<xsl:value-of select="document('inst.xml')//*[name() = current()/@name]"/>

(BTW notice that boolean() function isn't needed: "" already returns a Boolean and the fact that this is a predicate expression would coerce it to one even if it weren't.)

Another technique, sometimes preferable, is to bind your current node to a variable and refer to that.

Cheers,
Wendell

Also if you're wondering about the unnecessary boolean() I've decided to use it for syntactic safety to protect myself from numeric result s;-)

But when will the expression "name() = current()/@name" return a number? And even if it were ... since it's a predicate expression it'd be coerced into a Boolean anyway. :-)



======================================================================
Wendell Piez                            
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


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



<Prev in Thread] Current Thread [Next in Thread>