コード例 #1
0
  /** Configures the pipeline. */
  protected void configurePipeline() {
    super.configurePipeline();

    // configure DTD pipeline
    fDTDScanner.setDTDHandler(fDTDProcessor);
    fDTDProcessor.setDTDSource(fDTDScanner);

    fDTDProcessor.setDTDHandler(fXIncludeHandler);
    fXIncludeHandler.setDTDSource(fDTDProcessor);
    fXIncludeHandler.setDTDHandler(fXPointerHandler);
    fXPointerHandler.setDTDSource(fXIncludeHandler);
    fXPointerHandler.setDTDHandler(fDTDHandler);
    if (fDTDHandler != null) {
      fDTDHandler.setDTDSource(fXPointerHandler);
    }

    // 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 = fXPointerHandler;
    }

    XMLDocumentHandler next = prev.getDocumentHandler();
    prev.setDocumentHandler(fXIncludeHandler);
    fXIncludeHandler.setDocumentSource(prev);

    if (next != null) {
      fXIncludeHandler.setDocumentHandler(next);
      next.setDocumentSource(fXIncludeHandler);
    }

    fXIncludeHandler.setDocumentHandler(fXPointerHandler);
    fXPointerHandler.setDocumentSource(fXIncludeHandler);
  } // configurePipeline()