Subject: RE: apply templates to all attributes except for one
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sun, 8 Jan 2006 14:16:24 -0000
|
> > Or of course you can write
> >
> > <xsl:template match="@foo"/>
> >
> > with xsl:apply-templates select="@*"
>
> I'm not sure whether that applies to my case, here's the XSLT:
You can use the technique, but you'll need to use different modes for the
two apply-templates calls.
Michael Kay
http://www.saxonica.com/
>
> <xsl:transform version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:template match="node()|@*">
> <xsl:copy>
> <xsl:apply-templates select="node()|@*"/>
> </xsl:copy>
> </xsl:template>
> <xsl:template match="para[@foo]">
> <para>
> <xsl:apply-templates
> select="@*[not(local-name()='foo')]"/>
> <bar>
> <xsl:apply-templates select="@foo"/>
> </bar>
> <xsl:apply-templates select="node()"/>
> </para>
> </xsl:template>
> <xsl:template match="para/@foo">
> <xsl:value-of select="."/>
> </xsl:template>
> </xsl:transform>
>
> Tobi
>
> > > -----Original Message-----
> [...]
> > > Hi
> > >
> > > In an XSLT I have the following:
> > >
> > > <xsl:apply-templates select="@*[not(local-name()='foo')]"/>
> > >
> > > It works. But is there a more elegant (or at least shorter)
> > > way to write this?
> > >
> > > Tobi
|