FileDocCategorySizeDatePackage
IntegratedParserConfiguration.javaAPI DocJava SE 5 API11168Fri Aug 26 14:55:54 BST 2005com.sun.org.apache.xerces.internal.parsers

IntegratedParserConfiguration

public 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
author
Elena Litani, IBM
version
$Id: IntegratedParserConfiguration.java,v 1.12 2003/07/25 18:57:23 elena Exp $

Fields Summary
protected XMLNSDocumentScannerImpl
fNamespaceScanner
Document scanner that does namespace binding.
protected XMLDocumentScannerImpl
fNonNSScanner
Default Xerces implementation of scanner
protected XMLDTDValidator
fNonNSDTDValidator
DTD Validator that does not bind namespaces
Constructors Summary
public IntegratedParserConfiguration()
Default constructor.

        this(null, null, null);
    
public IntegratedParserConfiguration(SymbolTable symbolTable)
Constructs a parser configuration using the specified symbol table.

param
symbolTable The symbol table to use.

        this(symbolTable, null, null);
    
public IntegratedParserConfiguration(SymbolTable symbolTable, 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.

param
symbolTable The symbol table to use.
param
grammarPool The grammar pool to use.

        this(symbolTable, grammarPool, null);
    
public IntegratedParserConfiguration(SymbolTable symbolTable, XMLGrammarPool grammarPool, 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.

param
symbolTable The symbol table to use.
param
grammarPool The grammar pool to use.
param
parentSettings The parent settings.

        super(symbolTable, grammarPool, parentSettings);
        
        // create components
        fNonNSScanner = new XMLDocumentScannerImpl();
        fNonNSDTDValidator = new XMLDTDValidator();

        // add components
        addComponent((XMLComponent)fNonNSScanner);
        addComponent((XMLComponent)fNonNSDTDValidator);

    
Methods Summary
protected voidconfigurePipeline()
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 com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidatorcreateDTDValidator()
Create a DTD validator: this validator performs namespace binding.

        return new XMLNSDTDValidator();
    
protected com.sun.org.apache.xerces.internal.xni.parser.XMLDocumentScannercreateDocumentScanner()
Create a document scanner: this scanner performs namespace binding

        fNamespaceScanner = new XMLNSDocumentScannerImpl();
        return fNamespaceScanner;