RE: [xsl] dynamic document() template problem

Subject: RE: [xsl] dynamic document() template problem
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 20 Jun 2005 20:42:10 +0100
Curly braces are never used within an XPath expression: they are only used
when an XPath expression is embedded in text within an attribute value
template.

In standard XSLT, you can't construct an XPath expression dynamically from a
string, or interpret an XPath expression held in a source document. However,
Saxon (and some other products) have an extension to do this:

<xsl:apply-templates
select="document(@href)/Document/saxon:evaluate-node(current()/@nodes))"/>

(This is Saxon 8.4)

(You'll see saxon:evaluate() more often than saxon:evaluate-node(). The main
difference is that evaluate-node() takes namespace prefixes from the
namespace context in the source document, not from the namespace context in
the stylesheet.)

Michael Kay
http://www.saxonica.com/


> -----Original Message-----
> From: Arian Hojat [mailto:arianhojat2000@xxxxxxxxx] 
> Sent: 20 June 2005 20:30
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] dynamic document() template problem
> 
> Hello i am trying to base a template rule off an
> attribute in my XML to which chooses nodes to apply 
> 
> ###my XML###
> <include href="fbackground.xml"
> nodes="fb/section1/*"/>
> 
> ###my rule for <include>###
> <xsl:apply-templates
> select="document(@href)/Document/{@nodes}"/>
> 
> but i get an error with Saxon...
> [ERROR]
> javax.xml.transform.TransformerConfigurationException:
> javax.xml.transform.TransformerException:
> javax.xml.transform.TransformerException: A location
> step was expected following the '/' or '//' token.
> without the {}, i know it will just check to see if it
> has an attrbiute, but i would like it to get
> intrepeted to
> 'document(fbackground)/Document/fb/section1/*'
> 
> 
> 
> 		
> ____________________________________________________ 
> Yahoo! Sports 
> Rekindle the Rivalries. Sign up for Fantasy Football 
> http://football.fantasysports.yahoo.com

Current Thread