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());
  }
}

Reply via email to