SAXONICA

Saxon Documentation
Full Contents
About Saxon
Changes in this Release
Conditions of Use
Using XSLT 2.0
Using XQuery
Handling Source Documents
| Handling Source Documents
| Source Documents on the Command Line
| Collections
| Building a Source Document from an application
| Writing input filters
| XInclude processing
| Saxon and XML 1.1
» | JAXP Source Types
| Third-party Object Models: DOM, JDOM, XOM, and DOM4J
| Choosing a Tree Model
| The PTree File Format
| Validation of Source Documents
| Whitespace Stripping in Source Documents
| Streaming of Large Documents
XML Schema Processing
XPath API for Java
Saxon on .NET
Extensibility
Saxon Extensions
Sample Saxon Applications
The Saxon SQL Extension
XSLT Elements
XPath 2.0 Expression Syntax
Function Library
Standards Conformance

# JAXP Source Types

This section is relevant to the Java platform only.

When a user application invokes Saxon via the Java API, then a source document is supplied as an instance of the JAXP `Source` class. This is true whether invoking an XSLT transformation, an XQuery query, or a free-standing XPath expression. The `Source` class is essentially a marker interface. The `Source` that is supplied must be a kind of `Source` that Saxon recognizes.

Saxon recognizes the three kinds of `Source` defined in JAXP: a `StreamSource`, a `SAXSource`, and a `DOMSource`. If a `DOMSource` is to be used, then the Saxon DOM support classes in `saxon8-dom.jar` must be on the class path.

Nodes in Saxon's implementation of the XPath data model are represented by the interface `net.sf.saxon.NodeInfo`. A `NodeInfo` is itself a `Source`, which means that any method in the API that requires a source object will accept any implementation of `net.sf.saxon.NodeInfo`.

Saxon also provides a class `net.sf.saxon.AugmentedSource` which implements the `Source` interface. This class encapsulates one of the standard `Source` objects, and allows additional processing options to be specified. These options include whitespace handling, schema and DTD validation, XInclude processing, error handling, choice of XML parser, and choice of Saxon tree model.

Saxon allows additional `Source` types to be supported by registering a `SourceResolver` with the `Configuration` object. The task of a `SourceResolver` is to convert a `Source` that Saxon does not recognize into a `Source` that it does recognize. For example, this may be done by building the document tree in memory and returning the `NodeInfo` object representing the root of the tree.

Next