Re: [xsl] Filter out elements that have one specific sub-element and nothing else

Subject: Re: [xsl] Filter out elements that have one specific sub-element and nothing else
From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Thu, 22 Feb 2007 09:50:58 +0000
On 2/22/07, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> I created a test sheet that tried all suggested methods, all
> seem to work.
>
> The big question now: which one would be the most efficient
> (fastest) one?

A bigger question is whether they are all correct. This one at least seems
wrong, because it has no check for text nodes:

listitem[formatinfo][count(child::*) = 1]

Yes - I missed the "or text" part of "no other element or text". As the OP said it seemed to work, so they didn't spot it either... It goes to show how easy it is to create incorrect results that look right with XSLT.

Btw, shouldn't your suggestion of:

select="listitem[node()[last()=1][self::formatinfo]]"

really need to be as a template match rather than select:

match="listitem[node()[last()=1][self::formatinfo]]"

?

Current Thread