Subject: Re: 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)
|