RE: [xsl] apply templates to all attributes except for one

Subject: RE: [xsl] 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

Current Thread