RE: [xsl] XSLT to remove characters and whitespaces

Subject: RE: [xsl] 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/

Current Thread