Re: [xsl] Multi-source documents: difference between document() and entities?

Subject: Re: [xsl] Multi-source documents: difference between document() and entities?
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 27 Jan 2004 14:46:01 -0500
At 2004-01-27 11:50 -0700, Randolph Kahle wrote:
As I understand it, document() returns the root node of a tree and if I use the "/" path while processing a tree, I do *not* get the "root" above all document()-retrieved trees.

Correct ... there is no such "root above all retrieved trees" ... they are standalone (and relatively unordered).


What I get is the root of that specific XML file's tree.

Right.


My question is: How do I construct a path that will search all trees returned by the document() function?

document() returns the union of root nodes from all of the files opened by the string values of the *set* of nodes passed as an argument.


So, if I had:

  <files>
    <file url="a.xml"/>
    <file url="b.xml"/>
    <file url="c.xml"/>
  </files>

... and I did:

document( /files/file/@url )

... I would get the union set of three root nodes, so if I wanted to search all three XML documents for all <info> elements I would use:

document( /files/file/@url )//info

So, the trick is to put the "multiplicity" into the argument to the document function and deal with the multiplicity that is returned.

I hope this helps.

......................... Ken

p.s. don't worry about repeated calls to document() ... the processor typically caches the entire tree and just continues to return the already-retrieved root node. So, you could have:

  <xsl:variable name="allfiles" select="document( /files/file/@url )"/>
  ...
  <xsl:for-each select="$allfiles//info">
    ...


-- Public courses: sign up for one or both soon to reserve your seat! Each week: Monday-Wednesday: XSLT/XPath; Thursday-Friday: XSL-FO Washington, DC: 2004-03-15 San Francisco, CA: 2004-03-22 Hong Kong, China: 2004-05-17 Bremen, Germany: 2004-05-24 World-wide on-site corporate, government & user group XML training

G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Breast Cancer Awareness  http://www.CraneSoftwrights.com/s/bc


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



Current Thread