The imports are needed to correctly comply with the XSD
spec. There's an errate to the WS-I BP that clarifies that the rules were not
suposed to make inline schemas invalid. Unfortuanly the WS-I tools haven't been
updated to refelect that.
Cheers
Simon
Hi All,
The wrapped WSDL that Axis generated for my service failed
to pass WS-I test using SOAPscope.
It was failing on R2002
and R2004
of the requirements. In the WS-I BP 1.0 all the samples related to these
two requirements have both namespace and location attributes. Also, in the
schema at http://schemas.xmlsoap.org/wsdl/ both
namespace and location are defined as "required" (if I'm looking at the right
thing):
<xs:complexType name="tImport">
<xs:complexContent> <xs:extension
base="wsdl:tExtensibleAttributesDocumented">
<xs:attribute name="namespace" type="xs:anyURI" use="required"
/> <xs:attribute name="location"
type="xs:anyURI" use="required" />
</xs:extension>
</xs:complexContent> </xs:complexType>
To make it pass the test I've simply commented out both
<import namespace="..."/> elements. Everything was validated and worked
perfectly.
So, here is my question: what are these two imports used for
and has anything changed when I removed them?
Also, two namespaces defined in the <definitions> are
never used in the WSDL: "apachesoap" and "intf". I understand that this is OK,
but what may these 2 namespaces be used for?
Thanks,
Eugene
Here is the WSDL file:
<?xml version="1.0"
encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://localhost:9090/axis/services/ent" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost:9090/axis/services/ent" xmlns:intf="http://localhost:9090/axis/services/ent" xmlns:tns1="http://enterprise.ent" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!--WSDL
created by Apache Axis version: 1.2RC2 Built on Jan 25, 2005 (06:12:35
PST)--> <wsdl:types> <schema
elementFormDefault="qualified" targetNamespace="http://enterprise.ent" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://localhost:9090/axis/services/ent"/>
<element name="login">
<complexType>
<sequence> <element
maxOccurs="unbounded" name="credentials"
type="xsd:string"/> <element
name="locale" type="xsd:string"/>
</sequence> </complexType>
</element> <element
name="loginResponse">
<complexType>
<sequence> <element
name="loginReturn" type="xsd:string"/>
</sequence> </complexType>
</element> <element
name="logout">
<complexType>
<sequence> <element name="sid"
type="xsd:string"/>
</sequence> </complexType>
</element> <element
name="logoutResponse">
<complexType/> </element>
<element name="clear">
<complexType>
<sequence> <element name="sid"
type="xsd:string"/> <element
name="uri" type="xsd:string"/>
</sequence> </complexType>
</element> <element
name="clearResponse">
<complexType/> </element>
<element name="load">
<complexType>
<sequence> <element name="sid"
type="xsd:string"/> <element
name="uri" type="xsd:string"/>
</sequence> </complexType>
</element> <element
name="loadResponse">
<complexType>
<sequence> <element
name="loadReturn" type="tns1:EntDocument"/>
</sequence> </complexType>
</element> <complexType
name="EntDocument">
<sequence> <element name="URI"
nillable="true" type="xsd:string"/> <element
name="name" nillable="true" type="xsd:string"/>
<element name="size" type="xsd:long"/>
</sequence> </complexType>
<element name="write">
<complexType>
<sequence> <element name="sid"
type="xsd:string"/> <element
name="uri" type="xsd:string"/>
<element name="data"
type="xsd:base64Binary"/>
</sequence> </complexType>
</element> <element
name="writeResponse">
<complexType/> </element>
<element name="list">
<complexType>
<sequence> <element name="sid"
type="xsd:string"/>
</sequence> </complexType>
</element> <element
name="listResponse">
<complexType>
<sequence> <element
name="listReturn"
type="impl:ArrayOf_xsd_anyType"/>
</sequence> </complexType>
</element> <element
name="delete">
<complexType>
<sequence> <element name="sid"
type="xsd:string"/> <element
name="uri" type="xsd:string"/>
</sequence> </complexType>
</element> <element
name="deleteResponse">
<complexType/> </element>
<element name="read">
<complexType>
<sequence> <element name="sid"
type="xsd:string"/> <element
name="uri" type="xsd:string"/>
<element name="offset"
type="xsd:long"/> <element
name="length" type="xsd:int"/>
</sequence> </complexType>
</element> <element
name="readResponse">
<complexType>
<sequence> <element
name="readReturn" type="xsd:base64Binary"/>
</sequence> </complexType>
</element> <element
name="create">
<complexType>
<sequence> <element name="sid"
type="xsd:string"/> <element
name="name" type="xsd:string"/>
</sequence> </complexType>
</element> <element
name="createResponse">
<complexType>
<sequence> <element
name="createReturn" type="xsd:string"/>
</sequence> </complexType>
</element> </schema> <schema
elementFormDefault="qualified" targetNamespace="http://localhost:9090/axis/services/ent"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://enterprise.ent"/>
<complexType name="ArrayOf_xsd_anyType">
<sequence> <element maxOccurs="unbounded"
minOccurs="0" name="item" type="xsd:anyType"/>
</sequence> </complexType>
</schema> </wsdl:types> <wsdl:message
name="logoutResponse"> <wsdl:part
element="tns1:logoutResponse" name="parameters"/>
</wsdl:message> <wsdl:message
name="createRequest"> <wsdl:part
element="tns1:create" name="parameters"/>
</wsdl:message> <wsdl:message
name="clearRequest"> <wsdl:part
element="tns1:clear" name="parameters"/>
</wsdl:message> <wsdl:message
name="clearResponse"> <wsdl:part
element="tns1:clearResponse" name="parameters"/>
</wsdl:message> <wsdl:message
name="readRequest"> <wsdl:part
element="tns1:read" name="parameters"/>
</wsdl:message> <wsdl:message
name="deleteResponse"> <wsdl:part
element="tns1:deleteResponse" name="parameters"/>
</wsdl:message> <wsdl:message
name="logoutRequest"> <wsdl:part
element="tns1:logout" name="parameters"/>
</wsdl:message> <wsdl:message
name="loginResponse"> <wsdl:part
element="tns1:loginResponse" name="parameters"/>
</wsdl:message> <wsdl:message
name="writeRequest"> <wsdl:part
element="tns1:write" name="parameters"/>
</wsdl:message> <wsdl:message
name="readResponse"> <wsdl:part
element="tns1:readResponse" name="parameters"/>
</wsdl:message> <wsdl:message
name="loadRequest"> <wsdl:part
element="tns1:load" name="parameters"/>
</wsdl:message> <wsdl:message
name="deleteRequest"> <wsdl:part
element="tns1:delete" name="parameters"/>
</wsdl:message> <wsdl:message
name="writeResponse"> <wsdl:part
element="tns1:writeResponse" name="parameters"/>
</wsdl:message> <wsdl:message
name="listRequest"> <wsdl:part
element="tns1:list" name="parameters"/>
</wsdl:message> <wsdl:message
name="listResponse"> <wsdl:part
element="tns1:listResponse" name="parameters"/>
</wsdl:message> <wsdl:message
name="loadResponse"> <wsdl:part
element="tns1:loadResponse" name="parameters"/>
</wsdl:message> <wsdl:message
name="createResponse"> <wsdl:part
element="tns1:createResponse" name="parameters"/>
</wsdl:message> <wsdl:message
name="loginRequest"> <wsdl:part
element="tns1:login" name="parameters"/>
</wsdl:message> <wsdl:portType
name="EntAPI"> <wsdl:operation
name="login">
<wsdl:input message="impl:loginRequest"
name="loginRequest"/>
<wsdl:output message="impl:loginResponse"
name="loginResponse"/>
</wsdl:operation> <wsdl:operation
name="logout">
<wsdl:input message="impl:logoutRequest"
name="logoutRequest"/>
<wsdl:output message="impl:logoutResponse"
name="logoutResponse"/>
</wsdl:operation> <wsdl:operation
name="clear">
<wsdl:input message="impl:clearRequest"
name="clearRequest"/>
<wsdl:output message="impl:clearResponse"
name="clearResponse"/>
</wsdl:operation> <wsdl:operation
name="load">
<wsdl:input message="impl:loadRequest"
name="loadRequest"/>
<wsdl:output message="impl:loadResponse"
name="loadResponse"/>
</wsdl:operation> <wsdl:operation
name="write">
<wsdl:input message="impl:writeRequest"
name="writeRequest"/>
<wsdl:output message="impl:writeResponse"
name="writeResponse"/>
</wsdl:operation> <wsdl:operation
name="list">
<wsdl:input message="impl:listRequest"
name="listRequest"/>
<wsdl:output message="impl:listResponse"
name="listResponse"/>
</wsdl:operation> <wsdl:operation
name="delete">
<wsdl:input message="impl:deleteRequest"
name="deleteRequest"/>
<wsdl:output message="impl:deleteResponse"
name="deleteResponse"/>
</wsdl:operation> <wsdl:operation
name="read">
<wsdl:input message="impl:readRequest"
name="readRequest"/>
<wsdl:output message="impl:readResponse"
name="readResponse"/>
</wsdl:operation> <wsdl:operation
name="create">
<wsdl:input message="impl:createRequest"
name="createRequest"/>
<wsdl:output message="impl:createResponse"
name="createResponse"/>
</wsdl:operation> </wsdl:portType>
<wsdl:binding name="entSoapBinding"
type="impl:EntAPI"> <wsdlsoap:binding
style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation
name="login">
<wsdlsoap:operation
soapAction=""/>
<wsdl:input
name="loginRequest">
<wsdlsoap:body
use="literal"/>
</wsdl:input>
<wsdl:output
name="loginResponse">
<wsdlsoap:body
use="literal"/>
</wsdl:output>
</wsdl:operation> <wsdl:operation
name="logout">
<wsdlsoap:operation
soapAction=""/>
<wsdl:input
name="logoutRequest">
<wsdlsoap:body
use="literal"/>
</wsdl:input>
<wsdl:output
name="logoutResponse">
<wsdlsoap:body
use="literal"/>
</wsdl:output>
</wsdl:operation> <wsdl:operation
name="clear">
<wsdlsoap:operation
soapAction=""/>
<wsdl:input
name="clearRequest">
<wsdlsoap:body
use="literal"/>
</wsdl:input>
<wsdl:output
name="clearResponse">
<wsdlsoap:body
use="literal"/>
</wsdl:output>
</wsdl:operation> <wsdl:operation
name="load">
<wsdlsoap:operation
soapAction=""/>
<wsdl:input
name="loadRequest">
<wsdlsoap:body
use="literal"/>
</wsdl:input>
<wsdl:output
name="loadResponse">
<wsdlsoap:body
use="literal"/>
</wsdl:output>
</wsdl:operation> <wsdl:operation
name="write">
<wsdlsoap:operation
soapAction=""/>
<wsdl:input
name="writeRequest">
<wsdlsoap:body
use="literal"/>
</wsdl:input>
<wsdl:output
name="writeResponse">
<wsdlsoap:body
use="literal"/>
</wsdl:output>
</wsdl:operation> <wsdl:operation
name="list">
<wsdlsoap:operation
soapAction=""/>
<wsdl:input
name="listRequest">
<wsdlsoap:body
use="literal"/>
</wsdl:input>
<wsdl:output
name="listResponse">
<wsdlsoap:body
use="literal"/>
</wsdl:output>
</wsdl:operation> <wsdl:operation
name="delete">
<wsdlsoap:operation
soapAction=""/>
<wsdl:input
name="deleteRequest">
<wsdlsoap:body
use="literal"/>
</wsdl:input>
<wsdl:output
name="deleteResponse">
<wsdlsoap:body
use="literal"/>
</wsdl:output>
</wsdl:operation> <wsdl:operation
name="read">
<wsdlsoap:operation
soapAction=""/>
<wsdl:input
name="readRequest">
<wsdlsoap:body
use="literal"/>
</wsdl:input>
<wsdl:output
name="readResponse">
<wsdlsoap:body
use="literal"/>
</wsdl:output>
</wsdl:operation> <wsdl:operation
name="create">
<wsdlsoap:operation
soapAction=""/>
<wsdl:input
name="createRequest">
<wsdlsoap:body
use="literal"/>
</wsdl:input>
<wsdl:output
name="createResponse">
<wsdlsoap:body
use="literal"/>
</wsdl:output>
</wsdl:operation> </wsdl:binding>
<wsdl:service name="EntAPIService">
<wsdl:port binding="impl:entSoapBinding"
name="ent">
<wsdlsoap:address location="http://localhost:9090/axis/services/ent"/>
</wsdl:port>
</wsdl:service> </wsdl:definitions>
|