org.enhydra.apache.xerces.framework
Class XMLDocumentScanner

java.lang.Object
  |
  +--org.enhydra.apache.xerces.framework.XMLDocumentScanner

public final class XMLDocumentScanner
extends Object

This class recognizes most of the grammer for an XML processor. Additional support is provided by the XMLEntityHandler, via the XMLEntityReader instances it creates, which are used to process simple constructs like string literals and character data between markup. The XMLDTDScanner class contains the remaining support for the grammer of DTD declarations. When a <!DOCTYPE ...> is found in the document, the scanDoctypeDecl method will then be called and the XMLDocumentScanner subclass is responsible for "connecting" that method to the corresponding method provided by the XMLDTDScanner class.

Version:
$Id: XMLDocumentScanner.java,v 1.2 2005/01/26 08:28:44 jkjome Exp $

Inner Class Summary
(package private)  class XMLDocumentScanner.ContentDispatcher
           
(package private)  class XMLDocumentScanner.EndOfInputDispatcher
           
static interface XMLDocumentScanner.EventHandler
          This interface must be implemented by the users of the XMLDocumentScanner class.
(package private)  class XMLDocumentScanner.PrologDispatcher
           
(package private) static interface XMLDocumentScanner.ScannerDispatcher
          The main loop of the scanner is implemented by calling the dispatch method of ScannerDispatcher with a flag which tells the dispatcher whether to continue or return.
(package private)  class XMLDocumentScanner.TrailingMiscDispatcher
           
(package private)  class XMLDocumentScanner.XMLDeclDispatcher
           
 
Field Summary
(package private) static char[] cdata_string
           
(package private) static char[] doctype_string
           
(package private)  QName fAttributeQName
           
(package private)  XMLAttrList fAttrList
           
(package private)  int fAttrListHandle
           
(package private)  int fAttValueAttrName
           
(package private)  int fAttValueElementType
           
(package private)  int fAttValueMark
           
(package private)  int fAttValueOffset
           
(package private)  int fAttValueReader
           
(package private)  QName fCurrentElementQName
           
(package private)  int fCurrentElementType
           
(package private)  XMLDocumentScanner.ScannerDispatcher fDispatcher
           
(package private)  XMLDocumentHandler.DTDHandler fDTDHandler
           
(package private)  XMLDTDScanner fDTDScanner
           
(package private)  QName fElementQName
           
(package private)  XMLEntityHandler fEntityHandler
           
(package private)  XMLEntityHandler.EntityReader fEntityReader
           
(package private)  XMLErrorReporter fErrorReporter
           
(package private)  XMLDocumentScanner.EventHandler fEventHandler
           
(package private)  GrammarResolver fGrammarResolver
           
(package private)  XMLEntityHandler.CharBuffer fLiteralData
           
(package private)  boolean fLoadExternalDTD
           
(package private)  boolean fNamespacesEnabled
           
(package private)  boolean fParseTextDecl
           
(package private)  int fReaderId
           
(package private)  int fScannerMarkupDepth
           
(package private)  int fScannerState
           
(package private)  boolean fScanningDTD
           
(package private)  boolean fSeenDoctypeDecl
           
(package private)  boolean fSeenRootElement
           
(package private)  boolean fStandalone
           
(package private)  StringPool fStringPool
           
(package private)  boolean fValidationEnabled
           
static int RESULT_DUPLICATE_ATTR
           
static int RESULT_FAILURE
           
static int RESULT_SUCCESS
           
(package private) static int SCANNER_STATE_ATTRIBUTE_LIST
          Scanner states
(package private) static int SCANNER_STATE_ATTRIBUTE_NAME
          Scanner states
(package private) static int SCANNER_STATE_ATTRIBUTE_VALUE
          Scanner states
(package private) static int SCANNER_STATE_COMMENT
          Scanner states
(package private) static int SCANNER_STATE_CONTENT
          Scanner states
(package private) static int SCANNER_STATE_DOCTYPE
          Scanner states
(package private) static int SCANNER_STATE_END_OF_INPUT
          Scanner states
(package private) static int SCANNER_STATE_PI
          Scanner states
(package private) static int SCANNER_STATE_PROLOG
          Scanner states
