org.apache.xerces.impl
Class XMLNSDocumentScannerImpl

java.lang.Object
  extended by org.apache.xerces.impl.XMLScanner
      extended by org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
          extended by org.apache.xerces.impl.XMLDocumentScannerImpl
              extended by org.apache.xerces.impl.XMLNSDocumentScannerImpl
All Implemented Interfaces:
XMLEntityHandler, org.apache.xerces.xni.parser.XMLComponent, org.apache.xerces.xni.parser.XMLDocumentScanner, org.apache.xerces.xni.parser.XMLDocumentSource

public class XMLNSDocumentScannerImpl
extends XMLDocumentScannerImpl

The scanner acts as the source for the document information which is communicated to the document handler. This class scans an XML document, checks if document has a DTD, and if DTD is not found the scanner will remove the DTD Validator from the pipeline and perform namespace binding. Note: This scanner should only be used when the namespace processing is on!

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

Version:
$Id: XMLNSDocumentScannerImpl.java 495747 2007-01-12 21:48:00Z mrglavas $
Author:
Elena Litani, IBM

INTERNAL:

Usage of this class is not supported. It may be altered or removed at any time.

Nested Class Summary
protected  class XMLNSDocumentScannerImpl.NSContentDispatcher
          Dispatcher to handle content scanning.
 
Nested classes/interfaces inherited from class org.apache.xerces.impl.XMLDocumentScannerImpl
XMLDocumentScannerImpl.ContentDispatcher, XMLDocumentScannerImpl.DTDDispatcher, XMLDocumentScannerImpl.PrologDispatcher, XMLDocumentScannerImpl.TrailingMiscDispatcher, XMLDocumentScannerImpl.XMLDeclDispatcher
 
Nested classes/interfaces inherited from class org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
XMLDocumentFragmentScannerImpl.Dispatcher, XMLDocumentFragmentScannerImpl.ElementStack, XMLDocumentFragmentScannerImpl.FragmentContentDispatcher
 
Field Summary
protected  boolean fBindNamespaces
          If is true, the dtd validator is no longer in the pipeline and the scanner should bind namespaces
protected  boolean fPerformValidation
          If validating parser, make sure we report an error in the scanner if DTD grammar is missing.
 
Fields inherited from class org.apache.xerces.impl.XMLDocumentScannerImpl
DISALLOW_DOCTYPE_DECL_FEATURE, DTD_SCANNER, fDisallowDoctype, fDoctypeName, fDoctypePublicId, fDoctypeSystemId, fDTDDispatcher, fDTDScanner, fLoadExternalDTD, fNamespaceContext, fPrologDispatcher, fScanningDTD, fSeenDoctypeDecl, fTrailingMiscDispatcher, fValidationManager, fXMLDeclDispatcher, LOAD_EXTERNAL_DTD, NAMESPACE_CONTEXT, SCANNER_STATE_DTD_EXTERNAL, SCANNER_STATE_DTD_EXTERNAL_DECLS, SCANNER_STATE_DTD_INTERNAL_DECLS, SCANNER_STATE_PROLOG, SCANNER_STATE_TRAILING_MISC, SCANNER_STATE_XML_DECL, VALIDATION_MANAGER
 
Fields inherited from class org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
DEBUG_CONTENT_SCANNING, ENTITY_RESOLVER, fAttributeQName, fAttributes, fContentDispatcher, fCurrentElement, fDispatcher, fDocumentHandler, fElementQName, fElementStack, fEntityStack, fExternalSubsetResolver, fHasExternalDTD, fInScanContent, fIsEntityDeclaredVC, fMarkupDepth, fNotifyBuiltInRefs, fScannerState, fStandalone, fTempString, fTempString2, NAMESPACES, NOTIFY_BUILTIN_REFS, SCANNER_STATE_CDATA, SCANNER_STATE_COMMENT, SCANNER_STATE_CONTENT, SCANNER_STATE_DOCTYPE, SCANNER_STATE_END_OF_INPUT, SCANNER_STATE_PI, SCANNER_STATE_REFERENCE, SCANNER_STATE_ROOT_ELEMENT, SCANNER_STATE_START_OF_MARKUP, SCANNER_STATE_TERMINATED, SCANNER_STATE_TEXT_DECL
 
Fields inherited from class org.apache.xerces.impl.XMLScanner
DEBUG_ATTR_NORMALIZATION, ENTITY_MANAGER, ERROR_REPORTER, fAmpSymbol, fAposSymbol, fCharRefLiteral, fEncodingSymbol, fEntityDepth, fEntityManager, fEntityScanner, fErrorReporter, fGtSymbol, fLtSymbol, fNamespaces, fNotifyCharRefs, fParserSettings, fQuotSymbol, fReportEntity, fResourceIdentifier, fScanningAttribute, fStandaloneSymbol, fSymbolTable, fValidation, fVersionSymbol, NOTIFY_CHAR_REFS, PARSER_SETTINGS, SYMBOL_TABLE, VALIDATION
 
