WHAT IS THIS GNUJAXP includes interfaces and implementations for basic XML processing in Java, and some general purpose SAX2 utilities. The standard distribution includes "gnujaxp.jar", javadoc, and full source code. The current software is available at: http://www.gnu.org/software/classpathx/jaxp This is intended only to require JDK 1.1 support to compile or run; that may change at some point, but for now portability to PJava and other widely used Java configurations/profiles is important. GCJ 3.0 has some bugs compiling this code, either to class files or to native code. Newer snapshots (GCJ 3.1) are currently needed to compile this code. JAVA PACKAGES javax.xml.* ... JAXP 1.1 interfaces org.xml.sax.* ... SAX2 (r2pre3, extensions 1.1beta) interfaces org.w3c.dom.* ... DOM Level 2 interfaces gnu.xml.aelfred2.* ... SAX2 parsers (+ optional validator, and JAXP glue) gnu.xml.dom.* ... DOM level 2 (XML) implementation (and JAXP glue) gnu.xml.pipeline.* ... SAX2 event pipeline support gnu.xml.util.* ... various XML utility classes LICENSING Briefly, most software in this package is distributed under the GNU General Public License with the "library exception" that permits its usage even in statically linked environments. That licensing is more permissive than the "LGPL". See the LICENSE file for more information. BUILDING The default build tools use autoconf and GNU make. $ ./configure ... $ make all ... $ You will need a java compiler on the PATH to build GNUJAXP. You can specify one at configuration time like this: $ JAVA_CC=javac ./configure $ make all See the file HACKING for how to build from CVS. INSTALLATION AND CONFIGURATION The simplest way to use this software is to put the "gnujaxp.jar" file into $JAVA_HOME/jre/lib/ext so that it's automatically part of the classpath for every application. That works for JDK 1.2 and later. Otherwise, you'll need some other way to put it into $CLASSPATH, such as an environment variable. If you have multiple XML tools implementations in your environment, you may need to configure software to use the implementations in the GNUJAXP distribution rather than some other one. See the project website (http://www.gnu.org/software/classpathx/jaxp) for information. CONFORMANCE TESTING The primary test resources are at http://xmlconf.sourceforge.net and include: SAX2/XML conformance tests That the "xml.testing.Driver" addresses the core XML 1.0 specification requirements, which closely correspond to the functionality SAX1 provides. The driver uses SAX2 APIs to test that functionality It is used with a bugfixed version of the NIST/OASIS XML conformance test cases. The AElfred2 parser is highly conformant, though it still takes a few implementation shortcuts. See its package documentation for information about known XML conformance issues in AElfred2. The primary issue is using Unicode character tables, rather than those in the XML specification, for determining what names are valid. Most applications won't notice the difference, and this solution is smaller and faster than the alternative. For validation, a secondary issue is that issues relating to entity modularity are not validated; they can't all be cleanly layered. For example, validity constraints related to standalone declarations and PE nesting are not checked. SAX2 SAX2 API conformance currently has a minimal JUNIT (0.2) test suite, which can be accessed at the xmlconf site listed above. It does not cover namespaces or LexicalHandler and Declhandler extensions anywhere as exhaustively as the SAX1 level functionality is tested by the "xml.testing.Driver". However: - Applying the DOM unit tests to this implementation gives the LexicalHandler (comments, and boundaries of DTDs, CDATA sections, and general entities) a workout, and does the same for DeclHandler entity declarations. - The pipeline package's layered validator demands that element and attribute declarations are reported correctly. By those metrics, SAX2 conformance for AElfred2 is also strong. DOM Level 1 (and Level 2 Events) Tests The "domunit 0.0.6" tests use the JAXP API to hook up a DOM implementation to a parser (out of scope for DOM Level 2). Those DOM unit tests are mostly related to Level 1, except for a few relating to the Level 2 events module. All of these tests pass. However, you may want to be aware that Entity nodes, and all EntityReference nodes not created by parsing a document, will have no children. Since you should as a rule avoid both these node types, you probably won't run into related problems.