RE: [xsl] can one include/import XML data into stylesheets?

Subject: RE: [xsl] can one include/import XML data into stylesheets?
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Mon, 2 Feb 2004 14:45:06 -0000
document('') gives you an XML representation of the current stylesheet
module, in its state before any processing of xsl:include. So this won't
work.

But you could put a global variable in the included stylesheet module of
the form

<xsl:variable name="x" select="document('')/*/gem:data/..." />

and then in the main module you could refer to this variable.

Michael Kay


> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Lars Huttar
> Sent: 02 February 2004 14:20
> To: XSL-List (E-mail)
> Subject: [xsl] can one include/import XML data into stylesheets?
> 
> 
> Hello all,
> 
> I have a stylesheet that uses
>    <xsl:value-of 
> select="document('../resources/gem-data.xml')/*/gem:data/..." 
> /> to access some data it needs. My question is, instead of 
> using document('path...'), can I use
>    <xsl:include href="../resources/gem-data.xsl" />
> (where gem-data.xsl is a stylesheet that has the data of 
> gem-data.xml at the top level) and then later
>    <xsl:value-of select="document('')/*/gem:data/..." />
> ?
> 
> In other words, will the <xsl:include> pull the data from
> the included file into the document tree of the includer 
> stylesheet so that document('') can access it?
> 
> The spec says,
> "The resource located by the href attribute value is parsed 
> as an XML document, and the children of the xsl:stylesheet 
> element in this document replace the xsl:include element in 
> the including document."
> 
> Trying it in Cocoon with Xalan, it doesn't seem to work, i.e. 
> the value-of instruction is getting nothing. The same thing 
> happens in Saxon. Is there a way to do this that I'm not 
> getting, or is it just not possible?
> 
> Here is my test stylesheet (includer):
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> 		xmlns:gem="http://www.sil.org/namespace/gem";>
>   <xsl:include href="../resources/gem-data.xsl" />
>   <xsl:output method="html" indent="yes"/>
> 
>   <xsl:template match="/">
>   	<xsl:value-of select="count(document('')/*/gem:data)" />
>   </xsl:template>
> 
> </xsl:stylesheet>
> 
> Included stylesheet (../resources/gem-data.xsl):
> 
> <xsl:stylesheet version="1.0" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> 	<gem:data xmlns:gem="http://www.sil.org/namespace/gem";>
> 	...
> 	</gem:data>
> </xsl:stylesheet>
> 
> 
> The reason I wanted to try xsl:include/document('') instead 
> of document('path') is that Cocoon frowns on the use of 
> document('path'); it messes up caching. Not that it matters 
> much; the data is basically static anyway.
> 
> Thanks,
> Lars
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


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


Current Thread