Hi Carla,

Based on what was changed for XERCESJ-809 that's what I would expect to see
for xsi:noNamespaceSchemaLocation and xsi:schemaLocation hints in the
document. They get loaded at some point later if they're required and
Xerces (2.10.0) would sometimes use the wrong base URI due to the load
request being in some other context than processing of the main document.
Expansion of the URI before it's cached in an internal map solved that
problem, but would have also introduced this behavioural change to the
entity resolver.

Thanks.

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: mrgla...@ca.ibm.com
E-mail: mrgla...@apache.org

<carla.spr...@emc.com> wrote on 03/09/2011 04:48:17 AM:

> Hi Michael,
>
> Thank you for the answer. I can see why this is changed.
>
> Just to be sure. I also see that when using the
> org.apache.xerces.xni.XMLEntityResolver and function resolveEntity
> (XMLResourceIdentifier resourceIdentifier), the value of
> resourceIdentifier.getLiteralSystemId() is now equal to
> resourceIdentifier.getExpandedSystemId(). The original location
> value found in the XML document or schema is no longer available in
> XMLResourceIdentifier.
>
> Thanks,
> Carla
>
> From: Michael Glavassevich [mailto:mrgla...@ca.ibm.com]
> Sent: 09 March 2011 06:08
> To: j-users@xerces.apache.org
> Subject: Re: Different behavior entity resolver Xerces 2.11.0 and
> Xerces 2.10.0
>
> Hi Carla,
>
> The change in behaviour is most likely due to the fix for this JIRA
> issue [1]. From a quick glance at the DOM Level 3 Load & Save spec
> [2] I didn't see anything which forbids expansion of the system ID
> before reporting it.
>
> Thanks.
>
> [1] https://issues.apache.org/jira/browse/XERCESJ-809
> [2]
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
>
> <carla.spr...@emc.com> wrote on 03/08/2011 10:15:48 AM:
>
> > Hi,
> >
> > When parsing an XML document "personal-schema.xml" with
> > xsi:noNamespaceSchemaLocation="personal.xsd" with the code below, I
> > get different systemId parameter values in the LSResourceResolver in
> > version 2.11.0 and 2.10.0 :
> >
> >     DOMImplementationLS implementationLS = new DOMImplementationImpl();
> >     LSParser builder = implementationLS.createLSParser
> > (DOMImplementationLS.MODE_SYNCHRONOUS, null);
> >
> >     LSResourceResolver resolver = new LSResourceResolver() {
> >
> >       public LSInput resolveResource(String type, String namespace,
> > String publicId,
> >           String systemId, String baseURI) {
> >         // in Xerces 2.11.0, systemId is expanded: ?file:/C:/my/
> > path/to/doc/personal.xsd?
> >         // in Xerces 2.10.0, the value is exactly the same as
> > declared in the document: ?personal.xsd?
> >         return null;
> >       }
> >     };
> >
> >     builder.getDomConfig().setParameter("validate", Boolean.TRUE);
> >     builder.getDomConfig().setParameter("resource-resolver", resolver);
> >     Document doc = builder.parseURI(getURL("personal-
> schema.xml").toString());
> >
> > Is this a bug?
> >
> > Thanks!
> > Carla

Reply via email to