RE: [xsl] select all nodes WITHOUT a specific attribute?

Subject: RE: [xsl] select all nodes WITHOUT a specific attribute?
From: Nisheet Verma <NisheetV@xxxxxxxxxxx>
Date: Mon, 3 Dec 2001 12:20:27 -0800
try
<xsl:for-each select="things/thing[not(@id!='')]">

It works.
I don't know why I would need not() here but <xsl:for-each
select="things/thing[@id='']"> does not work hence reversed the logic and
introduced not() and it works.


Nisheet

-----Original Message-----
From: William Bagby [mailto:williamb@xxxxxxxxx]
Sent: Monday, December 03, 2001 11:42 AM
To: XSL Mailing List (E-mail)
Subject: [xsl] select all nodes WITHOUT a specific attribute?


How do I select all nodes that DO NOT have a specific attribute?

For example, I have 

<things>
    <thing id="1">One</thing>
    <thing>shoe</thing>
    <thing>bear</thing>
    <thing id="2">Two</thing>
    <thing id="3">Three</thing>
    <thing>airplane</thing>
    <thing id="4">Four</thing> 
    <thing id="5">Five</thing>
</things>

and I want:

    <thing>shoe</thing> 
    <thing>bear</thing> 
    <thing>airplane</thing>

What I got so far is

<xsl:for-each select="things/thing[string-length(@id) = 0]">
    ...
</xsl:for-each>

This seems to work, but it rubs me the wrong way.  Is there a more elegant
solution?

William Bagby

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread