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

Subject: RE: [xsl] apply templates to all attributes except for one
From: Tobi Reif <tobiasreif@xxxxxxxxxxxxx>
Date: Sun, 8 Jan 2006 09:52:08 +0100
Hi Michael

> In 2.0 you can write
> 
> select="@* except @foo"

Thanks, but for this project I'm confined to 1.0.

> 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:

  <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