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

XIncludeParserConfiguration

public class XIncludeParserConfiguration extends XML11Configuration
This parser configuration includes an XIncludeHandler in the pipeline before the schema validator, or as the last component in the pipeline if there is no schema validator. Using this pipeline will enable processing according to the XML Inclusions specification, to the conformance level described in XIncludeHandler.
author
Peter McCracken, IBM
author
Arun Yadav, Sun Microsystem
see
com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler

Fields Summary
private XIncludeHandler
fXIncludeHandler
protected static final String
ALLOW_UE_AND_NOTATION_EVENTS
Feature identifier: allow notation and unparsed entity events to be sent out of order.
protected static final String
XINCLUDE_AWARE
Feature identifier: XInclude Aware
protected static final String
XINCLUDE_HANDLER
Property identifier: error reporter.
protected static final String
NAMESPACE_CONTEXT
Property identifier: error reporter.
private boolean
enableXInclude
Constructors Summary
public XIncludeParserConfiguration()
Default constructor.


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

param
symbolTable The symbol table to use.

        this(symbolTable, null, null);
    
public XIncludeParserConfiguration(SymbolTable symbolTable, XMLGrammarPool grammarPool)
Constructs a parser configuration using the specified symbol table and grammar pool.

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

        this(symbolTable, grammarPool, null);
    
public XIncludeParserConfiguration(SymbolTable symbolTable, XMLGrammarPool grammarPool, XMLComponentManager parentSettings)
Constructs a parser configuration using the specified symbol table, grammar pool, and parent settings.

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

        super(symbolTable, grammarPool, parentSettings);
       

         //add default recognized features
         final String[] recognizedFeatures = {
             ALLOW_UE_AND_NOTATION_EVENTS,
             XINCLUDE_AWARE
         };
         addRecognizedFeatures(recognizedFeatures);
        // add default recognized properties
        fXIncludeHandler = new XIncludeHandler();
        addComponent(fXIncludeHandler);
        final String[] recognizedProperties = {
            XINCLUDE_HANDLER,
            NAMESPACE_CONTEXT
        };

        addRecognizedProperties(recognizedProperties);
        setProperty(XINCLUDE_HANDLER, fXIncludeHandler);
        setProperty(NAMESPACE_CONTEXT, new XIncludeNamespaceSupport());
        setFeature(ALLOW_UE_AND_NOTATION_EVENTS, true);
        setFeature(XINCLUDE_AWARE, false);
    
Methods Summary
protected voidconfigurePipeline()
Configures the pipeline.

        super.configurePipeline();
		if(enableXInclude){
        //configure DTD pipeline
        fDTDScanner.setDTDHandler(fDTDProcessor);
        fDTDProcessor.setDTDSource(fDTDScanner);
        fDTDProcessor.setDTDHandler(fXIncludeHandler);
        fXIncludeHandler.setDTDSource(fDTDProcessor);
        fXIncludeHandler.setDTDHandler(fDTDHandler);
        if (fDTDHandler != null) {            
            fDTDHandler.setDTDSource(fXIncludeHandler);
        }

        // configure XML document pipeline: insert after DTDValidator and 
        // before XML Schema validator
        XMLDocumentSource prev = null;
        if (fFeatures.get(XMLSCHEMA_VALIDATION) == Boolean.TRUE) {
            // we don't have to worry about fSchemaValidator being null, since
            // super.configurePipeline() instantiated it if the feature was set
            prev = fSchemaValidator.getDocumentSource();
        }
        // Otherwise, insert after the last component in the pipeline
        else {
            prev = fLastComponent;
            fLastComponent = fXIncludeHandler;
        }

        if (prev != null) {
            XMLDocumentHandler next = prev.getDocumentHandler();
            if (next != null) {
                fXIncludeHandler.setDocumentHandler(next);
                next.setDocumentSource(fXIncludeHandler);
            }
            prev.setDocumentHandler(fXIncludeHandler);
            fXIncludeHandler.setDocumentSource(prev);
        }
        else {
            setDocumentHandler(fXIncludeHandler);
        }
		}
    
protected voidconfigureXML11Pipeline()

		super.configureXML11Pipeline();
		if(enableXInclude){
		addXML11Component(fXIncludeHandler);	
        // configure XML 1.1. DTD pipeline
		fXML11DTDScanner.setDTDHandler(fXML11DTDProcessor);
		fXML11DTDProcessor.setDTDSource(fXML11DTDScanner);
		fXML11DTDProcessor.setDTDHandler(fXIncludeHandler);
		fXIncludeHandler.setDTDSource(fXML11DTDProcessor);
        fXIncludeHandler.setDTDHandler(fDTDHandler);
		if (fDTDHandler != null) {            
			fDTDHandler.setDTDSource(fXIncludeHandler);
		}
		
		// configure XML document pipeline: insert after DTDValidator and 
		// before XML Schema validator
		XMLDocumentSource prev = null;
		if (fFeatures.get(XMLSCHEMA_VALIDATION) == Boolean.TRUE) {
			// we don't have to worry about fSchemaValidator being null, since
			// super.configurePipeline() instantiated it if the feature was set
			prev = fSchemaValidator.getDocumentSource();
		}
		// Otherwise, insert after the last component in the pipeline
		else {
			prev = fLastComponent;
			fLastComponent = fXIncludeHandler;
		}

		XMLDocumentHandler next = prev.getDocumentHandler();
		prev.setDocumentHandler(fXIncludeHandler);
		fXIncludeHandler.setDocumentSource(prev);
		if (next != null) {
			fXIncludeHandler.setDocumentHandler(next);
			next.setDocumentSource(fXIncludeHandler);
		}
		}
	
public voidsetFeature(java.lang.String featureId, boolean state)

		if(featureId.equals(Constants.XERCES_FEATURE_PREFIX + Constants.XINCLUDE_AWARE)){
			enableXInclude = state;
		}
		super.setFeature(featureId,state);
	
public voidsetProperty(java.lang.String propertyId, java.lang.Object value)


        if (propertyId.equals(XINCLUDE_HANDLER)) {
        }

        super.setProperty(propertyId, value);