This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: M.Kay XSLT book, p. 120 Curly braces question


> I would like to use a
> variable or parameter as part of an XPath expression. 
> However, whereas I can use variables in constructions such as
> $doc/FeatureSet[$i]/Feature[$j], where $doc is a nodeset generated by 
> 
> <xsl:variable name="doc" select="document(@FeatureFile)"/>
> 
> I cannot use a construction like $doc//$mypointer, where 
> $mypointer has the value 'FeatureSet[2]/Feature[4]'. 

To quote my response to another question today:

XSLT 1.0 doesn't allow you to construct XPath expressions, or parts of
expressions, from strings or variables at run-time.

You can sometimes work round it using name(), e.g.

select='document("EZ722.xml")/*[name()=$element]'

But that doesn't work in this case. Saxon has a more powerful workaround:
the saxon:evaluate() extension function. Here you could write:

select="saxon:evaluate(concat('$doc/', $mypointer))"

> In my xml file which describes my data, I want to include a 
> reference to the original data that was used in the calculation.

I think this is the classic use-case that justifies a feature such as
saxon:evaluate().

Mike Kay 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]