SAX

General
 About SAX
 Copyright Status
 Events vs. Trees
 FAQ
 Links

Java API
 Quickstart
 Features and Properties
 Filters
 Namespaces
 JavaDoc

SAX Evolution
 Genesis
 SAX 1.0 Overview
 SAX 2.0 Changes
 SAX 2.0 Extensions
 Other Languages

SourceForge Services
 Bugs/RFEs
 Project Page


SourceForge Logo

Links

This page is intended to accumulate a variety of links to significant external SAX-related work, primarily using XML. There's so much SAX-related work that it can't possibly be a complete listing.

Got a tip? Send me a note.

SAX2 Parsers in Java

This is a collection of some of the XML parsers which support the SAX2 interfaces.

  • Ælfred2, part of the GNU JAXP project. Includes a SAX2 pipeline package and other SAX2 utilities including a SAX2 DOM parser.
  • Crimson, bundled into JDK 1.4 and later to provide JAXP support; part of the Apache XML project
  • Xerces-J, part of the Apache XML project, also supports JAXP
  • Oracle's XML Parser for Java v2 supports SAX2
  • Piccolo is unique in that it's built using parser generators, rather than using a recursive descent parser. (So it seems likely to sacrifice conformance for speed ... it's quite new yet.)
  • The System Integration Automation Parser for XML includes a layer which tracks some kinds of parse tree context, to address some kinds of "business logic". (Also quite new.)
  • XP 0.5 by James Clark is still fast enough and conformant enough to consider using if you want a nonvalidating parser. It's no longer maintained, and only includes a SAX1 driver, but here's a SAX2 Driver for it.
  • ... more?

Also, since Sun's JAXP 1.1 API incorporates SAX2, any SAX parser bootstapped with JAXP 1.1 supports both SAX2 and the “SAX Extensions 1.0” interfaces. JAXP 1.1 is included with JDK 1.4, but you should manually update it to use SAX 2.0.1 instead of the older version (which is missing some bugfixes).

SAX1 parsers should still be usable with the SAX2 ParserAdapter class. (See the simple driver for XP, above.) Most of them have been updated to include SAX2 support. There's also the Docuverse HTML SDK which provides a SAX1 wrapper around the HTML parser found in Swing. (Swing's parser has significant limitations, but it may meet some of your requirements.)

If you're interested in SAX parsers that support only subsets of XML, there are a lot of them. For example, see MinML and MinML2. If the reason you're looking at XML subsets is parser size, perhaps for embedded environments, look at Ælfred2 to see about how small a fully conformant SAX2 parser can be. (That has a non-validating parser at its core, as well as optional validation and JAXP layers. It's larger than MinML2 since it supports all of XML 1.0 and XML Namespaces.)

Books and Articles about SAX2

There are a lot written about how to use SAX with XML. This is only a subset of the resources you can find.

Software Using SAX2

This is is an incomplete list of interesting software using SAX, which focusses on infrastructure rather than applications.

  • JADE, the Java™ Addition to Default Environment, supports manipulation of physical quantities and their units, and storage of common Java classes in XML representations.
  • Jing is a validator for the RelaxNG schema system
  • SAX/XML conformance testing support at the SourceForge xmlconf project.
  • SAXON is a popular XSLT engine built over SAX2
  • SAX Navigator manages a thread that does the SAX reading for your application, so your code can "pull" XML data instead of having it "pushed".
  • ISO RELAX software (another SourceForge project!) provides a standard API for the original RELAX schema system. Schema validators can be XML filters.
  • Sun's Multi-Schema Validator uses RELAX API with several different schema systems, including TREX, RELAX-NG, and W3C Schemas.
  • Cocoon v2 is an Apache project for a web publishing framework. The basic paradigm is that a kind of SAX2 pipeline should be used to connect content generation and management components.

Of course, SAX1 applications still work with SAX2, although they won't be able to leverage XML Namespaces very easily, or work at all with information exposed through the extension interfaces.

XML-DEV

SAX started out on the XML-DEV mailing list. That list is currently hosted at http://www.xml.org; you can subscribe at http://lists.xml.org/ob/adm.pl and view archives at http://lists.xml.org/archives/xml-dev (and there's also the old archive at Imperial College, URL TBS).

Current XML development uses the lists at SourceForge (see the Project Page link at the left), but issues raised on xml-dev will likely get appropriate attention also.