(package private) static int SCANNER_STATE_REFERENCE
          Scanner states
(package private) static int SCANNER_STATE_ROOT_ELEMENT
          Scanner states
(package private) static int SCANNER_STATE_START_OF_MARKUP
          Scanner states
(package private) static int SCANNER_STATE_TERMINATED
          Scanner states
(package private) static int SCANNER_STATE_TRAILING_MISC
          Scanner states
(package private) static int SCANNER_STATE_XML_DECL
          Scanner states
(package private) static char[] xml_string
           
 
Constructor Summary
XMLDocumentScanner(StringPool stringPool, XMLErrorReporter errorReporter, XMLEntityHandler entityHandler, XMLEntityHandler.CharBuffer literalData)
          Constructor
 
Method Summary
(package private)  void abortMarkup(int majorCode, int minorCode)
           
(package private)  void abortMarkup(int majorCode, int minorCode, int stringIndex1)
           
(package private)  void abortMarkup(int majorCode, int minorCode, int stringIndex1, int stringIndex2)
           
(package private)  void abortMarkup(int majorCode, int minorCode, String string1)
           
 boolean atEndOfInput()
          Tell if scanner has reached end of input
 void endOfInput(int entityName, boolean moreToFollow)
          Handle the end of input
 int getCurrentElementType()
           
 boolean getLoadExternalDTD()
          Returns true if loading the external DTD is turned on.
 boolean getNamespacesEnabled()
          Returns whether the parser processes namespaces.
 boolean getValidationEnabled()
          Returns true if validation is turned on.
 boolean parseSome(boolean doItAll)
          Entry point for parsing
 void readerChange(XMLEntityHandler.EntityReader nextReader, int nextReaderId)
          Change readers
(package private)  void reportFatalXMLError(int majorCode, int minorCode)
           
(package private)  void reportFatalXMLError(int majorCode, int minorCode, int stringIndex1)
           
(package private)  void reportFatalXMLError(int majorCode, int minorCode, int stringIndex1, int stringIndex2)
           
(package private)  void reportFatalXMLError(int majorCode, int minorCode, String string1)
           
(package private)  void reportFatalXMLError(int majorCode, int minorCode, String string1, String string2)
           
(package private)  void reportFatalXMLError(int majorCode, int minorCode, String string1, String string2, String string3)
           
 void reset(StringPool stringPool, XMLEntityHandler.CharBuffer literalData)
          reset the parser so that the instance can be reused
(package private)  void restoreScannerState(int state)
           
 int scanAttValue(QName element, QName attribute, boolean asSymbol)
          Scan an attribute value
(package private)  int scanCharRef()
           
(package private)  void scanComment()
           
(package private)  boolean scanElement(QName element)
           
(package private)  void scanPI(int piTarget)
           
(package private)  void scanXMLDeclOrTextDecl(boolean scanningTextDecl)
           
 void setDTDHandler(XMLDocumentHandler.DTDHandler dtdHandler)
          Set the DTD handler.
 void setEventHandler(XMLDocumentScanner.EventHandler eventHandler)
          Set the event handler
 void setGrammarResolver(GrammarResolver resolver)
          Sets the grammar resolver.
 void setLoadExternalDTD(boolean enabled)
          Sets whether the parser loads the external DTD.
 void setNamespacesEnabled(boolean enabled)
          Sets whether the parser preprocesses namespaces.
(package private)  int setScannerState(int state)
           
 void setValidationEnabled(boolean enabled)
          Sets whether the parser validates.
(package private)  void skipPastEndOfCurrentMarkup()
           
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cdata_string

static final char[] cdata_string

xml_string

static final char[] xml_string

doctype_string

static final char[] doctype_string

RESULT_SUCCESS

public static final int RESULT_SUCCESS

RESULT_FAILURE

public static final int RESULT_FAILURE

RESULT_DUPLICATE_ATTR

public static final int RESULT_DUPLICATE_ATTR

SCANNER_STATE_XML_DECL

static final int SCANNER_STATE_XML_DECL
Scanner states

SCANNER_STATE_START_OF_MARKUP

static final int SCANNER_STATE_START_OF_MARKUP
Scanner states

