xsl-list
[Top] [All Lists]

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

2011-06-28 18:13:26
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(_dot_)fozzard(_at_)noaa(_dot_)gov



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--