Constructor Summary
XMLNSDocumentScannerImpl()
           
 
Method Summary
protected  XMLDocumentFragmentScannerImpl.Dispatcher createContentDispatcher()
          Creates a content dispatcher.
 void reset(org.apache.xerces.xni.parser.XMLComponentManager componentManager)
          Resets the component.
protected  void scanAttribute(XMLAttributesImpl attributes)
          Scans an attribute.
protected  int scanEndElement()
          Scans an end element.
protected  boolean scanStartElement()
          Scans a start element.
protected  boolean scanStartElementAfterName()
          Scans the remainder of a start or empty tag after the element name.
protected  void scanStartElementName()
          Scans the name of an element in a start or empty tag.
 void setDTDValidator(XMLDTDValidatorFilter dtdValidator)
          The scanner is responsible for removing DTD validator from the pipeline if it is not needed.
 
Methods inherited from class org.apache.xerces.impl.XMLDocumentScannerImpl
endEntity, getFeatureDefault, getPropertyDefault, getRecognizedFeatures, getRecognizedProperties, getScannerStateName, scanDoctypeDecl, setFeature, setInputSource, setProperty, startEntity
 
Methods inherited from class org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
getDispatcherName, getDocumentHandler, handleEndElement, scanAttribute, scanCDATASection, scanCharReference, scanComment, scanContent, scanDocument, scanEntityReference, scanPIData, scanXMLDeclOrTextDecl, setDispatcher, setDocumentHandler, setScannerState
 
Methods inherited from class org.apache.xerces.impl.XMLScanner
getFeature, getVersionNotSupportedKey, isInvalid, isInvalidLiteral, isUnchangedByNormalization, isValidNameChar, isValidNameStartChar, isValidNameStartHighSurrogate, isValidNCName, normalizeWhitespace, normalizeWhitespace, reportFatalError, reset, scanAttributeValue, scanCharReferenceValue, scanComment, scanExternalID, scanPI, scanPseudoAttribute, scanPubidLiteral, scanSurrogates, scanXMLDeclOrTextDecl, versionSupported
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fBindNamespaces

protected boolean fBindNamespaces
If is true, the dtd validator is no longer in the pipeline and the scanner should bind namespaces


fPerformValidation

protected boolean fPerformValidation
If validating parser, make sure we report an error in the scanner if DTD grammar is missing.

Constructor Detail

XMLNSDocumentScannerImpl

public XMLNSDocumentScannerImpl()
Method Detail

setDTDValidator

public void setDTDValidator(XMLDTDValidatorFilter dtdValidator)
The scanner is responsible for removing DTD validator from the pipeline if it is not needed.

Parameters:
dtdValidator - The DTDValidator

scanStartElement

protected boolean scanStartElement()
                            throws java.io.IOException,
                                   org.apache.xerces.xni.XNIException
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.

Overrides:
scanStartElement in class XMLDocumentFragmentScannerImpl
Returns:
True if element is empty. (i.e. It matches production [44].
Throws:
java.io.IOException
org.apache.xerces.xni.XNIException

scanStartElementName

protected void scanStartElementName()
                             throws java.io.IOException,
                                    org.apache.xerces.xni.XNIException
Scans the name of an element in a start or empty tag.

Overrides:
scanStartElementName in class XMLDocumentFragmentScannerImpl
Throws:
java.io.IOException
org.apache.xerces.xni.XNIException
See Also:
scanStartElement()

scanStartElementAfterName

protected boolean scanStartElementAfterName()
                                     throws java.io.IOException,
                                            org.apache.xerces.xni.XNIException
Scans the remainder of a start or empty tag after the element name.

Overrides:
scanStartElementAfterName in class XMLDocumentFragmentScannerImpl
Returns:
True if element is empty.
Throws:
java.io.IOException
org.apache.xerces.xni.XNIException
See Also:
scanStartElement()

scanAttribute

protected void scanAttribute(XMLAttributesImpl attributes)
                      throws java.io.IOException,
                             org.apache.xerces.xni.XNIException
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.
Throws:
java.io.IOException
org.apache.xerces.xni.XNIException

scanEndElement

protected int scanEndElement()
                      throws java.io.IOException,
                             org.apache.xerces.xni.XNIException
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.

Overrides:
scanEndElement in class XMLDocumentFragmentScannerImpl
Returns:
The element depth.
Throws:
java.io.IOException
org.apache.xerces.xni.XNIException

reset

public void reset(org.apache.xerces.xni.parser.XMLComponentManager componentManager)
           throws org.apache.xerces.xni.parser.XMLConfigurationException
Description copied from class: XMLDocumentScannerImpl
Resets the component. The component can query the component manager about any features and properties that affect the operation of the component.

Specified by:
reset in interface org.apache.xerces.xni.parser.XMLComponent
Overrides:
reset in class XMLDocumentScannerImpl
Parameters:
componentManager - The component manager.
Throws:
org.apache.xerces.xni.parser.XMLConfigurationException

createContentDispatcher

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

Overrides:
createContentDispatcher in class XMLDocumentScannerImpl


Copyright 1999-2010 The Apache Software Foundation. All Rights Reserved.