Subject: RE: XSLT to remove characters and whitespaces
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 10 Jul 2006 14:26:00 +0100
|
> As you point out your solution is similar to the "identity template"
> at Michaels "XSLT2.0", Page 243, which i didn't mentioned
> before. I wonder why he uses "@*|node()" instead of "*" for
> the matching. If it matches an attribute (@*) what would the
> template do with it? Your solution using "*" seems to me more
> logical and does the job too. The question is: why?
There are two variants of the identity template in common use. This version:
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
processes all *elements* by copying them, and can be overridden for
individual elements.
This version:
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
processes all *nodes* by copying them, and can be overridden for individual
elements, attributes, comments, processing instructions, or text nodes.
Michael Kay
http://www.saxonica.com/
|