SCANNER_STATE_COMMENT

static final int SCANNER_STATE_COMMENT
Scanner states

SCANNER_STATE_PI

static final int SCANNER_STATE_PI
Scanner states

SCANNER_STATE_DOCTYPE

static final int SCANNER_STATE_DOCTYPE
Scanner states

SCANNER_STATE_PROLOG

static final int SCANNER_STATE_PROLOG
Scanner states

SCANNER_STATE_ROOT_ELEMENT

static final int SCANNER_STATE_ROOT_ELEMENT
Scanner states

SCANNER_STATE_CONTENT

static final int SCANNER_STATE_CONTENT
Scanner states

SCANNER_STATE_REFERENCE

static final int SCANNER_STATE_REFERENCE
Scanner states

SCANNER_STATE_ATTRIBUTE_LIST

static final int SCANNER_STATE_ATTRIBUTE_LIST
Scanner states

SCANNER_STATE_ATTRIBUTE_NAME

static final int SCANNER_STATE_ATTRIBUTE_NAME
Scanner states

SCANNER_STATE_ATTRIBUTE_VALUE

static final int SCANNER_STATE_ATTRIBUTE_VALUE
Scanner states

SCANNER_STATE_TRAILING_MISC

static final int SCANNER_STATE_TRAILING_MISC
Scanner states

SCANNER_STATE_END_OF_INPUT

static final int SCANNER_STATE_END_OF_INPUT
Scanner states

SCANNER_STATE_TERMINATED

static final int SCANNER_STATE_TERMINATED
Scanner states

fAttrListHandle

int fAttrListHandle

fAttrList

XMLAttrList fAttrList

fGrammarResolver

GrammarResolver fGrammarResolver

fDTDScanner

XMLDTDScanner fDTDScanner

fNamespacesEnabled

boolean fNamespacesEnabled

fValidationEnabled

boolean fValidationEnabled

fLoadExternalDTD

boolean fLoadExternalDTD

fElementQName

QName fElementQName

fAttributeQName

QName fAttributeQName

fCurrentElementQName

QName fCurrentElementQName

fDispatcher

XMLDocumentScanner.ScannerDispatcher fDispatcher

fEventHandler

XMLDocumentScanner.EventHandler fEventHandler

fDTDHandler

XMLDocumentHandler.DTDHandler fDTDHandler

fStringPool

StringPool fStringPool

fErrorReporter

XMLErrorReporter fErrorReporter

fEntityHandler

XMLEntityHandler fEntityHandler

fEntityReader

XMLEntityHandler.EntityReader fEntityReader

fLiteralData

XMLEntityHandler.CharBuffer fLiteralData

fSeenRootElement

boolean fSeenRootElement

fSeenDoctypeDecl

boolean fSeenDoctypeDecl

fStandalone

boolean fStandalone

fParseTextDecl

boolean fParseTextDecl

fScanningDTD

boolean fScanningDTD

fScannerState

int fScannerState

fReaderId

int fReaderId

fAttValueReader

int fAttValueReader

fAttValueElementType

int fAttValueElementType

fAttValueAttrName

int fAttValueAttrName

fAttValueOffset

int fAttValueOffset

fAttValueMark

int fAttValueMark

fScannerMarkupDepth

int fScannerMarkupDepth

fCurrentElementType

int fCurrentElementType
Constructor Detail

XMLDocumentScanner

public XMLDocumentScanner(StringPool stringPool,
                          XMLErrorReporter errorReporter,
                          XMLEntityHandler entityHandler,
                          XMLEntityHandler.CharBuffer literalData)
Constructor
Method Detail

setEventHandler

public void setEventHandler(XMLDocumentScanner.EventHandler eventHandler)
Set the event handler
Parameters:
eventHandler - The place to send our callbacks.

setDTDHandler

public void setDTDHandler(XMLDocumentHandler.DTDHandler dtdHandler)
Set the DTD handler.

setGrammarResolver

public void setGrammarResolver(GrammarResolver resolver)
Sets the grammar resolver.

reset

public void reset(StringPool stringPool,
                  XMLEntityHandler.CharBuffer literalData)
