This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Selecting all descendants with no child nodes


Taras,

Beginner XPath questions are fun. Educational for the newbies, and we all
get to see what different things people come up with.

At 10:24 PM 10/3/00 +0200, you wrote:
..
>I'm using the XPath expression "//*[count(*)=0]" to locate all "endpoint"
>nodes.
>
>Is there any other way to achieve this, an alternative syntax?

If you mean elements with no element children (which is what your version
is), then
//*[not(*)]

If all nodes that have no children at all (apart from attribute nodes), then
//node[not(node())]

but this will get you terminal (leaf) text nodes too.

//*[not(node())]
gets you all elements that have no text nodes, elements, comments or
processing instructions inside them.

They all have in common the feature that an empty node-set evaluates, in an
expression that requires a boolean operand (such as a predicate []), as a
boolean false; so when you do the not() operation on an empty node-set, you
get boolean true.

Hope that helps,
Wendell


======================================================================
Wendell Piez                            mailto:wapiez@mulberrytech.com
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]