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]