You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by Ken Wang <ke...@gmail.com> on 2009/08/19 23:49:13 UTC

Errors occured when parsing a seemingly valid WSDL file

Hi there,

The file passed the validation in both XMLSpy and soapUI. However, when I
call
    XMLSchemaLoader parser = new XMLSchemaLoader();
    XSGrammarPool grammarPool = new XSGrammarPool();
     parser.setProperty(GRAMMAR_POOL, grammarPool);
    parser.setErrorHandler(errHandler);
    parser.loadGrammar(inputSrcArry) where inputSrcArry is an XMLInputSource
array containing schema definitions as element

from my java application using Xerces-J 2.8.0. I received a long list of
errors. Most of them are like:

[Error] askOrderService.wsdl:7:102: src-resolve: Cannot resolve the name
'java:AbstractType' to a(n) 'type definition' component.
[Error] askOrderService.wsdl:27:95: src-resolve: Cannot resolve the name
'java:AbstractBean' to a(n) 'type definition' component.
[Error] askOrderService.wsdl:7:26: cos-ct-extends.1.4.3.2.2.1.a: The content
type of a derived type and that of its base must both be mixed or both be
element-only. Type 'Service' is element only, but its base type is not.
[Error] askOrderService.wsdl:43:26: cos-ct-extends.1.4.3.2.2.1.a: The
content type of a derived type and that of its base must both be mixed or
both be element-only. Type 'LineOfBusiness' is element only, but its base
type is not.
[Error] askOrderService.wsdl:52:26: cos-ct-extends.1.4.3.2.2.1.a: The
content type of a derived type and that of its base must both be mixed or
both be element-only. Type 'DataReference' is element only, but its base
type is not.

The WSDL contains 18 schemas in total. I loaded Xerces2.8.0 source code into
my IDE, found the "src-resolve" error was thrown from
XSDHandler.java(Ln:1392). It seems the parser only looks for referenced
schema from the schemas it has traversed earlier ( in fGrammarBucket), when
a referenced schema is positioned after the current schema in the file, the
parser won't look for it, even if an <import namespace=""> has existed in
the current schema definition. I then changed the sequence of schema
definition positions in the file, and got errors about different elements.

Can anybody shed some light on this?

Thanks.

Re: Errors occured when parsing a seemingly valid WSDL file

Posted by Michael Glavassevich <mr...@ca.ibm.com>.
Hi Ken,

There's no native support in Xerces for loading schemas from a WSDL so
presumably you're trying to do this by extracting the individual schema
documents and then passing them to the schema loader. Am I right?

How to get it working probably isn't obvious, particularly if there are
imports between the inline schemas. You might find this JIRA issue [1]
(from a few years back) helpful.

Thanks.

[1] http://issues.apache.org/jira/browse/XERCESJ-1100

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

Ken Wang <ke...@gmail.com> wrote on 08/19/2009 05:49:13 PM:

> Hi there,
>
> The file passed the validation in both XMLSpy and soapUI. However,
> when I call
>     XMLSchemaLoader parser = new XMLSchemaLoader();
>     XSGrammarPool grammarPool = new XSGrammarPool();
>      parser.setProperty(GRAMMAR_POOL, grammarPool);
>     parser.setErrorHandler(errHandler);
>     parser.loadGrammar(inputSrcArry) where inputSrcArry is an
> XMLInputSource array containing schema definitions as element
>
> from my java application using Xerces-J 2.8.0. I received a long
> list of errors. Most of them are like:
>
> [Error] askOrderService.wsdl:7:102: src-resolve: Cannot resolve the
> name 'java:AbstractType' to a(n) 'type definition' component.
> [Error] askOrderService.wsdl:27:95: src-resolve: Cannot resolve the
> name 'java:AbstractBean' to a(n) 'type definition' component.
> [Error] askOrderService.wsdl:7:26: cos-ct-extends.1.4.3.2.2.1.a: The
> content type of a derived type and that of its base must both be
> mixed or both be element-only. Type 'Service' is element only, but
> its base type is not.
> [Error] askOrderService.wsdl:43:26: cos-ct-extends.1.4.3.2.2.1.a:
> The content type of a derived type and that of its base must both be
> mixed or both be element-only. Type 'LineOfBusiness' is element
> only, but its base type is not.
> [Error] askOrderService.wsdl:52:26: cos-ct-extends.1.4.3.2.2.1.a:
> The content type of a derived type and that of its base must both be
> mixed or both be element-only. Type 'DataReference' is element only,
> but its base type is not.
>
> The WSDL contains 18 schemas in total. I loaded Xerces2.8.0 source
> code into my IDE, found the "src-resolve" error was thrown from
> XSDHandler.java(Ln:1392). It seems the parser only looks for
> referenced schema from the schemas it has traversed earlier ( in
> fGrammarBucket), when a referenced schema is positioned after the
> current schema in the file, the parser won't look for it, even if an
> <import namespace=""> has existed in the current schema definition.
> I then changed the sequence of schema definition positions in the
> file, and got errors about different elements.
>
> Can anybody shed some light on this?
>
> Thanks.