elena       2003/11/14 15:24:36

  Modified:    java/src/org/apache/xerces/parsers
                        XIncludeParserConfiguration.java
  Log:
  Allow XML 1.1. support in XInclude
  
  Revision  Changes    Path
  1.5       +61 -39    
xml-xerces/java/src/org/apache/xerces/parsers/XIncludeParserConfiguration.java
  
  Index: XIncludeParserConfiguration.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/XIncludeParserConfiguration.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XIncludeParserConfiguration.java  6 Nov 2003 19:38:36 -0000       1.4
  +++ XIncludeParserConfiguration.java  14 Nov 2003 23:24:36 -0000      1.5
  @@ -60,12 +60,10 @@
   import org.apache.xerces.util.SymbolTable;
   import org.apache.xerces.xinclude.XIncludeHandler;
   import org.apache.xerces.xinclude.XIncludeNamespaceSupport;
  -import org.apache.xerces.xni.XMLDTDHandler;
   import org.apache.xerces.xni.XMLDocumentHandler;
   import org.apache.xerces.xni.grammars.XMLGrammarPool;
   import org.apache.xerces.xni.parser.XMLComponentManager;
   import org.apache.xerces.xni.parser.XMLConfigurationException;
  -import org.apache.xerces.xni.parser.XMLDTDSource;
   import org.apache.xerces.xni.parser.XMLDocumentSource;
   
   /**
  @@ -78,7 +76,7 @@
    * @author Peter McCracken, IBM
    * @see org.apache.xerces.xinclude.XIncludeHandler
    */
  -public class XIncludeParserConfiguration extends IntegratedParserConfiguration {
  +public class XIncludeParserConfiguration extends XML11Configuration {
   
       private XIncludeHandler fXIncludeHandler;
   
  @@ -138,7 +136,7 @@
           super(symbolTable, grammarPool, parentSettings);
   
           fXIncludeHandler = new XIncludeHandler();
  -        addComponent(fXIncludeHandler);
  +        addCommonComponent(fXIncludeHandler);
           
           final String[] recognizedFeatures = {
               ALLOW_UE_AND_NOTATION_EVENTS
  @@ -155,12 +153,23 @@
           setProperty(XINCLUDE_HANDLER, fXIncludeHandler);
           setProperty(NAMESPACE_CONTEXT, new XIncludeNamespaceSupport());
       } // <init>(SymbolTable,XMLGrammarPool)}
  -
  -    /** Configures the pipeline. */
  +    
  +    
  +     /** Configures the pipeline. */
       protected void configurePipeline() {
  -        // setup document pipeline
           super.configurePipeline();
  -        // insert before fSchemaValidator, if one exists.
  +
  +        //configure DTD pipeline
  +        fDTDScanner.setDTDHandler(fDTDProcessor);
  +        fDTDProcessor.setDTDSource(fDTDScanner);
  +        fDTDProcessor.setDTDHandler(fXIncludeHandler);
  +        fXIncludeHandler.setDTDSource(fDTDProcessor);
  +        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
  @@ -170,41 +179,54 @@
           // 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);
  +        XMLDocumentHandler next = prev.getDocumentHandler();
  +             prev.setDocumentHandler(fXIncludeHandler);
  +             fXIncludeHandler.setDocumentSource(prev);
  +        if (next != null) {
  +            fXIncludeHandler.setDocumentHandler(next);
  +            next.setDocumentSource(fXIncludeHandler);
           }
  +
       } // configurePipeline()
  -    
  -    protected void configureDTDPipeline() {
  -        super.configureDTDPipeline();
  -        
  -        // It doesn't really matter where we stick the XIncludeHandler in the
  -        // DTD pipeline, since it doesn't modify the pipeline.
  -        // We'll put it right after the scanner.
  -        if (fDTDScanner != null) {
  -            XMLDTDHandler next = fDTDScanner.getDTDHandler();
  -            if (next != null) {
  -                fXIncludeHandler.setDTDHandler(next);
  -                next.setDTDSource(fXIncludeHandler);
  -            }
  -            fDTDScanner.setDTDHandler(fXIncludeHandler);
  -            fXIncludeHandler.setDTDSource(fDTDScanner);            
  -        }
  -        else {
  -            setDTDHandler(fXIncludeHandler);
  -        }
  -    }
  +
  +     protected void configureXML11Pipeline() {
  +             super.configureXML11Pipeline();
  +             
  +        // configure XML 1.1. DTD pipeline
  +             fXML11DTDScanner.setDTDHandler(fXML11DTDProcessor);
  +             fXML11DTDProcessor.setDTDSource(fXML11DTDScanner);
  +             fXML11DTDProcessor.setDTDHandler(fXIncludeHandler);
  +             fXIncludeHandler.setDTDSource(fXML11DTDProcessor);
  +             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);
  +             }
  +
  +     } // configureXML11Pipeline()
       
       public void setProperty(String propertyId, Object value)
           throws XMLConfigurationException {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to