Re: [xsl] better way to say "all attrs except"?

Subject: Re: [xsl] better way to say "all attrs except"?
From: Graydon <graydon@xxxxxxxxx>
Date: Sun, 5 Feb 2012 22:37:55 -0500
On Sun, Feb 05, 2012 at 10:30:15PM -0500, Syd Bauman scripsit:
> For years I've used expressoins like
>    @*[not(name(.)='xml:id' or name(.)='rend')]
> to ask for all of the attributes *except* xml:id= or rend=. And some
> time ago Jeni recommended essentially the same approach.[1] But I'm
> wondering if that isn't an XPath 1-ish way to do things, and if there
> isn't a nicer way to get the same set when using XSLT 2 (and thus can
> make use of XPath 2).

@* except (@xml:id,@rend)

is how that goes in XSLT 2.

(or @*[name(.) != ('xml:id','rend')] if you're preferential toward the
predicate, but the except is the way to go, since that's an actual node
test and keeps you out of the stringy land of names.)

The only tricky thing I've so far noticed about 'except' is that it
doesn't always affect the implicit context of position() just how you
would expect without the write-stuff-down-and-stare-at-it step.

-- Graydon

Current Thread