Either:
(a) Use modes
(b) apply-templates to the outermost element rather than to the document
node
(c) use a more specific pattern for the document node:
match="document-node(element(whatever))"
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Mark Lundquist [mailto:lundquist(_dot_)mark(_at_)gmail(_dot_)com]
Sent: 22 May 2008 14:39
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Match document node of source document only?
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-
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--