Is it possible to use a Dynamic xPath expression in a xslt style sheet?

ant, xml, xpath, xslt

Solution

Check out http://www.exslt.org/. Specifically look at the dynamic:evaluate module.

Problem

I'd like to use the value of an xslt parameter in an xpath expression. Specifically, as part of a `not()` call in an `<xsl:if` expression. ``` <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- my_param contains a string '/foo/bar', passed in from ant --> <!-- the 'no' is just a default value --> <xsl:param name="my_param">no</xsl:param> <xsl:variable name="var_myparam" select="$my_param" /> <!-- ... --> <!-- this works --> <xsl:if test="not(/foo/bar)" /> <!-- expression returns boolean true --> <!-- ... --> </xsl:if> <!-- I can't figure out how to do this the right way --> <!-- None of these appear to work --> <xsl:if test="not($var_myparam)" /> <!-- expression returns boolean false --> <!-- ... --> </xsl:if> <xsl:if test="not({$var_myparam})" /> <!-- complains Required attribute 'test' is missing --> <!-- ... --> </xsl:if> <xsl:if test="not({$myparam})" /> <!-- complains Required attribute 'test' is missing --> <!-- ... --> </xsl:if> <xsl:if test="not($myparam)" /> <!-- expression returns boolean false --> <!-- ... --> </xsl:if> </xsl:transform> ``` I'm a little unclear on what the correct syntax is for creating a dynamic xpath expression in an xslt style sheet. I'm also a little fuzzy on the difference between a paramater, a variable, and how expanstion of both works. For example, with parameters, I know that sometimes I need the brackets, and sometimes I don't. ``` <!-- when creating an element, it seems I need brackets --> <xsl:element name="{$my_param}" /> <!-- when selecting an element value for the output stream, no brackets are needed --> <xsl:value-of select="$my_param"/> ``` Any general/specific help would be greatly appreciated.

Original source

Related problems