[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

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


Subject: RE: [xsl] Output input_xml apart from one tag change?
From: "Scott Trenda" <Scott.Trenda@xxxxxxxx>
Date: Tue, 2 Oct 2007 10:50:21 -0500

I don't mean to turn this into a long, drawn-out argument where we're
essentially saying the same thing, but...

Say you _don't_ know you want to copy them. I use it as a standard
identity template, because it allows me to do something like the
following afterward:

<xsl:template match="select[some condition]/@multiple"/>

... allowing me to make all SELECTs under that condition single-select.
It just leaves the door that much more open for variations later. And
for newbies, I'd think that the explicit select="@*|node()" being the
same as the template's match would imply that we're using the same
template for the <xsl:copy> content.


Like I said, six of one, half-dozen of the other, but food for thought.

~ Scott


-----Original Message-----
From: Wendell Piez [mailto:wapiez@xxxxxxxxxxxxxxxx]
Sent: Tuesday, October 02, 2007 10:30 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Output input_xml apart from one tag change?

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
Keywords
xml