org.apache.xml.resolver.tools

Class ResolvingXMLFilter

Known Direct Subclasses:
ResolvingXMLReader

public class ResolvingXMLFilter
extends XMLFilterImpl

A SAX XMLFilter that performs catalog-based entity resolution.

This class implements a SAX XMLFilter that performs entity resolution using the CatalogResolver. The actual, underlying parser is obtained from a SAXParserFactory.

Version:
1.0
Author:
Norman Walsh Norman.Walsh@Sun.COM
See Also:
CatalogResolver, XMLFilter

Field Summary

static boolean
suppressExplanation
Suppress explanatory message?

Constructor Summary

ResolvingXMLFilter()
Construct an empty XML Filter with no parent
ResolvingXMLFilter(XMLReader parent)
Construct an XML filter with the specified parent

Method Summary

Catalog
getCatalog()
Provide accessto the underlying Catalog
void
notationDecl(String name, String publicId, String systemId)
SAX DTDHandler API

Captured here only to detect the end of the prolog so that we can ignore subsequent oasis-xml-catalog PIs.

void
parse(InputSource input)
SAX XMLReader API

Note that the JAXP 1.1ea2 parser crashes with an InternalError if it encounters a system identifier that appears to be a relative URI that begins with a slash.

void
parse(String systemId)
SAX XMLReader API
void
processingInstruction(String target, String pidata)
SAX ContentHandler API

Detect and use the oasis-xml-catalog PI if it occurs.

InputSource
resolveEntity(String publicId, String systemId)
Implements the resolveEntity method for the SAX interface, using an underlying CatalogResolver to do the real work.
void
startElement(String uri, String localName, String qName, Attributes atts)
SAX ContentHandler API

Captured here only to detect the end of the prolog so that we can ignore subsequent oasis-xml-catalog PIs.

void
unparsedEntityDecl(String name, String publicId, String systemId, String notationName)
SAX DTDHandler API

Captured here only to detect the end of the prolog so that we can ignore subsequent oasis-xml-catalog PIs.

Field Details

suppressExplanation

public static boolean suppressExplanation
Suppress explanatory message?

Constructor Details

ResolvingXMLFilter

public ResolvingXMLFilter()
Construct an empty XML Filter with no parent

ResolvingXMLFilter

public ResolvingXMLFilter(XMLReader parent)
Construct an XML filter with the specified parent

Method Details

getCatalog

public Catalog getCatalog()
Provide accessto the underlying Catalog

notationDecl

public void notationDecl(String name,
                         String publicId,
                         String systemId)
            throws SAXException
SAX DTDHandler API

Captured here only to detect the end of the prolog so that we can ignore subsequent oasis-xml-catalog PIs. Otherwise the events are just passed through.


parse

public void parse(InputSource input)
            throws IOException,
                   SAXException
SAX XMLReader API

Note that the JAXP 1.1ea2 parser crashes with an InternalError if it encounters a system identifier that appears to be a relative URI that begins with a slash. For example, the declaration:

 <!DOCTYPE book SYSTEM "/path/to/dtd/on/my/system/docbookx.dtd">
 

would cause such an error. As a convenience, this method catches that error and prints an explanation. (Unfortunately, it's not possible to identify the particular system identifier that causes the problem.)

The underlying error is forwarded after printing the explanatory message. The message is only every printed once and if suppressExplanation is set to false before parsing, it will never be printed.


parse

public void parse(String systemId)
            throws IOException,
                   SAXException
SAX XMLReader API

processingInstruction

public void processingInstruction(String target,
                                  String pidata)
            throws SAXException
SAX ContentHandler API

Detect and use the oasis-xml-catalog PI if it occurs.


resolveEntity

public InputSource resolveEntity(String publicId,
                                 String systemId)
Implements the resolveEntity method for the SAX interface, using an underlying CatalogResolver to do the real work.

startElement

public void startElement(String uri,
                         String localName,
                         String qName,
                         Attributes atts)
            throws SAXException
SAX ContentHandler API

Captured here only to detect the end of the prolog so that we can ignore subsequent oasis-xml-catalog PIs. Otherwise the events are just passed through.


unparsedEntityDecl

public void unparsedEntityDecl(String name,
                               String publicId,
                               String systemId,
                               String notationName)
            throws SAXException
SAX DTDHandler API

Captured here only to detect the end of the prolog so that we can ignore subsequent oasis-xml-catalog PIs. Otherwise the events are just passed through.


Copyright B) 2001 Apache. All Rights Reserved.