Yes !  Ack!

I have seen this before.  

When the schema does not declare an elementFormDefault , 
.NET assumes it is one way, 
And AXIS assumes  it is the other. 

This is a bug in one or the other.(I don't know what a schema parser is
expected to do with EFD is missing). 

The workaround is to specify elementFormDefault, one way or the other,
in the schema.

Good catch, Anne! 




-----Original Message-----
From: Richard Wallis [mailto:[EMAIL PROTECTED] 
Sent: Friday, March 11, 2005 1:29 PM
To: Anne Thomas Manes
Cc: Dino Chiesa
Subject: RE: Empty namespace - again

 Anne,

Please award yourself a gold star! The elementFormDefault="qualified"
solved it, and 18:24 on a Friday night in an empty office after a [very]
long week.  ;-}

I've copied this to Dino for his interest.

Many thanks again,

        Richard.

> -----Original Message-----
> From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
> Sent: 11 March 2005 18:10
> To: Richard Wallis
> Subject: Re: Empty namespace - again
> 
> I'm surprised that .NET got confused by this, because normally it 
> handles valid schema definitions. Perhaps Dino can shead some light on

> it. But here's a work around. Add the elementFormDefault="qualified"
> attribute to the scehma definition, which will make the <return> 
> element namespace qualified.
> 
> <wsdl:definitions xmlns:impl="urn:LookupBorrower"
> xmlns:intf="urn:LookupBorrower"
> xmlns:apachesoap="http://xml.apache.org/xml-soap";
> xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
> targetNamespace="urn:LookupBorrower">
>  <wsdl:types>
>    <xsd:schema targetNamepsace="urn:LookupBorrower" 
>       elementFormDefault="qualified">
>      <xsd:element name="echoString">
>        <xsd:complexType>
>          <xsd:sequence>
>            <xsd:element name="inputString" type="xsd:string"/>
>          </xsd:sequence>
>        </xsd:complexType>
>      </xsd:element>
>      <xsd:element name="echoResponse">
>        <xsd:complexType>
>          <xsd:sequence>
>            <xsd:element name="return" type="xsd:string"/>
>          </xsd:sequence>
>        </xsd:complexType>
>      </xsd:element>
>    </xsd:schema>
>  </wsdl:types>
>  <wsdl:message name="echoStringRequest">
>     <wsdl:part name="parameters" element="intf:echoString"/> 
> </wsdl:message>  <wsdl:message name="echoStringResponse">
>      <wsdl:part name="parameters" 
> element="intf:echoResponse"/>  </wsdl:message> <wsdl:portType 
> name="LookupBorrower">
>     <wsdl:operation name="echoString">
>        <wsdl:input message="impl:echoStringRequest"/>
>        <wsdl:output message="impl:echoStringResponse"/>
>     </wsdl:operation>
>  </wsdl:portType>
>  <wsdl:binding name="LookupBorrowerSoapBinding"
>     type="impl:LookupBorrower">
>     <wsdlsoap:binding style="document"
>        transport="http://schemas.xmlsoap.org/soap/http"/>
>     <wsdl:operation name="echoString">
>        <wsdl:input>
>            <wsdlsoap:body use="literal"/>
>        </wsdl:input>
>        <wsdl:output>
>             <wsdlsoap:body use="literal"/>
>        </wsdl:output>
>     </wsdl:operation>
>  </wsdl:binding>
>  <wsdl:service name="LookupBorrowerService">
>     <wsdl:port name="LookupBorrower"
>       binding="impl:LookupBorrowerSoapBinding">
>       <wsdlsoap:address
>         
> location="http://localhost:8080/axis/services/LookupBorrower"/>
>     </wsdl:port>
>  </wsdl:service>
> </wsdl:definitions>
> 
> 
> On Fri, 11 Mar 2005 17:56:50 -0000, Richard Wallis 
> <[EMAIL PROTECTED]> wrote:
> > Anne,
> > 
> > I did, but it didn't!
> > 
> > Here is my bit of C# built in Visual C#.net pulling in the Web 
> > reference of my wsdl as supplied by my Axis server:
> > 
> > static void Main(string[] args)
> > {
> >   ConsoleApplication1.rjwpc.LookupBorrowerService srv = new 
> > ConsoleApplication1.rjwpc.LookupBorrowerService();
> >   String ret = srv.echoString("Hi there");
> >   Console.WriteLine("Response: "+ret); }
> > 
> > It ret is set to null after the echoString() call.  Digging
> in to the
> > auto created C# code I get the following:
> > 
> > /// <remarks/>
> > [System.Web.Services.Protocols.SoapDocumentMethodAttribute("",
> > RequestNamespace="urn:LookupBorrower",
> > ResponseNamespace="urn:LookupBorrower",
> > Use=System.Web.Services.Description.SoapBindingUse.Literal,
> > 
> ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrappe
> > d)
> > ]
> > [return: System.Xml.Serialization.XmlElementAttribute("return")]
> > public string echoString(string inputString) {
> >    object[] results = this.Invoke("echoString", new object[] 
> > {inputString});
> >    return ((string)(results[0]));
> > }
> > 
> > The ResponseNamespace="urn:LookupBorrower" makes me wonder
> what NS it
> > is looking for 'return' to be in.
> > Debug shows 'results' is a one element array with that
> element being
> > null.
> > 
> > I'm getting more confused by the hour.
> > 
> > Richard.
> > 
> > P.S. I'm not too concerned about XMLSpy either!
> > 
> > 
> > > -----Original Message-----
> > > From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
> > > Sent: 11 March 2005 17:36
> > > To: Richard Wallis
> > > Subject: Re: Empty namespace - again
> > >
> > > I don't understand what XMLSpy is complaining about, but
> there are a
> > > number of known errors in XMLSpy. Perhaps it's just complaining 
> > > because I used the same namespace for both the WSDL and
> the schema
> > > (which is acceptable).
> > >
> > > But there's nothing wrong with the second point. .NET will not 
> > > object to the fact that <return> is unqualified, because
> that's what
> > > the schema says it should be. .NET was objecting to the fact that 
> > > the child element of the SOAP Body was unqualified.
> > >
> > > Try. You'll see.
> > >
> > > Anne
> > >
> > >
> > > On Fri, 11 Mar 2005 17:01:42 -0000, Richard Wallis 
> > > <[EMAIL PROTECTED]> wrote:
> > > > Hi Anne,
> > > >
> > > > Thanks for this, but two problems:
> > > > 1. My copy of XMLSpy complains "Message part 'parameters'
> > > (in Message
> > > > echoStringRequest) - parameter intf:echoString: NS
> prefix does not
> > > > refer to this schema!"
> > > >
> > > > But more importantly,
> > > > 2. The problem still persists but nested 1 level down,
> > > 'return' still
> > > > has xmlns="":
> > > >
> > > >    <soapenv:Envelope
> > > > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> > > >       <soapenv:Body>
> > > >          <echoStringResponse xmlns="urn:LookupBorrower">
> > > >             <return xmlns="">Hello mum</return>
> > > >          </echoStringResponse>
> > > >       </soapenv:Body>
> > > >    </soapenv:Envelope>
> > > >
> > > > Richard.
> > > >
> > > > > -----Original Message-----
> > > > > From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
> > > > > Sent: 11 March 2005 15:56
> > > > > To: [email protected]
> > > > > Subject: Re: Empty namespace - again
> > > > >
> > > > > Richard,
> > > > >
> > > > > This is not a valid doc/literal WSDL document. You need to 
> > > > > define the WSDL differently depending on whether you want 
> > > > > rpc/encoded, rpc/literal, of doc/literal.
> > > > >
> > > > > Here's how you should define your WSDL if you'd like
> to create a
> > > > > doc/literal service conforming to the "wrapped"
> > > > > programming convention (which offers the best
> > > interoperability with
> > > > > .NET).
> > > > >
> > > > > <wsdl:definitions xmlns:impl="urn:LookupBorrower"
> > > > > xmlns:intf="urn:LookupBorrower"
> > > > > xmlns:apachesoap="http://xml.apache.org/xml-soap";
> > > > > xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
> > > > > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
> > > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > > > > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
> > > > > targetNamespace="urn:LookupBorrower">
> > > > >   <wsdl:types>
> > > > >     <xsd:schema targetNamepsace="urn:LookupBorrower">
> > > > >       <xsd:element name="echoString">
> > > > >         <xsd:complexType>
> > > > >           <xsd:sequence>
> > > > >             <xsd:element name="inputString" 
> type="xsd:string"/>
> > > > >           </xsd:sequence>
> > > > >         </xsd:complexType>
> > > > >       </xsd:element>
> > > > >       <xsd:element name="echoResponse">
> > > > >         <xsd:complexType>
> > > > >           <xsd:sequence>
> > > > >             <xsd:element name="return" type="xsd:string"/>
> > > > >           </xsd:sequence>
> > > > >         </xsd:complexType>
> > > > >       </xsd:element>
> > > > >     </xsd:schema>
> > > > >   </wsdl:types>
> > > > >   <wsdl:message name="echoStringRequest">
> > > > >      <wsdl:part name="parameters" element="intf:echoString"/>
> > > > >   </wsdl:message>
> > > > >   <wsdl:message name="echoStringResponse">
> > > > >       <wsdl:part name="parameters" 
> element="intf:echoResponse"/>
> > > > >   </wsdl:message>
> > > > >   <wsdl:portType name="LookupBorrower">
> > > > >      <wsdl:operation name="echoString">
> > > > >         <wsdl:input message="impl:echoStringRequest"/>
> > > > >         <wsdl:output message="impl:echoStringResponse"/>
> > > > >      </wsdl:operation>
> > > > >   </wsdl:portType>
> > > > >   <wsdl:binding name="LookupBorrowerSoapBinding"
> > > > >      type="impl:LookupBorrower">
> > > > >      <wsdlsoap:binding style="document"
> > > > >         transport="http://schemas.xmlsoap.org/soap/http"/>
> > > > >      <wsdl:operation name="echoString">
> > > > >         <wsdl:input>
> > > > >             <wsdlsoap:body use="literal"/>
> > > > >         </wsdl:input>
> > > > >         <wsdl:output>
> > > > >              <wsdlsoap:body use="literal"/>
> > > > >         </wsdl:output>
> > > > >      </wsdl:operation>
> > > > >   </wsdl:binding>
> > > > >   <wsdl:service name="LookupBorrowerService">
> > > > >      <wsdl:port name="LookupBorrower"
> > > > >        binding="impl:LookupBorrowerSoapBinding">
> > > > >        <wsdlsoap:address
> > > > >
> > > > > 
> location="http://localhost:8080/axis/services/LookupBorrower"/>
> > > > >      </wsdl:port>
> > > > >   </wsdl:service>
> > > > > </wsdl:definitions>
> > > > >
> > > > >
> > > > > On Fri, 11 Mar 2005 15:37:34 -0000, Richard Wallis 
> > > > > <[EMAIL PROTECTED]> wrote:
> > > > > > Here is the whole doc.
> > > > > >
> > > > > > For information I have tested this with all 4 possible
> > > > > combinations of
> > > > > > document/rpc & literal/encoded and the work fine
> axis to axis.
> > > > > > The problem is that .net doesn't like xmlns="" or encoded.
> > > > > >
> > > > > > <wsdl:definitions xmlns:impl="urn:LookupBorrower"
> > > > > > xmlns:intf="urn:LookupBorrower"
> > > > > > xmlns:apachesoap="http://xml.apache.org/xml-soap";
> > > > > > xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
> > > > > > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
> > > > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > > > > > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
> > > > > > targetNamespace="urn:LookupBorrower">
> > > > > >         <wsdl:message name="echoStringRequest">
> > > > > >                 <wsdl:part name="inputString"
> > > type="xsd:string"/>
> > > > > >         </wsdl:message>
> > > > > >         <wsdl:message name="echoStringResponse">
> > > > > >                 <wsdl:part name="return" type="xsd:string"/>
> > > > > >         </wsdl:message>
> > > > > >         <wsdl:portType name="LookupBorrower">
> > > > > >                 <wsdl:operation name="echoString"
> > > > > > parameterOrder="inputString">
> > > > > >                         <wsdl:input
> > > > > message="impl:echoStringRequest"/>
> > > > > >                         <wsdl:output
> > > > > message="impl:echoStringResponse"/>
> > > > > >                 </wsdl:operation>
> > > > > >         </wsdl:portType>
> > > > > >         <wsdl:binding name="LookupBorrowerSoapBinding"
> > > > > > type="impl:LookupBorrower">
> > > > > >                 <wsdlsoap:binding style="document"
> > > > > > transport="http://schemas.xmlsoap.org/soap/http"/>
> > > > > >                 <wsdl:operation name="echoString">
> > > > > >                         <wsdl:input>
> > > > > >                                 <wsdlsoap:body use="literal"
> > > > > > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
> > > > > > namespace="urn:LookupBorrower"/>
> > > > > >                         </wsdl:input>
> > > > > >                         <wsdl:output>
> > > > > >                                 <wsdlsoap:body use="literal"
> > > > > > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
> > > > > > namespace="urn:LookupBorrower"/>
> > > > > >                         </wsdl:output>
> > > > > >                 </wsdl:operation>
> > > > > >         </wsdl:binding>
> > > > > >         <wsdl:service name="LookupBorrowerService">
> > > > > >                 <wsdl:port name="LookupBorrower"
> > > > > > binding="impl:LookupBorrowerSoapBinding">
> > > > > >                         <wsdlsoap:address
> > > > > > 
> location="http://localhost:8080/axis/services/LookupBorrower"/>
> > > > > >                 </wsdl:port>
> > > > > >         </wsdl:service>
> > > > > > </wsdl:definitions>
> > > > > >
> > > > > > Regards,
> > > > > >         Richard.
> > > > > > > -----Original Message-----
> > > > > > > From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
> > > > > > > Sent: 11 March 2005 15:22
> > > > > > > To: [email protected]
> > > > > > > Subject: Re: Empty namespace - again
> > > > > > >
> > > > > > > Please provide the rest of the WSDL document.
> > > > > > >
> > > > > > > Can we assume that you have defined the <return> element
> > > > > in the WSDL?
> > > > > > >
> > > > > > > Anne
> > > > > > >
> > > > > > >
> > > > > > > On Fri, 11 Mar 2005 15:00:29 -0000, Richard Wallis 
> > > > > > > <[EMAIL PROTECTED]> wrote:
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > This combination in the WSDL used as input to wsdl2java:
> > > > > > > >
> > > > > > > >         <wsdlsoap:binding style="document" ...........
> > > > > > > >         <wsdlsoap:body  use="literal" .........
> > > > > > > >
> > > > > > > > Results in an empty namespace thus:
> > > > > > > >
> > > > > > > >       <soapenv:Body>
> > > > > > > >          <return xmlns="">Hello World</return>
> > > > > > > >       </soapenv:Body>
> > > > > > > >
> > > > > > > > Following many threads on this list it is clear
> that this
> > > > > > > is a problem.
> > > > > > > >
> > > > > > > > If you are trying to consume an axis service in .net it
> > > > > > > appears to be
> > > > > > > > a 'show stopper'.  I have tried use="encoded" but .net
> > > > > > > rejects it, and
> > > > > > > > also style="rpc" but still get xmlns="".
> > > > > > > >
> > > > > > > > As yet I have not been able to identify a work
> > > around for this.
> > > > > > > > Although there seems to some hints of a bug fix
> for this
> > > > > > > > in the pipeline, it is still a problem in 1.2RC3.
> > > > > > > >
> > > > > > > > Questions:
> > > > > > > >         1. Is there a work around for this so
> that I can
> > > > > > > > at
> > > > > > > least use
> > > > > > > > my axis service in .net?
> > > > > > > >
> > > > > > > >         2. Is there a fix for this that will appear in
> > > > > the next RC?
> > > > > > > >
> > > > > > > >
> > > > > > > > Richard Wallis
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > >
> >
> 

Reply via email to