com.icl.saxon.aelfred

Class XmlParser


(package private) final class XmlParser
extends java.lang.Object

Parse XML documents and return parse events through call-backs. Use the SAXDriver class as your entry point, as the internal parser interfaces are subject to change.
Version:
$Date: 2001/06/06 17:57:44 $
Authors:
Written by David Megginson <dmeggins@microstar.com> (version 1.2a with bugfixes)
Updated by David Brownell <david-b@pacbell.net>
See Also:
SAXDriver

Nested Class Summary

(package private) static class
XmlParser.EncodingException

Field Summary

static int
ATTRIBUTE_CDATA
Constant: the attribute value is a string value.
static int
ATTRIBUTE_DEFAULT_FIXED
Constant: the attribute was declared #FIXED.
static int
ATTRIBUTE_DEFAULT_IMPLIED
Constant: the attribute was declared #IMPLIED.
static int
ATTRIBUTE_DEFAULT_REQUIRED
Constant: the attribute was declared #REQUIRED.
static int
ATTRIBUTE_DEFAULT_SPECIFIED
Constant: the attribute has a literal default value specified.
static int
ATTRIBUTE_DEFAULT_UNDECLARED
Constant: the attribute is not declared.
static int
ATTRIBUTE_ENTITIES
Constant: the attribute value is a list of entity names.
static int
ATTRIBUTE_ENTITY
Constant: the attribute value is the name of an entity.
static int
ATTRIBUTE_ENUMERATED
Constant: the attribute value is a token from an enumeration.
static int
ATTRIBUTE_ID
Constant: the attribute value is a unique identifier.
static int
ATTRIBUTE_IDREF
Constant: the attribute value is a reference to a unique identifier.
static int
ATTRIBUTE_IDREFS
Constant: the attribute value is a list of ID references.
static int
ATTRIBUTE_NMTOKEN
Constant: the attribute value is a name token.
static int
ATTRIBUTE_NMTOKENS
Constant: the attribute value is a list of name tokens.
static int
ATTRIBUTE_NOTATION
Constant: the attribute is the name of a notation.
static int
ATTRIBUTE_UNDECLARED
Constant: the attribute has not been declared for this element type.
static int
CONTENT_ANY
Constant: the element has a content model of ANY.
static int
CONTENT_ELEMENTS
Constant: the element has element content.
static int
CONTENT_EMPTY
Constant: the element has declared content of EMPTY.
static int
CONTENT_MIXED
Constant: the element has mixed content.
static int
CONTENT_UNDECLARED
Constant: an element has not been declared.
static int
ENTITY_INTERNAL
Constant: the entity is internal.
static int
ENTITY_NDATA
Constant: the entity is external, non-parseable data.
static int
ENTITY_TEXT
Constant: the entity is external XML data.
static int
ENTITY_UNDECLARED
Constant: the entity has not been declared.

Constructor Summary

XmlParser()
Construct a new parser with no associated handler.

Method Summary

Enumeration
declaredAttributes(String elname)
Get the declared attributes for an element type.
Enumeration
declaredElements()
Get the declared elements for an XML document.
Enumeration
declaredEntities()
Get declared entities.
Enumeration
declaredNotations()
Get declared notations.
(package private) void
doParse(String systemId, String publicId, Reader reader, InputStream stream, String encoding)
Parse an XML document from the character stream, byte stream, or URI that you provide (in that order of preference).
String
getAttributeDefaultValue(String name, String aname)
Retrieve the default value of a declared attribute.
int
getAttributeDefaultValueType(String name, String aname)
Retrieve the default value type of a declared attribute.
String
getAttributeEnumeration(String name, String aname)
Retrieve the allowed values for an enumerated attribute type.
String
getAttributeExpandedValue(String name, String aname)
Retrieve the expanded value of a declared attribute.
int
getAttributeType(String name, String aname)
Retrieve the declared type of an attribute.
int
getColumnNumber()
Return the current column number.
String
getElementContentModel(String name)
Look up the content model of an element.
int
getElementContentType(String name)
Look up the content type of an element.
String
getEntityNotationName(String eName)
Get the notation name associated with an NDATA entity.
String
getEntityPublicId(String ename)
Return an external entity's public identifier, if any.
String
getEntitySystemId(String ename)
Return an external entity's system identifier.
int
getEntityType(String ename)
Find the type of an entity.
String
getEntityValue(String ename)
Return the value of an internal entity.
int
getLineNumber()
Return the current line number.
String
getNotationPublicId(String nname)
Look up the public identifier for a notation.
String
getNotationSystemId(String nname)
Look up the system identifier for a notation.
String
intern(ch[] , int start, int length)
Create an interned string from a character array.
(package private) void
setHandler(SAXDriver handler)
Set the handler that will receive parsing events.

Field Details

ATTRIBUTE_CDATA

