NAME
SOAP::WSDL::Generator::Iterator::WSDL11 - WSDL 1.1 Iterator
SYNOPSIS
my
$iter
= SOAP::WSDL::Generator::Iterator::WSDL11->new({
definitions
=>
$wsdl
});
$iter
->init();
while
(
my
$node
=
$iter
->get_next()) {
# do something with node - possibly call _accept with a visitor on it...
}
DESCRIPTION
Iterator for walking a WSDL 1.1 definition.
The iterator performs a depth-first search along the following path:
service
port
binding
operation
input/output/fault of operation in portType
message
part
type/element in XML schema
If you wonder about this path: This is how to look up which XML Schema element is associated with a operation from a service/port.
Example
The nodes are returned in the order denoted in the following example:
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<!-- 1 -->
<definitions xmlns:http=
"http://schemas.xmlsoap.org/wsdl/http/"
targetNamespace=
"urn:HelloWorld"
<types>
<s:schema elementFormDefault=
"qualified"
targetNamespace=
"urn:HelloWorld"
>
<!-- 9 -->
<s:element name=
"sayHello"
>
<s:complexType>
<s:sequence>
<s:element minOccurs=
"0"
maxOccurs=
"1"
name=
"name"
type=
"s:string"
/>
<s:element minOccurs=
"0"
maxOccurs=
"1"
name=
"givenName"
type=
"s:string"
nillable=
"1"
/>
</s:sequence>
<s:attribute name=
"testAttr"
type=
"s:string"
use
=
"optional"
></s:attribute>
</s:complexType>
</s:element>
<!-- 13 -->
<s:element name=
"sayHelloResponse"
>
<s:complexType>
<s:sequence>
<s:element minOccurs=
"0"
maxOccurs=
"1"
name=
"sayHelloResult"
type=
"s:string"
/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</types>
<!-- 7 -->
<message name=
"sayHelloSoapIn"
>
<!-- 8 -->
<part name=
"parameters"
element=
"s0:sayHello"
/>
</message>
<!-- 11 -->
<message name=
"sayHelloSoapOut"
>
<!-- 12 -->
<part name=
"parameters"
element=
"s0:sayHelloResponse"
/>
</message>
<portType name=
"Service1Soap"
>
<operation name=
"sayHello"
>
<!-- 6 -->
<input message=
"s0:sayHelloSoapIn"
/>
<!-- 10 -->
<output message=
"s0:sayHelloSoapOut"
/>
</operation>
</portType>
<!-- 4 -->
<binding name=
"Service1Soap"
type=
"s0:Service1Soap"
>
style=
"document"
/>
<!-- 5 -->
<operation name=
"sayHello"
>
<soap:operation soapAction=
"urn:HelloWorld#sayHello"
style=
"document"
/>
<input>
<soap:body
use
=
"literal"
/>
</input>
<output>
<soap:body
use
=
"literal"
/>
</output>
</operation>
</binding>
<!-- 2 -->
<service name=
"Service1"
>
<!-- 3 -->
<port name=
"Service1Soap"
binding=
"s0:Service1Soap"
>
<soap:address
</port>
</service>
</definitions>
You should not rely too much on this order - it may change. Even though the current order will probably remain, the nodes currently skipped might be returned somewhere along the path.
LICENSE AND COPYRIGHT
Copyright 2004-2008 Martin Kutter.
This file is part of SOAP-WSDL. You may distribute/modify it under the same terms as perl itself
AUTHOR
Martin Kutter <martin.kutter fen-net.de>
REPOSITORY INFORMATION
$Rev
: 239 $
$LastChangedBy
: kutterma $
$Id
: Client.pm 239 2007-09-11 09:45:42Z kutterma $