reset the parser so that the instance can be reused
Parameters:
stringPool - the string pool instance to be used by the reset parser

parseSome

public boolean parseSome(boolean doItAll)
                  throws Exception
Entry point for parsing
Parameters:
doItAll - if true the entire document is parsed otherwise just the next segment of the document is parsed

readerChange

public void readerChange(XMLEntityHandler.EntityReader nextReader,
                         int nextReaderId)
                  throws Exception
Change readers
Parameters:
nextReader - the new reader that the scanner will use
nextReaderId - id of the reader to change to
Throws:
throws - java.lang.Exception

endOfInput

public void endOfInput(int entityName,
                       boolean moreToFollow)
                throws Exception
Handle the end of input
Parameters:
entityName - the handle in the string pool of the name of the entity which has reached end of input
moreToFollow - if true, there is still input left to process in other readers
Throws:
Exception -  

atEndOfInput

public boolean atEndOfInput()
Tell if scanner has reached end of input
Returns:
true if scanner has reached end of input.

scanAttValue

public int scanAttValue(QName element,
                        QName attribute,
                        boolean asSymbol)
                 throws Exception
Scan an attribute value
Parameters:
elementType - handle to the element whose attribute value is being scanned
attrName - handle in the string pool of the name of attribute being scanned
asSymbol - controls whether the value is a string (duplicates allowed) or a symbol (duplicates not allowed)
Returns:
handle in the string pool of the scanned value
Throws:
Exception -  

reportFatalXMLError

void reportFatalXMLError(int majorCode,
                         int minorCode)
                   throws Exception

reportFatalXMLError

void reportFatalXMLError(int majorCode,
                         int minorCode,
                         int stringIndex1)
                   throws Exception

reportFatalXMLError

void reportFatalXMLError(int majorCode,
                         int minorCode,
                         String string1)
                   throws Exception

reportFatalXMLError

void reportFatalXMLError(int majorCode,
                         int minorCode,
                         int stringIndex1,
                         int stringIndex2)
                   throws Exception

reportFatalXMLError

void reportFatalXMLError(int majorCode,
                         int minorCode,
                         String string1,
                         String string2)
                   throws Exception

reportFatalXMLError

void reportFatalXMLError(int majorCode,
                         int minorCode,
                         String string1,
                         String string2,
                         String string3)
                   throws Exception

abortMarkup

void abortMarkup(int majorCode,
                 int minorCode)
           throws Exception

abortMarkup

void abortMarkup(int majorCode,
                 int minorCode,
                 int stringIndex1)
           throws Exception

abortMarkup

void abortMarkup(int majorCode,
                 int minorCode,
                 String string1)
           throws Exception

abortMarkup

void abortMarkup(int majorCode,
                 int minorCode,
                 int stringIndex1,
                 int stringIndex2)
           throws Exception

skipPastEndOfCurrentMarkup

void skipPastEndOfCurrentMarkup()
                          throws Exception

setScannerState

int setScannerState(int state)

restoreScannerState

void restoreScannerState(int state)

getCurrentElementType

public int getCurrentElementType()

scanXMLDeclOrTextDecl

void scanXMLDeclOrTextDecl(boolean scanningTextDecl)
                     throws Exception

scanElement

boolean scanElement(QName element)
              throws Exception

scanCharRef

int scanCharRef()
          throws Exception

scanComment

void scanComment()
           throws Exception

scanPI

void scanPI(int piTarget)
      throws Exception

setNamespacesEnabled

public void setNamespacesEnabled(boolean enabled)
Sets whether the parser preprocesses namespaces.

getNamespacesEnabled

public boolean getNamespacesEnabled()
Returns whether the parser processes namespaces.

setValidationEnabled

public void setValidationEnabled(boolean enabled)
Sets whether the parser validates.

getValidationEnabled

public boolean getValidationEnabled()
Returns true if validation is turned on.

setLoadExternalDTD

public void setLoadExternalDTD(boolean enabled)
Sets whether the parser loads the external DTD.

getLoadExternalDTD

public boolean getLoadExternalDTD()
Returns true if loading the external DTD is turned on.


Copyright © 1999 The Apache Software Foundation. All Rights reserved.