- From: Box, Don <dbox@develop.com>
- Date: Sun, 24 Oct 1999 05:31:27 -0400 (EDT)
- To: "'www-dom@w3.org'" <www-dom@w3.org>
- Cc: "Box, Don" <dbox@develop.com>
This makes it extremely hard to write Java code that: a) Allows users to link in their own XML parser that implements org.w3c.* and b) Mixes Level 1 and Level 2 XML parsers in the same VM. Yes, I know about DOMImplementation.supports, but I am sorry, this is a hack. I strongly suggest you hoist the new Level 2 methods into new interrfaces that extend the Level 1 versions. This could be done as simply as spawning off another package name, as follows: // note package name package org.w3c.dom.level2; public interface Attr extends org.w3c.dom.level2.Node, org.w3c.dom.Attr { public org.w3c.dom.level2.Element getOwnerElement(); } This allows me to do the more Java-esque test for extended functionality: public void f(org.w3c.dom.Attr attr) { if (attr instanceof org.w3c.dom.level2.Attr) { // use level 2 functionality here } else { // fall back on Level 1 functionality here } } For someone implementing a Level 2 parser, one can simply ignore the level 1 names as folows: import org.w3c.dom.level2.Element; public class MyElement implements Element { // implement union of Level 1 and Level 2 methods } I really really feel this is an important issue. I have personally written code that loads multiple XML parsers and in the face of Level 1 and Level 2 parsers, I see trouble. It is also not that far fetched to come up with scenarios where this can happen (a web server that loads independently developed servlets that each use a different XML parser). Thanks, DB
Received on Sunday, 24 October 1999 13:21:50 UTC