Bring our XML APIs up to date with Java 5.
New packages for Java 5 compatiblity:
- javax.xml.datatype
- javax.xml.namespace
- javax.xml.parsers (updated)
- javax.xml.transform
- javax.xml.transform.dom
- javax.xml.transform.sax
- javax.xml.transform.stream
- javax.xml.validation
- javax.xml.xpath
- org.w3c.dom (updated)
- org.w3c.dom.events
- org.w3c.dom.ls (load/save)
- org.w3c.dom.traversal
- org.w3c.dom.views
Omitted packages (that otherwise exist in Java 5)
- org.w3c.dom.bootstrap. This package facilitates pluggable implementations of DOM.
I'm not including this because there's little need for it in practice; and
because it adds an unnecessary layer of complexity. This decision is also
reflected in TransformerFactory.newInstance(), SAXParserFactory.newInstance(),
and DocumentBuilderFactory.newInstance().
New packages that pseudo-exist in Java 5
- org.w3c.dom.traversal
This package is referenced by Java 5's org.w3c.dom.ls.LSSerializerFilter, but
isn't included in the Javadoc API. Their spec isn't self-consistent.
- org.w3c.dom.views
This package is referenced by Java 5's org.w3c.dom.events.MouseEvent, but
isn't included in the Javadoc API. Another spec that isn't self-consistent.
This upgrades DOM from v2 to v3. http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-
20040407/
This includes some API-incompatible changes; notably introducing new methods
into interfaces. I believe this is still safe, and Java made a similar backwards
incompatible change when they upgraded DOM from v2 to v3 between Java 1.4 and
Java 5.0.
Source for the new APIs comes from Apache XML commons.
http://svn.apache.org/repos/asf/xml/commons/trunk rev 901014.
This code currently contains several gaps in its implementation. In particular,
the impelementations of the DOM model classes (AttrImpl, ElementImpl, NodeImpl)
have DOM v3 methods that throw UnsupportedOperationExceptions. I intend to
address this problem in an immediate follow-up CL. All gaps are marked with TODO
comments, and they all live in the org.apache.harmony.xml.dom package.
To implement these APIs, I've included Apache Xalan. In a follow-up change
I intend to remove most of the code we don't actually need. I'm using their
pristine copy from SVN so Git can track our local modifications.
http://svn.apache.org/repos/asf/xalan/java/trunk rev 889881.