Hi all, I’m trying to validate a document with Xerces. My schema has "http" includes that need to be rewritten to "https". I try to do this with an XML catalog and rewriteURI, but the rule seems to be ignored.
I have attached some stripped-down Java code. The inclusion of " http://standards.iso.org/..." leads to a "Premature end of file" exception (presumably because the request returns a 302 redirect with an empty payload). Another (expected) error is raised if the URL is changed to https. My questions: • (Why) Is the rewriteURI rule ignored? • How can I enable some debugging output, or adjust the verbosity level, with the XMLCatalogResolver? I managed to get the validation running with Saxon EE. Thanks in advance, Christian ________________________________ import java.nio.file.*; import javax.xml.validation.*; import org.apache.xerces.jaxp.validation.*; import org.apache.xerces.util.*; public class ValidateTest { public static void main(final String... args) throws Exception { String schemaString = "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>" + " <xs:include schemaLocation='" + " https://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/gmd/gmd.xsd'/>" + "</xs:schema>"; String catalogString = "<catalog xmlns='urn:oasis:names:tc:entity:xmlns:xml:catalog'>" + " <rewriteURI uriStartString='http://standards.iso.org'" + " rewritePrefix='https://standards.iso.org'/>" + "</catalog>"; String dir = System.getProperty("java.io.tmpdir") + '/'; Path schema = Paths.get(dir + "schema.xsd"); Files.write(schema, schemaString.getBytes()); Path catalog = Paths.get(dir + "catalog.xml"); Files.write(catalog, catalogString.getBytes()); SchemaFactory sf = new XMLSchema11Factory(); XMLCatalogResolver r = new XMLCatalogResolver(new String[] { catalog.toUri().toString() }); sf.setResourceResolver(r); sf.newSchema(schema.toFile()); } }