public static final int ATTRIBUTE_CDATA
Constant: the attribute value is a string value.
Field Value:
1

ATTRIBUTE_DEFAULT_FIXED

public static final int ATTRIBUTE_DEFAULT_FIXED
Constant: the attribute was declared #FIXED.
Field Value:
34

ATTRIBUTE_DEFAULT_IMPLIED

public static final int ATTRIBUTE_DEFAULT_IMPLIED
Constant: the attribute was declared #IMPLIED.
Field Value:
32

ATTRIBUTE_DEFAULT_REQUIRED

public static final int ATTRIBUTE_DEFAULT_REQUIRED
Constant: the attribute was declared #REQUIRED.
Field Value:
33

ATTRIBUTE_DEFAULT_SPECIFIED

public static final int ATTRIBUTE_DEFAULT_SPECIFIED
Constant: the attribute has a literal default value specified.
Field Value:
31

ATTRIBUTE_DEFAULT_UNDECLARED

public static final int ATTRIBUTE_DEFAULT_UNDECLARED
Constant: the attribute is not declared.
Field Value:
30

ATTRIBUTE_ENTITIES

public static final int ATTRIBUTE_ENTITIES
Constant: the attribute value is a list of entity names.
Field Value:
6

ATTRIBUTE_ENTITY

public static final int ATTRIBUTE_ENTITY
Constant: the attribute value is the name of an entity.
Field Value:
5

ATTRIBUTE_ENUMERATED

public static final int ATTRIBUTE_ENUMERATED
Constant: the attribute value is a token from an enumeration.
Field Value:
9

ATTRIBUTE_ID

public static final int ATTRIBUTE_ID
Constant: the attribute value is a unique identifier.
Field Value:
2

ATTRIBUTE_IDREF

public static final int ATTRIBUTE_IDREF
Constant: the attribute value is a reference to a unique identifier.
Field Value:
3

ATTRIBUTE_IDREFS

public static final int ATTRIBUTE_IDREFS
Constant: the attribute value is a list of ID references.
Field Value:
4

ATTRIBUTE_NMTOKEN

public static final int ATTRIBUTE_NMTOKEN
Constant: the attribute value is a name token.
Field Value:
7

ATTRIBUTE_NMTOKENS

public static final int ATTRIBUTE_NMTOKENS
Constant: the attribute value is a list of name tokens.
Field Value:
8

ATTRIBUTE_NOTATION

public static final int ATTRIBUTE_NOTATION
Constant: the attribute is the name of a notation.
Field Value:
10

ATTRIBUTE_UNDECLARED

public static final int ATTRIBUTE_UNDECLARED
Constant: the attribute has not been declared for this element type.
Field Value:
0

CONTENT_ANY

public static final int CONTENT_ANY
Constant: the element has a content model of ANY.
Field Value:
1

CONTENT_ELEMENTS

public static final int CONTENT_ELEMENTS
Constant: the element has element content.
Field Value:
4

CONTENT_EMPTY

public static final int CONTENT_EMPTY
Constant: the element has declared content of EMPTY.
Field Value:
2

CONTENT_MIXED

public static final int CONTENT_MIXED
Constant: the element has mixed content.
Field Value:
3

CONTENT_UNDECLARED

public static final int CONTENT_UNDECLARED
Constant: an element has not been declared.
Field Value:
0

ENTITY_INTERNAL

public static final int ENTITY_INTERNAL
Constant: the entity is internal.
Field Value:
1

ENTITY_NDATA

public static final int ENTITY_NDATA
Constant: the entity is external, non-parseable data.
Field Value:
2

ENTITY_TEXT

public static final int ENTITY_TEXT
Constant: the entity is external XML data.
Field Value:
3

ENTITY_UNDECLARED

public static final int ENTITY_UNDECLARED
Constant: the entity has not been declared.
Field Value:
0

Constructor Details

XmlParser

(package private)  XmlParser()
Construct a new parser with no associated handler.

Method Details

declaredAttributes

public Enumeration declaredAttributes(String elname)
Get the declared attributes for an element type.
Parameters:
elname - The name of the element type.
Returns:
An Enumeration of all the attributes declared for a specific element type. The results will be valid only after the DTD (if any) has been parsed.

declaredElements

public Enumeration declaredElements()
Get the declared elements for an XML document.

The results will be valid only after the DTD (if any) has been parsed.

Returns:
An enumeration of all element types declared for this document (as Strings).

declaredEntities

public Enumeration declaredEntities()
Get declared entities.
Returns:
An Enumeration of all the entities declared for this XML document. The results will be valid only after the DTD (if any) has been parsed.

declaredNotations

public Enumeration declaredNotations()
Get declared notations.
Returns:
An Enumeration of all the notations declared for this XML document. The results will be valid only after the DTD (if any) has been parsed.

doParse

