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:
serviceportbindingoperationinput/output/fault of operation in portTypemessageparttype/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/"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="urn:HelloWorld"targetNamespace="urn:HelloWorld"xmlns="http://schemas.xmlsoap.org/wsdl/"><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"><soap:binding transport="http://schemas.xmlsoap.org/soap/http"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:addresslocation="http://localhost:81/soap-wsdl-test/helloworld.pl" /></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 $$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $