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