[xsl] Match document node of source document only?

Subject: [xsl] Match document node of source document only?
From: Mark Lundquist <lundquist.mark@xxxxxxxxx>
Date: Thu, 22 May 2008 06:38:57 -0700
Hi,

I've got a template where I have to do this trick (in XSLT 2.0):

	<xsl:variable name="foo">
		<whatever>
			blah blah blah...
		</whatever>
	</xsl:variable>
	<xsl:apply-templates select="$foo"/>

This is in order to apply some transform (e.g., from an imported
stylesheet) to sequences that originate in the stylesheet, not in the
source document.  My problem is that I also have this template:

	<xsl:template match="/">
		...

which is meant to transform the document node of the source document,
but the result tree fragment defined by variable foo also has a
document node, so now when I <xsl:apply-templates select="$foo"/>,
this template also matches that result tree fragment document node and
transforms it.  Bleah!!!  How do I write a template that matches the
document node of the source document only?

I could do

<xsl:variable name="root" select="/"/>

<xsl:template match="/[. = $root]">

but that's really hacky and seems like it should not be necessary.
Any ideas?

cheers,
ml

Current Thread