On 4/16/07, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
Simon Laws wrote: > On 4/16/07, Simon Laws <[EMAIL PROTECTED]> wrote: >> >> I'm having problems getting XSD includes to load in the databinding >> itest >> so am interested to know if we are using a different version of >> o.a.ws.common.XmlSchema than used to be the case. I'm getting an NPE in >> this package because the baseUri in the XmlSchemaCollection is not >> set up >> correctly. I'm going to dig into why this is the case but if anyone >> knows >> why things have changed or is alos getting this effect I would be >> interested >> to know. >> >> Simon >> > > OK, so I have not solved this satisfactorily but I have put in a work > around > on my machine. I added the following lines to > WSDLDocumentProcessor.read() > (the two lines I added are the ones with the comment above them). > > // Read inline schemas > Types types = definition.getTypes(); > if (types != null) { > wsdlDefinition.getInlinedSchemas().setSchemaResolver(new > URIResolverImpl()); > for (Object ext : types.getExtensibilityElements()) { > if (ext instanceof Schema) { > Element element = ((Schema)ext).getElement(); > > // TODO: temporary fix to make includes in > imported > // schema work. The XmlSchema library was > crashing > // because the base uri was not set. This > doesn't > // affect imports. > XmlSchemaCollection schemaCollection = > wsdlDefinition.getInlinedSchemas(); > schemaCollection.setBaseUri > (((Schema)ext).getDocumentBaseURI()); > > wsdlDefinition.getInlinedSchemas().read(element, > element.getBaseURI()); > } > } > } > > > The scenario I have is: > > WSDL <import..---> XSD <inlcude..---> XSD > > The impact of this change is that the includes are processed BUT they are > processed relative to the base URI I set up, i.e. the URI of of the WSDL > document not the URI of the XML that includes them. I can work round this > for the time being as all the XSDs are in the same directory (and this > lets > me get on and work through the rest of the test) but it's not a generic > solution. So this needs some more work to either work out how to > configure > the XmlSchema library properly or take a look at the latest version to > see > if this apparent problem is fixed. > > Simon > Simon, what you've done looks like the right fix to me as an XSD include from an XML schema inlined in a WSDL document should be loaded relative to the WSDL document. -- Jean-Sebastien --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] it works fine for XSDs include from the WSDL but I don't think it's
correct for an XSD included in an XML schema which is itself included/imported into the inline XML schema of a WSDL, i.e. nested includes. The reasone I am concerned is that the databinding schema don;t now work in the way that they used to. I've not had a chance to chase the documentation to find out what the correct behaviour is but I think the old behaviour was correct. When I say old behaviour here what I mean is that includes are assumed to be relative to the file that is including them and not relative to some parent of that file. Simon