Introduction | Status | Documentation | Help wanted | Mailing lists | Download | Bugs
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:
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.
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.
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.
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.
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.
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 (C) 1999 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.