xsl-list
[Top] [All Lists]

RE: XML fragment as a param ?

2005-11-03 05:34:24
"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>
--~--



<Prev in Thread] Current Thread [Next in Thread>