"Fraser" == Fraser Goffin <goffinf(_at_)hotmail(_dot_)com> writes:
Fraser> Is it possible to pass in an XML fragment as a param and then
Fraser> access nodes
Fraser> in the fragment as well as those in the main source instance
Michael>Yes. The way you pass the value depends of course on your
processor
API.
Michael, not sure what you mean, I'm using Xerces/Xalan if that helps ?
I'm not certain how Xalan handles this, but the general technique is:
get your XSLT processor, configured with your stylesheet and input XML
document;
get your XML fragment (probably by selecting a node from a DOMDocument, or
if it's text, by having it parsed into a DOMDocument);
add it as a parameter to the processor (MSXML uses "addParameter"; Xalan's
processor class will have a similar method);
access it via the parameter in your stylesheet.
In pseudocode:
processor = getProcessor(yourStylesheet);
processor.input = inputXMLDocument;
processor.output = outputXMLDocument;
processor.addParameter("myXMLFragment", supplementaryXML);
processor.transform();
Within your stylesheet you will have the parameter declared, and access
the content of the fragment via that:
<xsl:stylesheet>
<xsl:param name="xmlFragment" select="/.." />
<!-- later... -->
<xsl:template match="some/node/in/main/document">
<!-- get a heading from the XMl fragment passed in -->
<h1><xsl:value-of select="$xmlFragment/supplementary/heading" /></h1>
</xsl:template>
<!-- lots of other stuff... -->
</xsl:stylesheet>
How you actually implement the above in real-life code depends on your
processor, so check the Xalan docs for a function with a name similar to
"addParameter", or google for a tutorial.
The procedure for using the "document()" function is different to this,
and "data:" URIs are a different kettle of fish altogether, but as you
originally asked about passing the fragment in a param, this will
hopefully point you in the right direction.
HTH,
Nick.
--
Nick Fitzsimons
http://www.nickfitz.co.uk/
--~------------------------------------------------------------------
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>
--~--