Class XMLNSDocumentScannerImpl
- java.lang.Object
-
- org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.XMLScanner
-
- org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
-
- org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.XMLDocumentScannerImpl
-
- org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.XMLNSDocumentScannerImpl
-
- All Implemented Interfaces:
XMLEntityHandler
,XMLComponent
,XMLDocumentScanner
,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:
- http://xml.org/sax/features/namespaces {true} -- if the value of this feature is set to false this scanner must not be used.
- http://xml.org/sax/features/validation
- http://apache.org/xml/features/nonvalidating/load-external-dtd
- http://apache.org/xml/features/scanner/notify-char-refs
- http://apache.org/xml/features/scanner/notify-builtin-refs
- http://apache.org/xml/properties/internal/symbol-table
- http://apache.org/xml/properties/internal/error-reporter
- http://apache.org/xml/properties/internal/entity-manager
- http://apache.org/xml/properties/internal/dtd-scanner
- Version:
- $Id$
- Author:
- Elena Litani, IBM
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
XMLNSDocumentScannerImpl.NSContentDispatcher
Dispatcher to handle content scanning.-
Nested classes/interfaces inherited from class org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.XMLDocumentScannerImpl
XMLDocumentScannerImpl.ContentDispatcher, XMLDocumentScannerImpl.DTDDispatcher, XMLDocumentScannerImpl.PrologDispatcher, XMLDocumentScannerImpl.TrailingMiscDispatcher, XMLDocumentScannerImpl.XMLDeclDispatcher
-
Nested classes/interfaces inherited from class org.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
XMLDocumentFragmentScannerImpl.Dispatcher, XMLDocumentFragmentScannerImpl.ElementStack, XMLDocumentFragmentScannerImpl.FragmentContentDispatcher
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
fBindNamespaces
If is true, the dtd validator is no longer in the pipeline and the scanner should bind namespacesprotected boolean
fPerformValidation
If validating parser, make sure we report an error in the scanner if DTD grammar is missing.-
Fields inherited from class org.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.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
Constructors Constructor Description XMLNSDocumentScannerImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected XMLDocumentFragmentScannerImpl.Dispatcher
createContentDispatcher()
Creates a content dispatcher.void
reset(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.smooks.engine.delivery.sax.ng.org.apache.xerces.impl.XMLDocumentScannerImpl
endEntity, getFeatureDefault, getPropertyDefault, getRecognizedFeatures, getRecognizedProperties, getScannerStateName, scanDoctypeDecl, setFeature, setInputSource, setProperty, startEntity
-
Methods inherited from class org.smooks.engine.delivery.sax.ng.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.smooks.engine.delivery.sax.ng.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
-
-
-
-
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.
-
-
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 IOException, 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 classXMLDocumentFragmentScannerImpl
- Returns:
- True if element is empty. (i.e. It matches production [44].
- Throws:
IOException
XNIException
-
scanStartElementName
protected void scanStartElementName() throws IOException, XNIException
Scans the name of an element in a start or empty tag.- Overrides:
scanStartElementName
in classXMLDocumentFragmentScannerImpl
- Throws:
IOException
XNIException
- See Also:
scanStartElement()
-
scanStartElementAfterName
protected boolean scanStartElementAfterName() throws IOException, XNIException
Scans the remainder of a start or empty tag after the element name.- Overrides:
scanStartElementAfterName
in classXMLDocumentFragmentScannerImpl
- Returns:
- True if element is empty.
- Throws:
IOException
XNIException
- See Also:
scanStartElement()
-
scanAttribute
protected void scanAttribute(XMLAttributesImpl attributes) throws IOException, 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:
IOException
XNIException
-
scanEndElement
protected int scanEndElement() throws IOException, 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 classXMLDocumentFragmentScannerImpl
- Returns:
- The element depth.
- Throws:
IOException
XNIException
-
reset
public void reset(XMLComponentManager componentManager) throws 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 interfaceXMLComponent
- Overrides:
reset
in classXMLDocumentScannerImpl
- Parameters:
componentManager
- The component manager.- Throws:
XMLConfigurationException
-
createContentDispatcher
protected XMLDocumentFragmentScannerImpl.Dispatcher createContentDispatcher()
Creates a content dispatcher.- Overrides:
createContentDispatcher
in classXMLDocumentScannerImpl
-
-