Index: src/lib/com/izforge/izpack/compiler/CompilerConfig.java =================================================================== --- src/lib/com/izforge/izpack/compiler/CompilerConfig.java (revision 2050) +++ src/lib/com/izforge/izpack/compiler/CompilerConfig.java (working copy) @@ -1330,7 +1330,7 @@ // this constructor will open the specified url (this is // why the InputStream is not handled in a similar manner // to the OutputStream) - IXMLReader reader = new StdXMLReader(null, url.toExternalForm()); + IXMLReader reader = new StdXMLReader(null, originalUrl.toExternalForm()); parser.setReader(reader); XMLElement xml = (XMLElement) parser.parse(); @@ -1734,6 +1734,7 @@ File file = new File(filename).getAbsoluteFile(); if (!file.canRead()) throw new CompilerException("Invalid file: " + file); reader = new StdXMLReader(new FileInputStream(filename)); + reader.setSystemID(file.toURL().toExternalForm()); // add izpack built in property compiler.setProperty("izpack.file", file.toString()); } Index: src/lib/net/n3/nanoxml/StdXMLReader.java =================================================================== --- src/lib/net/n3/nanoxml/StdXMLReader.java (revision 2050) +++ src/lib/net/n3/nanoxml/StdXMLReader.java (working copy) @@ -364,7 +364,6 @@ { // never happens } - this.startNewStream(new StringReader(charsRead.toString())); } @@ -527,6 +526,10 @@ public void setSystemID(String systemID) throws MalformedURLException { this.currentSystemID = new URL(this.currentSystemID, systemID); + if (! this.systemIds.isEmpty()) { + this.systemIds.pop(); + this.systemIds.push(this.currentSystemID); + } } /**