Why doesn Traversal use the Visitor pattern?
Visitor was considered for inclusion in the Traversal module of the Level 2 DOM. There are negative as well as positive consequences to implementing the Visitor pattern. One of Visitor’s advantages over Iterator is that Visitor can handle structures where the objects don’t share a common ancestor class, which is not an issue when everything you’re looking at is derived from Node. Since most of the things a Visitor could do can be emulated with a switch statement driven by an iterator, we decided to defer this issue.