RE: [xsl] Output input_xml apart from one tag change?

Subject: RE: [xsl] Output input_xml apart from one tag change?
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Tue, 02 Oct 2007 11:29:33 -0400
At 10:55 AM 10/2/2007, Scott wrote:
Quick note here - I use this variation of the identity template below:

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

Brevity aside, this template also preserves comments and processing
instructions.

Then there is an in-between variant:


<xsl:template match="node()">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

This also copies comments and PIs, since it overrides the built-in template for them too.

The difference from Scott's (besides the one line longer), like the variant posted earlier, is that it does not apply templates to the attributes, which makes it inappropriate for applications that need to change (or drop) attributes along with elements. But by the same token, it's also a bit more direct.

I'll often use the slightly-longer one because (a) I think why bother visiting the attributes to match and apply templates when I know I want to copy them, and (b) I think it's just a step more legible and hence intelligible to XSLT-newbies who may be maintaining my code later (it gives them one less thing to puzzle out).

Cheers,
Wendell



======================================================================
Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================

Current Thread