## org.apache.xerces.framework
Class XMLDTDScanner

    java.lang.Object
      |
      +--org.apache.xerces.framework.XMLDTDScanner

public final class XMLDTDScanner
extends java.lang.Object

Default implementation of an XML DTD scanner.

Clients who wish to scan a DTD should implement XMLDTDScanner.EventHandler to provide the desired behavior when various DTD components are encountered.

To process the DTD, the client application should follow the following sequence:

1. call scanDocTypeDecl() to scan the DOCTYPE declaration
2. call getReadingExternalEntity() to determine if scanDocTypeDecl found an external subset
3. if scanning an external subset, call scanDecls(true) to process the external subset

Version:
  $Id: XMLDTDScanner.java,v 1.19 2001/04/26 17:45:50 lmartin Exp $
See Also:
  `XMLDTDScanner.EventHandler`

Inner Class Summary
`static interface` `XMLDTDScanner.EventHandler` This interface must be implemented by the users of the XMLDTDScanner class.

Constructor Summary
`XMLDTDScanner(StringPool stringPool, XMLErrorReporter errorReporter, XMLEntityHandler entityHandler, XMLEntityHandler.CharBuffer literalData)`

Method Summary
`void` `checkForAttributeNameWithPEReference(XMLEntityHandler.EntityReader entityReader, char fastchar, QName attribute)`
`void` `checkForElementTypeWithPEReference(XMLEntityHandler.EntityReader entityReader, char fastchar, QName element)`
`int` `checkForNameWithPEReference(XMLEntityHandler.EntityReader entityReader, char fastcheck)`
`int` `checkForNmtokenWithPEReference(XMLEntityHandler.EntityReader entityReader, char fastcheck)`
`void` `endOfInput(int entityNameIndex, boolean moreToFollow)` Handle the end of input
`boolean` `getReadingContentSpec()` Is the scanner reading a ContentSpec?
`boolean` `getReadingExternalEntity()` Is the XMLDTDScanner reading from an external entity? This will be true, in particular if there was an external subset
`int` `markupDepth()` Report the markup nesting depth.
`int` `normalizeDefaultAttValue(QName attribute, int defaultAttValue, int attType, int enumeration, boolean list)`
`int` `parenDepth()` Report the parenthesis nesting depth.
`void` `readerChange(XMLEntityHandler.EntityReader nextReader, int nextReaderId)` Change readers
`protected void` `reportRecoverableXMLError(int majorCode, int minorCode, int stringIndex1)` Report a recoverable xml error.
`protected void` `reportRecoverableXMLError(int majorCode, int minorCode, java.lang.String string1)` Report a recoverable xml error.
`protected void` `reportRecoverableXMLError(int majorCode, int minorCode, java.lang.String string1, java.lang.String string2)` Report a recoverable xml error.
`void` `reset(StringPool stringPool, XMLEntityHandler.CharBuffer literalData)` Allow XMLDTDScanner to be reused.
`void` `scanDecls(boolean extSubset)` Scan markup declarations
`int` `scanDefaultAttValue(QName element, QName attribute)` Scan the default value in an attribute declaration
`int` `scanDefaultAttValue(QName element, QName attribute, int attType, int enumeration)`
`boolean` `scanDoctypeDecl()` This routine is called after the <!DOCTYPE portion of a DOCTYPE line has been called.
`void` `setDTDHandler(XMLDocumentHandler.DTDHandler dtdHandler)` Set the DTD handler.
`void` `setEventHandler(XMLDTDScanner.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)` set fNamespacesEnabled
`void` `setValidationEnabled(boolean enabled)` set fValidationEnabled

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### XMLDTDScanner

    public XMLDTDScanner(StringPool stringPool,
                         XMLErrorReporter errorReporter,
                         XMLEntityHandler entityHandler,
                         XMLEntityHandler.CharBuffer literalData)

Method Detail

