Subject: RE: substitute variable value into xpath expression - problem
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 11 Apr 2005 15:29:10 +0100
|
Variables represent run-time values, not compile-time strings that can be
textually substituted into an XPath expression. Use
msxml:node-set(..)/*[name()=$XML_PARENT]/*[name()=$XML_CHILD]
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Hardy Merrill [mailto:HMerrill@xxxxxxxxxxxxxxxx]
> Sent: 11 April 2005 15:19
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: substitute variable value into xpath
> expression - problem
>
> This is using MSXSL4.
>
> near the top of the stylesheet
> *------------------------------------
> <xsl:variable name="XML_PARENT" select="'training_types'" />
> <xsl:variable name="XML_CHILD" select="'training_type'" />
>
> down in the body
> *--------------------
> <xsl:for-each
> select="msxsl:node-set($TRAINING_TYPE_XMLDOC)/$XML_PARENT/$XML_CHILD">
>
> The TRAINING_TYPE_XMLDOC is fine - it's the XML_PARENT and
> XSL_CHILD that I'm having trouble with. All I'm really
> trying to do is substitute in the literal values of the
> XSL_PARENT and XSL_CHILD into the XPath select. Here is the
> error I'm getting:
>
> *------------------
> NodeTest expected here.
> msxsl:node-set($TRAINING_TYPE_XMLDOC)/-->$<--XML_PARENT/$XML_CHILD
> *------------------
>
> I'm sure it's something stupid I'm doing/not doing - please
> let me know what it is.
>
> Thanks.
>
> Hardy Merrill
|