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

Re: [xsl] Recursive apply-templates


Subject: Re: [xsl] Recursive apply-templates
From: "James A. Robinson" <jimr@xxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 05 May 2004 08:40:57 -0700

> How do I write a template match so that all the output
> XML looks exactly like the input XML. I do not know
> how to recursively use apply-templates. Can someone help?

A template which I've often found useful is:

    <?xml version='1.0' encoding='UTF-8'?>
    <xsl:stylesheet
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
     version='1.0'>

        <xsl:output encoding='UTF-8' method='xml'/>

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

        <!-- ... -->

    </xsl:stylesheet>

This recursively copies the input XML to the output, but also allows you
to add new xsl:template matches to override certain copies.  Basically, as
long as you make sure to use xsl:apply-templates instead of xsl:copy-of,
you know you can override handling of select elements at will.


Jim
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
James A. Robinson                       jim.robinson@xxxxxxxxxxxx
Stanford University HighWire Press      http://highwire.stanford.edu/
650-723-7294 (W) 650-725-9335 (F)   


Current Thread
Keywords
xml