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/"
  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:address
               location="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 $