- From: Peter Meyer <petermeyer99@hotmail.com>
- Date: Tue, 20 Mar 2001 19:08:33 -0000
- To: gareth@decisionsoft.com
- Cc: www-dom@w3c.org
No... See my answer to the other mail in this thread... These functions only allow me to traverse the data structure, but I still need to rely on compile-time field information to manually dispatch functionality, instead of using the polymorphism of the language runtime to handle it for me in a type-safe manner. If you don't subclass your DOM classes heavily and dynamically, it probably does not matter, but if you do, it does not lead to nice code. >From: Gareth Reakes <gareth@decisionsoft.com> >To: Peter Meyer <petermeyer99@hotmail.com> >CC: www-dom@w3c.org, www-dom@w3.org >Subject: Re: Type-safe iteration over the DOM in DOM 2 & 3? >Date: Tue, 20 Mar 2001 08:55:57 +0000 (GMT) > >Do NodeIterator or TreeWalker not do what you want? > > >Gareth > > >On Mon, 19 Mar 2001, Peter Meyer wrote: > > > Hello DOM-World, > > After working for a while with DOM2 and looking over the spec of DOM3, >it > > still seems that there is no way to perform a truly object-oriented > > traversal of a DOM tree. Using the existing model, I can not see a way >to > > traverse the DOM without actually using a switch statement based on node > > type. > > > > This seems to me a fairly non-scalable, hard-to-maintain and inelegant >way > > to traverse a tree of objects. I am sure it has been considered by the >W3C > > to add the ability to use a visitor pattern or a similar object oriented > > design pattern for traversal to the node interface. I would like to > > understand why it has been decided against such an addition. > > > > Given that the DOM is also used in many XML applications, the ommission >of a > > good object oriented mechanism is particularly problematic. > > > > In such an application it is likely that a class factory is used to >create > > particular subclasses specific for each element type, providing >specialized > > functionality for the application actually building the DOM from an XML > > file. Using a switch statement to call specialized functionality on > > traversal is, in my humble opinion, a very unsatisfactory way of action. >Yet > > with the current DOM design there seems to be no alternative. > > > > Please consider the addition of a simple visitor pattern interface to >the > > node interface. After all, it is an extremely simple addition that can > > safely be ignored by anybody who does not desire to use it, yet permits >to > > use the DOM as a primary configurable data structure in a larger scale >OO > > application. > > > > Thanks! > > PM > > > > > > > > > > > > > > > > P.S: > > The visitor interface would require: > > > > In the node interface: > > A method > > accept(IVisitor v); > > > > A new interface IVisitor which contains one method: > > execute(Node n); > > > > Implementations: > > In a reference implementation of a class that implements the node if, >this > > function would just be like this: > > public void accept(IVisitor v) > > { > > v.execute(this); > > } > > Subclasses of nodes that have children would additionally call > > accept(v); > > for each of their children. > > > > Implementors of the IVisitor interface would implement overrides for >execute > > that take as an argument the particular subclass of the node interface >they > > are interested in. > > >_________________________________________________________________________ > > Get Your Private, Free E-mail from MSN Hotmail at >http://www.hotmail.com. > > > > > >-- >Gareth Reakes, Lead Software Engineer >DecisionSoft Ltd. http://www.decisionsoft.com >Office: +44 (0) 1865 203192 > > _________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
Received on Tuesday, 20 March 2001 14:09:11 UTC