This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: document()
- From: Stuart Brown <stuart dot brown at computing-services dot oxford dot ac dot uk>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Wed, 13 Feb 2002 12:36:46 +0000
- Subject: [xsl] Re: document()
- Organization: Text Encoding Initiative, Oxford University
- References: <200202130730.CAA20922@biglist.com>
- Reply-to: xsl-list at lists dot mulberrytech dot com
>
> Thanks for your reply! Do you ( or anybody else) happen to know how to use
> the document() function to get to the root node of the xml file that you're
> applying your stylesheet to? Or are there better, alternative ways of
> getting your
> xml file root node??
It might not be the most sophisticated solution, but I define a global parameter
docURI, use references to this, and pass the value to the processor at the
command line, thus:
<xsl:transform [blah blah]>
<xsl:param name="docURI">index.xml</xsl:param><!-- My default -->
<xsl:template match="foo">
<xsl:for-each select="document('someOtherDoc.xml')>
<!-- We move the context into some other doc -->
<xsl:for-each select="document($docURI)">
<!-- And here we are back in the original (whatever it is) -->
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:transform>
Command line (e.g.): saxon foo.xml bar.xsl docURI="foo.xml"
> Even more confusing,
> he says that document('') is used to get the root node of the
> stylesheet - what
> would you do with that? Didn't he mean the root node of the xml file you're
> applying the stylesheet to?
No -- the stylesheet itself. If there is some static data, for instance US
State name/abbreviation equivalencies to which you will be referring at various
points, you can set up the following kind of system:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform
xmlns:lookup="lookup-place"
exclude-result-prefixes="book">
<lookup:us>
<lookup:state abbr="CA">California</lookup:state>
<lookup:state abbr="NY">New York</lookup:state>
...
</lookup:us>
and then you know you have this information irrespective of the actual file you
are processing, and can get at it anywhere within the style sheet with, for
instance,
<xsl:value-of select="document(' ')//lookup:state[@abbr=$myState]">
Stuart
============
Stuart Brown
Text Encoding Initiative
Oxford, UK
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list