### setEventHandler

    public void setEventHandler(XMLDTDScanner.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.

### setNamespacesEnabled

    public void setNamespacesEnabled(boolean enabled)

  set fNamespacesEnabled

### setValidationEnabled

    public void setValidationEnabled(boolean enabled)

  set fValidationEnabled

### setLoadExternalDTD

    public void setLoadExternalDTD(boolean enabled)

  Sets whether the parser loads the external DTD.

### getReadingExternalEntity

    public boolean getReadingExternalEntity()

  Is the XMLDTDScanner reading from an external entity? This will be true, in particular if there was an external subset
  Returns:
    true if the XMLDTDScanner is reading from an external entity.

### getReadingContentSpec

    public boolean getReadingContentSpec()

  Is the scanner reading a ContentSpec?
  Returns:
    true if the scanner is reading a ContentSpec

### markupDepth

    public int markupDepth()

  Report the markup nesting depth. This allows a client to perform validation checks for correct markup nesting. This keeps scanning and validation separate.
  Returns:
    the markup nesting depth

### parenDepth

    public int parenDepth()

  Report the parenthesis nesting depth. This allows a client to perform validation checks for correct parenthesis balancing. This keeps scanning and validation separate.
  Returns:
    the parenthesis depth

### reset

    public void reset(StringPool stringPool,
                      XMLEntityHandler.CharBuffer literalData)
               throws java.lang.Exception

  Allow XMLDTDScanner to be reused. This method is called from an XMLParser reset method, which passes the StringPool to be used by the reset DTD scanner instance.
  Parameters:
    `stringPool` - the string pool to be used by XMLDTDScanner.

### reportRecoverableXMLError

    protected void reportRecoverableXMLError(int majorCode,
                                             int minorCode,
                                             int stringIndex1)
                                      throws java.lang.Exception

  Report a recoverable xml error.

### reportRecoverableXMLError

    protected void reportRecoverableXMLError(int majorCode,
                                             int minorCode,
                                             java.lang.String string1)
                                      throws java.lang.Exception

  Report a recoverable xml error.

### reportRecoverableXMLError

    protected void reportRecoverableXMLError(int majorCode,
                                             int minorCode,
                                             java.lang.String string1,
                                             java.lang.String string2)
                                      throws java.lang.Exception

  Report a recoverable xml error.

### readerChange

    public void readerChange(XMLEntityHandler.EntityReader nextReader,
                             int nextReaderId)
                      throws java.lang.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 entityNameIndex,
                           boolean moreToFollow)
                    throws java.lang.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:
    java.lang.Exception -

### scanDoctypeDecl

    public boolean scanDoctypeDecl()
                            throws java.lang.Exception

  This routine is called after the <!DOCTYPE portion of a DOCTYPE line has been called. scanDocTypeDecl goes onto scan the rest of the DOCTYPE decl. If an internal DTD subset exists, it is scanned. If an external DTD subset exists, scanDocTypeDecl sets up the state necessary to process it.
  Returns:
    true if successful
  Throws:
    java.lang.Exception -

### scanDecls

    public void scanDecls(boolean extSubset)
                   throws java.lang.Exception

  Scan markup declarations
  Parameters:
    `extSubset` - true if the scanner is scanning an external subset, false if it is scanning an internal subset
  Throws:
    java.lang.Exception -

### scanDefaultAttValue

    public int scanDefaultAttValue(QName element,
                                   QName attribute)
                            throws java.lang.Exception

  Scan the default value in an attribute declaration
  Parameters:
    `elementType` - handle to the element that owns the attribute
    `attrName` - handle in the string pool for the attribute name
  Returns:
    handle in the string pool for the default attribute value
  Throws:
    java.lang.Exception -

### checkForElementTypeWithPEReference

    public void checkForElementTypeWithPEReference(XMLEntityHandler.EntityReader entityReader,
                                                   char fastchar,
                                                   QName element)
                                            throws java.lang.Exception

### checkForAttributeNameWithPEReference

    public void checkForAttributeNameWithPEReference(XMLEntityHandler.EntityReader entityReader,
                                                     char fastchar,
                                                     QName attribute)
                                              throws java.lang.Exception

### checkForNameWithPEReference

    public int checkForNameWithPEReference(XMLEntityHandler.EntityReader entityReader,
                                           char fastcheck)
                                    throws java.lang.Exception

### checkForNmtokenWithPEReference

    public int checkForNmtokenWithPEReference(XMLEntityHandler.EntityReader entityReader,
                                              char fastcheck)
                                       throws java.lang.Exception

### scanDefaultAttValue

    public int scanDefaultAttValue(QName element,
                                   QName attribute,
                                   int attType,
                                   int enumeration)
                            throws java.lang.Exception

### normalizeDefaultAttValue

    public int normalizeDefaultAttValue(QName attribute,
                                        int defaultAttValue,
                                        int attType,
                                        int enumeration,
                                        boolean list)
                                 throws java.lang.Exception

Copyright © 1999-2001 Apache XML Project. All Rights Reserved.