Mark, This is not a bug. A public ID is not a target namespace or vice versa. Xerces passes the parameters in their correct positions [1] to the LSResourceResolver.
If you want to process a namespace URI as if it were a public ID you can extend the XMLCatalogResolver and override resolveResource() to do that. Thanks. [1] http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-LSResourceResolver Michael Glavassevich XML Parser Development IBM Toronto Lab E-mail: mrgla...@ca.ibm.com E-mail: mrgla...@apache.org Mark R Maxey <mark_r_ma...@raytheon.com> wrote on 10/14/2011 03:20:36 PM: > Xerces Java Users, > > Xerces is failing to correctly resolve XSDs to their locations using > XML catalogs that prefer public IDs during the loading of the XSDs > for schema validation. After extensive debugging, we've found that > the following method out of XMLCatalogResolver is always passed a > "null" for the publicId : > > public LSInput resolveResource( String type, String > namespaceURI, > String publicId, String systemId, String baseURI) { > > This prevents XMLCatalogResolver from being able to use public IDs > to resolve schema references. > > Further debugging indicates the possible problem/solution lies in & > around line 957 of XSDHandler. This seems like it is the appropriate > place to set the public ID to be the name of the schemaNamespace. > > > Has anyone encountered these issues before? Let us know if you have > difficulty reproducing the issue. If you agree it is a bug, I'll be > glad to submit it to JIRA. > > > Thanks! > Mark Maxey