Subject: RE: XSL String Mapping Problem.
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 10 Dec 2008 10:35:30 -0000
|
> I used the XML/XSL snippet below. However the "@key eq ."
> seems not to work.
>
> If I introduce a variable it works fine:
>
> <xsl:variable name="var" select="."/>
> <xsl:value-of select="$map[@key eq $var]/@val"/>
"." within a predicate refers to the node that you are testing against the
predicate. This is the problem with context dependency - it's nice and
convenient when it does what you are expecting, and it's a rich source of
bugs when it doesn't.
>
> Questions:
>
> 1. How to get this mapper working without variable?
You could use current(), but I'd be inclined to use the variable.
> 2. What is the the 'defacto XPath standard' for mapping a
> list hardcoded keys to hardcoded values?
The above is fine - though in XSLT, unless you have a processor with an
unusually good optimizer, like Saxon-SA ;-), you can speed it up using keys.
Michael Kay
http://www.saxonica.com/
|