org.apache.xerces.impl

Class XMLDTDScannerImpl

public class XMLDTDScannerImpl extends XMLScanner implements XMLDTDScanner, XMLComponent, XMLEntityHandler

This class is responsible for scanning the declarations found in the internal and external subsets of a DTD in an XML document. The scanner acts as the sources for the DTD information which is communicated to the DTD handlers.

This component requires the following features and properties from the component manager that uses it:

Version: $Id: XMLDTDScannerImpl.java,v 1.52 2004/10/04 21:45:49 mrglavas Exp $

Author: Arnaud Le Hors, IBM Andy Clark, IBM Glenn Marcy, IBM Eric Ye, IBM

UNKNOWN:

Field Summary
protected XMLDTDContentModelHandlerfDTDContentModelHandler
DTD content model handler.
protected XMLDTDHandlerfDTDHandler
DTD handler.
protected intfScannerState
Scanner state.
protected booleanfSeenExternalDTD
Seen external DTD.
protected booleanfSeenExternalPE
Seen external parameter entity.
protected booleanfStandalone
Standalone.
protected static intSCANNER_STATE_END_OF_INPUT
Scanner state: end of input.
protected static intSCANNER_STATE_MARKUP_DECL
Scanner state: markup declaration.
protected static intSCANNER_STATE_TEXT_DECL
Scanner state: text declaration.
Constructor Summary
XMLDTDScannerImpl()
Default constructor.
XMLDTDScannerImpl(SymbolTable symbolTable, XMLErrorReporter errorReporter, XMLEntityManager entityManager)
Constructor for he use of non-XMLComponentManagers.
Method Summary
voidendEntity(String name, Augmentations augs)
This method notifies the end of an entity.
XMLDTDContentModelHandlergetDTDContentModelHandler()
getDTDContentModelHandler
XMLDTDHandlergetDTDHandler()
getDTDHandler
BooleangetFeatureDefault(String featureId)
Returns the default state for a feature, or null if this component does not want to report a default value for this feature.
ObjectgetPropertyDefault(String propertyId)
Returns the default state for a property, or null if this component does not want to report a default value for this property.
String[]getRecognizedFeatures()
Returns a list of feature identifiers that are recognized by this component.
String[]getRecognizedProperties()
Returns a list of property identifiers that are recognized by this component.
voidreset(XMLComponentManager componentManager)
reset
voidreset()
protected StringscanAttDefaultDecl(String elName, String atName, String type, XMLString defaultVal, XMLString nonNormalizedDefaultVal)
Scans an attribute default declaration

 [60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? 
protected voidscanAttlistDecl()
Scans an attlist declaration

 [52]  AttlistDecl    ::=   '<!
protected voidscanComment()
Scans a comment.
protected booleanscanDecls(boolean complete)
Dispatch an XML "event".
booleanscanDTDExternalSubset(boolean complete)
Scans the external subset of the document.
booleanscanDTDInternalSubset(boolean complete, boolean standalone, boolean hasExternalSubset)
Scans the internal subset of the document.
protected voidscanElementDecl()
Scans an element declaration

 [45]    elementdecl    ::=    '<!
protected voidscanEntityValue(XMLString value, XMLString nonNormalizedValue)
Scans an entity value.
protected booleanscanningInternalSubset()
protected voidscanPIData(String target, XMLString data)
Scans a processing data.
protected booleanscanTextDecl()
Dispatch an XML "event".
voidsetDTDContentModelHandler(XMLDTDContentModelHandler dtdContentModelHandler)
setDTDContentModelHandler
voidsetDTDHandler(XMLDTDHandler dtdHandler)
setDTDHandler
voidsetInputSource(XMLInputSource inputSource)
Sets the input source.
protected voidsetScannerState(int state)
Sets the scanner state.
voidstartEntity(String name, XMLResourceIdentifier identifier, String encoding, Augmentations augs)
This method notifies of the start of an entity.
protected voidstartPE(String name, boolean literal)
start a parameter entity dealing with the textdecl if there is any

Field Detail

fDTDContentModelHandler

protected XMLDTDContentModelHandler fDTDContentModelHandler
DTD content model handler.

fDTDHandler

protected XMLDTDHandler fDTDHandler
DTD handler.

fScannerState

protected int fScannerState
Scanner state.

fSeenExternalDTD

protected boolean fSeenExternalDTD
Seen external DTD.

fSeenExternalPE

protected boolean fSeenExternalPE
Seen external parameter entity.

fStandalone

protected boolean fStandalone
Standalone.

SCANNER_STATE_END_OF_INPUT

protected static final int SCANNER_STATE_END_OF_INPUT
Scanner state: end of input.

SCANNER_STATE_MARKUP_DECL

protected static final int SCANNER_STATE_MARKUP_DECL
Scanner state: markup declaration.

SCANNER_STATE_TEXT_DECL

protected static final int SCANNER_STATE_TEXT_DECL
Scanner state: text declaration.

Constructor Detail

XMLDTDScannerImpl

public XMLDTDScannerImpl()
Default constructor.

XMLDTDScannerImpl

public XMLDTDScannerImpl(SymbolTable symbolTable, XMLErrorReporter errorReporter, XMLEntityManager entityManager)
Constructor for he use of non-XMLComponentManagers.

Method Detail

endEntity

public void endEntity(String name, Augmentations augs)
This method notifies the end of an entity. The DTD has the pseudo-name of "[dtd]" parameter entity names start with '%'; and general entities are just specified by their name.

Parameters: name The name of the entity. augs Additional information that may include infoset augmentations

Throws: XNIException Thrown by handler to signal an error.

getDTDContentModelHandler

public XMLDTDContentModelHandler getDTDContentModelHandler()
getDTDContentModelHandler

Returns: XMLDTDContentModelHandler

getDTDHandler

public XMLDTDHandler getDTDHandler()
getDTDHandler

Returns: the XMLDTDHandler

getFeatureDefault

public Boolean getFeatureDefault(String featureId)
Returns the default state for a feature, or null if this component does not want to report a default value for this feature.

Parameters: featureId The feature identifier.

Since: Xerces 2.2.0

getPropertyDefault

public Object getPropertyDefault(String propertyId)
Returns the default state for a property, or null if this component does not want to report a default value for this property.

Parameters: propertyId The property identifier.

Since: Xerces 2.2.0

getRecognizedFeatures

public String[] getRecognizedFeatures()
Returns a list of feature identifiers that are recognized by this component. This method may return null if no features are recognized by this component.

getRecognizedProperties

public String[] getRecognizedProperties()
Returns a list of property identifiers that are recognized by this component. This method may return null if no properties are recognized by this component.

reset

public void reset(XMLComponentManager componentManager)
reset

Parameters: componentManager

reset

public void reset()

scanAttDefaultDecl

protected final String scanAttDefaultDecl(String elName, String atName, String type, XMLString defaultVal, XMLString nonNormalizedDefaultVal)
Scans an attribute default declaration

 [60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue)
 

Parameters: name The name of the attribute being scanned. defaultVal The string to fill in with the default value.

scanAttlistDecl

protected final void scanAttlistDecl()
Scans an attlist declaration

 [52]  AttlistDecl    ::=   '<!ATTLIST' S Name AttDef* S? '>' 
 [53]  AttDef         ::=   S Name S AttType S DefaultDecl 
 

Note: Called after scanning past '<!ATTLIST'

scanComment

protected final void scanComment()
Scans a comment.

 [15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
 

Note: Called after scanning past '<!--'

scanDecls

protected final boolean scanDecls(boolean complete)
Dispatch an XML "event".

Parameters: complete True if this method is intended to scan and dispatch as much as possible.

Returns: True if there is more to scan.

Throws: IOException Thrown on i/o error. XNIException Thrown on parse error.

scanDTDExternalSubset

public boolean scanDTDExternalSubset(boolean complete)
Scans the external subset of the document.

Parameters: complete True if the scanner should scan the document completely, pushing all events to the registered document handler. A value of false indicates that that the scanner should only scan the next portion of the document and return. A scanner instance is permitted to completely scan a document if it does not support this "pull" scanning model.

Returns: True if there is more to scan, false otherwise.

scanDTDInternalSubset

public boolean scanDTDInternalSubset(boolean complete, boolean standalone, boolean hasExternalSubset)
Scans the internal subset of the document.

Parameters: complete True if the scanner should scan the document completely, pushing all events to the registered document handler. A value of false indicates that that the scanner should only scan the next portion of the document and return. A scanner instance is permitted to completely scan a document if it does not support this "pull" scanning model. standalone True if the document was specified as standalone. This value is important for verifying certain well-formedness constraints. hasExternalDTD True if the document has an external DTD. This allows the scanner to properly notify the handler of the end of the DTD in the absence of an external subset.

Returns: True if there is more to scan, false otherwise.

scanElementDecl

protected final void scanElementDecl()
Scans an element declaration

 [45]    elementdecl    ::=    '<!ELEMENT' S Name S contentspec S? '>'
 [46]    contentspec    ::=    'EMPTY' | 'ANY' | Mixed | children  
 

Note: Called after scanning past '<!ELEMENT'

scanEntityValue

protected final void scanEntityValue(XMLString value, XMLString nonNormalizedValue)
Scans an entity value.

Parameters: value The string to fill in with the value. nonNormalizedValue The string to fill in with the non-normalized value. Note: This method uses fString, fStringBuffer (through the use of scanCharReferenceValue), and fStringBuffer2, anything in them at the time of calling is lost.

scanningInternalSubset

protected final boolean scanningInternalSubset()

scanPIData

protected final void scanPIData(String target, XMLString data)
Scans a processing data. This is needed to handle the situation where a document starts with a processing instruction whose target name starts with "xml". (e.g. xmlfoo)

Parameters: target The PI target data The string to fill in with the data

scanTextDecl

protected final boolean scanTextDecl()
Dispatch an XML "event".

Parameters: complete True if this method is intended to scan and dispatch as much as possible.

Returns: True if a TextDecl was scanned.

Throws: IOException Thrown on i/o error. XNIException Thrown on parse error.

setDTDContentModelHandler

public void setDTDContentModelHandler(XMLDTDContentModelHandler dtdContentModelHandler)
setDTDContentModelHandler

Parameters: dtdContentModelHandler

setDTDHandler

public void setDTDHandler(XMLDTDHandler dtdHandler)
setDTDHandler

Parameters: dtdHandler

setInputSource

public void setInputSource(XMLInputSource inputSource)
Sets the input source.

Parameters: inputSource The input source or null.

Throws: IOException Thrown on i/o error.

setScannerState

protected final void setScannerState(int state)
Sets the scanner state.

Parameters: state The new scanner state.

startEntity

public void startEntity(String name, XMLResourceIdentifier identifier, String encoding, Augmentations augs)
This method notifies of the start of an entity. The DTD has the pseudo-name of "[dtd]" parameter entity names start with '%'; and general entities are just specified by their name.

Parameters: name The name of the entity. identifier The resource identifier. encoding The auto-detected IANA encoding name of the entity stream. This value will be null in those situations where the entity encoding is not auto-detected (e.g. internal entities or a document entity that is parsed from a java.io.Reader). augs Additional information that may include infoset augmentations

Throws: XNIException Thrown by handler to signal an error.

startPE

protected void startPE(String name, boolean literal)
start a parameter entity dealing with the textdecl if there is any

Parameters: name The name of the parameter entity to start (without the '%') literal Whether this is happening within a literal

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