The GNU JAXP Project

Introduction | Status | Documentation | Help wanted | Mailing lists | Download | Bugs


Introduction

GNU JAXP, originally part of the GNU Classpath Extensions project, and now part of GNU Classpath, is a free implementation of the standard XML processing APIs for Java:

Please note that GNU JAXP is no longer maintained as a separate project. It is now completely integrated into GNU Classpath, therefore please refer to the Classpath sources.

Project status

GNU JAXP provides the Ælfred2 SAX2 parser, and is configured to use its optionally validating module by default. It includes an implementation of the DOM Level 3 interfaces provided by the World Wide Web Consortium. There is also a (fast!) XPath 1.0 and XSLT 1.0 implementation which supports all options for input (source) and output (result). These are accessible through the JAXP 1.3 and W3C DOM bootstrapping APIs.

The following W3C DOM APIs are supported:

GNU JAXP additionally provides a mostly-complete alternative implementation of DOM Level 3 Core and XPath, a SAX2 parser, and a JAXP XSLT transformer that use the Gnome libxml2 and libxslt libraries. These libraries, implemented in C, provide very fast parsing and transformation. The libxmlj library, a JNI wrapper for the Gnome libraries, allows you to leverage this speed via the JAXP interfaces. However, libxmlj is still experimental and does not conform as well to the published SAX and DOM conformance tests, and JNI deployment may be a barrier to entry.

At the current time, libxmlj does not support the JAXP XPath interface, only the W3C DOM one.

GNU JAXP is not a complete implementation of JAXP 1.3. It does not currently provide support for tree validation: the only validation available is XML (DTD) validation by the SAX parser. We are still working on W3C XML Schema and RELAX NG validators and the integration of the PSVI into the DOM.

Documentation

You can browse the API documentation for GNU JAXP online here (no frames).

GNU JAXP requires JDK 1.4 or later. The gnujaxp.jar file is most easily installed in $JAVA_HOME/jre/lib/ext; otherwise you may prefer to modify your CLASSPATH. If you have other JAXP parsers installed you may also wish to set up $JAVA_HOME/jre/lib/jaxp.properties so the GNU JAXP drivers are used by default:

# make JAXP clients prefer the GNU implementations
javax.xml.parsers.SAXParserFactory=gnu.xml.aelfred2.JAXPFactory
javax.xml.parsers.DocumentBuilderFactory=gnu.xml.dom.DomDocumentBuilderFactory
javax.xml.transform.TransformerFactory=gnu.xml.transform.TransformerFactoryImpl
javax.xml.xpath.XPathFactory=gnu.xml.xpath.XPathFactoryImpl

Alternatively, you may specify the use of the experimental libxmlj implementations, as follows:

javax.xml.parsers.SAXParserFactory=gnu.xml.libxmlj.sax.GnomeSAXParserFactory
javax.xml.parsers.DocumentBuilderFactory=gnu.xml.libxmlj.dom.GnomeDocumentBuilderFactory
javax.xml.transform.TransformerFactory=gnu.xml.libxmlj.transform.GnomeTransformerFactory

If you are using the portable SAX2 bootstrapping APIs, you may want to set the org.xml.sax.driver system property on each JVM invocation to be gnu.xml.aelfred2.SAXDriver (non-validating) or gnu.xml.aelfred2.XmlReader (optionally validating). Otherwise the org.xml.sax.helpers.XMLReaderFactory may not return the parser you expect.

If using GNU JAXP as part of GNU Classpath, no configuration should be necessary.

Help wanted!

Development of GNU JAXP is a volunteer effort, and you can also contribute! We need lots of help to finish the current APIs and to keep track of future enhancements. There are also opportunities for testers, web authors, and documentors. Please post to one of the classpathx or classpath mailing lists if you're interested in helping.

Mailing lists

The main discussion list is <classpathx-xml@gnu.org>, which is used to discuss all aspects of GNU JAXP.

Announcements about GNU JAXP are made on the low-volume <classpathx-announce@gnu.org> mailing list.

For subscription information, see the mailing list info from the ClasspathX project page.

Get the Software

You can download the latest software as part of the Classpath project at ftp://ftp.gnu.org/pub/gnu/classpath. You'll probably want to use one of the FTP mirror sites, although the mirrors may not be current.

Interested parties can view the current JAXP code through CVS.

Report a bug

If you think you have found a bug in GNU JAXP, then you should send as complete a report as possible to <classpathx-xml@gnu.org>.


Return to GNU's home page.

Please send FSF and GNU inquiries and questions to gnu@gnu.org. There are also other ways to contact the FSF.

Please send comments on these web pages to webmasters@gnu.org, send other questions to gnu@gnu.org.

Copyright © 1999, 2001, 2004, 2005, 2006 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

Updated: $Date: 2007/09/18 09:07:00 $ $Author: dog $