[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Pass a DOM as an XSLT parameter?

Subject: Pass a DOM as an XSLT parameter?
From: cknell@xxxxxxxxxx
Date: Sun, 14 Dec 2003 19:04:40 -0500
xslt parameter
I've been asked to process two XML documents with one XSLT stylesheet. One document exists in the file system and the other exists in memory as the result of a SQL Server 2000 "for XML" query. In an ideal world, I would write a stylesheet to process the file-system XML document and bring the in-memory XML document into the transformation via the document() function. Since the document() function takes as a parameter a URI, and since I can't think of a way to give a URI to the in-memory document, I'm stumped. I've thought of creating a DOM from the in-memory XML and passing the DOM as a parameter, but I'm pretty sure that won't work. So now I'm thinking of capturing the in-memory XML in a string and passing the string to the XSLT as a parameter and reconstituting the tree inside the XSLT as a variable using a nodeset() function, but I've never done that and I'm fuzzy on it.

I have tried "doing it backwards" by writing the stylesheet so that it will process the in-memory XML and accessing the file-system XML via the document() function, but I'm getting hoplessly confused at trying to reference the the contents of the document()-created document. It's even hard to write a sentence that explains that clearly.

Here is a model of the in-memory document:

<exhibits>
  <chapter1>stuff</chapter1>
  <chapter3>some more stuff</chapter3>
</exhibits>

Here is a model of the file-system document:

<book>
  <front-matter />
  <chapters>
    <chapter>
      <chapter-num>1</chapter-num>
      <exhibit-ref>chapter1</exhibit-ref>
    </chapter>
    <chapter>
      <chapter-num>2</chapter-num>
      <exhibit-ref>chapter2</exhibit-ref>
    </chapter>
    <chapter>
      <chapter-num>3</chapter-num>
      <exhibit-ref>chapter3</exhibit-ref>
    </chapter>
  </chapters>
  <index />
</book>

One problem I'm facing is that the in-memory document does not contain elements matching every element in the file-system document and the file-system document needs to be the driver of the process even though it's not the file set up as the one to be directly processed by the transformation. I think that if I re-write the stylesheet so that it processes the file-system XML and pass the in-memory XML documents contents as a string to the XSLT (and re-constitute it as a node tree using the nodeset() function) I can solve the problem simply.


The processor is MSXML4. The context of the transformation is an ASP page in which the appropriate COM objects are created. Can anyone give me some guidance on this?

-- 
Charles Knell
cknell@xxxxxxxxxx - email

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.