(package private)  void doParse(String systemId,
                                String publicId,
                                Reader reader,
                                InputStream stream,
                                String encoding)
            throws Exception
Parse an XML document from the character stream, byte stream, or URI that you provide (in that order of preference). Any URI that you supply will become the base URI for resolving relative URI, and may be used to acquire a reader or byte stream.

You may parse more than one document, but that must be done sequentially. Only one thread at a time may use this parser.

Parameters:
systemId - The URI of the document; should never be null, but may be so iff a reader or a stream is provided.
publicId - The public identifier of the document, or null.
reader - A character stream; must be null if stream isn't.
stream - A byte input stream; must be null if reader isn't.
encoding - The suggested encoding, or null if unknown.

getAttributeDefaultValue

public String getAttributeDefaultValue(String name,
                                       String aname)
Retrieve the default value of a declared attribute.
Parameters:
name - The name of the associated element.
aname - The name of the attribute.
Returns:
The default value, or null if the attribute was #IMPLIED or simply undeclared and unspecified.

getAttributeDefaultValueType

public int getAttributeDefaultValueType(String name,
                                        String aname)
Retrieve the default value type of a declared attribute.

getAttributeEnumeration

public String getAttributeEnumeration(String name,
                                      String aname)
Retrieve the allowed values for an enumerated attribute type.
Parameters:
name - The name of the associated element.
aname - The name of the attribute.
Returns:
A string containing the token list.

getAttributeExpandedValue

public String getAttributeExpandedValue(String name,
                                        String aname)
            throws Exception
Retrieve the expanded value of a declared attribute.

General entities (and char refs) will be expanded (once).

Parameters:
name - The name of the associated element.
aname - The name of the attribute.
Returns:
The expanded default value, or null if the attribute was #IMPLIED or simply undeclared

getAttributeType

public int getAttributeType(String name,
                            String aname)
Retrieve the declared type of an attribute.
Parameters:
name - The name of the associated element.
aname - The name of the attribute.
Returns:
An integer constant representing the attribute type.

getColumnNumber

public int getColumnNumber()
Return the current column number.

getElementContentModel

public String getElementContentModel(String name)
Look up the content model of an element.

The result will always be null unless the content type is CONTENT_ELEMENTS or CONTENT_MIXED.

Parameters:
name - The element type name.
Returns:
The normalised content model, as a string.

getElementContentType

public int getElementContentType(String name)
Look up the content type of an element.
Parameters:
name - The element type name.
Returns:
An integer constant representing the content type.

getEntityNotationName

public String getEntityNotationName(String eName)
Get the notation name associated with an NDATA entity.
Parameters:
Returns:
The associated notation name, or null if the entity was not declared, or if it is not an NDATA entity.

getEntityPublicId

public String getEntityPublicId(String ename)
Return an external entity's public identifier, if any.
Parameters:
ename - The name of the external entity.
Returns:
The entity's system identifier, or null if the entity was not declared, if it is not an external entity, or if no public identifier was provided.

getEntitySystemId

public String getEntitySystemId(String ename)
Return an external entity's system identifier.
Parameters:
ename - The name of the external entity.
Returns:
The entity's system identifier, or null if the entity was not declared, or if it is not an external entity. Change made by MHK: The system identifier is returned as an absolute URL, resolved relative to the entity it was contained in.

getEntityType

public int getEntityType(String ename)
Find the type of an entity.

getEntityValue

public String getEntityValue(String ename)
Return the value of an internal entity.
Parameters:
ename - The name of the internal entity.
Returns:
The entity's value, or null if the entity was not declared, or if it is not an internal entity.

getLineNumber

public int getLineNumber()
Return the current line number.

getNotationPublicId

public String getNotationPublicId(String nname)
Look up the public identifier for a notation. You will normally use this method to look up a notation that was provided as an attribute value or for an NDATA entity.
Parameters:
nname - The name of the notation.
Returns:
A string containing the public identifier, or null if none was provided or if no such notation was declared.

getNotationSystemId

public String getNotationSystemId(String nname)
Look up the system identifier for a notation. You will normally use this method to look up a notation that was provided as an attribute value or for an NDATA entity.
Parameters:
nname - The name of the notation.
Returns:
A string containing the system identifier, or null if no such notation was declared.

intern

public String intern(ch[] ,
                     int start,
                     int length)
Create an interned string from a character array. Ælfred uses this method to create an interned version of all names and name tokens, so that it can test equality with == instead of String.equals ().

This is much more efficient than constructing a non-interned string first, and then interning it.

Parameters:
start - the starting position in the array.
length - the number of characters to place in the string.
Returns:
an interned string.
See Also:
(String), java.lang.String.intern

setHandler

(package private)  void setHandler(SAXDriver handler)
Set the handler that will receive parsing events.
Parameters:
handler - The handler to receive callback events.
See Also:
XmlParser