org.apache.xerces.impl

Class XMLDocumentFragmentScannerImpl

public class XMLDocumentFragmentScannerImpl extends XMLScanner implements XMLDocumentScanner, XMLComponent, XMLEntityHandler

This class is responsible for scanning the structure and content of document fragments. The scanner acts as the source for the document information which is communicated to the document handler.

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

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

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

UNKNOWN:

Nested Class Summary
protected interfaceXMLDocumentFragmentScannerImpl.Dispatcher
This interface defines an XML "event" dispatching model.
protected static classXMLDocumentFragmentScannerImpl.ElementStack
Element stack.
protected classXMLDocumentFragmentScannerImpl.FragmentContentDispatcher
Dispatcher to handle content scanning.
Field Summary
protected static booleanDEBUG_CONTENT_SCANNING
Debug content dispatcher scanning.
protected static StringENTITY_RESOLVER
Property identifier: entity resolver.
protected QNamefAttributeQName
Attribute QName.
protected XMLAttributesImplfAttributes
Element attributes.
protected XMLDocumentFragmentScannerImpl.DispatcherfContentDispatcher
Content dispatcher.
protected QNamefCurrentElement
Current element.
protected XMLDocumentFragmentScannerImpl.DispatcherfDispatcher
Active dispatcher.
protected XMLDocumentHandlerfDocumentHandler
Document handler.
protected QNamefElementQName
Element QName.
protected XMLDocumentFragmentScannerImpl.ElementStackfElementStack
Element stack.
protected int[]fEntityStack
Entity stack.
protected ExternalSubsetResolverfExternalSubsetResolver
External subset resolver.
protected booleanfHasExternalDTD
has external dtd
protected booleanfInScanContent
SubScanner state: inside scanContent method.
protected intfMarkupDepth
Markup depth.
protected booleanfNotifyBuiltInRefs
Notify built-in references.
protected intfScannerState
Scanner state.
protected booleanfStandalone
Standalone.
protected XMLStringfTempString
String.
protected XMLStringfTempString2
String.
protected static StringNAMESPACES
Feature identifier: namespaces.
protected static StringNOTIFY_BUILTIN_REFS
Feature identifier: notify built-in refereces.
protected static intSCANNER_STATE_CDATA
Scanner state: CDATA section.
protected static intSCANNER_STATE_COMMENT
Scanner state: comment.
protected static intSCANNER_STATE_CONTENT
Scanner state: content.
protected static intSCANNER_STATE_DOCTYPE
Scanner state: DOCTYPE.
protected static intSCANNER_STATE_END_OF_INPUT
Scanner state: end of input.
protected static intSCANNER_STATE_PI
Scanner state: processing instruction.
protected static intSCANNER_STATE_REFERENCE
Scanner state: reference.
protected static intSCANNER_STATE_ROOT_ELEMENT
Scanner state: root element.
protected static intSCANNER_STATE_START_OF_MARKUP
Scanner state: start of markup.
protected static intSCANNER_STATE_TERMINATED
Scanner state: terminated.
protected static intSCANNER_STATE_TEXT_DECL
Scanner state: Text declaration.
Constructor Summary
XMLDocumentFragmentScannerImpl()
Default constructor.
Method Summary
protected XMLDocumentFragmentScannerImpl.DispatchercreateContentDispatcher()
Creates a content dispatcher.
voidendEntity(String name, Augmentations augs)
This method notifies the end of an entity.
StringgetDispatcherName(XMLDocumentFragmentScannerImpl.Dispatcher dispatcher)
Returns the dispatcher name.
XMLDocumentHandlergetDocumentHandler()
Returns the document handler
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.
protected StringgetScannerStateName(int state)
Returns the scanner state name.
protected inthandleEndElement(QName element, boolean isEmpty)
Handles the end element.
voidreset(XMLComponentManager componentManager)
Resets the component.
protected voidscanAttribute(XMLAttributes attributes)
Scans an attribute.
protected booleanscanCDATASection(boolean complete)
Scans a CDATA section.
protected voidscanCharReference()
Scans a character reference.
protected voidscanComment()
Scans a comment.
protected intscanContent()
Scans element content.
booleanscanDocument(boolean complete)
Scans a document.
protected intscanEndElement()
Scans an end element.
protected voidscanEntityReference()
Scans an entity reference.
protected voidscanPIData(String target, XMLString data)
Scans a processing data.
protected booleanscanStartElement()
Scans a start element.
protected booleanscanStartElementAfterName()
Scans the remainder of a start or empty tag after the element name.
protected voidscanStartElementName()
Scans the name of an element in a start or empty tag.
protected voidscanXMLDeclOrTextDecl(boolean scanningTextDecl)
Scans an XML or text declaration.
protected voidsetDispatcher(XMLDocumentFragmentScannerImpl.Dispatcher dispatcher)
Sets the dispatcher.
voidsetDocumentHandler(XMLDocumentHandler documentHandler)
setDocumentHandler
voidsetFeature(String featureId, boolean state)
Sets the state of a feature.
voidsetInputSource(XMLInputSource inputSource)
Sets the input source.
voidsetProperty(String propertyId, Object value)
Sets the value of a property.
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.

