I'm encountering an issue which seems quite similar to this one. wsdl2perl dumps the stack trace when parsing my schema below. I've tried re-ordering the type declarations, and it's clear that it fails on the first array defined by restriction that it encounters. Is there something wrong with the way this schema generates arrays by restricting soap-enc:Array?
This schema does not use attributeSet, and I'm too new to SOAP to understand the difference between
rpc/encoded and document/literal yet - how does one tell the difference between these formats?
I also noticed that the program complains about namespace-qualified attributes, and ignores them.
It doesn't seem to like "wsdl:arrayType". In SOAP::WSDL::Base, I found these comments:
# check for namespae-qualified attributes.
# neither XML Schema, nor WSDL1.1, nor the SOAP binding allow
# namespace-qualified attribute names
However, when I tried removing the namespace qualifier, I got the following error:
Can't locate object method "set_arrayType" via package "SOAP::WSDL::XSD::Attribute" at /home/ryan/perl/lib/perl5/SOAP/WSDL/Base.pm line 136
No luck there.
in Manual::WS_I.pod, I found this note:
=head2 R2113
A MESSAGE containing serialized arrays MUST NOT include the
soapenc:arrayType attribute.
SOAP::WSDL does not natively support soapenc::arrayType.
but I don't know if it's relevant. Is it?
Here are my schema and my stack trace. Any ideas why this is crashing?
--Ryan
perl /usr/local/bin/wsdl2perl.pl -b res-spectrum/ file:///home/ryan/devel/spectrum/scripts/perl/res
+-spectrum/Book.xml
found unrecognised attribute {http://schemas.xmlsoap.org/wsdl/}arrayType (ignored) at /home/ryan/pe
+rl/lib/perl5/SOAP/WSDL/Base.pm line 130.
+
found unrecognised attribute {http://schemas.xmlsoap.org/wsdl/}arrayType (ignored) at /home/ryan/pe
+rl/lib/perl5/SOAP/WSDL/Base.pm line 130.
+
found unrecognised attribute {http://schemas.xmlsoap.org/wsdl/}arrayType (ignored) at /home/ryan/pe
+rl/lib/perl5/SOAP/WSDL/Base.pm line 130.
+
found unrecognised attribute {http://schemas.xmlsoap.org/wsdl/}arrayType (ignored) at /home/ryan/pe
+rl/lib/perl5/SOAP/WSDL/Base.pm line 130.
+
Creating complexType class MyTypes/WsRouteSearchInfo.pm
+
Creating complexType class MyTypes/WsRouteInfo.pm
+
Creating complexType class MyTypes/WsRouteInfoArray.pm
+
/home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/Template/XSD\complexType.tt undef error - no node at
+ /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/Template/Plugin/XSD.pm line 55
+
SOAP::WSDL::Generator::Template::Plugin::XSD::create_xsd_name('SOAP::WSDL::Generator::Templ
+ate::Plugin::XSD=SCALAR(0x970c328)', '') called at /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/T
+emplate/XSD/complexType/attributeSet.tt line 42
+
eval {...} called at /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/Template/XSD/complexType
+/attributeSet.tt line 42
+
eval {...} called at /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/Template/XSD/complexType
+/attributeSet.tt line 5
+
eval {...} called at /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/Template/XSD/complexType
+/attributeSet.tt line 7
+
Template::Document::__ANON__('Template::Context=HASH(0x97100b8)') called at /usr/lib/perl5/
+Template/Document.pm line 151
+
eval {...} called at /usr/lib/perl5/Template/Document.pm line 149
+
Template::Document::process('Template::Document=HASH(0x96cfb78)', 'Template::Context=HASH(0
+x97100b8)') called at /usr/lib/perl5/Template/Context.pm line 341
eval {...} called at /usr/lib/perl5/Template/Context.pm line 315
Template::Context::process('Template::Context=HASH(0x97100b8)', 'complexType/attributeSet.t
+t', undef, 'localize me!') called at /usr/lib/perl5/Template/Context.pm line 403
Template::Context::include('Template::Context=HASH(0x97100b8)', 'complexType/attributeSet.t
+t') called at /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/Template/XSD/complexType/contentModel.
+tt line 19
eval {...} called at /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/Template/XSD/complexType
+/contentModel.tt line 7
Template::Document::__ANON__('Template::Context=HASH(0x97100b8)') called at /usr/lib/perl5/
+Template/Document.pm line 151
eval {...} called at /usr/lib/perl5/Template/Document.pm line 149
Template::Document::process('Template::Document=HASH(0x96bf108)', 'Template::Context=HASH(0
+x97100b8)') called at /usr/lib/perl5/Template/Context.pm line 341
eval {...} called at /usr/lib/perl5/Template/Context.pm line 315
Template::Context::process('Template::Context=HASH(0x97100b8)', 'complexType/contentModel.t
+t', undef, 'localize me!') called at /usr/lib/perl5/Template/Context.pm line 403
Template::Context::include('Template::Context=HASH(0x97100b8)', 'complexType/contentModel.t
+t') called at /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/Template/XSD/complexType.tt line 18
eval {...} called at /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/Template/XSD/complexType
+.tt line7
Template::Document::__ANON__('Template::Context=HASH(0x97100b8)') called at /usr/lib/perl5/
+Template/Document.pm line 151
eval {...} called at /usr/lib/perl5/Template/Document.pm line 149
Template::Document::process('Template::Document=HASH(0x96e5780)', 'Template::Context=HASH(0
+x97100b8)') called at /usr/lib/perl5/Template/Context.pm line 341
eval {...} called at /usr/lib/perl5/Template/Context.pm line 315
Template::Context::process('Template::Context=HASH(0x97100b8)', 'Template::Document=HASH(0x
+96e5780)') called at /usr/lib/perl5/Template/Service.pm line 91
eval {...} called at /usr/lib/perl5/Template/Service.pm line 88
Template::Service::process('Template::Service=HASH(0x970f828)', 'complexType.tt', 'HASH(0x9
+70f348)') called at /usr/lib/perl5/Template.pm line 64
Template::process('Template=HASH(0x9707190)', 'complexType.tt', 'HASH(0x970f348)', 'MyTypes
+/WsRouteInfoArray.pm') called at /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/Template.pm line 66
SOAP::WSDL::Generator::Template::_process('SOAP::WSDL::Generator::Template::XSD=SCALAR(0x91
+931b8)','complexType.tt', 'HASH(0x9334e00)', 'MyTypes/WsRouteInfoArray.pm') called at /home/ryan/p
+erl/lib/perl5/SOAP/WSDL/Generator/Template/XSD.pm line 232
SOAP::WSDL::Generator::Template::XSD::visit_XSD_ComplexType('SOAP::WSDL::Generator::Templat
+e::XSD=SCALAR(0x91931b8)', 'SOAP::WSDL::XSD::ComplexType=SCALAR(0x942a300)') called at /home/ryan/
+perl/lib/perl5/SOAP/WSDL/Base.pm line 62
SOAP::WSDL::Base::_accept('SOAP::WSDL::XSD::ComplexType=SCALAR(0x942a300)', 'SOAP::WSDL::Ge
+nerator::Template::XSD=SCALAR(0x91931b8)') called at /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator
+/Template/XSD.pm line 90
SOAP::WSDL::Generator::Template::XSD::generate_typelib('SOAP::WSDL::Generator::Template::XS
+D=SCALAR(0x91931b8)', undef) called at /home/ryan/perl/lib/perl5/SOAP/WSDL/Generator/Template/XSD.
+pm line 76
SOAP::WSDL::Generator::Template::XSD::generate('SOAP::WSDL::Generator::Template::XSD=SCALAR
+(0x91931b8)') called at /usr/local/bin/wsdl2perl.pl line 151
at /home/ryan/perl/lib/perl5/SOAP/WSDL/Base.pm line 62
<?xml version="1.0"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:Bookwsdl" xmlns:soap="http://s
+chemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://sch
+emas.xmlsoap.org/wsdl/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" name="Book" tar
+getNamespace="urn:Bookwsdl">
<wsdl:types xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Bookwsdl">
<xsd:complexType name="WsRouteSearchInfo">
<xsd:all>
<xsd:element name="origin" type="xsd:string"/>
<xsd:element name="destination" type="xsd:string"/>
<xsd:element name="carrier" type="xsd:string"/>
<xsd:element name="date" type="xsd:string"/>
<xsd:element name="cab" type="xsd:string"/>
<xsd:element name="seats" type="xsd:int"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="WsRouteInfoArray">
<xsd:complexContent>
<xsd:restriction base="soap-enc:Array">
<xsd:attribute ref="soap-enc:arrayType" wsdl:arrayType="tns:WsRouteInfo[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="WsRouteInfo">
<xsd:all>
<xsd:element name="carrier" type="xsd:string"/>
<xsd:element name="flight" type="xsd:int"/>
<xsd:element name="date" type="xsd:string"/>
<xsd:element name="origin" type="xsd:string"/>
<xsd:element name="destination" type="xsd:string"/>
<xsd:element name="departureTime" type="xsd:string"/>
<xsd:element name="arrivalTime" type="xsd:string"/>
<xsd:element name="dayDiff" type="xsd:int"/>
<xsd:element name="planeModel" type="xsd:string"/>
<xsd:element name="stops" type="xsd:int"/>
<xsd:element name="service" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="WsRouteLegInfoArray">
<xsd:complexContent>
<xsd:restriction base="soap-enc:Array">
<xsd:attribute ref="soap-enc:arrayType" wsdl:arrayType="tns:WsRouteLegInfo[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="WsRouteLegInfo">
<xsd:all>
<xsd:element name="carrier" type="xsd:string"/>
<xsd:element name="date" type="xsd:string"/>
<xsd:element name="flightNumber" type="xsd:int"/>
<xsd:element name="departAirport" type="xsd:string"/>
<xsd:element name="arriveAirport" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="WsBookInfo">
<xsd:all>
<xsd:element name="departRouteLegs" type="tns:WsRouteLegInfoArray"/>
<xsd:element name="returnRouteLegs" type="tns:WsRouteLegInfoArray"/>
<xsd:element name="passengers" type="tns:WsPassengerInfoArray"/>
<xsd:element name="fareClass" type="xsd:string"/>
<xsd:element name="remarks" type="tns:stringArray"/>
<xsd:element name="timeLimited" type="xsd:boolean"/>
<xsd:element name="fareInfo" type="tns:WsTripFareInfo"/>
<xsd:element name="telephone" type="xsd:string"/>
<xsd:element name="fax" type="xsd:string"/>
<xsd:element name="email" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="WsPassengerInfoArray">
<xsd:complexContent>
<xsd:restriction base="soap-enc:Array">
<xsd:attribute ref="soap-enc:arrayType" wsdl:arrayType="tns:WsPassengerInfo[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="WsPassengerInfo">
<xsd:all>
<xsd:element name="type" type="xsd:string"/>
<xsd:element name="lastName" type="xsd:string"/>
<xsd:element name="firstName" type="xsd:string"/>
<xsd:element name="birthDate" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="stringArray">
<xsd:complexContent>
<xsd:restriction base="soap-enc:Array">
<xsd:attribute ref="soap-enc:arrayType" wsdl:arrayType="xsd:string[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="WsTripFareInfo">
<xsd:all>
<xsd:element name="outboundFare" type="xsd:float"/>
<xsd:element name="outboundTax" type="xsd:float"/>
<xsd:element name="outboundFareBasis" type="xsd:string"/>
<xsd:element name="outboundBookingClass" type="xsd:string"/>
<xsd:element name="inboundFare" type="xsd:float"/>
<xsd:element name="inboundTax" type="xsd:float"/>
<xsd:element name="inboundFareBasis" type="xsd:string"/>
<xsd:element name="inboundBookingClass" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="WsRouteUnitFareInfo">
<xsd:all>
<xsd:element name="fare" type="xsd:float"/>
<xsd:element name="fareBasis" type="xsd:string"/>
<xsd:element name="fareRules" type="xsd:string"/>
<xsd:element name="tax" type="xsd:float"/>
<xsd:element name="bookingClass" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="GetRoutesRequest">
<wsdl:part name="searchInfo" type="tns:WsRouteSearchInfo"/>
</wsdl:message>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="GetRoutesResponse">
<wsdl:part name="return" type="tns:WsRouteInfoArray"/>
</wsdl:message>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="TicketPnrRequest">
<wsdl:part name="pnr" type="xsd:string"/>
</wsdl:message>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="TicketPnrResponse">
<wsdl:part name="return" type="xsd:boolean"/>
</wsdl:message>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="CreatePnrRequest">
<wsdl:part name="bookInfo" type="tns:WsBookInfo"/>
</wsdl:message>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="CreatePnrResponse">
<wsdl:part name="return" type="xsd:string"/>
</wsdl:message>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="CancelPnrRequest">
<wsdl:part name="pnr" type="xsd:string"/>
</wsdl:message>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="CancelPnrResponse">
<wsdl:part name="return" type="xsd:boolean"/>
</wsdl:message>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="AddRemarkRequest">
<wsdl:part name="pnr" type="xsd:string"/>
<wsdl:part name="remark" type="xsd:string"/>
</wsdl:message>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="AddRemarkResponse">
<wsdl:part name="return" type="xsd:boolean"/>
</wsdl:message>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="GetRouteUnitFareInfoRequest">
<wsdl:part name="origin" type="xsd:string"/>
<wsdl:part name="destination" type="xsd:string"/>
<wsdl:part name="date" type="xsd:string"/>
<wsdl:part name="currency" type="xsd:string"/>
<wsdl:part name="cabin" type="xsd:string"/>
<wsdl:part name="isRoundTrip" type="xsd:boolean"/>
<wsdl:part name="passengerType" type="xsd:string"/>
<wsdl:part name="seats" type="xsd:int"/>
</wsdl:message>
<wsdl:message xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="GetRouteUnitFareInfoResponse">
<wsdl:part name="return" type="tns:WsRouteUnitFareInfo"/>
</wsdl:message>
<wsdl:portType xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="BookPortType">
<wsdl:operation name="GetRoutes">
<wsdl:documentation>
</wsdl:documentation>
<wsdl:input message="tns:GetRoutesRequest"/>
<wsdl:output message="tns:GetRoutesResponse"/>
</wsdl:operation>
<wsdl:operation name="TicketPnr">
<wsdl:documentation>
</wsdl:documentation>
<wsdl:input message="tns:TicketPnrRequest"/>
<wsdl:output message="tns:TicketPnrResponse"/>
</wsdl:operation>
<wsdl:operation name="CreatePnr">
<wsdl:documentation>
</wsdl:documentation>
<wsdl:input message="tns:CreatePnrRequest"/>
<wsdl:output message="tns:CreatePnrResponse"/>
</wsdl:operation>
<wsdl:operation name="CancelPnr">
<wsdl:documentation>
</wsdl:documentation>
<wsdl:input message="tns:CancelPnrRequest"/>
<wsdl:output message="tns:CancelPnrResponse"/>
</wsdl:operation>
<wsdl:operation name="AddRemark">
<wsdl:documentation>
</wsdl:documentation>
<wsdl:input message="tns:AddRemarkRequest"/>
<wsdl:output message="tns:AddRemarkResponse"/>
</wsdl:operation>
<wsdl:operation name="GetRouteUnitFareInfo">
<wsdl:documentation>
</wsdl:documentation>
<wsdl:input message="tns:GetRouteUnitFareInfoRequest"/>
<wsdl:output message="tns:GetRouteUnitFareInfoResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="BookBinding" type="tns:BookPort
+Type">
<soap:binding xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" style="rpc" transport="http://
+schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetRoutes">
<soap:operation xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="urn:Bookwsdl#G
+etRoutes" style="rpc"/>
<wsdl:input xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:input>
<wsdl:output xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="TicketPnr">
<soap:operation xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="urn:Bookwsdl#T
+icketPnr" style="rpc"/>
<wsdl:input xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:input>
<wsdl:output xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="CreatePnr">
<soap:operation xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="urn:Bookwsdl#C
+reatePnr" style="rpc"/>
<wsdl:input xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:input>
<wsdl:output xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="CancelPnr">
<soap:operation xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="urn:Bookwsdl#C
+ancelPnr" style="rpc"/>
<wsdl:input xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:input>
<wsdl:output xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AddRemark">
<soap:operation xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="urn:Bookwsdl#A
+ddRemark" style="rpc"/>
<wsdl:input xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:input>
<wsdl:output xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetRouteUnitFareInfo">
<soap:operation xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="urn:Bookwsdl#G
+etRouteUnitFareInfo" style="rpc"/>
<wsdl:input xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:input>
<wsdl:output xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" namespace="urn:
+Bookwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="BookService">
<wsdl:port xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="BookPort" binding="tns:Book
+Binding">
<soap:address xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" location="http://vi.resadm.s
+taging.asiscan.com/index.php?soap=book"/>
</wsdl:port>
</wsdl:service>
</definitions>