RE: [xsl] substitute variable value into xpath expression - problem

Subject: RE: [xsl] 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: [xsl] 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

Current Thread