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.

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 ...

Get XSLT now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.