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

Reply via email to