Re: [xsl] The identity transform and attributes

Subject: Re: [xsl] The identity transform and attributes
From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Mon, 21 Jan 2008 12:23:41 +0000
On 21/01/2008, David Carlisle <davidc@xxxxxxxxx> wrote:
> > It's certainly not intuitive that when you what to just change the
> > attribute's value you have to create a new attribute node
> Intuition is a personal thing but I don't see why that's not
> intuitive. xslt never updates nodes in place, so you always generate new
> nodes.

Sure, but I meant along the lines of copy vs create... To update an
element's "value" you tend to copy it rather than create a new one.
To update an attribute's value I would say it's intuitive to try the
same approach, especially when the name and value are clearly separate
(to me!).

> Attributes are leaf nodes and work the same way as namespace nodes, and
> PI nodes (that is they have a name and value but no children) element
> nodes are the only ones to have name and children, document nodes have
> children but no name, and comments and text nodes have a value but no
> name.

I've been caught out before doing things like:

<xsl:template match="@*[not(self::foo)]">

...which doesn't work - you have to use name()

Again, I don't know why the self axis isn't available for attribute
nodes... any ideas?

Andrew Welch

Current Thread