W3C home > Mailing lists > Public > public-webapi@w3.org > March 2007

Re: ElementTraversal spec draft

From: Bjoern Hoehrmann <derhoermi@gmx.net>
Date: Thu, 15 Mar 2007 20:27:02 +0100
To: "Charles McCathieNevile" <chaals@opera.com>
Cc: "web API" <public-webapi@w3.org>
Message-ID: <1m6jv2596o9odod6ofiduodutk96784a6d@hive.bjoern.hoehrmann.de>

* Charles McCathieNevile wrote:
>@@issue: should we add a childElements attribute
>that returns a list of elements?

No! You can easily do this with

  for (child = element.firstElementChild;
       child;
       child = child.nextElementSibling)
    array.push(child);

  for (var i = 0; i < array.length; ++i)
    ...

I do not see why you would do that though. Further, you can about as
easily do this using DOM XPath, XPath selectNodes, the CSS Query API,
DOM Level 2 Traversal, you can in fact just use Core like

  for (var i = 0; i < element.childNodes.length; ++i)
    if (element.childNodes[i].nodeType == 1)
      ...

well you would really use

  for (child = element.firstChild;
       child;
       child = child.nextSibling)
    if (child.nodeType == 1)
      ...

Counting is trivially implemented on top of these, or you can just
use XPath "count(*)". I understand a primary concern why SVG Tiny 1.2
did not have many of the DOM Core features is because the NodeList
interface was regarded as expensive. And having childNodes live and
childElements not live would add considerable confusion. No need for
an alias for element.selectNodes("*") and element.cssQuery("*").

As a comment on the draft, you have to define how the method behave
in case of unexpanded entity references and entity replacement markup.
I've explained this in a little bit more detail on www-svg at some
point.
-- 
Björn Höhrmann · mailto:bjoern@hoehrmann.de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/ 
Received on Thursday, 15 March 2007 19:27:01 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:18:57 GMT