IntegratedParserConfigurationpublic class IntegratedParserConfiguration extends StandardParserConfiguration This is configuration uses a scanner that integrates both scanning of the document
and binding namespaces.
If namespace feature is turned on, the pipeline is constructured with the
following components:
XMLNSDocumentScannerImpl -> XMLNSDTDValidator -> (optional) XMLSchemaValidator
If the namespace feature is turned off the default document scanner implementation
is used (XMLDocumentScannerImpl).
In addition to the features and properties recognized by the base
parser configuration, this class recognizes these additional
features and properties:
- Features
- http://apache.org/xml/features/validation/schema
- http://apache.org/xml/features/validation/schema-full-checking
- http://apache.org/xml/features/validation/schema/normalized-value
- http://apache.org/xml/features/validation/schema/element-default
- Properties
- http://apache.org/xml/properties/internal/error-reporter
- http://apache.org/xml/properties/internal/entity-manager
- http://apache.org/xml/properties/internal/document-scanner
- http://apache.org/xml/properties/internal/dtd-scanner
- http://apache.org/xml/properties/internal/grammar-pool
- http://apache.org/xml/properties/internal/validator/dtd
- http://apache.org/xml/properties/internal/datatype-validator-factory
|
Fields Summary |
---|
protected org.apache.xerces.impl.XMLNSDocumentScannerImpl | fNamespaceScannerDocument scanner that does namespace binding. | protected org.apache.xerces.impl.XMLDocumentScannerImpl | fNonNSScannerDefault Xerces implementation of scanner | protected org.apache.xerces.impl.dtd.XMLDTDValidator | fNonNSDTDValidatorDTD Validator that does not bind namespaces |
Constructors Summary |
---|
public IntegratedParserConfiguration()Default constructor.
this(null, null, null);
| public IntegratedParserConfiguration(org.apache.xerces.util.SymbolTable symbolTable)Constructs a parser configuration using the specified symbol table.
this(symbolTable, null, null);
| public IntegratedParserConfiguration(org.apache.xerces.util.SymbolTable symbolTable, org.apache.xerces.xni.grammars.XMLGrammarPool grammarPool)Constructs a parser configuration using the specified symbol table and
grammar pool.
REVISIT:
Grammar pool will be updated when the new validation engine is
implemented.
this(symbolTable, grammarPool, null);
| public IntegratedParserConfiguration(org.apache.xerces.util.SymbolTable symbolTable, org.apache.xerces.xni.grammars.XMLGrammarPool grammarPool, org.apache.xerces.xni.parser.XMLComponentManager parentSettings)Constructs a parser configuration using the specified symbol table,
grammar pool, and parent settings.
REVISIT:
Grammar pool will be updated when the new validation engine is
implemented.
super(symbolTable, grammarPool, parentSettings);
// create components
fNonNSScanner = new XMLDocumentScannerImpl();
fNonNSDTDValidator = new XMLDTDValidator();
// add components
addComponent((XMLComponent)fNonNSScanner);
addComponent((XMLComponent)fNonNSDTDValidator);
|
Methods Summary |
---|
protected void | configurePipeline()Configures the pipeline.
// use XML 1.0 datatype library
setProperty(DATATYPE_VALIDATOR_FACTORY, fDatatypeValidatorFactory);
// setup DTD pipeline
configureDTDPipeline();
// setup document pipeline
if (fFeatures.get(NAMESPACES) == Boolean.TRUE) {
fProperties.put(NAMESPACE_BINDER, fNamespaceBinder);
fScanner = fNamespaceScanner;
fProperties.put(DOCUMENT_SCANNER, fNamespaceScanner);
if (fDTDValidator != null) {
fProperties.put(DTD_VALIDATOR, fDTDValidator);
fNamespaceScanner.setDTDValidator(fDTDValidator);
fNamespaceScanner.setDocumentHandler(fDTDValidator);
fDTDValidator.setDocumentSource(fNamespaceScanner);
fDTDValidator.setDocumentHandler(fDocumentHandler);
if (fDocumentHandler != null) {
fDocumentHandler.setDocumentSource(fDTDValidator);
}
fLastComponent = fDTDValidator;
}
else {
fNamespaceScanner.setDocumentHandler(fDocumentHandler);
fNamespaceScanner.setDTDValidator(null);
if (fDocumentHandler != null) {
fDocumentHandler.setDocumentSource(fNamespaceScanner);
}
fLastComponent = fNamespaceScanner;
}
}
else {
fScanner = fNonNSScanner;
fProperties.put(DOCUMENT_SCANNER, fNonNSScanner);
if (fNonNSDTDValidator != null) {
fProperties.put(DTD_VALIDATOR, fNonNSDTDValidator);
fNonNSScanner.setDocumentHandler(fNonNSDTDValidator);
fNonNSDTDValidator.setDocumentSource(fNonNSScanner);
fNonNSDTDValidator.setDocumentHandler(fDocumentHandler);
if (fDocumentHandler != null) {
fDocumentHandler.setDocumentSource(fNonNSDTDValidator);
}
fLastComponent = fNonNSDTDValidator;
}
else {
fScanner.setDocumentHandler(fDocumentHandler);
if (fDocumentHandler != null) {
fDocumentHandler.setDocumentSource(fScanner);
}
fLastComponent = fScanner;
}
}
// setup document pipeline
if (fFeatures.get(XMLSCHEMA_VALIDATION) == Boolean.TRUE) {
// If schema validator was not in the pipeline insert it.
if (fSchemaValidator == null) {
fSchemaValidator = new XMLSchemaValidator();
// add schema component
fProperties.put(SCHEMA_VALIDATOR, fSchemaValidator);
addComponent(fSchemaValidator);
// add schema message formatter
if (fErrorReporter.getMessageFormatter(XSMessageFormatter.SCHEMA_DOMAIN) == null) {
XSMessageFormatter xmft = new XSMessageFormatter();
fErrorReporter.putMessageFormatter(XSMessageFormatter.SCHEMA_DOMAIN, xmft);
}
}
fLastComponent.setDocumentHandler(fSchemaValidator);
fSchemaValidator.setDocumentSource(fLastComponent);
fSchemaValidator.setDocumentHandler(fDocumentHandler);
if (fDocumentHandler != null) {
fDocumentHandler.setDocumentSource(fSchemaValidator);
}
fLastComponent = fSchemaValidator;
}
| protected org.apache.xerces.impl.dtd.XMLDTDValidator | createDTDValidator()Create a DTD validator: this validator performs namespace binding.
return new XMLNSDTDValidator();
| protected org.apache.xerces.xni.parser.XMLDocumentScanner | createDocumentScanner()Create a document scanner: this scanner performs namespace binding
fNamespaceScanner = new XMLNSDocumentScannerImpl();
return fNamespaceScanner;
|
|