Re: [xsl] How to pass an XPath as a param and evaluate it?

Subject: Re: [xsl] How to pass an XPath as a param and evaluate it?
From: Hermann Stamm-Wilbrandt <STAMMW@xxxxxxxxxx>
Date: Wed, 29 Jun 2011 12:08:46 +0200
> Is there a function or syntax in XSLT 1 or 2 that will evaluate 
> the XPath at run-time?

as others have stated, no for XSLT 1 or 2.


But if you use a XSLT 1 processor providing EXSLT dynamic package
you can simply use dyn:evaluate(...) for that:
http://exslt.org/dyn/functions/evaluate/index.html


Mit besten Gruessen / Best wishes,

Hermann Stamm-Wilbrandt
Developer, XML Compiler, L3
Fixpack team lead
WebSphere DataPower SOA Appliances
https://www.ibm.com/developerworks/mydeveloperworks/blogs/HermannSW/
----------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschaeftsfuehrung: Dirk Wittkopp
Sitz der Gesellschaft: Boeblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294 


From:   Richard Fozzard <Richard.Fozzard@xxxxxxxx>
To:     xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Date:   06/29/2011 01:13 AM
Subject:        [xsl] How to pass an XPath as a param and evaluate it?



Fellow XSLers,

How can I use a string param passed on the command line as an XPath?

E.g., if I have this XML:

<library>
    <book>
        <title>Bob</title>
    </book>
</library>

and I want to have a general-purpose XSL that I can pass an XPath to 
output any desired XML fragment. So I tried this:

    <xsl:output method="xml" indent="yes"/>
    <xsl:param name="xpath"/> <!-- passed on command line as a param -->

    <xsl:template match="/">
            <xsl:copy-of select="$xpath"/>
    </xsl:template>

passing xpath="/library/book[title='Bob']". But of course, it just 
outputs this:

/library/book[title='Bob']

while I really wanted the node at that XPath:

<book>
      <title>Bob</title>
</book>

Is there a function or syntax in XSLT 1 or 2 that will evaluate the 
XPath at run-time?

(BTW, I'm using SaxonPE 9.3 on Linux, if that matters.)

Thanks so much for any help!
--Rich

Richard Fozzard, Computer Scientist
  Geospatial Metadata at NGDC: http://www.ngdc.noaa.gov/metadata

Cooperative Institute for Research in Environmental Sciences (CIRES)
Univ. Colorado & NOAA National Geophysical Data Center, Enterprise Data 
Systems 
325 S. Broadway, Skaggs 1B-305, Boulder, CO 80305
Office: 303-497-6487, Cell: 303-579-5615, Email: richard.fozzard@xxxxxxxx

Current Thread