| Important information about XML4J |

On November 9, 1999, the Apache Software Foundation announced the creation of the xml.apache.org project for Open Source XML solutions. As part of that announcement, IBM announced that it was donating its XML4J, XML4C and LotusXSL technologies to the xml.apache.org project. The parsing technologies have been renamed Xerces, and the LotusXSL technology has been renamed Xalan. IBM is shifting its XML parsing development resources to work on the Xerces parsers. The objective is to use the Xerces code base as the foundation for XML4J and XML4C. This version of XML4J is based on the Apache Xerces version 2.6.2 codebase.

| What's the difference between XML4J and Xerces? |

| This version of XML4J has been tested internally at IBM, beyond the testing that is done by the xml.apache.org project. Please note that the names of the main .jar files have changed from xml4j.jar to xml-apis.jar and xercesImpl.jar, and from xml4jSamples.jar to xercesSamples.jar

| What part of the API is public, and what is subject to change? |

To answer this question, let us clearly define the terms we use for API status:

- Public - This is the API that the typical client developer should code against. An attempt will be made to fix any severe bugs in this API. Also, much of this API that we define as "public" has reached W3C Recommendation status or a similar status in xml-dev working group. Not much change in these interfaces is expected.
- Experimental - These interfaces and classes reflect the latest W3C specifications and SAX specifications from the xml-dev working group. Since these specifications are not finalized, the interfaces are subject to change. As some of these experimental specifications find their way through the working groups to the highest level, such as W3C Recommendation, they will be upgraded to the "Public" category.
- Internal - These classes are considered to be internal to Xerces, even though they may be public and have public methods. They can be used by developers who have complex and specific needs, such as building their own XML Parser. However, please note that the architecture is subject to change.

API status | API contents (packages, interfaces, classes and methods) | Comments

Public

DOM Level 1 interfaces (found in org.w3c.dom, org.w3c.dom.html) DOM Level 2 (DOM2) interfaces (found in org.w3c.dom and subpackages) The DOM2 interfaces have been implemented in the same interfaces as DOM1, but as new methods.
SAX Level 1 interfaces (found in org.xml.sax. and subpackages) SAX Level 2 (SAX2) interfaces (found in org.xml.sax. and subpackages)
The JAXP 1.2 interfaces found in the javax.xml.parsers package
The following packages and classes within XML4J are also supported: XNI (org.apache.xerces.xni, org.apache.xerces.xni.parser), XML Schema API (org.apache.xerces.xs) and utility classes (org.apache.xerces.util.SecurityManager, org.apache.xerces.util.XMLCatalogResolver).

DOM L1, DOM L2, SAX1 and SAX2 Interfaces are stable.
The grammar classes in org.apache.xerces.xni.grammars have not yet been finalized. It is hoped that they will be in a future release of XML4J.

Experimental | DOM Level 3 (DOM3) Core DOM Level 3 (DOM3) Load and Save (found in org.apache.xerces.dom3 and subpackages) | At the time of this release DOM L3 was in proposed recommendation status. XML4J provides a subset of DOM L3 support.
Internal | All other packages are considered to be internal. | The internal Xerces architecture may change.

Please note that as an Apache Open Source project, the Xerces community is very interested in your questions and feedback regarding the whole API, not only that part designated above as public.

If you have specific questions, patches, or feedback regarding the Xerces API or code, you may visit the Apache Web site, and sign up for the mailing list. Otherwise more basic questions, or questions specific to XML4J, can be sent to AlphaWorks discussion forum.

| What APIs should I use for new development? |

All new development should use the org.apache.xerces.parsers.* classes. The four "compatibility" parser classes have been replaced by these two classes:

`org.apache.xerces.parsers.SAXParser`
`org.apache.xerces.parsers.DOMParser`

The control over validation has been changed to be a feature of the parser, rather then requiring separate classes.

The future direction for the parser instantiation classes is to use the JAXP API's, or the parser instantiation API developed through the W3C's DOM Level 3 effort.

Also, to make sure your code is as stable as possible, wherever possible, please use the interfaces specified in the Public section of the table in the former section (e.g. DOM1, SAX1). The table will be kept up to date to highlight when new interfaces and classes are given Public status (e.g. DOM2, SAX2).

| Is IBM making any additional support guarantees with XML4J? |

| IBM is not making any additional support guarantees for XML4J. In particular, IBM is not certifying that XML4J is Y2K compliant. XML4J makes no internal date calculations.

| Change history |

For an up-to-date, detailed change log, please see the Migration Details document.

- December 9, 1999: version 3.0.0EA3 First version derived from Xerces-J code base. Supply XML4J 2.0.x compatibility API.
- March 10, 2000: version 3.0.1 This version is derived from the Xerces 1.0.3 release. It continues to include the deprecated XML4J 2.0.x compatibility API as a separate jar.
- September 20, 2000: version 3.1.0 This version is derived from the Xerces 1.2.0 release. It continues to include the deprecated XML4J 2.0.x compatibility API as a separate jar.
- January 20, 2001: version 3.1.1 This version is derived from the Xerces 1.2.1 release. It continues to include the deprecated XML4J 2.0.x compatibility API as a separate jar.
- May 29, 2001: version 3.2.0 (beta) This version is derived from the Xerces 1.4.0 release. It no longer includes the deprecated XML4J 2.0.x compatibility API.