# Xerces2

## Table of Contents

- Goals
- Scenarios
- Documentation
- Source Code
  - Main Branches
  - Supplemental Branches

## Goals

The ultimate goal of the Xerces2 refactoring effort is to develop an XML parser that is simple, clean, and modular. By clearly defining the internal interfaces of the parser components, the design of the parser will be better understood and enable people to add features and fix bugs. Also, the modularity of the design will enable custom configurations of the parser that can be used in a wide variety of applications.

## Scenarios

Xerces is a general purpose XML parser designed to be suitable for a wide range of applications. A parser with better performance can be written but it is believed that a general design will suit a larger audience of XML application developers. Therefore, any design should take into consideration what the users of the parser need.

A few scenarios highlight the disparate needs of the developer audience:

- XML Editor
  grammar access; document editing and events; re-validation
- Transaction Server that "Speaks" XML
  high performance; grammar caching
- Client-side XML Applets
  small footprint; serialization

## Documentation

Coding Conventions
Design Documents
  Evaluation of Crimson and Xerces Code
  Xerces2 Architecture
  Entity Management
  Implementation Issues
Presentations
  Xerces2 (PowerPoint 2000)
  07 Apr 2001: XML Developer's Day - Tokyo, Japan
  Xerces2 Workshop (PowerPoint 2000)
  11 Jun 2001: Xerces2 Workshop - Cupertino, CA
Interfaces and Classes
  Design [.html] [.css] [.dtd] [.xml] [.xsl]
Useful Programs
  Stylesheet [.java] [.class]

## Source Code

The source code is available in the Apache CVS repository in the "xerces_j_2" branch of the "xml-xerces" module. For anonymous access to the source code, use the following commands to checkout the code into a local directory named "x2":

        set CVSROOT=:pserver:anoncvs@cvs.apache.org:/home/cvspublic
        cvs login        (password: anoncvs)
        cvs checkout -d x2 -r xerces_j_2 xml-xerces/java

### Main Branches

Branch | Description
--- | ---
xerces_j_2 | Main development branch for the Xerces2 implementation.
x2m1 | Milestone 1 The code from this milestone implements basic document parsing. Only element, attributes, and text content is supported; all other XML constructs are not supported. The SAXParser and SAX examples can be used to test the code.

### Supplemental Branches

All of the supplemental branches are created from the main development branch named "xerces_j_2". Supplemental branches are used for discovery work with the intention that code and/or ideas from the branch will be merged back into the "xerces_j_2" branch.

Branch | Description
--- | ---
x2entities | Code to implement a bare bones entity management system. Warning: The entity scanner is very inefficient and is not for production use. This entity scanner is only used to implement the essential entity scanning methods needed by the document scanner. Note: This branch is no longer needed and the files have been removed. Contents: src/org/apache/xerces/readers/XMLEntityManager.java src/org/apache/xerces/readers/XMLEntityScanner.java
x2design | A re-organization of class and interface packages to seperate core functionality from implementation. Note: This work has now been merged back into the "xerces_j_2" branch. Contents: design/xml/design.xml
parserConfig | Experimentation with parser configuration. Note: This work has now been merged back into the "xerces_j_2" branch. Contents: src/org/apache/xerces/parsers (directory)

Author: Andy Clark
Last modified: $Date$