Mike et al,
Cool! Thanks for all the prompt help on this.
I was able to get a general-purpose "XML fragment extractor" working
with a very simple stylesheet:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0"
xmlns:saxon="http://saxon.sf.net/" exclude-result-prefixes="saxon">
<!--Return a fragment of the input XML specified by the xpath string
passed in. -->
<xsl:output method="xml" indent="yes"/>
<xsl:param name="xpath"/> <!-- passed on command line as a param -->
<xsl:template match="/">
<xsl:copy-of select="saxon:evaluate($xpath)"/>
</xsl:template>
</xsl:stylesheet>
This works fine on default namespaces, but I gather that if my input
document has namespaces, I have to statically declare those in my
stylesheet?
E.g. I am working with input XML like this:
<gmi:MI_Metadata
xmlns:gmi="http://www.isotc211.org/2005/gmi"
xmlns:gco="http://www.isotc211.org/2005/gco"
xmlns:gmd="http://www.isotc211.org/2005/gmd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.isotc211.org/2005/gmi
http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd">
<gmd:fileIdentifier>
<gco:CharacterString>gov.noaa.nosa:NESDIS-IONOSONDE</gco:CharacterString>
</gmd:fileIdentifier>
</gmi:MI_Metadata>
Is there any way for the stylesheet to "use" the namespaces in the input
XML?
Thanks so much,
--Rich
Michael Kay said the following on 06/29/2011 02:35 AM:
Is there a function or syntax in XSLT 1 or 2 that will evaluate the
XPath at run-time?
No, but there is in XSLT 3.0 (formerly known as XSLT 2.1). See
http://www.w3.org/TR/xslt-21/#element-evaluate
To use this in Saxon 9.3 you will need to activate XSLT 3.0 using
-xsltversion:3.0
Come to think of it, I think that might require Saxon-EE. In Saxon-PE
you might have to fall back to the saxon:evaluate() extension.
http://www.saxonica.com/documentation/extensions/functions/evaluate.xml
Michael Kay
Saxonica
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--