Field Detail

DEBUG_CONTENT_SCANNING

protected static final boolean DEBUG_CONTENT_SCANNING
Debug content dispatcher scanning.

ENTITY_RESOLVER

protected static final String ENTITY_RESOLVER
Property identifier: entity resolver.

fAttributeQName

protected final QName fAttributeQName
Attribute QName.

fAttributes

protected final XMLAttributesImpl fAttributes
Element attributes.

fContentDispatcher

protected XMLDocumentFragmentScannerImpl.Dispatcher fContentDispatcher
Content dispatcher.

fCurrentElement

protected QName fCurrentElement
Current element.

fDispatcher

protected XMLDocumentFragmentScannerImpl.Dispatcher fDispatcher
Active dispatcher.

fDocumentHandler

protected XMLDocumentHandler fDocumentHandler
Document handler.

fElementQName

protected final QName fElementQName
Element QName.

fElementStack

protected XMLDocumentFragmentScannerImpl.ElementStack fElementStack
Element stack.

fEntityStack

protected int[] fEntityStack
Entity stack.

fExternalSubsetResolver

protected ExternalSubsetResolver fExternalSubsetResolver
External subset resolver. *

fHasExternalDTD

protected boolean fHasExternalDTD
has external dtd

fInScanContent

protected boolean fInScanContent
SubScanner state: inside scanContent method.

fMarkupDepth

protected int fMarkupDepth
Markup depth.

fNotifyBuiltInRefs

protected boolean fNotifyBuiltInRefs
Notify built-in references.

fScannerState

protected int fScannerState
Scanner state.

fStandalone

protected boolean fStandalone
Standalone.

fTempString

protected final XMLString fTempString
String.

fTempString2

protected final XMLString fTempString2
String.

NAMESPACES

protected static final String NAMESPACES
Feature identifier: namespaces.

NOTIFY_BUILTIN_REFS

protected static final String NOTIFY_BUILTIN_REFS
Feature identifier: notify built-in refereces.

SCANNER_STATE_CDATA

protected static final int SCANNER_STATE_CDATA
Scanner state: CDATA section.

SCANNER_STATE_COMMENT

protected static final int SCANNER_STATE_COMMENT
Scanner state: comment.

SCANNER_STATE_CONTENT

protected static final int SCANNER_STATE_CONTENT
Scanner state: content.

SCANNER_STATE_DOCTYPE

protected static final int SCANNER_STATE_DOCTYPE
Scanner state: DOCTYPE.

SCANNER_STATE_END_OF_INPUT

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

SCANNER_STATE_PI

protected static final int SCANNER_STATE_PI
Scanner state: processing instruction.

SCANNER_STATE_REFERENCE

protected static final int SCANNER_STATE_REFERENCE
Scanner state: reference.

SCANNER_STATE_ROOT_ELEMENT

protected static final int SCANNER_STATE_ROOT_ELEMENT
Scanner state: root element.

SCANNER_STATE_START_OF_MARKUP

protected static final int SCANNER_STATE_START_OF_MARKUP
Scanner state: start of markup.

SCANNER_STATE_TERMINATED

protected static final int SCANNER_STATE_TERMINATED
Scanner state: terminated.

SCANNER_STATE_TEXT_DECL

protected static final int SCANNER_STATE_TEXT_DECL
Scanner state: Text declaration.

Constructor Detail

XMLDocumentFragmentScannerImpl

public XMLDocumentFragmentScannerImpl()
Default constructor.

Method Detail

createContentDispatcher

protected XMLDocumentFragmentScannerImpl.Dispatcher createContentDispatcher()
Creates a content dispatcher.

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.

getDispatcherName

public String getDispatcherName(XMLDocumentFragmentScannerImpl.Dispatcher dispatcher)
Returns the dispatcher name.

getDocumentHandler

public XMLDocumentHandler getDocumentHandler()
Returns the document handler

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.

getScannerStateName

protected String getScannerStateName(int state)
Returns the scanner state name.

handleEndElement

