Subject: RE: Required item type of first operand of '/' is node(); supplied value has item type xs:string
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 23 Apr 2010 14:37:40 +0100
|
Variables in XSLT represent values, not fragments of expression text. It's
not a macro language. You can use the variable $name anywhere you would use
a string literal, for example
select="//x/*[local-name() = $name]/description"
Take care with namespaces.
Regards,
Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay
> -----Original Message-----
> From: Jacobus Reyneke [mailto:jacobusreyneke@xxxxxxxxx]
> Sent: 23 April 2010 14:09
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Required item type of first operand of '/' is
> node(); supplied value has item type xs:string
>
> Good day,
>
> I have found a million references to this problem on the
> Internet, but I still can't get my template to work. People
> are typically experiencing these issues in functions and
> parameter passing. My application is very simple, but the
> solution keeps avoiding me.
>
> I'm trying to use an element name as part of a path to a
> central dictionary for my problem domain's terms. I'm keeping
> the vocabulary under a different namespace so that I can move
> it out later.
>
> The following template:
> <xsl:template match="c:*">
> <xsl:variable name="name" select="local-name()"/>
> <xsl:apply-templates
> select="//c:smart-lookup-list/$name/description/node()"/>
> </xsl:template>
>
> Is not working and gives the error described above.
>
> If I hardcode a value (lets say 'monkey') then off course it works:
> <xsl:template match="c:*">
> <xsl:variable name="name" select="local-name()"/>
> <xsl:apply-templates
> select="//c:smart-lookup-list/monkey/description/node()"/>
> </xsl:template>
>
> I'll be grateful for any guidance.
>
> Kind regards,
> Jacobus
|