The DTD validator. The validator implements a document
filter: receiving document events from the scanner; validating
the content and structure; augmenting the InfoSet, if applicable;
and notifying the parser of the information resulting from the
validation process.
Formerly, this component also handled DTD events and grammar construction.
To facilitate the development of a meaningful DTD grammar caching/preparsing
framework, this functionality has been moved into the XMLDTDLoader
class. Therefore, this class no longer implements the DTDFilter
or DTDContentModelFilter interfaces.
This component requires the following features and properties from the
component manager that uses it:
- http://xml.org/sax/features/namespaces
- http://xml.org/sax/features/validation
- http://apache.org/xml/features/validation/dynamic
- http://apache.org/xml/properties/internal/symbol-table
- http://apache.org/xml/properties/internal/error-reporter
- http://apache.org/xml/properties/internal/grammar-pool
- http://apache.org/xml/properties/internal/datatype-validator-factory
BALANCE_SYNTAX_TREES
protected static final String BALANCE_SYNTAX_TREES
Feature identifier: balance syntax trees.
DATATYPE_VALIDATOR_FACTORY
protected static final String DATATYPE_VALIDATOR_FACTORY
Property identifier: datatype validator factory.
DYNAMIC_VALIDATION
protected static final String DYNAMIC_VALIDATION
Feature identifier: dynamic validation.
ERROR_REPORTER
protected static final String ERROR_REPORTER
Property identifier: error reporter.
GRAMMAR_POOL
protected static final String GRAMMAR_POOL
Property identifier: grammar pool.
NAMESPACES
protected static final String NAMESPACES
Feature identifier: namespaces.
PARSER_SETTINGS
protected static final String PARSER_SETTINGS
SYMBOL_TABLE
protected static final String SYMBOL_TABLE
Property identifier: symbol table.
VALIDATION
protected static final String VALIDATION
Feature identifier: validation.
VALIDATION_MANAGER
protected static final String VALIDATION_MANAGER
WARN_ON_DUPLICATE_ATTDEF
protected static final String WARN_ON_DUPLICATE_ATTDEF
Feature identifier: warn on duplicate attdef
fBalanceSyntaxTrees
protected boolean fBalanceSyntaxTrees
Controls whether the DTD grammar produces balanced syntax trees.
fDTDGrammar
protected DTDGrammar fDTDGrammar
DTD Grammar.
fDTDValidation
protected boolean fDTDValidation
Validation against only DTD
fDatatypeValidatorFactory
protected DTDDVFactory fDatatypeValidatorFactory
Datatype validator factory.
fDocLocation
protected org.apache.xerces.xni.XMLLocator fDocLocation
fDocumentHandler
protected org.apache.xerces.xni.XMLDocumentHandler fDocumentHandler
Document handler.
fDocumentSource
protected org.apache.xerces.xni.parser.XMLDocumentSource fDocumentSource
fDynamicValidation
protected boolean fDynamicValidation
Dynamic validation. This state of this feature is only useful when
the validation feature is set to true
.
fGrammarPool
protected org.apache.xerces.xni.grammars.XMLGrammarPool fGrammarPool
fNamespaceContext
protected org.apache.xerces.xni.NamespaceContext fNamespaceContext
Namespace support.
fNamespaces
protected boolean fNamespaces
Namespaces.
fSeenDoctypeDecl
protected boolean fSeenDoctypeDecl
True if seen DOCTYPE declaration.
fSymbolTable
protected SymbolTable fSymbolTable
Symbol table.
fValidation
protected boolean fValidation
Validation.
fWarnDuplicateAttdef
protected boolean fWarnDuplicateAttdef
warn on duplicate attribute definition, this feature works only when validation is true
addDTDDefaultAttrsAndValidate
protected void addDTDDefaultAttrsAndValidate(org.apache.xerces.xni.QName elementName,
int elementIndex,
org.apache.xerces.xni.XMLAttributes attributes)
throws org.apache.xerces.xni.XNIException
Add default attributes and validate.
characterData
public boolean characterData(String data,
org.apache.xerces.xni.Augmentations augs)
Character content.
- characterData in interface RevalidationHandler
data
- The character data.augs
- Augmentations
- True if data is whitespace only
characters
public void characters(org.apache.xerces.xni.XMLString text,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
Character content.
- characters in interface org.apache.xerces.xni.XMLDocumentHandler
text
- The content.augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
comment
public void comment(org.apache.xerces.xni.XMLString text,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
A comment.
- comment in interface org.apache.xerces.xni.XMLDocumentHandler
text
- The text in the comment.augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by application to signal an error.
doctypeDecl
public void doctypeDecl(String rootElement,
String publicId,
String systemId,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
Notifies of the presence of the DOCTYPE line in the document.
- doctypeDecl in interface org.apache.xerces.xni.XMLDocumentHandler
rootElement
- The name of the root element.publicId
- The public identifier if an external DTD or null
if the external DTD is specified using SYSTEM.systemId
- The system identifier if an external DTD, null
otherwise.augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
emptyElement
public void emptyElement(org.apache.xerces.xni.QName element,
org.apache.xerces.xni.XMLAttributes attributes,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
An empty element.
- emptyElement in interface org.apache.xerces.xni.XMLDocumentHandler
element
- The name of the element.attributes
- The element attributes.augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
endCDATA
public void endCDATA(org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
The end of a CDATA section.
- endCDATA in interface org.apache.xerces.xni.XMLDocumentHandler
augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
endDocument
public void endDocument(org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
The end of the document.
- endDocument in interface org.apache.xerces.xni.XMLDocumentHandler
augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
endElement
public void endElement(org.apache.xerces.xni.QName element,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
The end of an element.
- endElement in interface org.apache.xerces.xni.XMLDocumentHandler
element
- The name of the element.augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
endGeneralEntity
public void endGeneralEntity(String name,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
This method notifies the end of a general entity.
Note: This method is not called for entity references
appearing as part of attribute values.
- endGeneralEntity in interface org.apache.xerces.xni.XMLDocumentHandler
name
- The name of the entity.augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
endNamespaceScope
protected void endNamespaceScope(org.apache.xerces.xni.QName element,
org.apache.xerces.xni.Augmentations augs,
boolean isEmpty)
getDocumentHandler
public org.apache.xerces.xni.XMLDocumentHandler getDocumentHandler()
Returns the document handler
- getDocumentHandler in interface org.apache.xerces.xni.parser.XMLDocumentSource
getDocumentSource
public org.apache.xerces.xni.parser.XMLDocumentSource getDocumentSource()
Returns the document source
- getDocumentSource in interface org.apache.xerces.xni.XMLDocumentHandler
getExternalEntityRefInAttrValue
protected String getExternalEntityRefInAttrValue(String nonNormalizedValue)
Checks entities in attribute values for standalone VC.
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.
- getFeatureDefault in interface org.apache.xerces.xni.parser.XMLComponent
featureId
- The feature identifier.
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.
- getPropertyDefault in interface org.apache.xerces.xni.parser.XMLComponent
propertyId
- The property identifier.
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.
- getRecognizedFeatures in interface org.apache.xerces.xni.parser.XMLComponent
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.
- getRecognizedProperties in interface org.apache.xerces.xni.parser.XMLComponent
handleEndElement
protected void handleEndElement(org.apache.xerces.xni.QName element,
org.apache.xerces.xni.Augmentations augs,
boolean isEmpty)
throws org.apache.xerces.xni.XNIException
Handle end element.
handleStartElement
protected boolean handleStartElement(org.apache.xerces.xni.QName element,
org.apache.xerces.xni.XMLAttributes attributes,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
Handle element
- true if validator is removed from the pipeline
hasGrammar
public final boolean hasGrammar()
Returns true if the validator has a DTD grammar
- hasGrammar in interface XMLDTDValidatorFilter
- true if the validator has a DTD grammar
ignorableWhitespace
public void ignorableWhitespace(org.apache.xerces.xni.XMLString text,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
Ignorable whitespace. For this method to be called, the document
source must have some way of determining that the text containing
only whitespace characters should be considered ignorable. For
example, the validator can determine if a length of whitespace
characters in the document are ignorable based on the element
content model.
- ignorableWhitespace in interface org.apache.xerces.xni.XMLDocumentHandler
text
- The ignorable whitespace.augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
init
protected void init()
initialization
invalidStandaloneAttDef
protected boolean invalidStandaloneAttDef(org.apache.xerces.xni.QName element,
org.apache.xerces.xni.QName attribute)
Returns true if invalid standalone attribute definition.
isSpace
protected boolean isSpace(int c)
processingInstruction
public void processingInstruction(String target,
org.apache.xerces.xni.XMLString data,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
A processing instruction. Processing instructions consist of a
target name and, optionally, text data. The data is only meaningful
to the application.
Typically, a processing instruction's data will contain a series
of pseudo-attributes. These pseudo-attributes follow the form of
element attributes but are
not parsed or presented
to the application as anything other than text. The application is
responsible for parsing the data.
- processingInstruction in interface org.apache.xerces.xni.XMLDocumentHandler
target
- The target.data
- The data or null if none specified.augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
reset
public void reset(org.apache.xerces.xni.parser.XMLComponentManager componentManager)
throws org.apache.xerces.xni.parser.XMLConfigurationException
- reset in interface org.apache.xerces.xni.parser.XMLComponent
setDocumentHandler
public void setDocumentHandler(org.apache.xerces.xni.XMLDocumentHandler documentHandler)
Sets the document handler to receive information about the document.
- setDocumentHandler in interface org.apache.xerces.xni.parser.XMLDocumentSource
setDocumentSource
public void setDocumentSource(org.apache.xerces.xni.parser.XMLDocumentSource source)
Sets the document source
- setDocumentSource in interface org.apache.xerces.xni.XMLDocumentHandler
setFeature
public void setFeature(String featureId,
boolean state)
throws org.apache.xerces.xni.parser.XMLConfigurationException
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.
- setFeature in interface org.apache.xerces.xni.parser.XMLComponent
featureId
- The feature identifier.state
- The state of the feature.
setProperty
public void setProperty(String propertyId,
Object value)
throws org.apache.xerces.xni.parser.XMLConfigurationException
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.
- setProperty in interface org.apache.xerces.xni.parser.XMLComponent
propertyId
- The property identifier.value
- The value of the property.
startCDATA
public void startCDATA(org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
The start of a CDATA section.
- startCDATA in interface org.apache.xerces.xni.XMLDocumentHandler
augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
startDocument
public void startDocument(org.apache.xerces.xni.XMLLocator locator,
String encoding,
org.apache.xerces.xni.NamespaceContext namespaceContext,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
The start of the document.
- startDocument in interface org.apache.xerces.xni.XMLDocumentHandler
locator
- The system identifier of the entity if the entity
is external, null otherwise.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).namespaceContext
- The namespace context in effect at the
start of this document.
This object represents the current context.
Implementors of this class are responsible
for copying the namespace bindings from the
the current context (and its parent contexts)
if that information is important.augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
startElement
public void startElement(org.apache.xerces.xni.QName element,
org.apache.xerces.xni.XMLAttributes attributes,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
The start of an element.
- startElement in interface org.apache.xerces.xni.XMLDocumentHandler
element
- The name of the element.attributes
- The element attributes.augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
startGeneralEntity
public void startGeneralEntity(String name,
org.apache.xerces.xni.XMLResourceIdentifier identifier,
String encoding,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
This method notifies the start of a general entity.
Note: This method is not called for entity references
appearing as part of attribute values.
- startGeneralEntity in interface org.apache.xerces.xni.XMLDocumentHandler
name
- The name of the general 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
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
startNamespaceScope
protected void startNamespaceScope(org.apache.xerces.xni.QName element,
org.apache.xerces.xni.XMLAttributes attributes,
org.apache.xerces.xni.Augmentations augs)
textDecl
public void textDecl(String version,
String encoding,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
Notifies of the presence of a TextDecl line in an entity. If present,
this method will be called immediately following the startParameterEntity call.
Note: This method is only called for external
parameter entities referenced in the DTD.
- textDecl in interface org.apache.xerces.xni.XMLDocumentHandler
version
- The XML version, or null if not specified.encoding
- The IANA encoding name of the entity.augs
- Additional information that may include infoset
augmentations.
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.
validate
public final boolean validate()
Return true if validator must validate the document
- validate in interface XMLDTDValidatorFilter
- true if validator must validate the document
validateDTDattribute
protected void validateDTDattribute(org.apache.xerces.xni.QName element,
String attValue,
XMLAttributeDecl attributeDecl)
throws org.apache.xerces.xni.XNIException
Validate attributes in DTD fashion.
xmlDecl
public void xmlDecl(String version,
String encoding,
String standalone,
org.apache.xerces.xni.Augmentations augs)
throws org.apache.xerces.xni.XNIException
Notifies of the presence of an XMLDecl line in the document. If
present, this method will be called immediately following the
startDocument call.
- xmlDecl in interface org.apache.xerces.xni.XMLDocumentHandler
version
- The XML version.encoding
- The IANA encoding name of the document, or null if
not specified.standalone
- The standalone value, or null if not specified.augs
- Additional information that may include infoset augmentations
org.apache.xerces.xni.XNIException
- Thrown by handler to signal an error.