stefano 00/07/21 16:39:56 Modified: src/org/apache/cocoon/parser XercesParser.java Log: Xerces requires fully resolved URIs as SystemID Revision Changes Path 1.10 +18 -3 xml-cocoon/src/org/apache/cocoon/parser/XercesParser.java Index: XercesParser.java =================================================================== RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/parser/XercesParser.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- XercesParser.java 2000/05/18 21:51:37 1.9 +++ XercesParser.java 2000/07/21 23:39:55 1.10 @@ -1,4 +1,4 @@ -/*-- $Id: XercesParser.java,v 1.9 2000/05/18 21:51:37 stefano Exp $ -- +/*-- $Id: XercesParser.java,v 1.10 2000/07/21 23:39:55 stefano Exp $ -- ============================================================================ The Apache Software License, Version 1.1 @@ -63,7 +63,7 @@ * This class implements an XML parser using the Apache Xerces XML parser. * * @author Stefano Mazzocchi - * @version $Revision: 1.9 $ $Date: 2000/05/18 21:51:37 $ + * @version $Revision: 1.10 $ $Date: 2000/07/21 23:39:55 $ */ public class XercesParser extends AbstractParser implements Status { @@ -81,10 +81,25 @@ parser.setFeature("http://apache.org/xml/features/dom/create-entity-ref-nodes", false); parser.setFeature("http://apache.org/xml/features/dom/defer-node-expansion", true); parser.setFeature("http://apache.org/xml/features/allow-java-encodings", true); - parser.parse(input); + parser.parse(resolveSystemId(input)); return parser.getDocument(); } + /* + * Make sure the SystemID is fully resolved as the SAX2 spec recommends. + */ + private InputSource resolveSystemId(InputSource input) { + String id = input.getSystemId(); + if (id != null) { + id = id.replace('\\','/'); + if ((id.indexOf("://") < 0) && (!id.startsWith("file:"))) { + id = "file:" + id; + } + input.setSystemId(id); + } + return input; + } + /** * Creates an empty DOM tree. */