protected int handleEndElement(QName element, boolean isEmpty)
Handles the end element. This method will make sure that the end element name matches the current element and notify the handler about the end of the element and the end of any relevent prefix mappings.

Note: This method uses the fQName variable. The contents of this variable will be destroyed.

Parameters: element The element.

Returns: The element depth.

Throws: XNIException Thrown if the handler throws a SAX exception upon notification.

reset

public void reset(XMLComponentManager componentManager)
Resets the component. The component can query the component manager about any features and properties that affect the operation of the component.

Parameters: componentManager The component manager.

Throws: SAXException Thrown by component on initialization error. For example, if a feature or property is required for the operation of the component, the component manager may throw a SAXNotRecognizedException or a SAXNotSupportedException.

scanAttribute

protected void scanAttribute(XMLAttributes attributes)
Scans an attribute.

 [41] Attribute ::= Name Eq AttValue
 

Note: This method assumes that the next character on the stream is the first character of the attribute name.

Note: This method uses the fAttributeQName and fQName variables. The contents of these variables will be destroyed.

Parameters: attributes The attributes list for the scanned attribute.

scanCDATASection

protected boolean scanCDATASection(boolean complete)
Scans a CDATA section.

Note: This method uses the fTempString and fStringBuffer variables.

Parameters: complete True if the CDATA section is to be scanned completely.

Returns: True if CDATA is completely scanned.

scanCharReference

protected void scanCharReference()
Scans a character reference.

 [66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'
 

scanComment

protected void scanComment()
Scans a comment.

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

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

scanContent

protected int scanContent()
Scans element content.

Returns: Returns the next character on the stream.

scanDocument

public boolean scanDocument(boolean complete)
Scans a 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.

scanEndElement

protected int scanEndElement()
Scans an end element.

 [42] ETag ::= '</' Name S? '>'
 

Note: This method uses the fElementQName variable. The contents of this variable will be destroyed. The caller should copy the needed information out of this variable before calling this method.

Returns: The element depth.

scanEntityReference

protected void scanEntityReference()
Scans an entity reference.

Throws: IOException Thrown if i/o error occurs. XNIException Thrown if handler throws exception upon notification.

scanPIData

protected 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

scanStartElement

protected boolean scanStartElement()
Scans a start element. This method will handle the binding of namespace information and notifying the handler of the start of the element.

 [44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
 [40] STag ::= '<' Name (S Attribute)* S? '>'
 

Note: This method assumes that the leading '<' character has been consumed.

Note: This method uses the fElementQName and fAttributes variables. The contents of these variables will be destroyed. The caller should copy important information out of these variables before calling this method.

Returns: True if element is empty. (i.e. It matches production [44].

scanStartElementAfterName

protected boolean scanStartElementAfterName()
Scans the remainder of a start or empty tag after the element name.

Returns: True if element is empty.

See Also: XMLDocumentFragmentScannerImpl

scanStartElementName

protected void scanStartElementName()
Scans the name of an element in a start or empty tag.

See Also: scanStartElement

scanXMLDeclOrTextDecl

protected void scanXMLDeclOrTextDecl(boolean scanningTextDecl)
Scans an XML or text declaration.

 [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
 [24] VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ")
 [80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' |  "'" EncName "'" )
 [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
 [32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'")
                 | ('"' ('yes' | 'no') '"'))

 [77] TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>'
 

Parameters: scanningTextDecl True if a text declaration is to be scanned instead of an XML declaration.

setDispatcher

protected final void setDispatcher(XMLDocumentFragmentScannerImpl.Dispatcher dispatcher)
Sets the dispatcher.

Parameters: dispatcher The new dispatcher.

setDocumentHandler

public void setDocumentHandler(XMLDocumentHandler documentHandler)
setDocumentHandler

Parameters: documentHandler

setFeature

public void setFeature(String featureId, boolean state)
Sets the state of a feature. This method is called by the component manager any time after reset when a feature changes state.

Note: Components should silently ignore features that do not affect the operation of the component.

Parameters: featureId The feature identifier. state The state of the feature.

Throws: SAXNotRecognizedException The component should not throw this exception. SAXNotSupportedException The component should not throw this exception.

setInputSource

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

Parameters: inputSource The input source.

Throws: IOException Thrown on i/o error.

setProperty

public void setProperty(String propertyId, Object value)
Sets the value of a property. This method is called by the component manager any time after reset when a property changes value.

Note: Components should silently ignore properties that do not affect the operation of the component.

Parameters: propertyId The property identifier. value The value of the property.

Throws: SAXNotRecognizedException The component should not throw this exception. SAXNotSupportedException The component should not throw this exception.

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.

Copyright B) 1999-2005 Apache XML Project. All Rights Reserved.