home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Book HomeXSLTSearch this book

Chapter 7. Combining XML Documents

One of XSLT's most powerful features is the document() function. document() lets you use part of an XML document (identified with an XPath expression, of course) as a URI. In other words, you can look in a document, use parts of that document as URLs (or filenames), open and parse those files, then perform stylesheet functions on the combination of all those documents. In this chapter, we'll cover the document() function in all its glory.

7.1. Overview

The document() function is very useful for defining views of multiple XML documents. In this chapter, we'll use XML-tagged purchase orders that look like this:

<purchase-order id="38292">
  <customer id="4738" level="Platinum">
    <address type="business">
      <name>
        <title>Mr.</title>
        <first-name>Chester Hasbrouck</first-name>
        <last-name>Frisby</last-name>
      </name>
      <street>1234 Main Street</street>
      <city>Sheboygan</city>
      <state>WI</state>
      <zip>48392</zip>
    </address>
    <address type="ship-to"/>
  </customer>
  <items>
    <item part_no="28392-33-TT">
      <name>Turnip Twaddler</name>

      <qty>3</qty>
      <price>9.95</price>
    </item>
    <item part_no="28813-70-PG">
      <name>Prawn Goader</name>
      <qty>1</qty>
      <price>18.95</price>
    </item>
  </items>
</purchase-order>

If we had a few dozen documents like this, we might want to view the collection of purchase orders in a number of ways. We could view them sorted (or even grouped) by customer, by part number, by the amount of the total order, by the state to which they were shipped, etc. One way to do this would be to write code that worked directly with the Document Object Model. We could parse each document, retrieve its DOM tree, then use DOM functions to order and group the various DOM trees, display certain parts of the DOM trees, etc. Because this is an XSLT book, though, you probably won't be surprised to learn that XSLT provides a function to handle most of the heavy lifting for us.



Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.