The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
ChangeLog 069
MANIFEST 1511
META.json 67
META.yml 67
Makefile.PL 1537
README 66
examples/document/has_schema2.pl 22
examples/document/has_wsdl.pl 01
examples/salesforce/sf-info.pl 084
examples/temperature/convert.wsdl 0135
examples/temperature/soap-lite.pl 029
examples/temperature/xml-compile-soap.pl 050
lib/XML/Compile/Operation.pm 11
lib/XML/Compile/SOAP/Client.pm 710
lib/XML/Compile/SOAP/Client.pod 45
lib/XML/Compile/SOAP/Extension.pm 529
lib/XML/Compile/SOAP/Extension.pod 1333
lib/XML/Compile/SOAP/FAQ.pod 34
lib/XML/Compile/SOAP/Operation.pm 1856
lib/XML/Compile/SOAP/Operation.pod 2248
lib/XML/Compile/SOAP/Server.pm 54
lib/XML/Compile/SOAP/Server.pod 67
lib/XML/Compile/SOAP/Trace.pm 22
lib/XML/Compile/SOAP/Trace.pod 1315
lib/XML/Compile/SOAP/Util.pm 48
lib/XML/Compile/SOAP/Util.pod 37
lib/XML/Compile/SOAP/xsd/bea/README 08
lib/XML/Compile/SOAP/xsd/bea/bea_wli_sb_context-fix.xsd 024
lib/XML/Compile/SOAP/xsd/bea/bea_wli_sb_context.xsd 0178
lib/XML/Compile/SOAP/xsd/sharepoint/README.sharepoint 03
lib/XML/Compile/SOAP/xsd/sharepoint/sharepoint-serial.xsd 042
lib/XML/Compile/SOAP/xsd/sharepoint/sharepoint-soap.xsd 036
lib/XML/Compile/SOAP/xsd/xcdaemon/xcdaemon.xsd 029
lib/XML/Compile/SOAP.pm 3059
lib/XML/Compile/SOAP.pod 1856
lib/XML/Compile/SOAP10/Operation.pm 870
lib/XML/Compile/SOAP10/Operation.pod 800
lib/XML/Compile/SOAP10.pm 270
lib/XML/Compile/SOAP10.pod 1510
lib/XML/Compile/SOAP11/Client.pm 22
lib/XML/Compile/SOAP11/Client.pod 89
lib/XML/Compile/SOAP11/Encoding.pm 22
lib/XML/Compile/SOAP11/Encoding.pod 4344
lib/XML/Compile/SOAP11/Operation.pm 2917
lib/XML/Compile/SOAP11/Operation.pod 7156
lib/XML/Compile/SOAP11/Server.pm 1010
lib/XML/Compile/SOAP11/Server.pod 89
lib/XML/Compile/SOAP11.pm 4082
lib/XML/Compile/SOAP11.pod 3241
lib/XML/Compile/Transport/SOAPHTTP.pm 2620
lib/XML/Compile/Transport/SOAPHTTP.pod 3459
lib/XML/Compile/Transport.pm 22
lib/XML/Compile/Transport.pod 2682
lib/XML/Compile/WSDL11/xsd/wsdl-http.xsd 740
lib/XML/Compile/WSDL11/xsd/wsdl-mime.xsd 700
lib/XML/Compile/WSDL11/xsd/wsdl.xsd 3070
lib/XML/Compile/WSDL11.pm 5440
lib/XML/Compile/WSDL11.pod 7350
lib/XML/Compile/XOP/Include.pm 33
lib/XML/Compile/XOP/Include.pod 1415
lib/XML/Compile/XOP.pm 22
lib/XML/Compile/XOP.pod 812
t/01use.t 51
t/50wsdl.t 2880
t/51wsdloneway.t 1100
t/52wsdlfault.t 1790
t/53wsdlrpclit.t 2400
t/54wsdlrpclit.t 1570
t/55wsdlrpcone.t 1150
t/TestTools.pm 22
70 files changed (This is a version diff) 37351572
@@ -1,6 +1,71 @@
 
 === version history of XML::Compile::SOAP
 
+version 3.05: Wed May 28 09:29:16 CEST 2014
+
+	Fixes:
+	- support rpc-literal fault parts based on type, not only element.
+	  reported by [Rob De Langhe]
+	- handle returned XOP objects.  Patch by [Christopher Taranto]
+
+	Improvements:
+	- use File::Slurp::Tiny to replace File::Slurp
+	  rt.cpan.org#92920 [Karen Etheridge]
+	- do not include ::Daemon in META.yml
+	  rt.cpan.org#95507 [Nikolay Martynov]
+
+version 3.04: Thu Feb  6 17:05:32 CET 2014
+
+	Improvements:
+	- change documentation style.
+	- move ::SOAP11::Operation::parsedWSDL() to base-class
+
+version 3.03: Fri Jan 10 15:42:22 CET 2014
+
+	Fixes:
+	- remove dependency to WSDL again, because CPAN.pm cannot
+	  handle cyclic dependencies.
+	- revert unintended change in 2.36 which croaks when the
+	  Fault/details contains elements which are not understood.
+	  Detected by [Steffen Winkler]
+
+	Improvements:
+	- add server schemas, currently for BEA, SharePoint, and
+	  XML::Compile::Daemon servers.
+
+version 3.02: Wed Jan  8 01:04:45 CET 2014
+
+	Fixes:
+	- auto check whether WSDL11 must be upgraded. [Caleb Cushing]
+
+version 3.01: Mon Jan  6 23:19:14 CET 2014
+
+	Improvements:
+	- upgrade daemon if installed.
+	- drop support for very old Perl's
+
+version 3.00: Mon Jan  6 00:55:08 CET 2014
+	Changes:
+	- split-off WSDL11 into own distribution.
+	- default mime-type for SOAP 1.1 is text/xml
+	- removed SOAP10
+
+	Fixes:
+	- headers and body elements which appear more than once will
+	  be put in an ARRAY.
+
+	Improvements:
+	- check that all XML::Compile::SOAP* modules are loaded
+	  [Chase Whitener]
+	- and one more check [Reiber Christian]
+	- example how to add BasicAuthentication headers
+	- added examples/temperature, based on answer to request of [fort_d]
+	- moved WSDL11 initialization from ::Operation to ::SOAP11
+	- moved module registration from ::Operation to ::SOAP
+	- ::Extensions can now register soap12 routines.
+	- add examples/salesforce/, contribute by [Ciaran Deignan]
+	- ::Operation:addHeader() now also accepts ELEMENTs in prefixed form
+
 version 2.38: Thu Aug 22 16:20:29 CEST 2013
 
 	Fixes:
@@ -30,6 +95,10 @@ version 2.37: Tue Jul  9 17:53:13 CEST 2013
 
 version 2.36: Fri May  3 10:04:52 CEST 2013
 
+	Changes:
+	- error when Fault/details contains elements which are not
+	  understood.
+
 	Fixes:
 	- writer rpc: do not ignore empty message parts [Henrik Tougaard]
 
@@ -15,6 +15,10 @@ examples/rpc-literal/element.pl
 examples/rpc-literal/element.wsdl
 examples/rpc-literal/type.pl
 examples/rpc-literal/type.wsdl
+examples/salesforce/sf-info.pl
+examples/temperature/convert.wsdl
+examples/temperature/soap-lite.pl
+examples/temperature/xml-compile-soap.pl
 lib/XML/Compile/Operation.pm
 lib/XML/Compile/SOAP.pm
 lib/XML/Compile/SOAP.pod
@@ -31,10 +35,13 @@ lib/XML/Compile/SOAP/Trace.pm
 lib/XML/Compile/SOAP/Trace.pod
 lib/XML/Compile/SOAP/Util.pm
 lib/XML/Compile/SOAP/Util.pod
-lib/XML/Compile/SOAP10.pm
-lib/XML/Compile/SOAP10.pod
-lib/XML/Compile/SOAP10/Operation.pm
-lib/XML/Compile/SOAP10/Operation.pod
+lib/XML/Compile/SOAP/xsd/bea/README
+lib/XML/Compile/SOAP/xsd/bea/bea_wli_sb_context-fix.xsd
+lib/XML/Compile/SOAP/xsd/bea/bea_wli_sb_context.xsd
+lib/XML/Compile/SOAP/xsd/sharepoint/README.sharepoint
+lib/XML/Compile/SOAP/xsd/sharepoint/sharepoint-serial.xsd
+lib/XML/Compile/SOAP/xsd/sharepoint/sharepoint-soap.xsd
+lib/XML/Compile/SOAP/xsd/xcdaemon/xcdaemon.xsd
 lib/XML/Compile/SOAP11.pm
 lib/XML/Compile/SOAP11.pod
 lib/XML/Compile/SOAP11/Client.pm
@@ -52,12 +59,7 @@ lib/XML/Compile/Transport.pm
 lib/XML/Compile/Transport.pod
 lib/XML/Compile/Transport/SOAPHTTP.pm
 lib/XML/Compile/Transport/SOAPHTTP.pod
-lib/XML/Compile/WSDL11.pm
-lib/XML/Compile/WSDL11.pod
-lib/XML/Compile/WSDL11/xsd/wsdl-http.xsd
-lib/XML/Compile/WSDL11/xsd/wsdl-mime.xsd
 lib/XML/Compile/WSDL11/xsd/wsdl-soap.xsd
-lib/XML/Compile/WSDL11/xsd/wsdl.xsd
 lib/XML/Compile/XOP.pm
 lib/XML/Compile/XOP.pod
 lib/XML/Compile/XOP/Include.pm
@@ -69,12 +71,6 @@ t/10soap.t
 t/11soapfault.t
 t/12soapmust.t
 t/30charenc.t
-t/50wsdl.t
-t/51wsdloneway.t
-t/52wsdlfault.t
-t/53wsdlrpclit.t
-t/54wsdlrpclit.t
-t/55wsdlrpcone.t
 t/60xop.t
 t/TestTools.pm
 xt/99pod.t
@@ -1,5 +1,5 @@
 {
-   "abstract" : "SOAP and WSDL, client side",
+   "abstract" : "SOAP version 1.1",
    "author" : [
       "Mark Overmeer"
    ],
@@ -32,17 +32,18 @@
       },
       "runtime" : {
          "requires" : {
-            "File::Slurp" : "0",
+            "File::Slurp::Tiny" : "0",
             "LWP" : "5.816",
-            "Log::Report" : "0.994",
+            "Log::Report" : "1.00",
             "Test::More" : "0.54",
             "Time::HiRes" : "0",
-            "XML::Compile" : "1.37",
+            "XML::Compile" : "1.42",
             "XML::Compile::Cache" : "0.995",
-            "XML::Compile::Tester" : "0.9"
+            "XML::Compile::SOAP::Daemon" : "3.00",
+            "XML::Compile::Tester" : "0.90"
          }
       }
    },
    "release_status" : "stable",
-   "version" : "2.38"
+   "version" : "3.05"
 }
@@ -1,5 +1,5 @@
 ---
-abstract: 'SOAP and WSDL, client side'
+abstract: 'SOAP version 1.1'
 author:
   - 'Mark Overmeer'
 build_requires:
@@ -18,12 +18,13 @@ no_index:
     - t
     - inc
 requires:
-  File::Slurp: 0
+  File::Slurp::Tiny: 0
   LWP: 5.816
-  Log::Report: 0.994
+  Log::Report: 1.00
   Test::More: 0.54
   Time::HiRes: 0
-  XML::Compile: 1.37
+  XML::Compile: 1.42
   XML::Compile::Cache: 0.995
-  XML::Compile::Tester: 0.9
-version: 2.38
+  XML::Compile::SOAP::Daemon: 3.00
+  XML::Compile::Tester: 0.90
+version: 3.05
@@ -2,32 +2,54 @@ use ExtUtils::MakeMaker;
 
 use 5.008;
 
-my $version = '2.38';
+my $version = '3.05';
 
-WriteMakefile
- ( NAME	 	=> 'XML::Compile::SOAP'
- , VERSION	=> $version
- , PREREQ_PM    =>
-   { XML::Compile         => 1.37
-   , XML::Compile::Tester => 0.90
+my $prereq =
+   { XML::Compile         => '1.42'
+   , XML::Compile::Tester => '0.90'
    , XML::Compile::Cache  => 0.995
-   , Log::Report          => 0.994
+   , Log::Report          => '1.00'
+
+   , LWP               => 5.816
+   , Time::HiRes       => 0
+   , File::Slurp::Tiny => 0
+
+   , Test::More        => 0.54
+   };
+
+eval "require XML::Compile::WSDL11";
+if($@ !~ /can\'t locate/i)
+{   my $v = $XML::Compile::WSDL11::VERSION || '3.00';
 
-   , LWP             => 5.816
-   , Time::HiRes     => 0
-   , File::Slurp     => 0
+    # results in dependency loop, which CPAN.pm cannot handle
+    #$prereq->{'XML::Compile::WSDL11'} = '3.00';
 
-   , Test::More      => 0.54
-   }
+    if($v < 3.00) { warn <<'__CHANGES_300'; sleep 10 }
+******************************************************************
+WARNING: with XML::Compile::SOAP11 v3.00, the WSDL11 code got
+   moved into a separate module.  You may need to add dependencies
+   to that module as well.
+******************************************************************
+__CHANGES_300
+}
+
+eval "require XML::Compile::SOAP::Daemon";
+$prereq->{'XML::Compile::SOAP::Daemon'} = '3.00'
+    unless $@ || $ENV{MARKOV_DEVEL};
+
+WriteMakefile
+ ( NAME	 	=> 'XML::Compile::SOAP'
+ , VERSION	=> $version
+ , PREREQ_PM    => $prereq
  , AUTHOR       => 'Mark Overmeer'
- , ABSTRACT     => 'SOAP and WSDL, client side'
+ , ABSTRACT     => 'SOAP version 1.1'
  , LICENSE      => 'perl'
  );
 
 ### used by oodist during production of distribution
 sub MY::postamble { <<'__POSTAMBLE' }
 
-EXTENDS		= ../XMLCompile:../XMLDaemon:../XMLTester:../XMLCache:../XMLSOAP12:../SOAPAnyEvent:../XMLWSA
+EXTENDS		= ../XMLCompile:../XMLDaemon:../XMLTester:../XMLCache:../XMLWSDL:../XMLSOAP12:../SOAPAnyEvent:../XMLWSA
 
 # for DIST
 RAWDIR          = ../public_html/xml-compile-soap/raw
@@ -1,5 +1,5 @@
-=== README for XML-Compile-SOAP version 2.38
-=   Generated on Thu Aug 22 16:20:43 2013 by OODoc 2.01
+=== README for XML-Compile-SOAP version 3.05
+=   Generated on Wed May 28 09:29:21 2014 by OODoc 2.01
 
 There are various ways to install this module:
 
@@ -9,16 +9,16 @@ There are various ways to install this module:
  (2) if you use Windows, have a look at http://ppm.activestate.com/
 
  (3) if you have downloaded this module manually (as root/administrator)
-       gzip -d XML-Compile-SOAP-2.38.tar.gz
-       tar -xf XML-Compile-SOAP-2.38.tar
-       cd XML-Compile-SOAP-2.38
+       gzip -d XML-Compile-SOAP-3.05.tar.gz
+       tar -xf XML-Compile-SOAP-3.05.tar
+       cd XML-Compile-SOAP-3.05
        perl Makefile.PL
        make          # optional
        make test     # optional
        make install
 
 For usage, see the included manual-pages or
-    http://search.cpan.org/dist/XML-Compile-SOAP-2.38/
+    http://search.cpan.org/dist/XML-Compile-SOAP-3.05/
 
 Please report problems to
     http://rt.cpan.org/Dist/Display.html?Queue=XML-Compile-SOAP
@@ -107,8 +107,8 @@ sub get_countries()
     my ($answer, $trace) = $getCountries->();
     $answer
         or die "No answer received\n";
-use Data::Dumper;
-warn Dumper $trace;
+    #use Data::Dumper;
+    #warn Dumper $trace;
 
     if(my $fault_raw = $answer->{Fault})
     {   my $fault_nice = $answer->{$fault_raw->{_NAME}};
@@ -134,6 +134,7 @@ sub get_countries($)
 
     if($show_trace)
     {   $trace->printTimings;
+        $trace->printErrors;
         $trace->printRequest;
         $trace->printResponse;
     }
@@ -0,0 +1,84 @@
+#!/usr/bin/env perl
+#
+# Demonstration of a Salesforce coupling, as test script.  You see the
+# initial steps to shape a clean module.
+# Contributed by Ciaran Deignan, 18 dec 2013 (slightly modified by MarkOv)
+#
+# References:
+# http://blog.deadlypenguin.com/blog/2012/02/03/salesforce-and-soapui/
+# http://wiki.developerforce.com/page/Sample_SOAP_Messages
+
+use warnings;
+use strict;
+use Data::Dumper;
+
+# preparation
+use XML::Compile;
+use XML::Compile::WSDL11;      # use WSDL version 1.1
+use XML::Compile::SOAP11;      # use SOAP version 1.1
+use XML::Compile::Transport::SOAPHTTP;
+
+#my $wsdlfn = 'enterprise-2013-12-16.xml';
+my $wsdlfn = 'sandbox-2013-12-18.xml';
+
+## Take login and password from command-line
+@ARGV==2 or die "Usage: $0 <username> <password>\n";
+my ($U, $P) = @ARGV;
+
+warn "Using XML-Compile version\t%s\n", $XML::Compile::VERSION;
+warn "Using XML-Compile-SOAP version\t%s\n", $XML::Compile::SOAP::VERSION;
+
+my $ws   = XML::Compile::WSDL11->new;
+
+## Get WSDL from file...
+$ws->addWSDL($wsdlfn);
+
+## Login provides info for the other methods, so needs to be compiled
+## separately.
+my $ini =  $ws->compileClient('login');
+
+## We need to login first
+my ($ret, $trace) = $ini->(username => $U, password=> $P);
+
+#$trace->printErrors(*STDERR); exit;
+#print Dumper($ret); exit;
+
+## You may get an error back from the server
+if(my $f = $ret->{Fault})
+{   my $errname = $f->{_NAME};
+    my $error   = $ret->{$errname};
+    printf "Error %s (%s)\n", $errname, $f->{faultstring};
+#  print Dumper($ret);
+    exit;
+}
+
+
+my $login = $ret->{parameters}{result};
+my $sh = { sessionId => $login->{sessionId} };
+
+## Information/debugging utilities
+#$ws->printIndex; exit;
+#print $ws->explain('login', PERL => 'INPUT', recurse => 1); #exit;
+#print $ws->explain('logout', PERL => 'INPUT', recurse => 1); exit;
+#print $ws->explain('describeSObject', PERL => 'INPUT', recurse => 1); exit;
+
+## Compile all other calls
+$ws->compileCalls(endpoint => $login->{serverUrl});
+
+## Best to wrap each of the calls in a convenient function/method, to
+## provide an abstract interface to the main program.
+my ($ret2, $trace2) = $ws->call(
+     'getServerTimestamp'
+#    'describeGlobal'
+#    'describeSObject', parameters => {sObjectType => 'Account'}
+#    'describeSObject', parameters => {sObjectType => 'Machine__c'}
+   , SessionHeader => $sh
+   );
+print Dumper $ret2; 
+
+my ($ret3, $trace3) = $ws->call('logout', SessionHeader => $sh);
+
+#print Dumper($ret3); 
+exit 0;
+
+
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.webserviceX.NET/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.webserviceX.NET/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <s:schema elementFormDefault="qualified" targetNamespace="http://www.webserviceX.NET/">
+      <s:element name="ConvertTemp">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="Temperature" type="s:double" />
+            <s:element minOccurs="1" maxOccurs="1" name="FromUnit" type="tns:TemperatureUnit" />
+            <s:element minOccurs="1" maxOccurs="1" name="ToUnit" type="tns:TemperatureUnit" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:simpleType name="TemperatureUnit">
+        <s:restriction base="s:string">
+          <s:enumeration value="degreeCelsius" />
+          <s:enumeration value="degreeFahrenheit" />
+          <s:enumeration value="degreeRankine" />
+          <s:enumeration value="degreeReaumur" />
+          <s:enumeration value="kelvin" />
+        </s:restriction>
+      </s:simpleType>
+      <s:element name="ConvertTempResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="ConvertTempResult" type="s:double" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="double" type="s:double" />
+    </s:schema>
+  </wsdl:types>
+  <wsdl:message name="ConvertTempSoapIn">
+    <wsdl:part name="parameters" element="tns:ConvertTemp" />
+  </wsdl:message>
+  <wsdl:message name="ConvertTempSoapOut">
+    <wsdl:part name="parameters" element="tns:ConvertTempResponse" />
+  </wsdl:message>
+  <wsdl:message name="ConvertTempHttpGetIn">
+    <wsdl:part name="Temperature" type="s:string" />
+    <wsdl:part name="FromUnit" type="s:string" />
+    <wsdl:part name="ToUnit" type="s:string" />
+  </wsdl:message>
+  <wsdl:message name="ConvertTempHttpGetOut">
+    <wsdl:part name="Body" element="tns:double" />
+  </wsdl:message>
+  <wsdl:message name="ConvertTempHttpPostIn">
+    <wsdl:part name="Temperature" type="s:string" />
+    <wsdl:part name="FromUnit" type="s:string" />
+    <wsdl:part name="ToUnit" type="s:string" />
+  </wsdl:message>
+  <wsdl:message name="ConvertTempHttpPostOut">
+    <wsdl:part name="Body" element="tns:double" />
+  </wsdl:message>
+  <wsdl:portType name="ConvertTemperatureSoap">
+    <wsdl:operation name="ConvertTemp">
+      <wsdl:input message="tns:ConvertTempSoapIn" />
+      <wsdl:output message="tns:ConvertTempSoapOut" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="ConvertTemperatureHttpGet">
+    <wsdl:operation name="ConvertTemp">
+      <wsdl:input message="tns:ConvertTempHttpGetIn" />
+      <wsdl:output message="tns:ConvertTempHttpGetOut" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="ConvertTemperatureHttpPost">
+    <wsdl:operation name="ConvertTemp">
+      <wsdl:input message="tns:ConvertTempHttpPostIn" />
+      <wsdl:output message="tns:ConvertTempHttpPostOut" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="ConvertTemperatureSoap" type="tns:ConvertTemperatureSoap">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="ConvertTemp">
+      <soap:operation soapAction="http://www.webserviceX.NET/ConvertTemp" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="ConvertTemperatureSoap12" type="tns:ConvertTemperatureSoap">
+    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="ConvertTemp">
+      <soap12:operation soapAction="http://www.webserviceX.NET/ConvertTemp" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="ConvertTemperatureHttpGet" type="tns:ConvertTemperatureHttpGet">
+    <http:binding verb="GET" />
+    <wsdl:operation name="ConvertTemp">
+      <http:operation location="/ConvertTemp" />
+      <wsdl:input>
+        <http:urlEncoded />
+      </wsdl:input>
+      <wsdl:output>
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="ConvertTemperatureHttpPost" type="tns:ConvertTemperatureHttpPost">
+    <http:binding verb="POST" />
+    <wsdl:operation name="ConvertTemp">
+      <http:operation location="/ConvertTemp" />
+      <wsdl:input>
+        <mime:content type="application/x-www-form-urlencoded" />
+      </wsdl:input>
+      <wsdl:output>
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="ConvertTemperature">
+    <wsdl:port name="ConvertTemperatureSoap" binding="tns:ConvertTemperatureSoap">
+      <soap:address location="http://www.webservicex.net/ConvertTemperature.asmx" />
+    </wsdl:port>
+    <wsdl:port name="ConvertTemperatureSoap12" binding="tns:ConvertTemperatureSoap12">
+      <soap12:address location="http://www.webservicex.net/ConvertTemperature.asmx" />
+    </wsdl:port>
+    <wsdl:port name="ConvertTemperatureHttpGet" binding="tns:ConvertTemperatureHttpGet">
+      <http:address location="http://www.webservicex.net/ConvertTemperature.asmx" />
+    </wsdl:port>
+    <wsdl:port name="ConvertTemperatureHttpPost" binding="tns:ConvertTemperatureHttpPost">
+      <http:address location="http://www.webservicex.net/ConvertTemperature.asmx" />
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+use Data::Dumper;
+use SOAP::Lite; # +trace => 'all';
+
+my $soap = SOAP::Lite
+    ->uri('http://www.webserviceX.NET/')
+    ->on_action(sub { join "/", "http://www.webserviceX.NET", $_[1] } )
+    ->proxy("http://www.webservicex.net/ConvertTemperature.asmx?WSDL");
+
+my $method = SOAP::Data->name('ConvertTemp')
+   ->attr({xmlns => 'http://www.webserviceX.NET'});
+
+my @params = (
+  SOAP::Data->new(name => 'Temperature', value => '12.0',type =>'s:double'),
+  SOAP::Data->new(name => 'FromUnit', value => 'degreeCelsius', type => 's:string'),
+  SOAP::Data->new(name =>'ToUnit', value => 'degreeFahrenheit', type => 's:string')
+  );
+
+my $som = $soap->ConvertTemp(@params);
+
+if(my $match = $som->match('/Envelope/Body/ConvertTempResponse/')) {
+   my $result = $som->valueof('//ConvertTempResponse/ConvertTempResult');
+   print "Temperature is $result\n";
+} else {
+   print "match not OK: $match\n";
+}
@@ -0,0 +1,50 @@
+#!/usr/bin/env perl
+use warnings;
+use strict;
+
+use XML::Compile::WSDL11;
+use XML::Compile::SOAP11;
+use XML::Compile::SOAP12;
+use XML::Compile::Transport::SOAPHTTP;
+
+# XML::Compile does not like dynamic things.  WSDL collected with
+#    wget http://www.webservicex.net/ConvertTemperature.asmx?WSDL
+my $wsdlfn = 'convert.wsdl';
+my $wsdl = XML::Compile::WSDL11->new
+  ( $wsdlfn
+# , server_type => 'BEA'   or  'SharePoint' or
+  );
+
+my $request =
+  { Temperature => 12
+  , FromUnit    => 'degreeCelsius'
+  , ToUnit      => 'degreeCelsius'
+  };
+
+my ($answer, $trace);
+
+if(0)
+{   ### either compile explicitly
+    my $convert = $wsdl->compileClient
+     ( 'ConvertTemp'
+     , port => 'ConvertTemperatureSoap'
+     );
+
+    ($answer, $trace) = $convert->($request);
+}
+else
+{   ### or compile/use implictly
+    $wsdl->compileCalls(port => 'ConvertTemperatureSoap');
+    ($answer, $trace) = $wsdl->call(ConvertTemp => $request);
+}
+
+
+### in either case, you can call the operations many times, with
+#   different $request
+
+use Data::Dumper;
+warn Dumper $answer;
+
+# $trace->printTimings;
+# $trace->printRequest(pretty_print => 1);
+# $trace->printResponse(pretty_print => 1);
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,7 +7,7 @@ use strict;
 
 package XML::Compile::SOAP::Client;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 
 use Log::Report 'xml-compile-soap', syntax => 'SHORT';
@@ -20,6 +20,7 @@ use Time::HiRes        qw/time/;
 sub new(@) { panic __PACKAGE__." only secundary in multiple inheritance" }
 sub init($) { shift }
 
+#--------------
 
 my $rr = 'request-response';
 
@@ -52,7 +53,7 @@ sub compileClient(@)
     }
 
     my $output_handler = sub {
-        my ($ans, $trace) = @_;
+        my ($ans, $trace, $xops) = @_;
         wantarray or return
             UNIVERSAL::isa($ans, 'XML::LibXML::Node') ? $decode->($ans) : $ans;
 
@@ -73,7 +74,7 @@ sub compileClient(@)
         {   $trace->{elapse} = $trace->{transport_end} - $trace->{start}
                 if defined $trace->{transport_end};
         }
-        ($ans, XML::Compile::SOAP::Trace->new($trace));
+        ($ans, XML::Compile::SOAP::Trace->new($trace), $xops);
     };
 
     $args{async}
@@ -85,7 +86,7 @@ sub compileClient(@)
               , name => $name;
 
         my $callback = delete $data->{_callback}
-            or error __x"opertaion `{name}' is async, so requires _callback";
+            or error __x"operation `{name}' is async, so requires _callback";
 
         my $trace = {start => time};
         my ($req, $mtom) = $encode->($data, $charset);
@@ -108,10 +109,12 @@ sub compileClient(@)
 
         my $trace = {start => time};
         my ($req, $mtom) = $encode->($data, $charset);
-        my $ans = $transport->($req, $trace, $mtom);
+        my ($ans, $xops) = $transport->($req, $trace, $mtom);
+        wantarray || !$xops || ! keys %$xops
+            or warning "loosing received XOPs";
 
         $trace->{encode_elapse} = $trace->{transport_start} - $trace->{start};
-        $output_handler->($ans, $trace);
+        $output_handler->($ans, $trace, $xops);
       };
 }
 
@@ -30,7 +30,7 @@ base class.  The primary must contain the C<new>.
 
 =over 4
 
-=item $obj-E<gt>B<compileClient>(OPTIONS)
+=item $obj-E<gt>B<compileClient>(%options)
 
  -Option   --Default
   async      <false>
@@ -483,12 +483,13 @@ equivalent to the C<%data_in> from the client.
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -510,7 +511,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,7 +7,7 @@ use strict;
 
 package XML::Compile::SOAP::Extension;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 use Log::Report 'xml-compile-soap';
 
@@ -23,9 +23,10 @@ sub init($)
     $self;
 }
 
+#--------
 
-### Everywhere: when called on an object, it is the stub for the
-### extension. Only when called as class method, it will walk all
+### For all methods named below: when called on an object, it is the stub
+### for the extension. Only when called as class method, it will walk all
 ### extension objects.
 
 sub wsdl11Init($$)
@@ -33,6 +34,7 @@ sub wsdl11Init($$)
     $_->wsdl11Init(@_) for @ext;
 }
 
+#--------
 
 sub soap11OperationInit($$)
 {   ref shift and return;
@@ -55,6 +57,28 @@ sub soap11HandlerWrapper($$$)
     $cb;
 }
 
-1;
+#--------
+
+sub soap12OperationInit($$)
+{   ref shift and return;
+    $_->soap12OperationInit(@_) for @ext;
+}
+
+
+sub soap12ClientWrapper($$$)
+{   ref shift and return $_[1];
+    my ($op, $call, $args) = @_;
+    $call = $_->soap12ClientWrapper($op, $call, $args) for @ext;
+    $call;
+}
+
+
+sub soap12HandlerWrapper($$$)
+{   my ($thing, $op, $cb, $args) = @_;
+    ref $thing and return $cb;
+    $cb = $_->soap12HandlerWrapper($op, $cb, $args) for @ext;
+    $cb;
+}
+
 
 1;
@@ -24,7 +24,7 @@ L<XML::Compile::SOAP::WSA|XML::Compile::SOAP::WSA>)
 
 =over 4
 
-=item XML::Compile::SOAP::Extension-E<gt>B<new>(OPTIONS)
+=item XML::Compile::SOAP::Extension-E<gt>B<new>(%options)
 
 =back
 
@@ -32,12 +32,12 @@ L<XML::Compile::SOAP::WSA|XML::Compile::SOAP::WSA>)
 
 =over 4
 
-=item $obj-E<gt>B<wsdl11Init>(WSDL, ARGS)
+=item $obj-E<gt>B<wsdl11Init>($wsdl, $args)
 
-=item XML::Compile::SOAP::Extension-E<gt>B<wsdl11Init>(WSDL, ARGS)
+=item XML::Compile::SOAP::Extension-E<gt>B<wsdl11Init>($wsdl, $args)
 
-Do not use this hook for adding WSDLs or Schemas, unless those are
-used to interpret WSDL or SOAP files.
+Do not use this hook for adding WSDLs or schemas, unless those are
+used to interpret $wsdl or SOAP files correctly.
 
 =back
 
@@ -45,18 +45,37 @@ used to interpret WSDL or SOAP files.
 
 =over 4
 
-=item $obj-E<gt>B<soap11ClientWrapper>(OPERATION, CALL, ARGS)
+=item $obj-E<gt>B<soap11ClientWrapper>($operation, $call, $args)
 
-=item $obj-E<gt>B<soap11HandlerWrapper>(OPERATION, CALLBACK, ARGS)
+=item $obj-E<gt>B<soap11HandlerWrapper>($operation, $callback, $args)
 
 Called before the handler is created, to influence the encoder and
 decoder. Returned is a wrapped callback, or the same.
 
-=item $obj-E<gt>B<soap11OperationInit>(OPERATION, ARGS)
+=item $obj-E<gt>B<soap11OperationInit>($operation, $args)
 
-=item XML::Compile::SOAP::Extension-E<gt>B<soap11OperationInit>(OPERATION, ARGS)
+=item XML::Compile::SOAP::Extension-E<gt>B<soap11OperationInit>($operation, $args)
 
-ARGS is a reference.
+$args is a reference.
+
+=back
+
+=head2 SOAP12
+
+=over 4
+
+=item $obj-E<gt>B<soap12ClientWrapper>($operation, $call, $args)
+
+=item $obj-E<gt>B<soap12HandlerWrapper>($operation, $callback, $args)
+
+Called before the handler is created, to influence the encoder and
+decoder. Returned is a wrapped callback, or the same.
+
+=item $obj-E<gt>B<soap12OperationInit>($operation, $args)
+
+=item XML::Compile::SOAP::Extension-E<gt>B<soap12OperationInit>($operation, $args)
+
+$args is a reference.
 
 =back
 
@@ -66,12 +85,13 @@ ARGS is a reference.
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -93,7 +113,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -156,12 +156,13 @@ In your program, you typically start with
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -183,7 +184,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,26 +7,45 @@ use strict;
 
 package XML::Compile::SOAP::Operation;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 
 use Log::Report 'xml-report-soap', syntax => 'SHORT';
-use List::Util  'first';
 
 use XML::Compile::Util       qw/pack_type unpack_type/;
 use XML::Compile::SOAP::Util qw/:wsdl11/;
 
+use File::Spec     ();
+use List::Util     qw(first);
+use File::Basename qw(dirname);
+
+my %servers =
+  ( BEA =>          # Oracle's BEA
+      { xsddir => 'bea'
+      , xsds   => [ qw(bea_wli_sb_context.xsd bea_wli_sb_context-fix.xsd) ]
+      }
+  , SharePoint =>   # MicroSoft's SharePoint
+      { xsddir => 'sharepoint'
+      , xsds   => [ qw(sharepoint-soap.xsd sharepoint-serial.xsd) ]
+      }
+  , 'XML::Compile::Daemon' =>  # my own server implementation
+      { xsddir => 'xcdaemon'
+      , xsds   => [ qw(xcdaemon.xsd) ]
+      }
+  );
+
 
 sub new(@) { my $class = shift; (bless {}, $class)->init( {@_} ) }
 
 sub init($)
 {   my ($self, $args) = @_;
-    $self->{kind}     = $args->{kind} or die;
-    $self->{name}     = $args->{name} or die;
-    $self->{schemas}  = $args->{schemas} or die;
+    $self->{kind} = $args->{kind} or panic;
+    $self->{name} = $args->{name} or panic;
+    $self->{schemas} = $args->{schemas} or panic;
+    $self->_server_type($args->{server_type});
 
     $self->{transport} = $args->{transport};
-    $self->{action}   = $args->{action};
+    $self->{action}    = $args->{action};
 
     my $ep = $args->{endpoints} || [];
     my @ep = ref $ep eq 'ARRAY' ? @$ep : $ep;
@@ -41,6 +60,30 @@ sub init($)
     $self;
 }
 
+sub registered
+{   # This cannot be resolved via dependencies, because that causes
+    # a dependency cycle which CPAN.pm cannot handle.  This method was
+    # always called in <3.00 and moved to ::SOAP in >= 3.00
+    error "You need to upgrade XML::Compile::WSDL11 to at least 3.00";
+}
+
+sub _server_type($)
+{   my ($self, $type) = @_;
+    $type or return;
+
+    my $schemas = $self->schemas;
+    return if $schemas->{"did_init_server_$type"}++;
+
+    my $def    = $servers{$type}
+        or error __x"soap server type `{type}' is not supported (yet), please contribute"
+          , type => $type;
+
+    my $xsddir = File::Spec->catdir(dirname(__FILE__), 'xsd', $def->{xsddir});
+    $schemas->importDefinitions(File::Spec->catfile($xsddir, $_))
+        for @{$def->{xsds}};
+}
+
+#----------------
 
 sub schemas()   {shift->{schemas}}
 sub kind()      {shift->{kind}}
@@ -112,21 +155,16 @@ sub compileTransporter(@)
 sub compileClient(@)  { panic "not implemented" }
 sub compileHandler(@) { panic "not implemented" }
 
+#---------------
 
-{   my (%registered, %envelope);
-    sub register($)
-    { my ($class, $uri, $env) = @_;
-      $registered{$uri} = $class;
-      $envelope{$env}   = $class if $env;
-    }
-    sub plugin($)       { $registered{$_[1]} }
-    sub fromEnvelope($) { $envelope{$_[1]} }
-    sub registered($)   { values %registered }
+sub explain($$$@)
+{   my ($self, $wsdl, $format, $dir, %args) = @_;
+    panic "not implemented for ".ref $self;
 }
 
 
-sub explain($$$@)
-{   my ($self, $wsdl, $format, $dir, %args) = @_;
+sub parsedWSDL(%)
+{   my $self = shift;
     panic "not implemented for ".ref $self;
 }
 
@@ -27,15 +27,16 @@ a server.
 
 =over 4
 
-=item XML::Compile::SOAP::Operation-E<gt>B<new>(OPTIONS)
+=item XML::Compile::SOAP::Operation-E<gt>B<new>(%options)
 
- -Option   --Default
-  action     undef
-  endpoints  []
-  kin        <required>
-  nam        <required>
-  schemas    <required>
-  transport  'HTTP'
+ -Option     --Default
+  action       undef
+  endpoints    []
+  kin          <required>
+  nam          <required>
+  schemas      <required>
+  server_type  undef
+  transport    'HTTP'
 
 =over 2
 
@@ -59,6 +60,13 @@ two by a client.
 
 =item schemas => XML::Compile::Cache
 
+=item server_type => NAME
+
+Most server implementations show some problems.  Also, servers may produce
+responses using their own namespaces (like for error codes).  When you know
+which server you are talking to, the quircks of the specific server type can
+be loaded.  Read more in the L<XML::Compile::SOAP/"Supported servers">.
+
 =item transport => URI|'HTTP'
 
 C<HTTP> is short for C<http://schemas.xmlsoap.org/soap/http/>, which
@@ -118,14 +126,14 @@ server). The C<OUTPUT> is used by the server in its message back.
 
 =over 4
 
-=item $obj-E<gt>B<compileClient>(OPTIONS)
+=item $obj-E<gt>B<compileClient>(%options)
 
 Returns one CODE reference which handles the conversion from a perl
 data-structure into a request message, the transmission of the
 request, the receipt of the answer, and the decoding of that answer
 into a Perl data-structure.
 
-=item $obj-E<gt>B<compileHandler>(OPTIONS)
+=item $obj-E<gt>B<compileHandler>(%options)
 
 Returns a code reference which translates in incoming XML message
 into Perl a data-structure, then calls the callback.  The result of
@@ -140,7 +148,7 @@ the callback is encoded from Perl into XML and returned.
 
 =back
 
-=item $obj-E<gt>B<compileTransporter>(OPTIONS)
+=item $obj-E<gt>B<compileTransporter>(%options)
 
 Create the transporter code for a certain specific target.
 
@@ -172,9 +180,10 @@ DETAILs chapter in the L<XML::Compile::Transport|XML::Compile::Transport> manual
 
 The routine which will be used to exchange the data with the server.
 This code is created by an L<XML::Compile::Transport::compileClient()|XML::Compile::Transport/"Handlers">
-extension. By default, a transporter compatible to the protocol
-is created.  However, in most cases you want to reuse one (HTTP1.1)
-connection to a server.
+extension.
+
+By default, a transporter compatible to the protocol is created.  However,
+in most cases you want to reuse one (HTTP1.1) connection to a server.
 
 =back
 
@@ -184,29 +193,46 @@ connection to a server.
 
 =over 4
 
-=item $obj-E<gt>B<explain>(WSDL, FORMAT, DIRECTION, OPTIONS)
+=item $obj-E<gt>B<explain>($wsdl, $format, $direction, %options)
 
 Dump an annotated structure showing how the operation works, helping
-developers to understand the schema. FORMAT is C<PERL> or C<XML>.
+developers to understand the schema. $format is C<PERL> or C<XML>.
 
-The DIRECTION is C<INPUT>, it will return the message which the client
+The $direction is C<INPUT>, it will return the message which the client
 sends to the server (input for the server). The C<OUTPUT> message is
 sent as response by the server.
 
-=item XML::Compile::SOAP::Operation-E<gt>B<register>(URI, ENVNS)
+=item $obj-E<gt>B<parsedWSDL>(%options)
+
+[2.29] For some purposes, it is useful to get access to the parsed WSDL
+structure.
+
+B<Be aware> that the structure returned is consided "internal"
+and strongly influenced by behavior of L<XML::Compile|XML::Compile>; backwards
+compatibility will not be maintained at all cost.
+
+You can use L<XML::Compile::Schema::template()|XML::Compile::Schema/"Compilers"> format C<TREE> to get
+more details about the element types mentioned in this structure.
+
+example: 
+
+  use Data::Dumper;
+  $Data::Dumper::Indent    = 1;
+  $Data::Dumper::Quotekeys = 0;
 
-Declare an operation type, but WSDL specific URI and envelope namespace.
+  print Dumper $op->parsedWSDL;
 
 =back
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -228,7 +254,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,7 +7,7 @@ use strict;
 
 package XML::Compile::SOAP::Server;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 
 use Log::Report 'xml-compile-soap', syntax => 'SHORT';
@@ -99,10 +99,9 @@ sub compileHandler(@)
 sub compileFilter(@)
 {   my ($self, %args) = @_;
     my $nodetype;
-    if(my $first    = $args{body}{parts}[0])
+    if(my $first  = $args{body}{parts}[0])
     {   $nodetype = $first->{element}
-#           or panic "cannot handle type parameter in server filter";
-            || $args{body}{procedure};  # rpc-literal "type"
+          || $args{body}{procedure};  # rpc-literal "type"
     }
 
     # called with (XML, INFO)
@@ -40,7 +40,7 @@ base class.  The primary must contain the C<new>.
 
 =over 4
 
-=item XML::Compile::SOAP::Server-E<gt>B<new>(OPTIONS)
+=item XML::Compile::SOAP::Server-E<gt>B<new>(%options)
 
  -Option--Default
   role    'NEXT'
@@ -75,7 +75,7 @@ Returns the URI of the role (actor) of this server.
 
 =over 4
 
-=item $obj-E<gt>B<compileFilter>(OPTIONS)
+=item $obj-E<gt>B<compileFilter>(%options)
 
 This routine returns a CODE reference which can be used for
 L<compileHandler(selector)|XML::Compile::SOAP::Server/"Actions">; so see whether a certain message has arrived.
@@ -96,7 +96,7 @@ On the moment, only the first C<body> element is used to determine that.
 
 =back
 
-=item $obj-E<gt>B<compileHandler>(OPTIONS)
+=item $obj-E<gt>B<compileHandler>(%options)
 
 Returns an HTTP status code and an XML::LibXML::Document pair.
 
@@ -160,12 +160,13 @@ Returns a CODE reference which can be used to produce faults.
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -187,7 +188,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,7 +7,7 @@ use strict;
 
 package XML::Compile::SOAP::Trace;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 
 use Log::Report 'xml-compile-soap', syntax => 'REPORT';
@@ -7,7 +7,7 @@ XML::Compile::SOAP::Trace - help displaying trace details.
 =head1 SYNOPSIS
 
  my ($answer, $trace) = $call->(%params);
- #now $trace is a XML::Compile::SOAP::Trace
+ # now $trace is a XML::Compile::SOAP::Trace
 
  my $req = $trace->request;   # HTTP message which was sent
  my $res = $trace->response;  # HTTP message received
@@ -16,6 +16,7 @@ XML::Compile::SOAP::Trace - help displaying trace details.
  my $dura  = $trace->elapse;
 
  $trace->printTimings;
+ $trace->printErrors;
  $trace->printTimings(\*STDERR);
  $trace->printRequest(pretty_print => 1);
  $trace->printResponse;
@@ -31,7 +32,7 @@ as produced by a SOAP call (client side).
 
 =over 4
 
-=item XML::Compile::SOAP::Trace-E<gt>B<new>(OPTIONS)
+=item XML::Compile::SOAP::Trace-E<gt>B<new>(%options)
 
 Called by the SOAP call implementation; not for normal users.
 
@@ -46,7 +47,7 @@ Called by the SOAP call implementation; not for normal users.
 Returns the date string which represent the moment that the call
 was initiated.
 
-=item $obj-E<gt>B<elapse>([KIND])
+=item $obj-E<gt>B<elapse>( [$kind] )
 
 Returns the time in seconds (with hires, sub-second detail) of a part of
 the SOAP communication. Some values may be C<undef>.  Elapse without
@@ -66,14 +67,14 @@ example:
 
  print $trace->elapse('decode');
 
-=item $obj-E<gt>B<error>([ERROR])
+=item $obj-E<gt>B<error>( [$error] )
 
 Often contains an error message, when something went wrong.  The message
 is returned as Log::Report::Exception.  Only the first error is returned,
 use L<errors()|XML::Compile::SOAP::Trace/"Accessors"> to get all.
 
-[2.31] When an ERROR is provided, it is added to the internal list of errors.
-The ERROR parameter may be a Log::Report::Exception, a
+[2.31] When an $error is provided, it is added to the internal list of errors.
+The $error parameter may be a Log::Report::Exception, a
 Log::Report::Message or a simple string.
 
 =item $obj-E<gt>B<errors>()
@@ -110,13 +111,13 @@ that the call was initiated.  See Time::HiRes method C<time>.
 
 =over 4
 
-=item $obj-E<gt>B<printErrors>([FILEHANDLE])
+=item $obj-E<gt>B<printErrors>( [$fh] )
 
 The filehandle defaults to STDERR.
 
 If you want to see more output, try adding C<<use Log::Report mode => 3;>>
 
-=item $obj-E<gt>B<printRequest>([FILEHANDLE], OPTIONS)
+=item $obj-E<gt>B<printRequest>( [$fh], %options )
 
  -Option      --Default
   pretty_print  0
@@ -130,7 +131,7 @@ the messages to be shown readible.
 
 =back
 
-=item $obj-E<gt>B<printResponse>([FILEHANDLE], OPTIONS)
+=item $obj-E<gt>B<printResponse>( [$fh], %options )
 
  -Option      --Default
   pretty_print  0
@@ -144,7 +145,7 @@ the messages to be shown readible.
 
 =back
 
-=item $obj-E<gt>B<printTimings>([FILEHANDLE])
+=item $obj-E<gt>B<printTimings>( [$fh] )
 
 Print an overview on various timings to the selected filehandle.
 
@@ -152,12 +153,13 @@ Print an overview on various timings to the selected filehandle.
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -179,7 +181,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,14 +7,14 @@ use strict;
 
 package XML::Compile::SOAP::Util;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 use base 'Exporter';
 
 my @soap10 = qw/SOAP11HTTP WSDL11HTTP WSDL11MIME SOAP11ENV/;
 my @soap11 = qw/SOAP11ENV SOAP11ENC SOAP11NEXT SOAP11HTTP WSDL11SOAP/;
 my @wsdl11 = qw/WSDL11 WSDL11SOAP WSDL11HTTP WSDL11MIME WSDL11SOAP12/;
-my @daemon = qw/MSEXT/;
+my @daemon = qw/MSEXT XC_DAEMON_NS/;
 my @xop10  = qw/XOP10 XMIME10 XMIME11/;
 
 our @EXPORT_OK = (@soap10, @soap11, @wsdl11, @daemon, @xop10);
@@ -45,7 +45,11 @@ use constant
   };
  
 
-use constant MSEXT          => SOAP11ENV;
+use constant
+  { MSEXT           => SOAP11ENV
+  , XS_DAEMON_NS    => 'http://perl.org/xml-schemas/xml-compile-daemon/1.0'
+  };
+
 
 
 use constant
@@ -36,6 +36,9 @@ C<WSDL11SOAP12>.
 The export TAG C<:daemon> refers currently only to the constant C<MSEXT>,
 which refers to the MicroSoft Extension Framework namespace.
 
+Besides, this tag also defines namespaces for server implementations:
+C<XC_DAEMON_NS> refers to the L<XML::Compile::SOAP::Daemon|XML::Compile::SOAP::Daemon> server.
+
 =pod
 
 The export TAG C<:xop10> refers to C<XOP10>, C<XMIME10> and C<XMIME11>
@@ -46,12 +49,13 @@ The export TAG C<:xop10> refers to C<XOP10>, C<XMIME10> and C<XMIME11>
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -73,7 +77,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -0,0 +1,8 @@
+Context schema found at
+http://docs.oracle.com/cd/E13171_01/alsb/docs21/consolehelp/context.html#1060634
+
+Error codes explained at
+ http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/consolehelp/errorcodes.html
+
+More
+http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/context.html#wp1051816
@@ -0,0 +1,24 @@
+<schema targetNamespace="http://www.bea.com/wli/sb/context"
+        xmlns:mc="http://www.bea.com/wli/sb/context"
+        xmlns="http://www.w3.org/2001/XMLSchema"
+        elementFormDefault="qualified"
+        attributeFormDefault="unqualified">
+
+    <complexType name="LocationType">
+        <all>
+            <element name="node" type="string" minOccurs="0" />
+            <element name="pipeline" type="string" minOccurs="0" />
+            <element name="stage" type="string" minOccurs="0" />
+            <element name="error-handler" type="boolean" minOccurs="0" />
+
+    <!-- MO 2014-01-05:
+         used in routing errors, and in many examples on internet, but
+         not in the schema
+      -->
+            <element name="path" type="string" minOccurs="0" />
+
+        </all>
+    </complexType>
+    <!-- Encapsulates any stack-traces that may be added to a fault <details> -->
+    <element name="stack-trace" type="string"/>
+</schema>
@@ -0,0 +1,178 @@
+<schema targetNamespace="http://www.bea.com/wli/sb/context"
+        xmlns:mc="http://www.bea.com/wli/sb/context"
+        xmlns="http://www.w3.org/2001/XMLSchema"
+        elementFormDefault="qualified"
+        attributeFormDefault="unqualified">
+    <!--============================================================== -->
+
+    <!-- The context variable 'fault' is an instance of this element -->
+    <element name="fault" type="mc:FaultType"/>
+
+    <!-- The context variables 'inbound' and 'outbound' are instances of this element -->
+    <element name="endpoint" type="mc:EndpointType"/>
+
+    <!-- The three sub-elements within the 'inbound' and 'outbound' variables -->
+    <element name="service" type="mc:ServiceType"/>
+    <element name="transport" type="mc:TransportType"/>
+    <element name="security" type="mc:SecurityType"/>
+
+    <!-- The context variable 'attachments' is an instance of this element -->
+    <element name="attachments" type="mc:AttachmentsType"/>
+
+    <!-- Each attachment in the 'attachments' variable is represented by an instance of this element -->
+    <element name="attachment" type="mc:AttachmentType"/>
+
+    <!-- Element used to represent binary payloads and pass-by reference content -->
+    <element name="binary-content" type="mc:BinaryContentType"/>
+
+    <!-- =================================================================== -->
+
+    <!-- The schema type for  -->
+    <complexType name="AttachmentsType">
+        <sequence>
+            <!-- the 'attachments' variable is just a series of attachment elements -->
+            <element ref="mc:attachment" minOccurs="0" maxOccurs="unbounded"/>
+        </sequence>
+    </complexType>
+    
+    <complexType name="AttachmentType">
+        <all>
+            <!-- Set of MIME headers associated with attachment -->
+            <element name="Content-ID" type="string" minOccurs="0"/>
+            <element name="Content-Type" type="string" minOccurs="0"/>
+            <element name="Content-Transfer-Encoding" type="string" minOccurs="0"/>
+            <element name="Content-Description" type="string" minOccurs="0"/>
+            <element name="Content-Location" type="string" minOccurs="0"/>
+            <element name="Content-Disposition" type="string" minOccurs="0"/>
+
+            <!-- Contains the attachment content itself, either in-lined or as <binary-content/> -->
+            <element name="body" type="anyType"/>
+        </all>
+    </complexType>
+
+    <complexType name="BinaryContentType">
+        <!-- URI reference to the binary or pass-by-reference payload -->
+        <attribute name="ref" type="anyURI" use="required"/>
+    </complexType>
+
+    <!-- =================================================================== -->
+
+    <complexType name="EndpointType">
+        <all>
+            <!-- Sub-elements holding service, transport, and security details for the endpoint -->
+            <element ref="mc:service" minOccurs="0" />
+            <element ref="mc:transport" minOccurs="0" />
+            <element ref="mc:security" minOccurs="0" />
+        </all>
+
+        <!-- Fully-qualified name of the service represented by this endpoint -->
+        <attribute name="name" type="string" use="required"/>
+    </complexType>
+
+    <!-- =================================================================== -->
+
+    <complexType name="ServiceType">
+        <all>
+            <!-- name of service provider -->
+            <element name="providerName" type="string" minOccurs="0"/>
+
+            <!-- the service operation being invoked -->
+            <element name="operation" type="string" minOccurs="0"/>
+        </all>
+    </complexType>
+
+    <!-- =================================================================== -->
+
+    <complexType name="TransportType">
+        <all>
+            <!-- URI of endpoint -->
+            <element name="uri" type="anyURI" minOccurs="0" />
+
+            <!-- Transport-specific metadata for request and response (includes transport headers) -->
+            <element name="request" type="anyType" minOccurs="0"/>
+            <element name="response" type="anyType" minOccurs="0" />
+
+            <!-- Indicates one-way (request only) or bi-directional (request/response) communication -->
+            <element name="mode" type="mc:ModeType" minOccurs="0" />
+
+            <!-- Specifies the quality of service -->
+            <element name="qualityOfService" type="mc:QoSType" minOccurs="0" />
+
+            <!-- Retry values (outbound only) -->
+            <element name="retryInterval" type="integer" minOccurs="0" />
+            <element name="retryCount" type="integer" minOccurs="0" />
+        </all>
+    </complexType>
+
+    <simpleType name="ModeType">
+        <restriction base="string">
+            <enumeration value="request"/>
+            <enumeration value="request-response"/>
+        </restriction>
+    </simpleType>
+
+    <simpleType name="QoSType">
+        <restriction base="string">
+            <enumeration value="best-effort"/>
+            <enumeration value="exactly-once"/>
+        </restriction>
+    </simpleType>
+
+    <!-- =================================================================== -->
+
+    <complexType name="SecurityType">
+        <all>
+            <!-- Transport-level client information (inbound only) -->
+            <element name="transportClient" type="mc:SubjectType" minOccurs="0"/>
+
+            <!-- Message-level client information (inbound only) -->
+            <element name="messageLevelClient" type="mc:SubjectType" minOccurs="0"/>
+            
+            <!-- Boolean flag used to disable outbound WSS processing (outbound only) -->
+            <element name="doOutboundWss" type="boolean" minOccurs="0"/>
+        </all>
+    </complexType>
+
+    <complexType name="SubjectType">
+        <all>
+            <!-- User name associated with this tranport- or message-level subject -->
+            <element name="username" type="string"/>
+        </all>
+    </complexType>
+
+    <!-- =================================================================== -->
+
+    <complexType name="FaultType">
+        <all>
+            <!-- A short string identifying the error (e.g. BEA38229) -->
+            <element name="errorCode" type="string"/>
+
+            <!-- Descriptive text explaining the reason for the error -->
+            <element name="reason" type="string" minOccurs="0" />
+
+            <!-- Any additional details about the error  -->
+            <element name="details" type="anyType" minOccurs="0" />
+
+            <!-- Information about where the error occured in the proxy -->
+            <element name="location" type="mc:LocationType" minOccurs="0" />
+        </all>
+    </complexType>
+
+    <complexType name="LocationType">
+        <all>
+            <!-- Name of the Pipeline/Branch/Route node where error occured -->
+            <element name="node" type="string" minOccurs="0" />
+
+            <!-- Name of the Pipeline where error occured (if applicable) -->
+            <element name="pipeline" type="string" minOccurs="0" />
+
+            <!-- Name of the Stage where error occured (if applicable) -->
+            <element name="stage" type="string" minOccurs="0" />
+
+            <!-- Indicates if error occured from inside an error handler -->
+            <element name="error-handler" type="boolean" minOccurs="0" />
+        </all>
+    </complexType>
+    <!-- Encapsulates any stack-traces that may be added to a fault <details> -->
+    <element name="stack-trace" type="string"/>
+</schema>
@@ -0,0 +1,3 @@
+2014/01/10: Schemas found at
+  http://msdn.microsoft.com/en-us/library/dn293101%28v=office.12%29.aspx
+  http://msdn.microsoft.com/en-us/library/dn293112%28v=office.12%29.aspx
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="anyType" nillable="true" type="xs:anyType"/>
+  <xs:element name="anyURI" nillable="true" type="xs:anyURI"/>
+  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/>
+  <xs:element name="boolean" nillable="true" type="xs:boolean"/>
+  <xs:element name="byte" nillable="true" type="xs:byte"/>
+  <xs:element name="dateTime" nillable="true" type="xs:dateTime"/>
+  <xs:element name="decimal" nillable="true" type="xs:decimal"/>
+  <xs:element name="double" nillable="true" type="xs:double"/>
+  <xs:element name="float" nillable="true" type="xs:float"/>
+  <xs:element name="int" nillable="true" type="xs:int"/>
+  <xs:element name="long" nillable="true" type="xs:long"/>
+  <xs:element name="QName" nillable="true" type="xs:QName"/>
+  <xs:element name="short" nillable="true" type="xs:short"/>
+  <xs:element name="string" nillable="true" type="xs:string"/>
+  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/>
+  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/>
+  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/>
+  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/>
+  <xs:element name="char" nillable="true" type="tns:char"/>
+  <xs:simpleType name="char">
+    <xs:restriction base="xs:int"/>
+  </xs:simpleType>
+  <xs:element name="duration" nillable="true" type="tns:duration"/>
+  <xs:simpleType name="duration">
+    <xs:restriction base="xs:duration">
+      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/>
+      <xs:minInclusive value="-P10675199DT2H48M5.4775808S"/>
+      <xs:maxInclusive value="P10675199DT2H48M5.4775807S"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="guid" nillable="true" type="tns:guid"/>
+  <xs:simpleType name="guid">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:attribute name="FactoryType" type="xs:QName"/>
+  <xs:attribute name="Id" type="xs:ID"/>
+  <xs:attribute name="Ref" type="xs:IDREF"/>
+</xs:schema>
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:tns1="http://schemas.microsoft.com/sharepoint/soap/" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="GetAppManagementDatabaseMap">
+    <xs:complexType>
+      <xs:sequence/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetAppManagementDatabaseMapResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" name="GetAppManagementDatabaseMapResult" nillable="true" type="tns1:ArrayOfAppMngMapEntryData"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:complexType name="ArrayOfAppMngMapEntryData">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="AppMngMapEntryData" nillable="true" type="tns1:AppMngMapEntryData"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfAppMngMapEntryData" nillable="true" type="tns1:ArrayOfAppMngMapEntryData"/>
+  <xs:complexType name="AppMngMapEntryData">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="CompositeKeyEnd" nillable="true" type="xs:base64Binary"/>
+      <xs:element minOccurs="0" name="CompositeKeyStart" nillable="true" type="xs:base64Binary"/>
+      <xs:element minOccurs="0" name="ConnectionString" nillable="true" type="xs:string"/>
+      <xs:element minOccurs="0" name="IsSqlAzure" type="xs:boolean"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="AppMngMapEntryData" nillable="true" type="tns1:AppMngMapEntryData"/>
+  <xs:complexType name="AppManagementServiceFault">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="Message" nillable="true" type="xs:string"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="AppManagementServiceFault" nillable="true" type="tns1:AppManagementServiceFault"/>
+</xs:schema>
@@ -0,0 +1,29 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+  version="1.0.0"
+  xmlns:tns="http://perl.org/xml-schemas/xml-compile-daemon/1.0"
+  targetNamespace="http://perl.org/xml-schemas/xml-compile-daemon/1.0"
+  schemaLocation="http://perl.overmeer.net/schemas/xc-daemon/1.0.xsd"
+  elementFormDefault="qualified"
+  attributeFormDefault="unqualified">
+
+<!-- SOAP 1.2 Subcode values -->
+<simpleType name="server-fault-codes">
+  <restriction base="QName">
+    <enumeration value="tns:validationFailed" />
+    <enumeration value="tns:invalidResponse"  />
+    <enumeration value="tns:notImplemented"   />
+    <enumeration value="tns:noAnswerProduced" />
+    <enumeration value="tns:notRecognized"    />
+  </restriction>
+</simpleType>
+
+<!-- SOAP Fault details/Details content -->
+<complexType name="internal-error">
+  <sequence>
+    <element name="level" type="token"  />
+    <element name="error" type="string" />
+    <element name="trace" type="string" minOccurs="0" />
+  </sequence>
+</complexType>
+
+</schema>
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,12 +7,12 @@ use strict;
 
 package XML::Compile::SOAP;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 
 use Log::Report          'xml-compile-soap';
 use XML::Compile         ();
-use XML::Compile::Util   qw/pack_type unpack_type type_of_node/;
+use XML::Compile::Util   qw(SCHEMA2001 SCHEMA2001i unpack_type type_of_node);
 use XML::Compile::Cache  ();
 use XML::Compile::SOAP::Util qw/:xop10/;
 
@@ -34,11 +34,11 @@ sub new($@)
 
 sub init($)
 {   my ($self, $args) = @_;
-    $self->{mimens}  = $args->{media_type} || 'application/soap+xml';
+    $self->{XCS_mime}   = $args->{media_type} || 'application/soap+xml';
 
-    my $schemas = $self->{schemas} = $args->{schemas}
+    my $schemas = $self->{XCS_schemas} = $args->{schemas}
      || XML::Compile::Cache->new(allow_undeclared => 1
-        , any_element => 'ATTEMPT', any_attribute => 'ATTEMPT');
+          , any_element => 'ATTEMPT', any_attribute => 'ATTEMPT');
 
     UNIVERSAL::isa($schemas, 'XML::Compile::Cache')
         or panic "schemas must be a Cache object";
@@ -46,15 +46,36 @@ sub init($)
     $self;
 }
 
+sub _initSOAP($)
+{   my ($thing, $schemas) = @_;
+    return $thing
+        if $schemas->{did_init_SOAP}++;   # ugly
 
-sub name()    {shift->{name}}
-sub version() {panic "not implemented"}
+    $schemas->addPrefixes(xsd => SCHEMA2001, xsi => SCHEMA2001i);
+    $thing;
+}
 
 
-sub schemas() {shift->{schemas}}
+{   my (%registered, %envelope);
+    sub register($)
+    { my ($class, $uri, $env, $opclass) = @_;
+      $registered{$uri} = $class;
+      $envelope{$env}   = $opclass if $env;
+    }
+    sub plugin($)       { $registered{$_[1]} }
+    sub fromEnvelope($) { $envelope{$_[1]} }
+    sub registered($)   { values %registered }
+}
 
 #--------------------
 
+sub version()   {panic "not implemented"}
+sub mediaType() {shift->{XCS_mime}}
+
+
+sub schemas() {shift->{XCS_schemas}}
+
+#--------------------
 
 sub compileMessage($@)
 {   my ($self, $direction, %args) = @_;
@@ -110,19 +131,20 @@ sub _sender(@)
     my ($body,  $blabels) = $args{create_body}
        ? $args{create_body}->($self, %args)
        : $self->_writer_body(\%args);
-    my ($faults,$flabels) = $self->_writer_faults(\%args, $args{faults});
+    my ($faults, $flabels) = $self->_writer_faults(\%args, $args{faults});
 
-    my ($header,$hlabels) = $self->_writer_header(\%args);
-    push @$hooks, $self->_writer_hook('SOAP-ENV:Header', @$header);
+    my ($header, $hlabels) = $self->_writer_header(\%args);
+    push @$hooks, $self->_writer_hook($self->envType('Header'), @$header);
 
     my $style = $args{style} || 'none';
     if($style eq 'document')
-    {   push @$hooks, $self->_writer_hook('SOAP-ENV:Body', @$body, @$faults);
+    {   push @$hooks, $self->_writer_hook($self->envType('Body')
+          , @$body, @$faults);
     }
     elsif($style eq 'rpc')
     {   my $procedure = $args{procedure} || $args{body}{procedure}
             or error __x"sending operation requires procedure name with RPC";
-        push @$hooks, $self->_writer_rpc_hook('SOAP-ENV:Body'
+        push @$hooks, $self->_writer_rpc_hook($self->envType('Body')
           , $procedure, $body, $faults);
     }
     else
@@ -133,7 +155,7 @@ sub _sender(@)
     # Pack everything together in one procedure
     #
 
-    my $envelope = $self->_writer('SOAP-ENV:Envelope', %args);
+    my $envelope = $self->_writer($self->envType('Envelope'), %args);
 
     sub
     {   my ($values, $charset) = ref $_[0] eq 'HASH' ? @_ : ( {@_}, undef);
@@ -167,8 +189,11 @@ sub _sender(@)
 
         @mtom = ();   # filled via hook
 
+#use Data::Dumper;
+#warn Dumper \%data;
         my $root = $envelope->($doc, \%data)
             or return;
+
         $doc->setDocumentElement($root);
 
         return ($doc, \@mtom)
@@ -262,7 +287,7 @@ sub _writer_header($)
     my (@rules, @hlabels);
 
     my $header  = $args->{header} || [];
-    my $soapenv = $self->_envNS;
+    my $soapenv = $self->envelopeNS;
 
     foreach my $h (ref $header eq 'ARRAY' ? @$header : $header)
     {   my $part    = $h->{parts}[0];
@@ -283,7 +308,7 @@ sub _writer_body($)
 {   my ($self, $args) = @_;
     my (@rules, @blabels);
 
-    my $body  = $args->{body};
+    my $body  = $args->{body} || $args->{fault};
     my $use   = $body->{use} || 'literal';
     $use eq 'literal'
         or error __x"RPC encoded not supported by this version";
@@ -316,7 +341,7 @@ sub _writer_body($)
 sub _writer_body_element($$)
 {   my ($self, $args, $part) = @_;
     my $element = $part->{element};
-    my $soapenv = $self->_envNS;
+    my $soapenv = $self->envelopeNS;
 
     $part->{writer}
        ||= $self->_writer($element, %$args, elements_qualified => 'TOP'
@@ -333,7 +358,7 @@ sub _writer_body_type($$)
     return $part->{writer}
         if $part->{writer};
 
-    my $soapenv = $self->_envNS;
+    my $soapenv = $self->envelopeNS;
 
     $part->{writer} =
         $self->schemas->compileType
@@ -400,15 +425,15 @@ sub _receiver(@)
 
     my @hooks  = @{$self->{hooks} || []};
     push @hooks
-      , $self->_reader_hook('SOAP-ENV:Header', $header)
-      , $self->_reader_hook('SOAP-ENV:Body',   $body  );
+      , $self->_reader_hook($self->envType('Header'), $header)
+      , $self->_reader_hook($self->envType('Body'),   $body  );
 
     #
     # Pack everything together in one procedure
     #
 
-    my $envelope = $self->_reader('SOAP-ENV:Envelope', %args
-      , hooks  => \@hooks);
+    my $envelope = $self->_reader($self->envType('Envelope')
+      , %args, hooks => \@hooks);
 
     # add simplified fault information
     my $faultdec = $self->_reader_faults(\%args, $args{faults});
@@ -430,8 +455,8 @@ sub _receiver(@)
 
 sub _reader_hook($$)
 {   my ($self, $type, $do) = @_;
-    my %trans = map { ($_->[1] => [ $_->[0], $_->[2] ]) } @$do; # we need copies
-    my $envns = $self->_envNS;
+    my %trans = map +($_->[1] => [ $_->[0], $_->[2] ]), @$do; # we need copies
+    my $envns = $self->envelopeNS;
 
     my $code  = sub
      {  my ($xml, $trans, $path, $label) = @_;
@@ -440,13 +465,17 @@ sub _reader_hook($$)
         {   next unless $child->isa('XML::LibXML::Element');
             my $type = type_of_node $child;
             if(my $t = $trans{$type})
-            {   my $v = $t->[1]->($child);
-                $h{$t->[0]} = $v if defined $v;
+            {   my ($label, $code) = @$t;
+                my $v = $code->($child) or next;
+                   if(!defined $v)        { }
+                elsif(!exists $h{$label}) { $h{$label} = $v }
+                elsif(ref $h{$label} eq 'ARRAY') { push @{$h{$label}}, $v }
+                else { $h{$label} = [ $h{$label}, $v ] }
                 next;
             }
             else
             {   $h{$type} = $child;
-                trace __x"node {type} not understood, expect from {has}",
+                trace __x"node {type} not understood, expected are {has}",
                     type => $type, has => [sort keys %trans];
             }
 
@@ -590,8 +619,8 @@ sub _reader_xop_hook($)
    +{ type => 'xsd:base64Binary', replace => $xop_merge };
 }
 
-sub _reader(@) { my $self = shift; $self->{schemas}->reader(@_) }
-sub _writer(@) { my $self = shift; $self->{schemas}->writer(@_) }
+sub _reader(@) { shift->schemas->reader(@_) }
+sub _writer(@) { shift->schemas->writer(@_) }
 
 #------------------------------------------------
 
@@ -7,13 +7,12 @@ XML::Compile::SOAP - base-class for SOAP implementations
 =head1 INHERITANCE
 
  XML::Compile::SOAP is extended by
-   XML::Compile::SOAP10
    XML::Compile::SOAP11
    XML::Compile::SOAP12
 
 =head1 SYNOPSIS
 
- ** SOAP1.1 and WSDL1.1 over HTTP
+ ** SOAP1.[12] and WSDL1.1 over HTTP
 
  # !!! The next steps are only required when you do not have
  # !!! a WSDL. See XML::Compile::WSDL11 if you have a WSDL.
@@ -83,8 +82,7 @@ XML::Compile::SOAP - base-class for SOAP implementations
 This module handles the SOAP protocol.  The first implementation is
 SOAP1.1 (F<http://www.w3.org/TR/2000/NOTE-SOAP-20000508/>), which is still
 most often used.  The SOAP1.2 definition (F<http://www.w3.org/TR/soap12/>)
-is quite different; this module tries to define a sufficiently abstract
-interface to hide the protocol differences.
+is provided via the separate distribution L<XML::Compile::SOAP12|XML::Compile::SOAP12>.
 
 Be aware that there are three kinds of SOAP:
 
@@ -119,7 +117,7 @@ and (if available) a donation.
 
 =over 4
 
-=item $obj-E<gt>B<new>(OPTIONS)
+=item $obj-E<gt>B<new>(%options)
 
 Create a new SOAP object.  You have to instantiate either the SOAP11 or
 SOAP12 sub-class of this, because there are quite some differences (which
@@ -142,13 +140,18 @@ C<'ATTEMPT'>
 
 =back
 
+=item XML::Compile::SOAP-E<gt>B<register>($uri, $envns)
+
+Declare an operation type, being an (WSDL specific) $uri and envelope
+namespace.
+
 =back
 
 =head2 Accessors
 
 =over 4
 
-=item $obj-E<gt>B<name>()
+=item $obj-E<gt>B<mediaType>()
 
 =item $obj-E<gt>B<schemas>()
 
@@ -163,7 +166,7 @@ knowledge about the types.
 
 =over 4
 
-=item $obj-E<gt>B<compileMessage>(('SENDER'|'RECEIVER'), OPTIONS)
+=item $obj-E<gt>B<compileMessage>( <'SENDER'|'RECEIVER'>, %options )
 
 The payload is defined explicitly, where all headers and bodies are
 described in detail.  When you have a WSDL file, these ENTRIES are
@@ -176,7 +179,7 @@ the type where it belongs to.  The element of an entry (the value) is
 defined as an C<any> element in the schema, and therefore you will need
 to explicitly specify the element to be processed.
 
-As OPTIONS, you can specify any listed here, but also anything which is
+As %options, you can specify any listed here, but also anything which is
 accepted by L<XML::Compile::Schema::compile()|XML::Compile::Schema/"Compilers">, like
 C<< sloppy_integers => 1 >> and hooks.  These are applied to all header
 and body elements (not to the SOAP wrappers)
@@ -259,9 +262,9 @@ Alternative for option C<role>
 
 =back
 
-=item $obj-E<gt>B<messageStructure>(XML)
+=item $obj-E<gt>B<messageStructure>($xml)
 
-=item XML::Compile::SOAP-E<gt>B<messageStructure>(XML)
+=item XML::Compile::SOAP-E<gt>B<messageStructure>($xml)
 
 Returns a HASH with some collected information from a complete SOAP
 message (XML::LibXML::Document or XML::LibXML::Element).  Currenty,
@@ -276,20 +279,20 @@ of element names which where found in the header resp. body.
 
 =over 4
 
-=item $obj-E<gt>B<replyMustUnderstandFault>(TYPE)
+=item $obj-E<gt>B<replyMustUnderstandFault>($type)
 
 Produce an error structure to be returned to the sender.
 
-=item $obj-E<gt>B<roleAbbreviation>(URI)
+=item $obj-E<gt>B<roleAbbreviation>($uri)
 
-Translate a role URI into a simple string, if predefined.  See
+Translate a role $uri into a simple string, if predefined.  See
 L<roleURI()|XML::Compile::SOAP/"Transcoding">.
 
-=item $obj-E<gt>B<roleURI>(URI|STRING)
+=item $obj-E<gt>B<roleURI>($uri|STRING)
 
 Translates actor/role/destination abbreviations into URIs. Various
 SOAP protocol versions have different pre-defined STRINGs, which can
-be abbreviated for readibility.  Returns the unmodified URI in
+be abbreviated for readibility.  Returns the unmodified $uri in
 all other cases.
 
 SOAP11 only defines C<NEXT>.  SOAP12 defines C<NEXT>, C<NONE>, and
@@ -329,6 +332,40 @@ ordered list of parameters to be passed as 'in' and 'in/out' values to the
 remote procedure.  The body of the returned message lists the result value
 of the procedure, followed by the ordered 'out' and 'in/out' parameters.
 
+=head2 Supported servers
+
+Only the commercial hype speaks about SOAP in very positive words.
+However, the "industry quality" of these modern "technologies" clearly
+demonstrates the lack of education and experience most programmers and
+designers have.  This is clearly visible in many, many bugs you will
+encounter when working with schemas and WSDLs.
+
+Interoperability of SOAP clients and servers is more "trial and error"
+and "manually fixing" than it should be.  For instance, a server may
+report internal server errors back to the client... but a WSDL does not
+tell you which namespace/schema is used for these errors.  Both BEA and
+SharePoint servers produce illegal SOAP responses!  It is a sad story.
+
+To be able to install some fixes, you can specify a server type via
+L<XML::Compile::SOAP::Operation::new(server_type)|XML::Compile::SOAP::Operation/"Constructors"> or
+L<XML::Compile::WSDL11::new(server_type)|XML::Compile::WSDL11/"Constructors">.
+The following server types are currently understood:
+
+=over 4
+
+=item * C<BEA>, Oracle
+
+=item * C<SharePoint>, MicroSoft
+
+=item * C<XML::Compile::Daemon>
+
+=back
+
+Examples:
+
+  my $wsdl = XML::Compile::WSDL11->new($wsdlfn, server_type => 'SharePoint');
+  my $op   = XML::Compile::SOAP11::Operation->new(..., server_type => 'BEA');
+
 =head2 Naming types and elements
 
 XML uses namespaces: URIs which are used as constants, grouping a set
@@ -405,12 +442,13 @@ it still works... but you may get into characterset problems and such.
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -432,7 +470,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,87 +0,0 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
-#  For other contributors see ChangeLog.
-# See the manual pages for details on the licensing terms.
-# Pod stripped from pm file by OODoc 2.01.
-use warnings;
-use strict;
-
-package XML::Compile::SOAP10::Operation;
-use vars '$VERSION';
-$VERSION = '2.38';
-
-use base 'XML::Compile::SOAP::Operation';
-
-use Log::Report 'xml-compile-soap', syntax => 'SHORT';
-use List::Util  'first';
-
-use XML::Compile::Util       qw/pack_type unpack_type/;
-use XML::Compile::SOAP::Util qw/:soap10/;
-use XML::Compile::SOAP::Extension;
-
-our $VERSION;         # OODoc adds $VERSION to the script
-$VERSION ||= 'undef';
-
-XML::Compile->knownNamespace
-  ( &WSDL11HTTP => 'wsdl-http.xsd'
-  , &WSDL11MIME => 'wsdl-mime.xsd'
-  );
-__PACKAGE__->register(WSDL11HTTP, undef);
-
-# client/server object per schema class, because initiation options
-# can be different.  Class reference is key.
-my (%soap11_client, %soap11_server);
-
-
-sub init($)
-{   my ($self, $args) = @_;
-
-    $self->SUPER::init($args);
-    $self;
-}
-
-sub _initWSDL11($)
-{   my ($class, $wsdl) = @_;
-
-    trace "initialize SOAP10 operations for WSDL11";
-
-    $wsdl->importDefinitions(WSDL11HTTP, element_form_default => 'qualified');
-    $wsdl->importDefinitions(WSDL11MIME, element_form_default => 'qualified');
-    $wsdl->addPrefixes
-      ( http => WSDL11HTTP
-      , mime => WSDL11MIME
-      );
-
-    $wsdl->declare(READER => [ "http:binding" ]);
-}
-
-sub _fromWSDL11(@)
-{   my ($class, %args) = @_;
-
-    # Extract the SOAP11 specific information from a WSDL11 file. There are
-    # half a zillion parameters.
-
-    $args{schemas}   = $args{wsdl};
-    $args{endpoints} = $args{serv_port}{http_address}{location};
-
-    my $wb           = $args{binding}{http_binding} || {};
-    $args{verb}      = $wb->{verb}   || 'POST';
-    $class->SUPER::new(%args);
-}
-
-#-------------------------------------------
-
-
-sub http_method { shift->{verb} }
-sub version()   { 'SOAP10' }
-sub serverClass { undef }
-sub clientClass { undef }
-
-#-------------------------------------------
-
-
-sub explain($$$@)
-{   my ($self, $schema, $format, $dir, %args) = @_;
-    error "Cannot explain HTTP use: don't know myself";
-}
-
-1;
@@ -1,80 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-XML::Compile::SOAP11::Operation - defines a SOAP11 interaction
-
-=head1 SYNOPSIS
-
- # object created by XML::Compile::WSDL*
- my $op = $wsdl->operation('GetStockPrices');
-
-=head1 DESCRIPTION
-
-Objects of this type define one possible SOAP11 interaction, either
-client side or server side.
-
-=head1 METHODS
-
-=head2 Constructors
-
-=over 4
-
-=item XML::Compile::SOAP10::Operation-E<gt>B<new>(OPTIONS)
-
-=back
-
-=head2 Accessors
-
-=over 4
-
-=item $obj-E<gt>B<http_method>()
-
-=back
-
-=head2 Helpers
-
-=over 4
-
-=item $obj-E<gt>B<explain>(WSDL, FORMAT, DIRECTION, OPTIONS)
-
-[since 2.16]
-Not yet supported
-
-=back
-
-=head1 SEE ALSO
-
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
-
-Other distributions in this suite:
-L<XML::Compile>,
-L<XML::Compile::SOAP>,
-L<XML::Compile::SOAP12>,
-L<XML::Compile::SOAP::Daemon>,
-L<XML::Compile::SOAP::WSA>,
-L<XML::Compile::C14N>,
-L<XML::Compile::WSS>,
-L<XML::Compile::WSS::Signature>,
-L<XML::Compile::Tester>,
-L<XML::Compile::Cache>,
-L<XML::Compile::Dumper>,
-L<XML::Compile::RPC>,
-L<XML::Rewrite>
-and
-L<XML::LibXML::Simple>.
-
-Please post questions or ideas to the mailinglist at
-F<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/xml-compile> .
-For live contact with other developers, visit the C<#xml-compile> channel
-on C<irc.perl.org>.
-
-=head1 LICENSE
-
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
-
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-See F<http://www.perl.com/perl/misc/Artistic.html>
-
@@ -1,27 +0,0 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
-#  For other contributors see ChangeLog.
-# See the manual pages for details on the licensing terms.
-# Pod stripped from pm file by OODoc 2.01.
-use warnings;
-use strict;
-
-package XML::Compile::SOAP10;
-use vars '$VERSION';
-$VERSION = '2.38';
-
-use base 'XML::Compile::SOAP';
-
-use Log::Report 'xml-compile-soap', syntax => 'SHORT';
-use XML::Compile::Util       qw/pack_type unpack_type SCHEMA2001/;
-use XML::Compile::SOAP::Util qw/:soap11/;
-
-use XML::Compile::SOAP10::Operation ();
-use XML::Compile::SOAP11;  # for schemas
-
-
-sub new($@)
-{   my $class = shift;
-    error __x"I have no idea how SOAP pure HTTP-GET and -POST are supposed to work. Please show me the spec";
-}
-
-1;
@@ -1,151 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-XML::Compile::SOAP10 - SOAP11 HTTP-GET/POST
-
-=head1 INHERITANCE
-
- XML::Compile::SOAP10
-   is a XML::Compile::SOAP
-
-=head1 SYNOPSIS
-
- # See XML::Compile::SOAP for global usage examples.
-
-=head1 DESCRIPTION
-
-WSDL 1.1 defines HTTP-GET and HTTP-POST bindings, which are nowhere
-described (as far as I know). So, it is unclear where they came from.
-Probably from the time before SOAP 1.1.  For simplicity, I name this
-SOAP 1.0.  There is B<no SOAP 1.0> standard.
-
-See L<documentation in the base class|XML::Compile::SOAP/"DESCRIPTION">.
- 
-=head1 METHODS
-
-See L<documentation in the base class|XML::Compile::SOAP/"METHODS">.
- 
-=head2 Constructors
-
-See L<documentation in the base class|XML::Compile::SOAP/"Constructors">.
- 
-=over 4
-
-=item $obj-E<gt>B<new>(OPTIONS)
-
- -Option    --Defined in        --Default
-  media_type  XML::Compile::SOAP  application/soap+xml
-  schemas     XML::Compile::SOAP  created internally
-
-=over 2
-
-=item media_type => MIMETYPE
-
-=item schemas => C<XML::Compile::Cache> object
-
-=back
-
-=back
-
-=head2 Accessors
-
-See L<documentation in the base class|XML::Compile::SOAP/"Accessors">.
- 
-=over 4
-
-=item $obj-E<gt>B<name>()
-
-See L<XML::Compile::SOAP/"Accessors">
-
-=item $obj-E<gt>B<schemas>()
-
-See L<XML::Compile::SOAP/"Accessors">
-
-=item $obj-E<gt>B<version>()
-
-See L<XML::Compile::SOAP/"Accessors">
-
-=back
-
-=head2 Single message
-
-See L<documentation in the base class|XML::Compile::SOAP/"Single message">.
- 
-=over 4
-
-=item $obj-E<gt>B<compileMessage>(('SENDER'|'RECEIVER'), OPTIONS)
-
-See L<XML::Compile::SOAP/"Single message">
-
-=item $obj-E<gt>B<messageStructure>(XML)
-
-=item XML::Compile::SOAP10-E<gt>B<messageStructure>(XML)
-
-See L<XML::Compile::SOAP/"Single message">
-
-=back
-
-=head2 Helpers
-
-See L<documentation in the base class|XML::Compile::SOAP/"Helpers">.
- 
-=head2 Transcoding
-
-See L<documentation in the base class|XML::Compile::SOAP/"Transcoding">.
- 
-=over 4
-
-=item $obj-E<gt>B<replyMustUnderstandFault>(TYPE)
-
-See L<XML::Compile::SOAP/"Transcoding">
-
-=item $obj-E<gt>B<roleAbbreviation>(URI)
-
-See L<XML::Compile::SOAP/"Transcoding">
-
-=item $obj-E<gt>B<roleURI>(URI|STRING)
-
-See L<XML::Compile::SOAP/"Transcoding">
-
-=back
-
-=head1 DETAILS
-
-See L<documentation in the base class|XML::Compile::SOAP/"DETAILS">.
- 
-=head1 SEE ALSO
-
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
-
-Other distributions in this suite:
-L<XML::Compile>,
-L<XML::Compile::SOAP>,
-L<XML::Compile::SOAP12>,
-L<XML::Compile::SOAP::Daemon>,
-L<XML::Compile::SOAP::WSA>,
-L<XML::Compile::C14N>,
-L<XML::Compile::WSS>,
-L<XML::Compile::WSS::Signature>,
-L<XML::Compile::Tester>,
-L<XML::Compile::Cache>,
-L<XML::Compile::Dumper>,
-L<XML::Compile::RPC>,
-L<XML::Rewrite>
-and
-L<XML::LibXML::Simple>.
-
-Please post questions or ideas to the mailinglist at
-F<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/xml-compile> .
-For live contact with other developers, visit the C<#xml-compile> channel
-on C<irc.perl.org>.
-
-=head1 LICENSE
-
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
-
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-See F<http://www.perl.com/perl/misc/Artistic.html>
-
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,7 +7,7 @@ use strict;
 
 package XML::Compile::SOAP11::Client;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 use base 'XML::Compile::SOAP11','XML::Compile::SOAP::Client';
 
@@ -19,28 +19,29 @@ XML::Compile::SOAP11::Client - SOAP1.1 client needs
 
 See L<XML::Compile::SOAP11|XML::Compile::SOAP11>.
 
-See L<documentation in the base class|XML::Compile::SOAP::Client/"DESCRIPTION">.
+Extends L<"DESCRIPTION" in XML::Compile::SOAP::Client|XML::Compile::SOAP::Client/"DESCRIPTION">.
  
-See L<documentation in the base class|XML::Compile::SOAP11/"DESCRIPTION">.
+Extends L<"DESCRIPTION" in XML::Compile::SOAP11|XML::Compile::SOAP11/"DESCRIPTION">.
  
 =head1 METHODS
 
-See L<documentation in the base class|XML::Compile::SOAP::Client/"METHODS">.
+Extends L<"METHODS" in XML::Compile::SOAP::Client|XML::Compile::SOAP::Client/"METHODS">.
  
-See L<documentation in the base class|XML::Compile::SOAP11/"METHODS">.
+Extends L<"METHODS" in XML::Compile::SOAP11|XML::Compile::SOAP11/"METHODS">.
  
 =head1 DETAILS
 
-See L<documentation in the base class|XML::Compile::SOAP11/"DETAILS">.
+Extends L<"DETAILS" in XML::Compile::SOAP11|XML::Compile::SOAP11/"DETAILS">.
  
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -62,7 +63,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,7 +7,7 @@ use strict;
 
 package XML::Compile::SOAP11;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
   #!!!
 
 use Log::Report 'xml-compile-soap';
@@ -60,24 +60,24 @@ SOAP defines encodings, especially for SOAP-RPC.
 
 =over 4
 
-=item $obj-E<gt>B<array>((NAME|undef), ITEM_TYPE, ARRAY-of-ELEMENTS, OPTIONS)
+=item $obj-E<gt>B<array>( <$name|undef>, $item_type, $elements, %options )
 
 Arrays can be a mess: a mixture of anything and nothing.  Therefore,
 you have to help the generation more than you may wish for.  This
 method produces an one dimensional array, L<multidim()|XML::Compile::SOAP11::Encoding/"Encoding"> is used for
 multi-dimensional arrays.
 
-The NAME is the packed type of the array itself.  When undef,
+The $name is the packed type of the array itself.  When undef,
 the C<< {soap-enc-ns}Array >> will be used (the action soap
 encoding namespace will be used).
 
-The ITEM_TYPE specifies the type of each element within the array.
+The $item_type specifies the type of each element within the array.
 This type is used to create the C<arrayType> attribute, however
 doesn't tell enough about the items themselves: they may be
 extensions to that type.
 
-Each of the ELEMENTS must be an XML::LibXML::Node, either
-self-constructed, or produced by one of the builder methods in
+Each of the $elements (passed as ARRAY) must be an XML::LibXML::Node,
+either self-constructed, or produced by one of the builder methods in
 this class, like L<enc()|XML::Compile::SOAP11::Encoding/"Encoding"> or L<typed()|XML::Compile::SOAP11::Encoding/"Encoding">.
 
 Returned is the XML::LibXML::Element which represents the
@@ -124,17 +124,17 @@ element)
 
 =back
 
-=item $obj-E<gt>B<element>(TYPE, NAME, VALUE)
+=item $obj-E<gt>B<element>($type, $name, $value)
 
-Create an element.  The NAME is for node, where a namespace component
+Create an element.  The $name is for node, where a namespace component
 is translated into a prefix.  When you wish for a C<type> attribute,
 use L<typed()|XML::Compile::SOAP11::Encoding/"Encoding">.
 
-When the TYPE does not contain a namespace indication, it is taken
-in the selected schema namespace.  If the VALUE already is a
-XML::LibXML::Element, then that one is used (and the NAME ignored).
+When the $type does not contain a namespace indication, it is taken
+in the selected schema namespace.  If the $value already is a
+XML::LibXML::Element, then that one is used (and the $name ignored).
 
-=item $obj-E<gt>B<enc>(LOCAL, VALUE, [ID])
+=item $obj-E<gt>B<enc>( $local, $value, [$id] )
 
 In the SOAP specification, encoding types are defined: elements
 which do not have a distinguishable name but use the type of the
@@ -152,21 +152,21 @@ example:
   print $xml->toString;
     # <SOAP-ENC:int id="me">42</SOAP-ENC:int>
 
-=item $obj-E<gt>B<href>(NAME, ELEMENT, [ID])
+=item $obj-E<gt>B<href>( $name, $element, [$id] )
 
-Create a reference element with NAME to the existing ELEMENT.  When the
-ELEMENT does not have an "id" attribute yet, then ID will be used.  In
-case not ID was specified, then one is generated.
+Create a reference element with $name to the existing $element.  When the
+$element does not have an "id" attribute yet, then $id will be used.  In
+case not $id was specified, then one is generated.
 
-=item $obj-E<gt>B<multidim>((NAME|undef), ITEM_TYPE, ARRAY-of-ELEMENTS, OPTIONS)
+=item $obj-E<gt>B<multidim>( <$name|undef>, $item_type, $elements, %options )
 
 A multi-dimensional array, less flexible than a single dimensional
 array, which can be created with L<array()|XML::Compile::SOAP11::Encoding/"Encoding">.
 
-The array must be square: in each of the dimensions, the length of
-each row must be the same.  On the other hand, it may be sparse
-(contain undefs).  The size of each dimension is determined by the
-length of its first element.
+The table of $elements (ARRAY of ARRAYs) must be full: in each of the
+dimensions, the length of each row must be the same.  On the other
+hand, it may be sparse (contain undefs).  The size of each dimension is
+determined by the length of its first element.
 
  -Option--Default
   id      undef
@@ -177,20 +177,20 @@ length of its first element.
 
 =back
 
-=item $obj-E<gt>B<nil>([TYPE], NAME)
+=item $obj-E<gt>B<nil>( [$type], $name )
 
-Create an element with NAME which explicitly has the C<xsi:nil> attribute.
-If the NAME is full (has a namespace to it), it will be translated into
+Create an element with $name which explicitly has the C<xsi:nil> attribute.
+If the $name is full (has a namespace to it), it will be translated into
 a QNAME, otherwise, it is considered not namespace qualified.
 
-If a TYPE is given, then an explicit type parameter is added.
+If a $type is given, then an explicit type parameter is added.
 
-=item $obj-E<gt>B<prefixed>(TYPE|(NAMESPACE,LOCAL))
+=item $obj-E<gt>B<prefixed>( $type|<$ns,$local> )
 
-Translate a NAMESPACE-LOCAL combination (which may be represented as
-a packed TYPE) into a prefixed notation.
+Translate a $ns-$local combination (which may be represented as
+a packed $type) into a prefixed notation.
 
-=item $obj-E<gt>B<startEncoding>(OPTIONS)
+=item $obj-E<gt>B<startEncoding>(%options)
 
 This needs to be called before any encoding routine, because it
 initializes the internals.  Each call will reset all compiled
@@ -212,21 +212,21 @@ example:
 
  $soap->startEncoding(doc => $doc);
 
-=item $obj-E<gt>B<struct>(TYPE, CHILDS)
+=item $obj-E<gt>B<struct>($type, $childs)
 
-Create a structure, an element with children.  The CHILDS must be fully
+Create a structure, an element with children.  The $childs must be fully
 prepared XML::LibXML::Element objects.
 
-=item $obj-E<gt>B<typed>(TYPE, NAME, VALUE)
+=item $obj-E<gt>B<typed>($type, $name, $value)
 
 A "typed" element shows its type explicitly, via the "xsi:type" attribute.
-The VALUE will get processed via an auto-generated XML::Compile writer,
+The $value will get processed via an auto-generated XML::Compile writer,
 so validated.  The processing is cashed.
 
-When VALUE already is an XML::LibXML::Element, then no processing
-nor value checking will be performed.  The NAME will be ignored.
+When $value already is an XML::LibXML::Element, then no processing
+nor value checking will be performed.  The $name will be ignored.
 
-If the TYPE is not qualified, then it is interpreted as basic type, as
+If the $type is not qualified, then it is interpreted as basic type, as
 defined by the selected schema.  If you explicitly
 need a non-namespace typed item, then use an empty namespace.  In any
 case, the type must be defined and the value is validated.
@@ -245,9 +245,9 @@ example:
 
 =over 4
 
-=item $obj-E<gt>B<dec>(XMLNODES)
+=item $obj-E<gt>B<dec>($xmlnodes)
 
-Decode the XMLNODES (list of XML::LibXML::Element objects).  Use
+Decode the $xmlnodes (list of XML::LibXML::Element objects).  Use
 Data::Dumper to figure-out what the produced output is: it is a guess,
 so may not be perfect (do not use RPC but document style soap for
 good results).
@@ -257,16 +257,16 @@ then the returned data is compact but may be sloppy.  Otherwise,
 a HASH is returned containing as much info as could be extracted from
 the tree.
 
-=item $obj-E<gt>B<decSimplify>(TREE, OPTIONS)
+=item $obj-E<gt>B<decSimplify>($tree, %options)
 
-Simplify the TREE of output produced by L<dec()|XML::Compile::SOAP11::Encoding/"Decoding"> to contain only
+Simplify the $tree of output produced by L<dec()|XML::Compile::SOAP11::Encoding/"Decoding"> to contain only
 data.  Of course, this will remove useful information.
 
 From each of the HASHes in the tree, the C<_NAME>, C<_TYPE>, C<id>,
 and any/anyAttribute fields are removed.  If only a C<_> is left over,
 that related value will replace the HASH as a whole.
 
-=item $obj-E<gt>B<startDecoding>(OPTIONS)
+=item $obj-E<gt>B<startDecoding>(%options)
 
 Each call to this method will restart the cache of the decoding
 internals.
@@ -297,12 +297,13 @@ an easily accessible output tree.
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -324,7 +325,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,7 +7,7 @@ use strict;
 
 package XML::Compile::SOAP11::Operation;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 use base 'XML::Compile::SOAP::Operation';
 
@@ -20,11 +20,8 @@ use XML::Compile::SOAP11::Client;
 use XML::Compile::SOAP11::Server;
 use XML::Compile::SOAP::Extension;
 
-our $VERSION;         # OODoc adds $VERSION to the script
-$VERSION ||= 'undef';
-
-XML::Compile->knownNamespace(&WSDL11SOAP => 'wsdl-soap.xsd');
-__PACKAGE__->register(WSDL11SOAP, SOAP11ENV);
+use vars '$VERSION';         # OODoc adds $VERSION to the script
+$VERSION ||= '(devel)';
 
 # client/server object per schema class, because initiation options
 # can be different.  Class reference is key.
@@ -45,19 +42,6 @@ sub init($)
     $self;
 }
 
-sub _initWSDL11($)
-{   my ($class, $wsdl) = @_;
-
-    trace "initialize SOAP11 operations for WSDL11";
-
-    $wsdl->importDefinitions(WSDL11SOAP, element_form_default => 'qualified');
-    $wsdl->addPrefixes(soap => WSDL11SOAP);
-
-    $wsdl->declare(READER =>
-      [ "soap:address", "soap:operation", "soap:binding"
-      , "soap:body",    "soap:header",    "soap:fault" ]);
-}
-
 sub _fromWSDL11(@)
 {   my ($class, %args) = @_;
 
@@ -112,6 +96,10 @@ sub _msg_parts($$$$$)
         $parts{body}  = {procedure => $procedure, %$port_op, use => 'literal',
            %$body, parts => \@parts};
     }
+    elsif($port_op->{message})
+    {   # missing <soap:body use="literal"> in <wsdl:input> or :output
+        error __x"operation {opname} has a message in its portType but no encoding in the binding", opname => $opname;
+    }
 
     my $bsh = $bind_op->{soap_header} || [];
     foreach my $header (ref $bsh eq 'ARRAY' ? @$bsh : $bsh)
@@ -142,7 +130,7 @@ sub _select_parts($$$)
     @need or return @$parts;
 
     my @sel;
-    my %parts = map { ($_->{name} => $_) } @$parts;
+    my %parts = map +($_->{name} => $_), @$parts;
     foreach my $name (@need)
     {   my $part = $parts{$name}
             or error __x"message {msg} does not have a part named {part}"
@@ -199,7 +187,8 @@ sub clientClass { 'XML::Compile::SOAP11::Client' }
 
 
 sub addHeader($$$%)
-{   my ($self, $dir, $label, $elem, %opts) = @_;
+{   my ($self, $dir, $label, $el, %opts) = @_;
+    my $elem = $self->schemas->findName($el);
     my $defs
       = $dir eq 'INPUT'  ? 'input_def'
       : $dir eq 'OUTPUT' ? 'output_def'
@@ -266,12 +255,12 @@ sub compileClient(@)
     my @ro   = (%{$self->{output_def}}, %{$self->{fault_def}});
 
     my $call = $soap->compileClient
-      ( name         => $self->name
-      , kind         => $kind
-      , encode       => $soap->_sender(@so, %args)
-      , decode       => $soap->_receiver(@ro, %args)
-      , transport    => $self->compileTransporter(%args)
-      , async        => $args{async}
+      ( name      => $self->name
+      , kind      => $kind
+      , encode    => $soap->_sender(@so, %args)
+      , decode    => $soap->_receiver(@ro, %args)
+      , transport => $self->compileTransporter(%args)
+      , async     => $args{async}
       );
 
     XML::Compile::SOAP::Extension->soap11ClientWrapper($self, $call, \%args);
@@ -492,7 +481,6 @@ sub explain($$$@)
     join "\n", @header, @main, @postproc, @attach, '';
 }
 
-
 sub parsedWSDL()
 {   my $self = shift;
       +{ input  => $self->{input_def}{body}
@@ -20,35 +20,36 @@ XML::Compile::SOAP11::Operation - defines a SOAP11 interaction
 Objects of this type define one possible SOAP11 interaction, either
 client side or server side.
 
-See L<documentation in the base class|XML::Compile::SOAP::Operation/"DESCRIPTION">.
+Extends L<"DESCRIPTION" in XML::Compile::SOAP::Operation|XML::Compile::SOAP::Operation/"DESCRIPTION">.
  
 =head1 METHODS
 
-See L<documentation in the base class|XML::Compile::SOAP::Operation/"METHODS">.
+Extends L<"METHODS" in XML::Compile::SOAP::Operation|XML::Compile::SOAP::Operation/"METHODS">.
  
 =head2 Constructors
 
-See L<documentation in the base class|XML::Compile::SOAP::Operation/"Constructors">.
+Extends L<"Constructors" in XML::Compile::SOAP::Operation|XML::Compile::SOAP::Operation/"Constructors">.
  
 =over 4
 
-=item XML::Compile::SOAP11::Operation-E<gt>B<new>(OPTIONS)
+=item XML::Compile::SOAP11::Operation-E<gt>B<new>(%options)
 
 C<input_def>, C<output_def> and C<fault_def> are HASHes which contain
 the input and output message header, body and fault-header definitions
 in WSDL1.1 style.
 
- -Option    --Defined in                   --Default
-  action      XML::Compile::SOAP::Operation  undef
-  endpoints   XML::Compile::SOAP::Operation  []
-  fault_def                                  <undef>
-  input_def                                  <undef>
-  kin         XML::Compile::SOAP::Operation  <required>
-  nam         XML::Compile::SOAP::Operation  <required>
-  output_def                                 <undef>
-  schemas     XML::Compile::SOAP::Operation  <required>
-  style                                      'document'
-  transport   XML::Compile::SOAP::Operation  'HTTP'
+ -Option     --Defined in                   --Default
+  action       XML::Compile::SOAP::Operation  undef
+  endpoints    XML::Compile::SOAP::Operation  []
+  fault_def                                   <undef>
+  input_def                                   <undef>
+  kin          XML::Compile::SOAP::Operation  <required>
+  nam          XML::Compile::SOAP::Operation  <required>
+  output_def                                  <undef>
+  schemas      XML::Compile::SOAP::Operation  <required>
+  server_type  XML::Compile::SOAP::Operation  undef
+  style                                       'document'
+  transport    XML::Compile::SOAP::Operation  'HTTP'
 
 =over 2
 
@@ -68,6 +69,8 @@ in WSDL1.1 style.
 
 =item schemas => XML::Compile::Cache
 
+=item server_type => NAME
+
 =item style => 'document'|'rpc'
 
 =item transport => URI|'HTTP'
@@ -78,59 +81,59 @@ in WSDL1.1 style.
 
 =head2 Accessors
 
-See L<documentation in the base class|XML::Compile::SOAP::Operation/"Accessors">.
+Extends L<"Accessors" in XML::Compile::SOAP::Operation|XML::Compile::SOAP::Operation/"Accessors">.
  
 =over 4
 
 =item $obj-E<gt>B<bindingName>()
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =item $obj-E<gt>B<clientClass>()
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =item $obj-E<gt>B<endPoints>()
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =item $obj-E<gt>B<kind>()
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =item $obj-E<gt>B<name>()
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =item $obj-E<gt>B<portName>()
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =item $obj-E<gt>B<schemas>()
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =item $obj-E<gt>B<serverClass>()
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =item $obj-E<gt>B<serviceName>()
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =item $obj-E<gt>B<soapAction>()
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =item $obj-E<gt>B<style>()
 
 =item $obj-E<gt>B<version>()
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =item $obj-E<gt>B<wsaAction>('INPUT'|'OUTPUT')
 
-See L<XML::Compile::SOAP::Operation/"Accessors">
+Inherited, see L<XML::Compile::SOAP::Operation/"Accessors">
 
 =back
 
@@ -142,13 +145,14 @@ the FAQ, L<XML::Compile::SOAP::FAQ|XML::Compile::SOAP::FAQ>.
 
 =over 4
 
-=item $obj-E<gt>B<addHeader>(('INPUT'|'OUTPUT'|'FAULT'), LABEL, ELEMENT, OPTIONS)
+=item $obj-E<gt>B<addHeader>( <'INPUT'|'OUTPUT'|'FAULT'>, $label, $element, %options )
 
 Add a header definitions.  Many protocols on top of SOAP, like WSS, add
 headers to the operations which are not specified in the WSDL.
 
-[2.31] When you add a header with same LABEL again, it will get silently
-ignored unless the ELEMENT type differs.
+[2.31] When you add a header with same $label again, it will get silently
+ignored unless the $element type differs. An $element is either a full
+type or a [3.00] prefixed type.
 
  -Option        --Default
   destination     undef
@@ -158,7 +162,7 @@ ignored unless the ELEMENT type differs.
 
 =item destination => ROLE
 
-[2.33] adds the destination attribute,
+[2.33] adds the destination attribute.
 
 =item mustUnderstand => BOOLEAN
 
@@ -170,11 +174,11 @@ ignored unless the ELEMENT type differs.
 
 =head2 Handlers
 
-See L<documentation in the base class|XML::Compile::SOAP::Operation/"Handlers">.
+Extends L<"Handlers" in XML::Compile::SOAP::Operation|XML::Compile::SOAP::Operation/"Handlers">.
  
 =over 4
 
-=item $obj-E<gt>B<compileClient>(OPTIONS)
+=item $obj-E<gt>B<compileClient>(%options)
 
 Returns one CODE reference which handles the processing for this
 operation. Options C<transporter>, C<transport_hook>, and
@@ -191,11 +195,11 @@ C<<sloppy_integers => 0>>, hooks or typemaps this way. Provide these to
 the C<::WSDL> or other C<::Cache> object which defines the types, via
 C<new> option C<opts_rw> and friends.
 
-=item $obj-E<gt>B<compileHandler>(OPTIONS)
+=item $obj-E<gt>B<compileHandler>(%options)
 
 Prepare the routines which will decode the request and encode the answer,
 as will be run on the server. The L<XML::Compile::SOAP::Server|XML::Compile::SOAP::Server> will
-connect these. All OPTIONS will get passed to
+connect these. All %options will get passed to
 L<XML::Compile::SOAP11::Server::compileHandler()|XML::Compile::SOAP::Server/"Actions">
 
  -Option  --Default
@@ -212,31 +216,31 @@ Determines whether the handler belongs to a received message.
 
 =back
 
-=item $obj-E<gt>B<compileTransporter>(OPTIONS)
+=item $obj-E<gt>B<compileTransporter>(%options)
 
-See L<XML::Compile::SOAP::Operation/"Handlers">
+Inherited, see L<XML::Compile::SOAP::Operation/"Handlers">
 
 =back
 
 =head2 Helpers
 
-See L<documentation in the base class|XML::Compile::SOAP::Operation/"Helpers">.
+Extends L<"Helpers" in XML::Compile::SOAP::Operation|XML::Compile::SOAP::Operation/"Helpers">.
  
 =over 4
 
-=item $obj-E<gt>B<explain>(WSDL, FORMAT, DIRECTION, OPTIONS)
+=item $obj-E<gt>B<explain>($wsdl, $format, $direction, %options)
 
 [since 2.13]
 
 Dump an annotated structure showing how the operation works, helping
-developers to understand the schema. FORMAT is C<PERL>.
-(C<XML> is not yet supported)
+developers to understand the schema. The $format must be string "PERL".
+($format "XML" is not yet supported)
 
-The DIRECTION is C<INPUT>, it will return the message which the client
-sends to the server (input for the server). The C<OUTPUT> message is
-sent as response by the server.
+When the $direction is string "INPUT", it will return the message which
+the client sends to the server (input for the server). The "OUTPUT"
+message is sent as response by the server.
 
-All OPTIONS besides those described here are passed to
+All %options besides those described here are passed to
 L<XML::Compile::Schema::template()|XML::Compile::Schema/"Compilers">, when C<recurse> is enabled.
 
  -Option     --Default
@@ -253,40 +257,21 @@ Append the templates of all the part structures.
 
 =back
 
-=item $obj-E<gt>B<parsedWSDL>()
-
-[2.29] For some purposes, it is useful to get access to the parsed WSDL
-structure.
-
-B<Be aware> that the structure returned is consided "internal"
-and strongly influenced by behavior of L<XML::Compile|XML::Compile>; backwards
-compatibility will not be maintained at all cost.
-
-You can use L<XML::Compile::Schema::template()|XML::Compile::Schema/"Compilers"> format C<TREE> to get
-more details about the element types mentioned in this structure.
-
-example: 
-
-  use Data::Dumper;
-  $Data::Dumper::Indent    = 1;
-  $Data::Dumper::Quotekeys = 0;
-
-  print Dumper $op->parsedWSDL;
-
-=item XML::Compile::SOAP11::Operation-E<gt>B<register>(URI, ENVNS)
+=item $obj-E<gt>B<parsedWSDL>(%options)
 
-See L<XML::Compile::SOAP::Operation/"Helpers">
+Inherited, see L<XML::Compile::SOAP::Operation/"Helpers">
 
 =back
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -308,7 +293,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,7 +7,7 @@ use strict;
 
 package XML::Compile::SOAP11::Server;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 use base 'XML::Compile::SOAP11', 'XML::Compile::SOAP::Server';
 
@@ -71,17 +71,17 @@ sub faultResponseInvalid($$)
 }
 
 sub faultNotImplemented($)
-{   my ($class, $name) = @_;
+{   my ($self, $name) = @_;
 
     my $message = __x"procedure {name} for {version} is not yet implemented"
       , name => $name, version => 'SOAP11';
 
- +{ Fault =>
-      { faultcode   => pack_type(SOAP11ENV, 'Server.notImplemented')
-      , faultstring => $message
-      , faultactor  => SOAP11NEXT
-      }
-  };
+     +{ Fault =>
+          { faultcode   => pack_type(SOAP11ENV, 'Server.notImplemented')
+          , faultstring => $message
+          , faultactor  => SOAP11NEXT
+          }
+      };
 }
 
 sub faultNoAnswerProduced($)
@@ -89,7 +89,7 @@ sub faultNoAnswerProduced($)
  
     my $message = __x"callback {name} did not return an answer", name => $name;
     $self->makeError
-      ( faultcode   => pack_type(SOAP11ENV, 'Server.noAnswer')
+      ( faultcode   => pack_type(SOAP11ENV, 'Server.noAnswerProduced')
       , faultstring => $message
       , faultactor  => $self->role
       );
@@ -21,28 +21,29 @@ This module does not implement an actual soap server, but the
 needs to create the server side.  The server daemon is implemented
 by L<XML::Compile::SOAP::Daemon|XML::Compile::SOAP::Daemon>
 
-See L<documentation in the base class|XML::Compile::SOAP::Server/"DESCRIPTION">.
+Extends L<"DESCRIPTION" in XML::Compile::SOAP::Server|XML::Compile::SOAP::Server/"DESCRIPTION">.
  
-See L<documentation in the base class|XML::Compile::SOAP11/"DESCRIPTION">.
+Extends L<"DESCRIPTION" in XML::Compile::SOAP11|XML::Compile::SOAP11/"DESCRIPTION">.
  
 =head1 METHODS
 
-See L<documentation in the base class|XML::Compile::SOAP::Server/"METHODS">.
+Extends L<"METHODS" in XML::Compile::SOAP::Server|XML::Compile::SOAP::Server/"METHODS">.
  
-See L<documentation in the base class|XML::Compile::SOAP11/"METHODS">.
+Extends L<"METHODS" in XML::Compile::SOAP11|XML::Compile::SOAP11/"METHODS">.
  
 =head1 DETAILS
 
-See L<documentation in the base class|XML::Compile::SOAP11/"DETAILS">.
+Extends L<"DETAILS" in XML::Compile::SOAP11|XML::Compile::SOAP11/"DETAILS">.
  
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -64,7 +65,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,23 +7,21 @@ use strict;
 
 package XML::Compile::SOAP11;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 use base 'XML::Compile::SOAP';
 
 use Log::Report 'xml-compile-soap', syntax => 'SHORT';
 use XML::Compile::SOAP::Util qw/:soap11/;
-use XML::Compile::Util       qw/pack_type unpack_type type_of_node
-   SCHEMA2001 SCHEMA2001i/;
+use XML::Compile::Util       qw/pack_type unpack_type type_of_node/;
 
 # publish interface to WSDL
 use XML::Compile::SOAP11::Operation ();
 
-XML::Compile->addSchemaDirs(__FILE__);
-XML::Compile->knownNamespace
- ( &SOAP11ENC => 'soap-encoding.xsd'
- , &SOAP11ENV => 'soap-envelope.xsd'
- );
+__PACKAGE__->register
+  ( WSDL11SOAP
+  , &SOAP11ENV => 'XML::Compile::SOAP11::Operation'
+  );
 
 
 sub new($@)
@@ -35,38 +33,57 @@ sub new($@)
 
 sub init($)
 {   my ($self, $args) = @_;
+    $args->{media_type} ||= 'text/xml';
     $self->SUPER::init($args);
     $self->_initSOAP11($self->schemas);
 }
 
 sub _initSOAP11($)
-{   my ($self, $schemas) = @_;
-    return $self
+{   my ($thing, $schemas) = @_;
+    $thing->_initSOAP($schemas);
+
+    return $thing
         if $schemas->{did_init_SOAP11}++;   # ugly
 
     $schemas->addPrefixes
       ( 'SOAP-ENV' => SOAP11ENV  # preferred names by spec
       , 'SOAP-ENC' => SOAP11ENC
-      , xsd        => SCHEMA2001
-      , xsi        => SCHEMA2001i
       );
 
+    (my $xsddir = __FILE__) =~ s!\.pm$!/xsd!;
     $schemas->importDefinitions
-      ( SOAP11ENV
+      ( "$xsddir/soap-envelope.xsd"
       , element_form_default   => 'qualified'
       , attribute_form_default => 'qualified'
       );
     $schemas->importDefinitions
-      ( SOAP11ENC
+      ( "$xsddir/soap-encoding.xsd"
       , element_form_default   => 'qualified'
       );
-    $schemas->importDefinitions('soap-envelope-patch.xsd');
+    $schemas->importDefinitions
+      ( "$xsddir/soap-envelope-patch.xsd"
+      );
+    $thing;
+}
+
+sub _initWSDL11($)
+{   my ($class, $wsdl) = @_;
+    trace "initialize SOAP11 for WSDL11";
+    $class->_initSOAP11($wsdl);
 
-    $self;
+    (my $xsddir = __FILE__) =~ s!SOAP11\.pm$!WSDL11/xsd!;
+    my $xsd     = "$xsddir/wsdl-soap.xsd";
+    $wsdl->importDefinitions($xsd, element_form_default => 'qualified');
+    $wsdl->addPrefixes(soap => WSDL11SOAP);
+
+    $wsdl->declare(READER =>
+      [ "soap:address", "soap:operation", "soap:binding"
+      , "soap:body",    "soap:header",    "soap:fault" ]);
 }
 
 sub version    { 'SOAP11' }
 sub envelopeNS { SOAP11ENV }
+sub envType($) { pack_type SOAP11ENV, $_[1] }
 
 #-----------------------------------
 
@@ -78,28 +95,28 @@ sub compileMessage($$)
     if(ref $args{body} eq 'ARRAY')
     {   my @h = @{$args{body}};
         my @parts;
-        push @parts, { name => shift @h, element => shift @h } while @h;
-        $args{body} = {use => 'literal', parts => \@parts};
+        push @parts, +{name => shift @h, element => shift @h} while @h;
+        $args{body} = +{use => 'literal', parts => \@parts};
     }
 
     if(ref $args{header} eq 'ARRAY')
     {   my @h = @{$args{header}};
         my @o;
         while(@h)
-        {  my $part = { name => shift @h, element => shift @h };
-           push @o, {use => 'literal', parts => [ $part ]};
+        {  my $part = +{name => shift @h, element => shift @h};
+           push @o, +{use => 'literal', parts => [$part]};
         }
         $args{header} = \@o;
     }
 
     my $f = $args{faults};
     if(ref $f eq 'ARRAY')
-    {   $args{faults} = {};
+    {   $args{faults} = +{};
         my @f = @$f;
         while(@f)
         {   my $name = shift @f;
-            my $part = { name => $name, element => shift @f };
-            $args{faults}{$name} = { use => 'literal', part => $part };
+            my $part = +{name => $name, element => shift @f};
+            $args{faults}{$name} = +{use => 'literal', part => $part};
         }
     }
 
@@ -109,8 +126,6 @@ sub compileMessage($$)
 #------------------------------------------------
 # Sender
 
-sub _envNS { SOAP11ENV }
-
 sub _sender(@)
 {   my ($self, %args) = @_;
 
@@ -119,7 +134,7 @@ sub _sender(@)
     my %destination = @{$args{destination} || []};
 
     my $understand  = $args{mustUnderstand};
-    my %understand  = map { ($_ => 1) }
+    my %understand  = map +($_ => 1),
         ref $understand eq 'ARRAY' ? @$understand
       : defined $understand ? $understand : ();
 
@@ -167,6 +182,7 @@ sub _writer_header($)
         $label eq shift @$rules or panic;
         my $code  = shift @$rules;
 
+        # fixed in SOAP12, but SOAP11 only understands numeric boolean values
         my $understand
            = $part->{mustUnderstand}         ? '1'
            : defined $part->{mustUnderstand} ? '0'    # explicit 0
@@ -174,7 +190,7 @@ sub _writer_header($)
 
         my $actor = $part->{destination};
         if(ref $actor eq 'ARRAY')
-        {   $actor = join ' ', map {$self->roleURI($_)} @$actor }
+        {   $actor = join ' ', map $self->roleURI($_), @$actor }
         elsif(defined $actor)
         {   $actor =~ s/\b(\S+)\b/$self->roleURI($1)/ge }
 
@@ -210,20 +226,16 @@ sub _writer_faults($)
       , include_namespaces => sub {$_[0] ne SOAP11ENV});
 
     while(my ($name, $fault) = each %$faults)
-    {   my $part    = $fault->{part};
-        my ($label, $type) = ($part->{name}, $part->{element});
-
-        # spec says: details ALWAYS namespace qualified!
-        my $details = $self->_writer($type, elements_qualified => 'TOP'
-         , include_namespaces => sub {$_[0] ne SOAP11ENV && $_[2]});
+    {   my $part = $fault->{part};
+        my ($elem, $details) = $self->_write_one_fault($args, $part);
 
         my $code = sub
           { my ($doc, $data)  = (shift, shift);
             my %copy = %$data;
             $copy{faultactor} = $self->roleURI($copy{faultactor});
-            my $det = delete $copy{detail};
-            my @det = !defined $det ? () : ref $det eq 'ARRAY' ? @$det : $det;
-            $copy{detail}{$type} = [ map {$details->($doc, $_)} @det ];
+            my $det  = delete $copy{detail};
+            my @det  = !defined $det ? () : ref $det eq 'ARRAY' ? @$det : $det;
+            $copy{detail}{$elem} = [ map $details->($doc, $_), @det ];
             $wrfault->($doc, \%copy);
           };
 
@@ -234,6 +246,35 @@ sub _writer_faults($)
     (\@rules, \@flabels);
 }
 
+sub _write_one_fault($$)
+{   my ($self, $args, $part) = @_;
+
+    # spec says: details ALWAYS namespace qualified!
+    if(my $elem = $part->{element})
+    {   my $writer = $self->{writer} ||=
+            $self->_writer($elem, elements_qualified => 'TOP'
+                , include_namespaces => sub {$_[0] ne SOAP11ENV && $_[2]});
+        return ($elem, $writer);
+    }
+
+    if(my $type = $part->{type})
+    {   $args->{style} eq 'rpc'
+            or error __x"part {name} uses `type', only for rpc not {style}"
+                 , name => $part->{name}, style => $args->{style};
+
+        my $elem   = $part->{name};
+        my $writer = $part->{writer} ||= $self->schemas->compileType
+          ( WRITER  => $part->{type}, %$args
+          , element => $part->{name}
+          , include_namespaces => sub {$_[0] ne SOAP11ENV && $_[2]}
+          );
+       return ($elem, $writer);
+    }
+
+    error __x"fault part {name} has neither `element' nor `type' specified"
+       , name => $part->{name};
+}
+
 ##########
 # Receiver
 
@@ -252,8 +293,9 @@ sub _reader_fault_reader()
        foreach my $node (@childs)
        {   my $type  = type_of_node($node);
            push @{$h{_ELEMENT_ORDER}}, $type;
-           $h{$type} = $schemas->reader($type, elements_qualified=>'TOP')
-              ->($node);
+           my $dec   = try { $schemas->reader($type, elements_qualified=>'TOP')
+              ->($node) };
+           $h{$type} = $dec // $node;
        }
        ($tag => \%h);
     };
@@ -269,7 +311,7 @@ sub _reader_faults($$)
 
     my %names;
     while(my ($name, $def) = each %$faults)
-    {   $names{$def->{part}{element}} = $name;
+    {   $names{$def->{part}{element} || $name} = $name;
     }
 
     sub
@@ -2,7 +2,7 @@
 
 =head1 NAME
 
-XML::Compile::SOAP11 - base for SOAP1.1 implementation
+XML::Compile::SOAP11 - SOAP 1.1 protocol
 
 =head1 INHERITANCE
 
@@ -32,26 +32,26 @@ Two extensions are made: the SOAP11 client
 L<XML::Compile::SOAP11::Client|XML::Compile::SOAP11::Client>.
 and server in L<XML::Compile::SOAP11::Server|XML::Compile::SOAP11::Server>.
 
-See L<documentation in the base class|XML::Compile::SOAP/"DESCRIPTION">.
+Extends L<"DESCRIPTION" in XML::Compile::SOAP|XML::Compile::SOAP/"DESCRIPTION">.
  
 =head1 METHODS
 
-See L<documentation in the base class|XML::Compile::SOAP/"METHODS">.
+Extends L<"METHODS" in XML::Compile::SOAP|XML::Compile::SOAP/"METHODS">.
  
 =head2 Constructors
 
-See L<documentation in the base class|XML::Compile::SOAP/"Constructors">.
+Extends L<"Constructors" in XML::Compile::SOAP|XML::Compile::SOAP/"Constructors">.
  
 =over 4
 
-=item $obj-E<gt>B<new>(OPTIONS)
+=item $obj-E<gt>B<new>(%options)
 
 To simplify the URIs of the actors, as specified with the C<destination>
 option, you may use the STRING C<NEXT>.  It will be replaced by the
 right URI.
 
  -Option    --Defined in        --Default
-  media_type  XML::Compile::SOAP  application/soap+xml
+  media_type  XML::Compile::SOAP  text/xml
   schemas     XML::Compile::SOAP  created internally
 
 =over 2
@@ -62,35 +62,39 @@ right URI.
 
 =back
 
+=item XML::Compile::SOAP11-E<gt>B<register>($uri, $envns)
+
+Inherited, see L<XML::Compile::SOAP/"Constructors">
+
 =back
 
 =head2 Accessors
 
-See L<documentation in the base class|XML::Compile::SOAP/"Accessors">.
+Extends L<"Accessors" in XML::Compile::SOAP|XML::Compile::SOAP/"Accessors">.
  
 =over 4
 
-=item $obj-E<gt>B<name>()
+=item $obj-E<gt>B<mediaType>()
 
-See L<XML::Compile::SOAP/"Accessors">
+Inherited, see L<XML::Compile::SOAP/"Accessors">
 
 =item $obj-E<gt>B<schemas>()
 
-See L<XML::Compile::SOAP/"Accessors">
+Inherited, see L<XML::Compile::SOAP/"Accessors">
 
 =item $obj-E<gt>B<version>()
 
-See L<XML::Compile::SOAP/"Accessors">
+Inherited, see L<XML::Compile::SOAP/"Accessors">
 
 =back
 
 =head2 Single message
 
-See L<documentation in the base class|XML::Compile::SOAP/"Single message">.
+Extends L<"Single message" in XML::Compile::SOAP|XML::Compile::SOAP/"Single message">.
  
 =over 4
 
-=item $obj-E<gt>B<compileMessage>(('SENDER'|'RECEIVER'), OPTIONS)
+=item $obj-E<gt>B<compileMessage>( <'SENDER'|'RECEIVER'>, %options )
 
  -Option        --Defined in        --Default
   body            XML::Compile::SOAP  []
@@ -129,57 +133,61 @@ decoded automatically.
 
 =back
 
-=item $obj-E<gt>B<messageStructure>(XML)
+=item $obj-E<gt>B<messageStructure>($xml)
 
-=item XML::Compile::SOAP11-E<gt>B<messageStructure>(XML)
+=item XML::Compile::SOAP11-E<gt>B<messageStructure>($xml)
 
-See L<XML::Compile::SOAP/"Single message">
+Inherited, see L<XML::Compile::SOAP/"Single message">
 
 =back
 
 =head2 Helpers
 
-See L<documentation in the base class|XML::Compile::SOAP/"Helpers">.
+Extends L<"Helpers" in XML::Compile::SOAP|XML::Compile::SOAP/"Helpers">.
  
 =head2 Transcoding
 
-See L<documentation in the base class|XML::Compile::SOAP/"Transcoding">.
+Extends L<"Transcoding" in XML::Compile::SOAP|XML::Compile::SOAP/"Transcoding">.
  
 =over 4
 
-=item $obj-E<gt>B<replyMustUnderstandFault>(TYPE)
+=item $obj-E<gt>B<replyMustUnderstandFault>($type)
 
-See L<XML::Compile::SOAP/"Transcoding">
+Inherited, see L<XML::Compile::SOAP/"Transcoding">
 
-=item $obj-E<gt>B<roleAbbreviation>(URI)
+=item $obj-E<gt>B<roleAbbreviation>($uri)
 
-See L<XML::Compile::SOAP/"Transcoding">
+Inherited, see L<XML::Compile::SOAP/"Transcoding">
 
-=item $obj-E<gt>B<roleURI>(URI|STRING)
+=item $obj-E<gt>B<roleURI>($uri|STRING)
 
-See L<XML::Compile::SOAP/"Transcoding">
+Inherited, see L<XML::Compile::SOAP/"Transcoding">
 
 =back
 
 =head1 DETAILS
 
-See L<documentation in the base class|XML::Compile::SOAP/"DETAILS">.
+Extends L<"DETAILS" in XML::Compile::SOAP|XML::Compile::SOAP/"DETAILS">.
  
 =head2 SOAP introduction
 
-See L<documentation in the base class|XML::Compile::SOAP/"SOAP introduction">.
+Extends L<"SOAP introduction" in XML::Compile::SOAP|XML::Compile::SOAP/"SOAP introduction">.
+ 
+=head2 Supported servers
+
+Extends L<"Supported servers" in XML::Compile::SOAP|XML::Compile::SOAP/"Supported servers">.
  
 =head2 Naming types and elements
 
-See L<documentation in the base class|XML::Compile::SOAP/"Naming types and elements">.
+Extends L<"Naming types and elements" in XML::Compile::SOAP|XML::Compile::SOAP/"Naming types and elements">.
  
 =head2 Client and Server implementations
 
-See L<documentation in the base class|XML::Compile::SOAP/"Client and Server implementations">.
+Extends L<"Client and Server implementations" in XML::Compile::SOAP|XML::Compile::SOAP/"Client and Server implementations">.
  
 =head2 Use of wildcards (any/anyAttribute)
 
-See L<documentation in the base class|XML::Compile::SOAP/"Use of wildcards (any/anyAttribute)">.
+Extends L<"Use of wildcards (any/anyAttribute)" in XML::Compile::SOAP|XML::Compile::SOAP/"Use of wildcards (any/anyAttribute)">.
  
 =head2 Header and Body entries
 
@@ -341,12 +349,13 @@ Or
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -368,7 +377,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,7 +7,7 @@ use strict;
 
 package XML::Compile::Transport::SOAPHTTP;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 use base 'XML::Compile::Transport';
 
@@ -19,18 +19,13 @@ use LWP            ();
 use LWP::UserAgent ();
 use HTTP::Request  ();
 use HTTP::Headers  ();
-
-if($] >= 5.008003)
-{   use Encode;
-    Encode->import;
-}
-else
-{   *encode = sub { $_[1] };
-}
+use Encode;
 
 # (Microsofts HTTP Extension Framework)
 my $http_ext_id = SOAP11ENV;
 
+my $mime_xop    = 'application/xop+xml';
+
 __PACKAGE__->register(SOAP11HTTP);
 
 
@@ -92,11 +87,11 @@ sub _prepare_call($)
 
     my $content_type;
     if($version eq 'SOAP11')
-    {   $mime  ||= 'text/xml';
+    {   $mime  ||= ref $soap ? $soap->mimeType : 'text/xml';
         $content_type = qq{$mime; charset="$charset"};
     }
     elsif($version eq 'SOAP12')
-    {   $mime  ||= 'application/soap+xml';
+    {   $mime  ||= ref $soap ? $soap->mimeType : 'application/soap+xml';
         my $sa   = defined $action ? qq{; action="$action"} : '';
         $content_type = qq{$mime; charset="$charset"$sa};
         $header->header(Accept => $mime);  # not the HTML answer
@@ -106,7 +101,9 @@ sub _prepare_call($)
     }
 
     if($method eq 'POST')
-    {   $header->header(SOAPAction => qq{"$action"})
+    {   # should only be used by SOAP11, but you never know.  So, SOAP12
+        # will have the action both ways.
+        $header->header(SOAPAction => qq{"$action"})
             if defined $action;
     }
     elsif($method eq 'M-POST')
@@ -223,8 +220,8 @@ sub _prepare_simple_call($)
             or error __x"answer is not xml but `{type}'", type => $ct;
 
         # HTTP::Message::decoded_content() does not work for old Perls
-        my $content = $] >= 5.008 ? $response->decoded_content(ref => 1)
-          : $response->content(ref => 1);
+        my $content = $response->decoded_content(ref => 1)
+                   || $response->content(ref => 1);
 
         ($content, {});
       };
@@ -246,26 +243,23 @@ sub _prepare_xop_call($)
         my $bound      = "MIME-boundary-".int rand 10000;
         (my $start_cid = $mtom->[0]->cid) =~ s/^.*\@/xml@/;
 
-        $request->header(Content_Type => <<_CT);
+        $request->header(Content_Type => <<__CT);
 multipart/related;
  boundary="$bound";
- type="application/xop+xml"
+ type="$mime_xop";
  start="<$start_cid>";
- start-info="text/xml"
-_CT
+ start-info="$content_type"
+__CT
 
         my $base = HTTP::Message->new
-          ( [ Content_Type => <<_CT
-application/xop+xml;
- charset="$charset"; type="text/xml"
-_CT
+          ( [ Content_Type => qq{$mime_xop; charset="$charset"; type="$content_type"}
             , Content_Transfer_Encoding => '8bit'
-            , Content_ID  => '<'.$start_cid.'>'
+            , Content_ID  => "<$start_cid>"
             ] );
         $base->content_ref($content);   # already bytes (not utf-8)
 
-        my @parts = ($base, map { $_->mimePart } @$mtom);
-        $request->parts(@parts); #$base, map { $_->mimePart } @$mtom);
+        my @parts = ($base, map $_->mimePart, @$mtom);
+        $request->parts(@parts); #$base, map $_->mimePart, @$mtom);
         $request;
       };
 
@@ -24,25 +24,27 @@ XML::Compile::Transport::SOAPHTTP - exchange XML-SOAP via HTTP
 
  my ($xmlout, $trace) = $call->($xmlin);
 
+ $wsdl->compileCalls(transport => $send);
+
 =head1 DESCRIPTION
 
 This module handles the exchange of (XML) messages, according to the
 rules of SOAP (any version).  The module does not known how to parse
 or compose XML, but only worries about the HTTP aspects.
 
-See L<documentation in the base class|XML::Compile::Transport/"DESCRIPTION">.
+Extends L<"DESCRIPTION" in XML::Compile::Transport|XML::Compile::Transport/"DESCRIPTION">.
  
 =head1 METHODS
 
-See L<documentation in the base class|XML::Compile::Transport/"METHODS">.
+Extends L<"METHODS" in XML::Compile::Transport|XML::Compile::Transport/"METHODS">.
  
 =head2 Constructors
 
-See L<documentation in the base class|XML::Compile::Transport/"Constructors">.
+Extends L<"Constructors" in XML::Compile::Transport|XML::Compile::Transport/"Constructors">.
  
 =over 4
 
-=item XML::Compile::Transport::SOAPHTTP-E<gt>B<new>(OPTIONS)
+=item XML::Compile::Transport::SOAPHTTP-E<gt>B<new>(%options)
 
 Create a SOAP-over-HTTP handler, implemented as a wrapper around
 LWP::UserAgent.
@@ -91,62 +93,84 @@ If you do not pass your own user agent, a default will be created for you.
 
 =head2 WSDL11
 
-See L<documentation in the base class|XML::Compile::Transport/"WSDL11">.
+Extends L<"WSDL11" in XML::Compile::Transport|XML::Compile::Transport/"WSDL11">.
  
 =over 4
 
-=item $obj-E<gt>B<wsdl11Init>(WSDL, ARGS)
+=item $obj-E<gt>B<wsdl11Init>($wsdl, $args)
 
-=item XML::Compile::Transport::SOAPHTTP-E<gt>B<wsdl11Init>(WSDL, ARGS)
+=item XML::Compile::Transport::SOAPHTTP-E<gt>B<wsdl11Init>($wsdl, $args)
 
-See L<XML::Compile::SOAP::Extension/"WSDL11">
+Inherited, see L<XML::Compile::SOAP::Extension/"WSDL11">
 
 =back
 
 =head2 SOAP11
 
-See L<documentation in the base class|XML::Compile::Transport/"SOAP11">.
+Extends L<"SOAP11" in XML::Compile::Transport|XML::Compile::Transport/"SOAP11">.
+ 
+=over 4
+
+=item $obj-E<gt>B<soap11ClientWrapper>($operation, $call, $args)
+
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP11">
+
+=item $obj-E<gt>B<soap11HandlerWrapper>($operation, $callback, $args)
+
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP11">
+
+=item $obj-E<gt>B<soap11OperationInit>($operation, $args)
+
+=item XML::Compile::Transport::SOAPHTTP-E<gt>B<soap11OperationInit>($operation, $args)
+
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP11">
+
+=back
+
+=head2 SOAP12
+
+Extends L<"SOAP12" in XML::Compile::Transport|XML::Compile::Transport/"SOAP12">.
  
 =over 4
 
-=item $obj-E<gt>B<soap11ClientWrapper>(OPERATION, CALL, ARGS)
+=item $obj-E<gt>B<soap12ClientWrapper>($operation, $call, $args)
 
-See L<XML::Compile::SOAP::Extension/"SOAP11">
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP12">
 
-=item $obj-E<gt>B<soap11HandlerWrapper>(OPERATION, CALLBACK, ARGS)
+=item $obj-E<gt>B<soap12HandlerWrapper>($operation, $callback, $args)
 
-See L<XML::Compile::SOAP::Extension/"SOAP11">
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP12">
 
-=item $obj-E<gt>B<soap11OperationInit>(OPERATION, ARGS)
+=item $obj-E<gt>B<soap12OperationInit>($operation, $args)
 
-=item XML::Compile::Transport::SOAPHTTP-E<gt>B<soap11OperationInit>(OPERATION, ARGS)
+=item XML::Compile::Transport::SOAPHTTP-E<gt>B<soap12OperationInit>($operation, $args)
 
-See L<XML::Compile::SOAP::Extension/"SOAP11">
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP12">
 
 =back
 
 =head2 Accessors
 
-See L<documentation in the base class|XML::Compile::Transport/"Accessors">.
+Extends L<"Accessors" in XML::Compile::Transport|XML::Compile::Transport/"Accessors">.
  
 =over 4
 
 =item $obj-E<gt>B<address>()
 
-See L<XML::Compile::Transport/"Accessors">
+Inherited, see L<XML::Compile::Transport/"Accessors">
 
 =item $obj-E<gt>B<addresses>()
 
-See L<XML::Compile::Transport/"Accessors">
+Inherited, see L<XML::Compile::Transport/"Accessors">
 
 =item $obj-E<gt>B<charset>()
 
-See L<XML::Compile::Transport/"Accessors">
+Inherited, see L<XML::Compile::Transport/"Accessors">
 
-=item $obj-E<gt>B<userAgent>([AGENT|(undef, OPTIONS)])
+=item $obj-E<gt>B<userAgent>( [$agent|<undef, %options>] )
 
 Returns the User Agent which will be used.  You may change the
-configuration of the AGENT (the returned LWP::UserAgent object)
+configuration of the $agent (the returned LWP::UserAgent object)
 or provide one yourself.  See also L<new(user_agent)|XML::Compile::Transport::SOAPHTTP/"METHODS">.
 
 Changes to the agent configuration can be made before or after the
@@ -156,11 +180,11 @@ compilation, or even inbetween SOAP calls.
 
 =head2 Handlers
 
-See L<documentation in the base class|XML::Compile::Transport/"Handlers">.
+Extends L<"Handlers" in XML::Compile::Transport|XML::Compile::Transport/"Handlers">.
  
 =over 4
 
-=item $obj-E<gt>B<compileClient>(OPTIONS)
+=item $obj-E<gt>B<compileClient>(%options)
 
 Compile an HTTP client handler.  Returned is a subroutine which is called
 with a text represenation of the XML request, or an XML::LibXML tree.
@@ -234,9 +258,9 @@ example: create a client
  my ($answer, $trace) = $call->($request);
  my $answer = $call->($request); # drop $trace info immediately
 
-=item $obj-E<gt>B<headerAddVersions>(HEADER)
+=item $obj-E<gt>B<headerAddVersions>($header)
 
-=item XML::Compile::Transport::SOAPHTTP-E<gt>B<headerAddVersions>(HEADER)
+=item XML::Compile::Transport::SOAPHTTP-E<gt>B<headerAddVersions>($header)
 
 Adds some lines about module versions, which may help debugging
 or error reports.  This is called when a new client or server
@@ -246,32 +270,33 @@ is being created.
 
 =head1 DETAILS
 
-See L<documentation in the base class|XML::Compile::Transport/"DETAILS">.
+Extends L<"DETAILS" in XML::Compile::Transport|XML::Compile::Transport/"DETAILS">.
  
 =head1 SYNOPSYS
 
-See L<documentation in the base class|XML::Compile::Transport/"SYNOPSYS">.
+Extends L<"SYNOPSYS" in XML::Compile::Transport|XML::Compile::Transport/"SYNOPSYS">.
  
 =head1 Helpers
 
-See L<documentation in the base class|XML::Compile::Transport/"Helpers">.
+Extends L<"Helpers" in XML::Compile::Transport|XML::Compile::Transport/"Helpers">.
  
 =over 4
 
-=item XML::Compile::Transport::SOAPHTTP-E<gt>B<register>(URI)
+=item XML::Compile::Transport::SOAPHTTP-E<gt>B<register>($uri)
 
-See L<XML::Compile::Transport/"Helpers">
+Inherited, see L<XML::Compile::Transport/"Helpers">
 
 =back
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -293,7 +318,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,7 +7,7 @@ use strict;
 
 package XML::Compile::Transport;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 use base 'XML::Compile::SOAP::Extension';
 
@@ -47,19 +47,19 @@ in parallel.
 
 =back
 
-See L<documentation in the base class|XML::Compile::SOAP::Extension/"DESCRIPTION">.
+Extends L<"DESCRIPTION" in XML::Compile::SOAP::Extension|XML::Compile::SOAP::Extension/"DESCRIPTION">.
  
 =head1 METHODS
 
-See L<documentation in the base class|XML::Compile::SOAP::Extension/"METHODS">.
+Extends L<"METHODS" in XML::Compile::SOAP::Extension|XML::Compile::SOAP::Extension/"METHODS">.
  
 =head2 Constructors
 
-See L<documentation in the base class|XML::Compile::SOAP::Extension/"Constructors">.
+Extends L<"Constructors" in XML::Compile::SOAP::Extension|XML::Compile::SOAP::Extension/"Constructors">.
  
 =over 4
 
-=item XML::Compile::Transport-E<gt>B<new>(OPTIONS)
+=item XML::Compile::Transport-E<gt>B<new>(%options)
 
  -Option --Default
   address  'http://localhost'
@@ -79,37 +79,59 @@ One or more URI which represents the servers.
 
 =head2 WSDL11
 
-See L<documentation in the base class|XML::Compile::SOAP::Extension/"WSDL11">.
+Extends L<"WSDL11" in XML::Compile::SOAP::Extension|XML::Compile::SOAP::Extension/"WSDL11">.
  
 =over 4
 
-=item $obj-E<gt>B<wsdl11Init>(WSDL, ARGS)
+=item $obj-E<gt>B<wsdl11Init>($wsdl, $args)
 
-=item XML::Compile::Transport-E<gt>B<wsdl11Init>(WSDL, ARGS)
+=item XML::Compile::Transport-E<gt>B<wsdl11Init>($wsdl, $args)
 
-See L<XML::Compile::SOAP::Extension/"WSDL11">
+Inherited, see L<XML::Compile::SOAP::Extension/"WSDL11">
 
 =back
 
 =head2 SOAP11
 
-See L<documentation in the base class|XML::Compile::SOAP::Extension/"SOAP11">.
+Extends L<"SOAP11" in XML::Compile::SOAP::Extension|XML::Compile::SOAP::Extension/"SOAP11">.
  
 =over 4
 
-=item $obj-E<gt>B<soap11ClientWrapper>(OPERATION, CALL, ARGS)
+=item $obj-E<gt>B<soap11ClientWrapper>($operation, $call, $args)
 
-See L<XML::Compile::SOAP::Extension/"SOAP11">
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP11">
 
-=item $obj-E<gt>B<soap11HandlerWrapper>(OPERATION, CALLBACK, ARGS)
+=item $obj-E<gt>B<soap11HandlerWrapper>($operation, $callback, $args)
 
-See L<XML::Compile::SOAP::Extension/"SOAP11">
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP11">
 
-=item $obj-E<gt>B<soap11OperationInit>(OPERATION, ARGS)
+=item $obj-E<gt>B<soap11OperationInit>($operation, $args)
 
-=item XML::Compile::Transport-E<gt>B<soap11OperationInit>(OPERATION, ARGS)
+=item XML::Compile::Transport-E<gt>B<soap11OperationInit>($operation, $args)
 
-See L<XML::Compile::SOAP::Extension/"SOAP11">
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP11">
+
+=back
+
+=head2 SOAP12
+
+Extends L<"SOAP12" in XML::Compile::SOAP::Extension|XML::Compile::SOAP::Extension/"SOAP12">.
+ 
+=over 4
+
+=item $obj-E<gt>B<soap12ClientWrapper>($operation, $call, $args)
+
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP12">
+
+=item $obj-E<gt>B<soap12HandlerWrapper>($operation, $callback, $args)
+
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP12">
+
+=item $obj-E<gt>B<soap12OperationInit>($operation, $args)
+
+=item XML::Compile::Transport-E<gt>B<soap12OperationInit>($operation, $args)
+
+Inherited, see L<XML::Compile::SOAP::Extension/"SOAP12">
 
 =back
 
@@ -136,7 +158,7 @@ Returns the charset to be used when sending,
 
 =over 4
 
-=item $obj-E<gt>B<compileClient>(OPTIONS)
+=item $obj-E<gt>B<compileClient>(%options)
 
 Compile a client handler.  Returned is a subroutine which is called
 with a text represenation of the XML request, or an XML::LibXML tree.
@@ -153,7 +175,7 @@ contains trace information.
 
 =item hook => CODE
 
-See section L<DETAILS/Use of the transport hook>.
+See section L</Use of the transport hook>.
 When defined, the hook will be called, in stead of transmitting the
 message.  The hook will gets three parameters passed in: the textual
 representation of the XML message to be transmitted, the trace HASH with
@@ -215,8 +237,8 @@ can modify the outgoing message XML body and headers, carry out the data
 exchange using the UserAgent, and then examine the returned Reponse for
 content and headers using methods similar to the following:
 
- sub transport_hook($$)
- {   my ($request, $trace) = @_;
+ sub transport_hook($$$)
+ {   my ($request, $trace, $transporter) = @_;
      my $content = $request->content;
 
      # ... modify content if you need
@@ -233,7 +255,7 @@ content and headers using methods similar to the following:
      my $response = $ua->request($request);
 
      # ... check the response headers
-     $response->header('Name');
+     my $name = $response->header('Name');
 
      # ... use the response content
      my $received = $response->decoded_content || $response->content;
@@ -284,15 +306,48 @@ or
   $wsdl->compileClient('GetLastTracePrice',
       transport_hook => \&fake_server);
 
+=head3 Transport hook for basic authentication
+
+[Adapted from an example contributed by Kieron Johnson]
+This example shows a transport_hook for compileClient() to add to http
+headers for the basic http authentication.  The parameter can also be
+used for compileAll() and many other related functions.
+
+  my $call = $wsdl->compileClient($operation
+     , transport_hook => \&basic_auth );
+
+  # HTTP basic authentication encodes the username and password with
+  # Base64. The encoded source string has format: "username:password"
+  # With the below HTTP header being required:
+  #        "Authorization: Basic [encoded password]"
+
+  use MIME::Base64 'encode_base64';
+
+  my $user     = 'myuserid' ;
+  my $password = 'mypassword';
+
+  sub basic_auth($$)
+  {   my ($request, $trace) = @_;
+
+      # Encode userid and password
+      my $authorization = 'Basic '. encode_base64 "$user:$password";
+
+      # Modify http header to include basic authorisation
+      $request->header(Authorization => $authorization );
+
+      my $ua = $trace->{user_agent};
+      $ua->request($request);
+  }
+
 =head1 SYNOPSYS
 
-See L<documentation in the base class|XML::Compile::SOAP::Extension/"SYNOPSYS">.
+Extends L<"SYNOPSYS" in XML::Compile::SOAP::Extension|XML::Compile::SOAP::Extension/"SYNOPSYS">.
  
 =head1 Helpers
 
 =over 4
 
-=item XML::Compile::Transport-E<gt>B<register>(URI)
+=item XML::Compile::Transport-E<gt>B<register>($uri)
 
 Declare an transporter type.
 
@@ -300,12 +355,13 @@ Declare an transporter type.
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -327,7 +383,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
- 
-Copyright 2001 - 2005, International Business Machines Corporation and Microsoft Corporation
-All Rights Reserved
-
-License for WSDL Schema Files
-
-The Authors grant permission to copy and distribute the WSDL Schema 
-Files in any medium without fee or royalty as long as this notice and 
-license are distributed with them.  The originals of these files can 
-be located at:
-
-http://schemas.xmlsoap.org/wsdl/http/wsdl-http.xsd
-
-THESE SCHEMA FILES ARE PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS 
-OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THESE FILES, INCLUDING, BUT NOT 
-LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, 
-NON-INFRINGEMENT OR TITLE.  THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, 
-INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR 
-RELATING TO ANY USE OR DISTRIBUTION OF THESE FILES.
-
-The name and trademarks of the Authors may NOT be used in any manner, 
-including advertising or publicity pertaining to these files or any program 
-or service that uses these files, written prior permission.  Title to copyright 
-in these files will at all times remain with the Authors.
-
-No other rights are granted by implication, estoppel or otherwise.
-
-
-
-  -->
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://schemas.xmlsoap.org/wsdl/http/">
-
-	<import namespace="http://schemas.xmlsoap.org/wsdl/"/>
-
-   	<element name="address" type="http:addressType"/>
-
-   	<complexType name="addressType">
-		<complexContent>
-		<extension base="wsdl:tExtensibilityElement">
-			<sequence/>
-   			<attribute name="location" type="anyURI" use="required"/>
-		</extension>
-		</complexContent>
-   	</complexType>
-
-   	<element name="binding" type="http:bindingType"/>
-   	<complexType name="bindingType">
-		<complexContent>
-		<extension base="wsdl:tExtensibilityElement">
-			<sequence/>
-	      		<attribute name="verb" type="NMTOKEN" use="required"/>
-		</extension>
-		</complexContent>
-   	</complexType>
-
-   	<element name="operation" type="http:operationType"/>
-   	<complexType name="operationType">
-		<complexContent>
-		<extension base="wsdl:tExtensibilityElement">
-			<sequence/>
-	      		<attribute name="location" type="anyURI" use="required"/>
-		</extension>
-		</complexContent>
-	</complexType>
-
-   	<element name="urlEncoded">
-      		<complexType/>  		
-   	</element>
-   	<element name="urlReplacement">
-      		<complexType/>
-     	</element>
-</schema>
\ No newline at end of file
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
- 
-Copyright 2001-2005, International Business Machines Corporation and Microsoft Corporation
-All Rights Reserved
-
-License for WSDL Schema Files
-
-The Authors grant permission to copy and distribute the WSDL Schema 
-Files in any medium without fee or royalty as long as this notice and 
-license are distributed with them.  The originals of these files can 
-be located at:
-
-http://schemas.xmlsoap.org/wsdl/mime/2002-01-29.xsd
-
-THESE SCHEMA FILES ARE PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS 
-OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THESE FILES, INCLUDING, BUT NOT 
-LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, 
-NON-INFRINGEMENT OR TITLE.  THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, 
-INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR 
-RELATING TO ANY USE OR DISTRIBUTION OF THESE FILES.
-
-The name and trademarks of the Authors may NOT be used in any manner, 
-including advertising or publicity pertaining to these files or any program 
-or service that uses these files, written prior permission.  Title to copyright 
-in these files will at all times remain with the Authors.
-
-No other rights are granted by implication, estoppel or otherwise.
-
-
-  -->
-<schema targetNamespace="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema">
-
-	<import namespace="http://schemas.xmlsoap.org/wsdl/"/>
-   	<element name="content" type="mime:contentType"/>
-   	<complexType name="contentType">
-		<complexContent>
-		<extension base="wsdl:tExtensibilityElement">
-			<sequence/>
-      			<attribute name="type" type="string" use="optional"/>
-	      		<attribute name="part" type="NMTOKEN" use="optional"/>
-		</extension>
-		</complexContent>
-   	</complexType>
-   	<element name="multipartRelated" type="mime:multipartRelatedType"/>
-   	<complexType name="multipartRelatedType">
-		<complexContent>
-		<extension base="wsdl:tExtensibilityElement">
-			<sequence>
-		      		<element name="part" type="mime:tPart" minOccurs="0" maxOccurs="unbounded"/>
-			</sequence>
-		</extension>
-		</complexContent>
-   	</complexType>
-      	<complexType name="tPart">
-		<sequence>
-	      		<any namespace="##targetNamespace" minOccurs="0" maxOccurs="unbounded"/>
-		</sequence>
-        	<attribute name="name" type="NMTOKEN" use="required"/>
-   	</complexType>
-   	<element name="mimeXml" type="mime:tMimeXml"/>
-   	<complexType name="tMimeXml">
-		<complexContent>
-		<extension base="wsdl:tExtensibilityElement">
-			<sequence/>
-			<attribute name="part" type="NMTOKEN" use="optional"/>
-		</extension>
-		</complexContent>
-   	</complexType>
-</schema>
\ No newline at end of file
@@ -1,307 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-Copyright 2001 - 2005, International Business Machines Corporation and Microsoft Corporation
-All Rights Reserved
-
-License for WSDL Schema Files
-
-The Authors grant permission to copy and distribute the WSDL Schema
-Files in any medium without fee or royalty as long as this notice and
-license are distributed with them.  The originals of these files can
-be located at:
-
-http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd
-
-THESE SCHEMA FILES ARE PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS
-OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THESE FILES, INCLUDING, BUT NOT
-LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
-NON-INFRINGEMENT OR TITLE.  THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT,
-INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR
-RELATING TO ANY USE OR DISTRIBUTION OF THESE FILES.
-
-The name and trademarks of the Authors may NOT be used in any manner,
-including advertising or publicity pertaining to these files or any program
-or service that uses these files, written prior permission.  Title to copyright
-in these files will at all times remain with the Authors.
-
-No other rights are granted by implication, estoppel or otherwise.
-
-
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://schemas.xmlsoap.org/wsdl/" elementFormDefault="qualified">
-
-  <xs:complexType mixed="true" name="tDocumentation">
-    <xs:sequence>
-      <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:complexType name="tDocumented">
-    <xs:annotation>
-      <xs:documentation>
-      This type is extended by  component types to allow them to be documented
-      </xs:documentation>
-    </xs:annotation>
-    <xs:sequence>
-      <xs:element name="documentation" type="wsdl:tDocumentation" minOccurs="0"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:complexType name="tExtensibleAttributesDocumented" abstract="true">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tDocumented">
-        <xs:annotation>
-          <xs:documentation>
-          This type is extended by component types to allow attributes from other namespaces to be added.
-          </xs:documentation>
-        </xs:annotation>
-        <xs:anyAttribute namespace="##other" processContents="lax"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tExtensibleDocumented" abstract="true">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tDocumented">
-        <xs:annotation>
-          <xs:documentation>
-          This type is extended by component types to allow elements from other namespaces to be added.
-          </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-          <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
-        </xs:sequence>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:element name="definitions" type="wsdl:tDefinitions">
-    <xs:key name="message">
-      <xs:selector xpath="wsdl:message"/>
-      <xs:field xpath="@name"/>
-    </xs:key>
-    <xs:key name="portType">
-      <xs:selector xpath="wsdl:portType"/>
-      <xs:field xpath="@name"/>
-    </xs:key>
-    <xs:key name="binding">
-      <xs:selector xpath="wsdl:binding"/>
-      <xs:field xpath="@name"/>
-    </xs:key>
-    <xs:key name="service">
-      <xs:selector xpath="wsdl:service"/>
-      <xs:field xpath="@name"/>
-    </xs:key>
-    <xs:key name="import">
-      <xs:selector xpath="wsdl:import"/>
-      <xs:field xpath="@namespace"/>
-    </xs:key>
-  </xs:element>
-
-  <xs:group name="anyTopLevelOptionalElement">
-    <xs:annotation>
-      <xs:documentation>
-      Any top level optional element allowed to appear more then once - any child of definitions element except wsdl:types. Any extensibility element is allowed in any place.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:choice>
-      <xs:element name="import" type="wsdl:tImport"/>
-      <xs:element name="types" type="wsdl:tTypes"/>
-      <xs:element name="message" type="wsdl:tMessage">
-        <xs:unique name="part">
-          <xs:selector xpath="wsdl:part"/>
-          <xs:field xpath="@name"/>
-        </xs:unique>
-      </xs:element>
-      <xs:element name="portType" type="wsdl:tPortType"/>
-      <xs:element name="binding" type="wsdl:tBinding"/>
-      <xs:element name="service" type="wsdl:tService">
-        <xs:unique name="port">
-          <xs:selector xpath="wsdl:port"/>
-          <xs:field xpath="@name"/>
-        </xs:unique>
-	  </xs:element>
-    </xs:choice>
-  </xs:group>
-
-  <xs:complexType name="tDefinitions">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleDocumented">
-        <xs:sequence>
-          <xs:group ref="wsdl:anyTopLevelOptionalElement" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="targetNamespace" type="xs:anyURI" use="optional"/>
-        <xs:attribute name="name" type="xs:NCName" use="optional"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <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>
-
-  <xs:complexType name="tTypes">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleDocumented"/>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tMessage">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleDocumented">
-        <xs:sequence>
-          <xs:element name="part" type="wsdl:tPart" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="name" type="xs:NCName" use="required"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tPart">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleAttributesDocumented">
-        <xs:attribute name="name" type="xs:NCName" use="required"/>
-        <xs:attribute name="element" type="xs:QName" use="optional"/>
-        <xs:attribute name="type" type="xs:QName" use="optional"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tPortType">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleAttributesDocumented">
-        <xs:sequence>
-          <xs:element name="operation" type="wsdl:tOperation" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="name" type="xs:NCName" use="required"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tOperation">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleDocumented">
-	    <xs:sequence>
-          <xs:choice>
-            <xs:group ref="wsdl:request-response-or-one-way-operation"/>
-            <xs:group ref="wsdl:solicit-response-or-notification-operation"/>
-          </xs:choice>
-        </xs:sequence>
-        <xs:attribute name="name" type="xs:NCName" use="required"/>
-        <xs:attribute name="parameterOrder" type="xs:NMTOKENS" use="optional"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:group name="request-response-or-one-way-operation">
-    <xs:sequence>
-      <xs:element name="input" type="wsdl:tParam"/>
-	  <xs:sequence minOccurs="0">
-	    <xs:element name="output" type="wsdl:tParam"/>
-		<xs:element name="fault" type="wsdl:tFault" minOccurs="0" maxOccurs="unbounded"/>
-      </xs:sequence>
-    </xs:sequence>
-  </xs:group>
-
-  <xs:group name="solicit-response-or-notification-operation">
-    <xs:sequence>
-      <xs:element name="output" type="wsdl:tParam"/>
-	  <xs:sequence minOccurs="0">
-	    <xs:element name="input" type="wsdl:tParam"/>
-		<xs:element name="fault" type="wsdl:tFault" minOccurs="0" maxOccurs="unbounded"/>
-	  </xs:sequence>
-    </xs:sequence>
-  </xs:group>
-
-  <xs:complexType name="tParam">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleAttributesDocumented">
-        <xs:attribute name="name" type="xs:NCName" use="optional"/>
-        <xs:attribute name="message" type="xs:QName" use="required"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tFault">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleAttributesDocumented">
-        <xs:attribute name="name" type="xs:NCName" use="required"/>
-        <xs:attribute name="message" type="xs:QName" use="required"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tBinding">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleDocumented">
-        <xs:sequence>
-          <xs:element name="operation" type="wsdl:tBindingOperation" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="name" type="xs:NCName" use="required"/>
-        <xs:attribute name="type" type="xs:QName" use="required"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tBindingOperationMessage">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleDocumented">
-        <xs:attribute name="name" type="xs:NCName" use="optional"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tBindingOperationFault">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleDocumented">
-        <xs:attribute name="name" type="xs:NCName" use="required"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tBindingOperation">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleDocumented">
-        <xs:sequence>
-          <xs:element name="input" type="wsdl:tBindingOperationMessage" minOccurs="0"/>
-          <xs:element name="output" type="wsdl:tBindingOperationMessage" minOccurs="0"/>
-          <xs:element name="fault" type="wsdl:tBindingOperationFault" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="name" type="xs:NCName" use="required"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tService">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleDocumented">
-        <xs:sequence>
-          <xs:element name="port" type="wsdl:tPort" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="name" type="xs:NCName" use="required"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:complexType name="tPort">
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibleDocumented">
-        <xs:attribute name="name" type="xs:NCName" use="required"/>
-        <xs:attribute name="binding" type="xs:QName" use="required"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:attribute name="arrayType" type="xs:string"/>
-  <xs:attribute name="required" type="xs:boolean"/>
-  <xs:complexType name="tExtensibilityElement" abstract="true">
-    <xs:attribute ref="wsdl:required" use="optional"/>
-  </xs:complexType>
-
-</xs:schema>
@@ -1,544 +0,0 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
-#  For other contributors see ChangeLog.
-# See the manual pages for details on the licensing terms.
-# Pod stripped from pm file by OODoc 2.01.
-use warnings;
-use strict;
-
-package XML::Compile::WSDL11;
-use vars '$VERSION';
-$VERSION = '2.38';
-
-use base 'XML::Compile::Cache';
-
-use Log::Report 'xml-compile-soap', syntax => 'SHORT';
-
-use XML::Compile             ();      
-use XML::Compile::Util       qw/pack_type unpack_type/;
-use XML::Compile::SOAP::Util qw/:wsdl11/;
-use XML::Compile::SOAP::Extension;
-
-use XML::Compile::SOAP::Operation  ();
-use XML::Compile::Transport  ();
-
-use List::Util               qw/first/;
-use Scalar::Util             qw/blessed/;
-
-XML::Compile->addSchemaDirs(__FILE__);
-XML::Compile->knownNamespace(&WSDL11 => 'wsdl.xsd');
-
-
-sub init($)
-{   my ($self, $args) = @_;
-    $args->{schemas} and panic "new(schemas) option removed in 0.78";
-    my $wsdl = delete $args->{top};
-
-    local $args->{any_element}      = 'ATTEMPT';
-    local $args->{any_attribute}    = 'ATTEMPT'; # not implemented
-    local $args->{allow_undeclared} = 1;
-
-    $self->SUPER::init($args);
-
-    $self->{index}   = {};
-
-    $self->addPrefixes(wsdl => WSDL11, soap => WSDL11SOAP, http => WSDL11HTTP);
-
-    # next modules should change into an extension as well...
-    $_->can('_initWSDL11') && $_->_initWSDL11($self)
-        for XML::Compile::SOAP::Operation->registered;
-
-    XML::Compile::SOAP::Extension->wsdl11Init($self, $args);
-
-    $self->declare
-      ( READER      => 'wsdl:definitions'
-      , key_rewrite => 'PREFIXED(wsdl,soap,http)'
-      , hook        => {type => 'wsdl:tOperation', after => 'ELEMENT_ORDER'}
-      );
-
-    $self->{XCW_dcopts} = {};
-
-    $self->importDefinitions(WSDL11);
-
-    $self->addWSDL($_) for ref $wsdl eq 'ARRAY' ? @$wsdl : $wsdl;
-    $self;
-}
-
-sub schemas(@) { panic "schemas() removed in v2.00, not needed anymore" }
-
-#--------------------------
-
-
-sub compileAll(;$$)
-{   my ($self, $need, $usens) = @_;
-    $self->SUPER::compileAll($need, $usens)
-        if !$need || $need ne 'CALLS';
-
-    $self->compileCalls
-        if !$need || $need eq 'CALLS';
-    $self;
-} 
-
-
-sub compileCalls(@)
-{   my ($self, %args) = @_;
-
-    my @ops = $self->operations
-      ( service => delete $args{service}
-      , port    => delete $args{port}
-      , binding => delete $args{binding}
-      );
-
-    $self->compileCall($_, %args) for @ops;
-}
-
-
-sub compileCall($@)
-{   my ($self, $oper, @opts) = @_;
-    my $op    = blessed $oper ? $oper : $self->operation($oper, @opts);
-
-    my $name  = $op->name;
-    error __x"a compiled call for {name} already exists", name => $name
-        if $self->{XCW_ccode}{$name};
-
-    my $dopts = $self->{XCW_dcopts} || {};
-    push @opts, ref $dopts eq 'ARRAY' ? @$dopts : %$dopts;
-    $self->{XCW_ccode}{$name} = $op->compileClient(@opts);
-}
-
-
-sub call($@)
-{   my ($self, $name) = (shift, shift);
-
-    my $codes = $self->{XCW_ccode}
-        or error __x"you can only use call() after compileCalls()";
-
-    my $call  = $codes->{$name}
-        or error __x"operation {name} is not known", name => $name;
-    
-    $call->(@_);
-}
-
-#--------------------------
-
-
-sub addWSDL($)
-{   my ($self, $data) = @_;
-    defined $data or return ();
-
-    my ($node, %details) = $self->dataToXML($data);
-    defined $node or return $self;
-
-    $node->localName eq 'definitions' && $node->namespaceURI eq WSDL11
-        or error __x"root element for WSDL is not 'wsdl:definitions'";
-
-    $self->importDefinitions($node, details => \%details);
-    $self->learnPrefixes($node);
-
-    my $spec = $self->reader('wsdl:definitions')->($node);
-    my $tns  = $spec->{targetNamespace}
-        or error __x"WSDL sets no targetNamespace";
-
-    # WSDL 1.1 par 2.1.1 says: WSDL def types each in own name-space
-    my $index     = $self->{index};
-
-    # silly WSDL structure
-    my $toplevels = $spec->{gr_wsdl_anyTopLevelOptionalElement} || [];
-
-    foreach my $toplevel (@$toplevels)
-    {   my ($which, $def) = %$toplevel;        # always only one
-        $which =~ s/^wsdl_(service|message|binding|portType)$/$1/
-            or next;
-
-        $index->{$which}{pack_type $tns, $def->{name}} = $def;
-
-        if($which eq 'service')
-        {   foreach my $port ( @{$def->{port} || []} )
-            {   $index->{port}{pack_type $tns, $port->{name}} = $port;
-            }
-        }
-    }
-
-    # no service block when only one port
-    unless($index->{service})
-    {   # only from this WSDL, cannot use collective $index
-        my @portTypes = map { $_->{wsdl_portType} || () } @$toplevels;
-        @portTypes==1
-            or error __x"no service definition so needs 1 portType, found {nr}"
-                 , nr => scalar @portTypes;
-
-        my @bindings = map { $_->{wsdl_binding} || () } @$toplevels;
-        @bindings==1
-            or error __x"no service definition so needs 1 binding, found {nr}"
-                 , nr => scalar @bindings;
-
-        my $binding  = pack_type $tns, $bindings[0]->{name};
-        my $portname = $portTypes[0]->{name};
-        my $servname = $portname;
-        $servname =~ s/Service$|(?:Service)?Port(?:Type)?$/Service/i
-             or $servname .= 'Service';
-
-        my %port = (name => $portname, binding => $binding
-           , soap_address => {location => 'http://localhost'} );
-
-        $index->{service}{pack_type $tns, $servname}
-            = { name => $servname, wsdl_port => [ \%port ] };
-        $index->{port}{pack_type $tns, $portname} = \%port;
-    }
-#warn "INDEX: ",Dumper $index;
-    $self;
-}
-
-
-sub namesFor($)
-{   my ($self, $class) = @_;
-    keys %{shift->index($class) || {}};
-}
-
-
-# new options, then also add them to the list in compileClient()
-
-sub operation(@)
-{   my $self = shift;
-    my $name = @_ % 2 ? shift : undef;
-    my %args = (name => $name, @_);
-
-    #
-    ## Service structure
-    #
-
-    my $service   = $self->findDef(service => delete $args{service});
-
-    my $port;
-    my @ports     = @{$service->{wsdl_port} || []};
-    my @portnames = map {$_->{name}} @ports;
-    if(my $portname = delete $args{port})
-    {   $port = first {$_->{name} eq $portname} @ports;
-        error __x"cannot find port `{portname}', pick from {ports}"
-            , portname => $portname, ports => join("\n    ", '', @portnames)
-           unless $port;
-    }
-    elsif(@ports==1)
-    {   $port = shift @ports;
-    }
-    else
-    {   error __x"specify port explicitly, pick from {portnames}"
-            , portnames => join("\n    ", '', @portnames);
-    }
-
-    # get plugin for operation #
-    my $address   = first { /address$/ && $port->{$_}{location}} keys %$port
-        or error __x"no address provided in service {service} port {port}"
-             , service => $service->{name}, port => $port->{name};
-
-    if($address =~ m/^{/)      # }
-    {   my ($ns)  = unpack_type $address;
-
-        warning __"Since v2.00 you have to require XML::Compile::SOAP11 explicitly"
-            if $ns eq WSDL11SOAP;
-
-        error __x"ports of type {ns} not supported (not loaded?)", ns => $ns;
-    }
-
-#use Data::Dumper;
-#warn Dumper $port, $self->prefixes;
-    my ($prefix)  = $address =~ m/(\w+)_address$/;
-    $prefix
-        or error __x"port address not prefixed; probably need to add a plugin XML::Compile::SOAP12";
-
-    my $opns      = $self->findName("$prefix:");
-    my $opclass   = XML::Compile::SOAP::Operation->plugin($opns);
-    unless($opclass)
-    {   my $pkg = $opns eq WSDL11SOAP   ? 'SOAP11'
-                : $opns eq WSDL11SOAP12 ? 'SOAP12'
-                : $opns eq WSDL11HTTP   ? 'SOAP10'
-                :                         undef;
-
-        if($pkg)
-        {   error __x"add 'use XML::Compile::{pkg}' to your script", pkg=>$pkg;
-        }
-        else
-        {   notice __x"ignoring unsupported namespace {ns}", ns => $opns;
-            return;
-        }
-    }
-
-    $opclass->can('_fromWSDL11')
-        or error __x"WSDL11 not supported by {class}", class => $opclass;
-
-    #
-    ## Binding
-    #
-
-    my $bindtype  = $port->{binding}
-        or error __x"no binding defined in port '{name}'"
-               , name => $port->{name};
-
-    my $binding   = $self->findDef(binding => $bindtype);
-
-    my $type      = $binding->{type}  # get portTypeType
-        or error __x"no type defined with binding `{name}'"
-               , name => $bindtype;
-
-    my $portType  = $self->findDef(portType => $type);
-    my $types     = $portType->{wsdl_operation}
-        or error __x"no operations defined for portType `{name}'"
-               , name => $type;
-
-    my @port_ops  = map {$_->{name}} @$types;
-
-    $name       ||= delete $args{operation};
-    my $port_op;
-    if(defined $name)
-    {   $port_op = first {$_->{name} eq $name} @$types;
-        error __x"no operation `{op}' for portType {pt}, pick from{ops}"
-          , op => $name, pt => $type, ops => join("\n    ", '', @port_ops)
-            unless $port_op;
-    }
-    elsif(@port_ops==1)
-    {   $port_op = shift @$types;
-        $name    = $port_op->{name};
-    }
-    else
-    {   error __x"multiple operations in portType `{pt}', pick from {ops}"
-            , pt => $type, ops => join("\n    ", '', @port_ops)
-    }
-
-    my @bindops   = @{$binding->{wsdl_operation} || []};
-    my $bind_op   = first {$_->{name} eq $name} @bindops;
-    $bind_op
-        or error __x"cannot find bind operation for {name}", name => $name;
-
-    # This should be detected while parsing the WSDL because the order of
-    # input and output is significant (and lost), but WSDL 1.1 simplifies
-    # our life by saying that only 2 out-of 4 predefined types can actually
-    # be used at present.
-
-    my @order = map { (unpack_type $_)[1] } @{$port_op->{_ELEMENT_ORDER}};
-
-    my ($first_in, $first_out);
-    for(my $i = 0; $i<@order; $i++)
-    {   $first_in  = $i if !defined $first_in  && $order[$i] eq 'input';
-        $first_out = $i if !defined $first_out && $order[$i] eq 'output';
-    }
-
-    my $kind
-      = !defined $first_in     ? 'notification-operation'
-      : !defined $first_out    ? 'one-way'
-      : $first_in < $first_out ? 'request-response'
-      :                          'solicit-response';
-
-    #
-    ### message components
-    #
-
-    my $operation = $opclass->_fromWSDL11
-     ( name      => $name,
-     , kind      => $kind
-
-     , service   => $service
-     , serv_port => $port
-     , binding   => $binding
-     , bind_op   => $bind_op
-     , portType  => $portType
-     , port_op   => $port_op
-
-     , wsdl      => $self
-     , action    => $args{action}
-     );
- 
-    $operation;
-}
-
-
-sub compileClient(@)
-{   my $self = shift;
-    unshift @_, 'operation' if @_ % 2;
-    my $op   = $self->operation(@_) or return ();
-
-    my $dopts = $self->{XCW_dcopts} || {};
-    $op->compileClient(@_, (ref $dopts eq 'ARRAY' ? @$dopts : %$dopts));
-}
-
-#---------------------
-
-
-sub declare($$@)
-{   my ($self, $need, $names, @opts) = @_;
-    my $opts = @opts==1 ? shift @opts : \@opts;
-    $opts = [ %$opts ] if ref $opts eq 'HASH';
-
-    $need eq 'OPERATION'
-        or $self->SUPER::declare($need, $names, @opts);
-
-    foreach my $name (ref $names eq 'ARRAY' ? @$names : $names)
-    {   # checking existence of opname is expensive here
-        # and may be problematic with multiple bindings.
-        $self->{XCW_dcopts}{$name} = $opts;
-    }
-
-    $self;
-}
-
-#--------------------------
-
-
-sub index(;$$)
-{   my $index = shift->{index};
-    @_ or return $index;
-
-    my $class = $index->{ (shift) }
-       or return ();
-
-    @_ ? $class->{ (shift) } : $class;
-}
-
-
-sub findDef($;$)
-{   my ($self, $class, $name) = @_;
-    my $group = $self->index($class)
-        or error __x"no definitions for `{class}' found", class => $class;
-
-    if(defined $name)
-    {   return $group->{$name} if exists $group->{$name};  # QNAME
-
-        if($name =~ m/\:/)                                 # PREFIXED
-        {   my $qname = $self->findName($name);
-            return $group->{$qname} if exists $group->{$qname};
-        }
-
-        if(my $q = first { (unpack_type $_)[1] eq $name } keys %$group)
-        {   return $group->{$q};
-        }
-
-        error __x"no definition for `{name}' as {class}, pick from:{groups}"
-          , name => $name, class => $class
-          , groups => join("\n    ", '', sort keys %$group);
-    }
-
-    return values %$group
-        if wantarray;
-
-    return (values %$group)[0]
-        if keys %$group==1;
-
-    my @alts = map $self->prefixed($_), sort keys %$group;
-    error __x"explicit selection required: pick one {class} from {alts}"
-      , class => $class, alts => join("\n    ", '', @alts);
-}
-
-
-sub operations(@)
-{   my ($self, %args) = @_;
-    $args{produce} and die "produce option removed in 0.81";
-
-    my @ops;
-    my @services = $self->findDef('service');
-    foreach my $service (@services)
-    {
-        next if $args{service} && $args{service} ne $service->{name};
-
-        my @ports = @{$service->{wsdl_port} || []};
-        foreach my $port (@ports)
-        {
-            next if $args{port} && $args{port} ne $port->{name};
-            my $bindtype = $port->{binding}
-                or error __x"no binding defined in port '{name}'"
-                      , name => $port->{name};
-            my $binding  = $self->findDef(binding => $bindtype);
-
-            next if $args{binding} && $args{binding} ne $binding->{name};
-
-            my $type     = $binding->{type}
-                or error __x"no type defined with binding `{name}'"
-                    , name => $bindtype;
-
-            my %all_ops;
-            foreach my $operation ( @{$binding->{wsdl_operation}||[]} )
-            {   my $name = $operation->{name};
-                if($all_ops{$name}++)
-                {   panic __x"operation {name} found again; pick service from {services}"
-                      , services => [map $_->{name}, @services], _join => ', '
-                        if @services > 1 && !$args{service};
-                    panic __x"need one set of operations, pick port from {ports}"
-                       , ports => [ map $_->{name}, @ports ], _join => ', ';
-                }
-  
-                push @ops, $self->operation
-                  ( service   => $service->{name}
-                  , port      => $port->{name}
-                  , binding   => $bindtype
-                  , operation => $name
-                  , portType  => $type
-                  );
-            }
-        }
-    }
-
-    @ops;
-}
-
-
-sub endPoint(@)
-{   my ($self, %args) = @_;
-    my $service   = $self->findDef(service => delete $args{service});
-
-    my $port;
-    my @ports     = @{$service->{wsdl_port} || []};
-    my @portnames = map {$_->{name}} @ports;
-    if(my $portname = delete $args{port})
-    {   $port = first {$_->{name} eq $portname} @ports;
-        error __x"cannot find port `{portname}', pick from {ports}"
-            , portname => $portname, ports => join("\n    ", '', @portnames)
-           unless $port;
-    }
-    elsif(@ports==1)
-    {   $port = shift @ports;
-    }
-    else
-    {   error __x"specify port explicitly, pick from {portnames}"
-            , portnames => join("\n    ", '', @portnames);
-    }
-
-    foreach my $k (keys %$port)
-    {   return $port->{$k}{location} if $k =~ m/address$/;
-    }
-
-    ();
-}
-
-
-sub printIndex(@)
-{   my $self = shift;
-    my $fh   = @_ % 2 ? shift : select;
-    my @args = @_;
-
-    my %tree;
-    foreach my $op ($self->operations(@args))
-    {   my $port = $op->version.' port '.$op->portName;
-        my $bind = '(binding '.$op->bindingName.')';
-        $tree{'service '.$op->serviceName}{"$port $bind"}{$op->name} = $_;
-    }
-
-    foreach my $service (sort keys %tree)
-    {   $fh->print("$service\n");
-        foreach my $port (sort keys %{$tree{$service}})
-        {   $fh->print("    $port\n");
-            foreach my $op (sort keys %{$tree{$service}{$port}})
-            {   $fh->print("        $op\n");
-            }
-        }
-    }
-}
-
-
-sub explain($$$@)
-{   my ($self, $opname, $format, $direction, @opts) = @_;
-    my $op = $self->operation($opname, @opts)
-        or error __x"explain operation {name} not found", name => $opname;
-    $op->explain($self, $format, $direction, @opts);
-}
-
-#--------------------------------
-
-
-1;
@@ -1,735 +0,0 @@
-=encoding utf8
-
-=head1 NAME
-
-XML::Compile::WSDL11 - create SOAP messages defined by WSDL 1.1
-
-=head1 INHERITANCE
-
- XML::Compile::WSDL11
-   is a XML::Compile::Cache
-   is a XML::Compile::Schema
-   is a XML::Compile
-
-=head1 SYNOPSIS
-
- # preparation
- use XML::Compile::WSDL11;      # use WSDL version 1.1
- use XML::Compile::SOAP11;      # use SOAP version 1.1
- use XML::Compile::Transport::SOAPHTTP;
-
- my $wsdl = XML::Compile::WSDL11->new($wsdlfile);
- $wsdl->addWSDL(...more WSDL files...);
- $wsdl->importDefinitions(...more schemas...);
-
- # during initiation, for each used call
- my $call = $wsdl->compileClient('GetStockPrice', ...);
-
- # at "run-time", call as often as you want (fast)
- my $answer = $call->(%request);
-
- # capture useful trace information
- my ($answer, $trace) = $call->(%request);
-
- # no need to administer the operations by hand: alternative
- $wsdl->compileCalls;  # at initiation
- my $answer = $wsdl->call(GetStockPrice => %request);
-
- # investigate the %request structure (server input)
- print $wsdl->explain('GetStockPrice', PERL => 'INPUT', recurse => 1);
-
- # investigate the $answer structure (server output)
- print $wsdl->explain('GetStockPrice', PERL => 'OUTPUT');
-
- # when you like, get all operation definitions
- my @all_ops = $wsdl->operations;
-
- # Install XML::Compile::SOAP::Daemon
- my $server  = XML::Compile::SOAP::HTTPDaemon->new;
- $server->operationsFromWSDL($wsdl);
- undef $wsdl;    # not needed any further
- 
- # For debug info, start your script with:
- use Log::Report mode => 'DEBUG';
-
-=head1 DESCRIPTION
-
-This module understands WSDL version 1.1.  An WSDL file defines a set of
-messages to be send and received over (SOAP) connections. This involves
-encoding of the message to be send into XML, sending the message to the
-server, collect the answer, and finally decoding the XML to Perl.
-
-As end-user, you do not have to worry about the complex details of the
-messages and the way to exchange them: it's all simple Perl for you.
-Also, faults are handled automatically.  The only complication you have
-to worry about is to shape a nested HASH structure to the sending
-message structure.  L<XML::Compile::Schema::template()|XML::Compile::Schema/"Compilers"> may help you.
-
-When the definitions are spread over multiple files you will need to
-use L<addWSDL()|XML::Compile::WSDL11/"Extension"> (wsdl) or L<importDefinitions()|XML::Compile::Schema/"Administration"> (additional schema's)
-explicitly. Usually, interreferences between those files are broken.
-Often they reference over networks (you should never trust). So, on
-purpose you B<must explicitly load> the files you need from local disk!
-(of course, it is simple to find one-liners as work-arounds, but I will
-to tell you how!)
-
-See L<documentation in the base class|XML::Compile::Cache/"DESCRIPTION">.
- 
-=head1 METHODS
-
-See L<documentation in the base class|XML::Compile::Cache/"METHODS">.
- 
-=head2 Constructors
-
-See L<documentation in the base class|XML::Compile::Cache/"Constructors">.
- 
-=over 4
-
-=item XML::Compile::WSDL11-E<gt>B<new>(XML, OPTIONS)
-
-The XML is the WSDL file, which is anything accepted by
-L<XML::Compile::dataToXML()|XML::Compile/"Compilers">.
-
- -Option            --Defined in          --Default
-  allow_undeclared    XML::Compile::Cache   <false>
-  any_element         XML::Compile::Cache   'SKIP_ALL'
-  block_namespace     XML::Compile::Schema  []
-  hook                XML::Compile::Schema  undef
-  hooks               XML::Compile::Schema  []
-  ignore_unused_tags  XML::Compile::Schema  <false>
-  key_rewrite         XML::Compile::Schema  []
-  opts_readers        XML::Compile::Cache   []
-  opts_rw             XML::Compile::Cache   []
-  opts_writers        XML::Compile::Cache   []
-  parser_options      XML::Compile          <many>
-  prefixes            XML::Compile::Cache   <smart>
-  schema_dirs         XML::Compile          undef
-  typemap             XML::Compile::Cache   {}
-  xsi_type            XML::Compile::Cache   {}
-
-=over 2
-
-=item allow_undeclared => BOOLEAN
-
-=item any_element => CODE|'TAKE_ALL'|'SKIP_ALL'|'ATTEMPT'|'SLOPPY'
-
-=item block_namespace => NAMESPACE|TYPE|HASH|CODE|ARRAY
-
-=item hook => ARRAY-WITH-HOOKDATA | HOOK
-
-=item hooks => ARRAY-OF-HOOK
-
-=item ignore_unused_tags => BOOLEAN|REGEXP
-
-=item key_rewrite => HASH|CODE|ARRAY-of-HASH-and-CODE
-
-=item opts_readers => HASH|ARRAY-of-PAIRS
-
-=item opts_rw => HASH|ARRAY-of-PAIRS
-
-=item opts_writers => HASH|ARRAY-of-PAIRS
-
-=item parser_options => HASH|ARRAY
-
-=item prefixes => HASH|ARRAY-of-PAIRS
-
-=item schema_dirs => DIRECTORY|ARRAY-OF-DIRECTORIES
-
-=item typemap => HASH|ARRAY
-
-=item xsi_type => HASH|ARRAY
-
-=back
-
-=back
-
-=head2 Accessors
-
-See L<documentation in the base class|XML::Compile::Cache/"Accessors">.
- 
-=over 4
-
-=item $obj-E<gt>B<addHook>(HOOKDATA|HOOK|undef)
-
-See L<XML::Compile::Schema/"Accessors">
-
-=item $obj-E<gt>B<addHooks>(HOOK, [HOOK, ...])
-
-See L<XML::Compile::Schema/"Accessors">
-
-=item $obj-E<gt>B<addKeyRewrite>(PREDEF|CODE|HASH, ...)
-
-See L<XML::Compile::Schema/"Accessors">
-
-=item $obj-E<gt>B<addSchemaDirs>(DIRECTORIES|FILENAME)
-
-=item XML::Compile::WSDL11-E<gt>B<addSchemaDirs>(DIRECTORIES|FILENAME)
-
-See L<XML::Compile/"Accessors">
-
-=item $obj-E<gt>B<addSchemas>(XML, OPTIONS)
-
-See L<XML::Compile::Schema/"Accessors">
-
-=item $obj-E<gt>B<addTypemap>(PAIR)
-
-See L<XML::Compile::Schema/"Accessors">
-
-=item $obj-E<gt>B<addTypemaps>(PAIRS)
-
-See L<XML::Compile::Schema/"Accessors">
-
-=item $obj-E<gt>B<allowUndeclared>([BOOLEAN])
-
-See L<XML::Compile::Cache/"Accessors">
-
-=item $obj-E<gt>B<anyElement>('ATTEMPT'|'SLOPPY'|'SKIP_ALL'|'TAKE_ALL'|CODE)
-
-See L<XML::Compile::Cache/"Accessors">
-
-=item $obj-E<gt>B<blockNamespace>(NAMESPACE|TYPE|HASH|CODE|ARRAY)
-
-See L<XML::Compile::Schema/"Accessors">
-
-=item $obj-E<gt>B<hooks>([READER|WRITER])
-
-See L<XML::Compile::Schema/"Accessors">
-
-=item $obj-E<gt>B<typemap>([HASH|ARRAY|PAIRS])
-
-See L<XML::Compile::Cache/"Accessors">
-
-=item $obj-E<gt>B<useSchema>(SCHEMA, [SCHEMA])
-
-See L<XML::Compile::Schema/"Accessors">
-
-=item $obj-E<gt>B<xsiType>([HASH|ARRAY|LIST])
-
-See L<XML::Compile::Cache/"Accessors">
-
-=back
-
-=head2 Prefix management
-
-See L<documentation in the base class|XML::Compile::Cache/"Prefix management">.
- 
-=over 4
-
-=item $obj-E<gt>B<addPrefixes>([PAIRS|ARRAY|HASH])
-
-See L<XML::Compile::Cache/"Prefix management">
-
-=item $obj-E<gt>B<learnPrefixes>(NODE)
-
-See L<XML::Compile::Cache/"Prefix management">
-
-=item $obj-E<gt>B<prefix>(PREFIX)
-
-See L<XML::Compile::Cache/"Prefix management">
-
-=item $obj-E<gt>B<prefixFor>(URI)
-
-See L<XML::Compile::Cache/"Prefix management">
-
-=item $obj-E<gt>B<prefixed>(TYPE|(NAMESPACE,LOCAL))
-
-See L<XML::Compile::Cache/"Prefix management">
-
-=item $obj-E<gt>B<prefixes>([PARAMS])
-
-See L<XML::Compile::Cache/"Prefix management">
-
-=back
-
-=head2 Compilers
-
-See L<documentation in the base class|XML::Compile::Cache/"Compilers">.
- 
-=over 4
-
-=item $obj-E<gt>B<addCompileOptions>(['READERS'|'WRITERS'|'RW'], OPTIONS)
-
-See L<XML::Compile::Cache/"Compilers">
-
-=item $obj-E<gt>B<call>(OPNAME, DATA)
-
-[2.20] Call the OPNAME (operation name) with DATA (HASH or LIST of parameters).
-This only works when you have called L<compileCalls()|XML::Compile::WSDL11/"Compilers"> beforehand,
-always during the initiation phase of the program.
-
-example: 
-
-   # at initiation time (compile once)
-   $wsdl->compileCalls;
-
-   # at runtime (run often)
-   my $answer = $wsdl->call($operation, $request);
-
-=item $obj-E<gt>B<compile>(('READER'|'WRITER'), TYPE, OPTIONS)
-
-See L<XML::Compile::Schema/"Compilers">
-
-=item $obj-E<gt>B<compileAll>(['READERS'|'WRITERS'|'RW'|'CALLS', [NAMESPACE]])
-
-[2.20] With explicit C<CALLS> or without any parameter, it will call
-L<compileCalls()|XML::Compile::WSDL11/"Compilers">. Otherwise, see L<XML::Compile::Cache::compileAll()|XML::Compile::Cache/"Compilers">.
-
-=item $obj-E<gt>B<compileCall>(OPERATION|OPNAME, OPTIONS)
-
-[2.37] The call to the OPERATION object (which extends
-L<XML::Compile::SOAP::Operation|XML::Compile::SOAP::Operation>) gets compiled and cached so it can
-be used with L<call()|XML::Compile::WSDL11/"Compilers">.
-
-[2.38] Alteratively to an OPERATION object, you may also specify an
-operation by name.
-
-example: 
-
-  my $op = $wsdl->operation(name => 'getInfo');
-  $wsdl->compileCall($op);
-
-  # as often as you need it
-  my ($answer, $trace) = $wsdl->call('getInfo')->(%request);
-
-=item $obj-E<gt>B<compileCalls>(OPTIONS)
-
-[2.20] Compile a handler for each of the available operations. The OPTIONS are
-passed to each call of L<compileClient()|XML::Compile::WSDL11/"Extension">, but will be overruled by more
-specific declared options.
-
-Additionally, OPTIONS can contain C<service>, C<port>, and C<binding>
-to limit the set of involved calls. See L<operations()|XML::Compile::WSDL11/"Introspection"> for details on
-these options.
-
-You may declare additional specific compilation options with the
-L<declare()|XML::Compile::WSDL11/"Administration"> method.
-
-example: 
-
-   my $trans = XML::Compile::Transport::SOAPHTTP
-     ->new(timeout => 500, address => $wsdl->endPoint);
-   $wsdl->compileCalls(transport => $trans);
-
-   # alternatives for simple cases
-   $wsdl->compileAll('CALLS');
-   $wsdl->compileAll;
-   
-   my $answer = $wsdl->call($myop, $request);
-
-=item $obj-E<gt>B<dataToXML>(NODE|REF-XML-STRING|XML-STRING|FILENAME|FILEHANDLE|KNOWN)
-
-=item XML::Compile::WSDL11-E<gt>B<dataToXML>(NODE|REF-XML-STRING|XML-STRING|FILENAME|FILEHANDLE|KNOWN)
-
-See L<XML::Compile/"Compilers">
-
-=item $obj-E<gt>B<initParser>(OPTIONS)
-
-=item XML::Compile::WSDL11-E<gt>B<initParser>(OPTIONS)
-
-See L<XML::Compile/"Compilers">
-
-=item $obj-E<gt>B<reader>(TYPE|NAME, OPTIONS)
-
-See L<XML::Compile::Cache/"Compilers">
-
-=item $obj-E<gt>B<template>('XML'|'PERL'|'TREE', ELEMENT, OPTIONS)
-
-See L<XML::Compile::Schema/"Compilers">
-
-=item $obj-E<gt>B<writer>(TYPE|NAME)
-
-See L<XML::Compile::Cache/"Compilers">
-
-=back
-
-=head2 Extension
-
-=over 4
-
-=item $obj-E<gt>B<addWSDL>(XMLDATA)
-
-The XMLDATA must be acceptable to L<XML::Compile::dataToXML()|XML::Compile/"Compilers"> and 
-should represent the top-level of a (partial) WSDL document.
-The specification can be spread over multiple files, each of
-which must have a C<definition> root element.
-
-=item $obj-E<gt>B<compileClient>([NAME], OPTIONS)
-
-Creates an L<XML::Compile::SOAP::Operation|XML::Compile::SOAP::Operation> temporary object using
-L<operation()|XML::Compile::WSDL11/"Extension">, and then calls C<compileClient()> on that.  This
-results in a code reference which will handle all client-server
-SOAP exchange.
-
-The OPTIONS available include all of the options for:
-
-=over 4
-
-=item *
-
-L<operation()|XML::Compile::WSDL11/"Extension"> (i.e. C<service> and C<port>), and all of
-
-=item *
-
-L<XML::Compile::SOAP::Operation::compileClient()|XML::Compile::SOAP::Operation/"Handlers"> (there are many of
-these, for instance C<transport_hook> and C<server>)
-
-=back
-
-You B<cannot> pass options for L<XML::Compile::Schema::compile()|XML::Compile::Schema/"Compilers">, like
-C<<sloppy_integers => 0>>, hooks or typemaps this way. Use L<new(opts_rw)|XML::Compile::Cache/"Constructors">
-and friends to declare those.
-
-When you use L<compileCall()|XML::Compile::WSDL11/"Compilers">, the compiled code references get cached
-for you.  In that case, you can use L<call()|XML::Compile::WSDL11/"Compilers"> to use them.
-
-example: 
-
-  my $call = $wsdl->compileClient
-    ( operation => 'HelloWorld'
-    , port      => 'PrefillSoap' # only required when multiple ports
-    );
-  my ($answer, $trace) = $call->($request);
-
-  # 'operation' keyword optional
-  my $call = $wsdl->compileClient('HelloWorld');
-
-=item $obj-E<gt>B<namesFor>(CLASS)
-
-Returns the list of names available for a certain definition CLASS in
-the WSDL. See L<index()|XML::Compile::WSDL11/"Introspection"> for a way to determine the available CLASS
-information.
-
-=item $obj-E<gt>B<operation>([NAME], OPTIONS)
-
-Collect all information for a certain operation.  Returned is an
-L<XML::Compile::SOAP::Operation|XML::Compile::SOAP::Operation> object.
-
-An operation is defined by a service name, a port, some bindings,
-and an operation name, which can be specified explicitly and is often
-left-out: in the many configurations where there are no alternative
-choices. In case there are alternatives, you will be requested to
-pick an option.
-
- -Option   --Default
-  action     <undef>
-  operation  <required>
-  port       <only when just one port in WSDL>
-  service    <only when just one service in WSDL>
-
-=over 2
-
-=item action => STRING
-
-Overrule the soapAction from the WSDL.
-
-=item operation => NAME
-
-Ignored when the parameter list starts with a NAME (which is an
-alternative for this option).  Optional when there is only
-one operation defined within the portType.
-
-=item port => NAME
-
-Required when more than one port is defined.
-
-=item service => QNAME|PREFIXED
-
-Required when more than one service is defined.
-
-=back
-
-=back
-
-=head2 Administration
-
-See L<documentation in the base class|XML::Compile::Cache/"Administration">.
- 
-=over 4
-
-=item $obj-E<gt>B<declare>(GROUP, COMPONENT|ARRAY, OPTIONS)
-
-Register specific compile OPTIONS for the specific COMPONENT. See also
-L<XML::Compile::Cache::declare()|XML::Compile::Cache/"Administration">. The GROUP is either C<READER>,
-C<WRITER>, C<RW> (both reader and writer), or C<OPERATION>.  As COMPONENT,
-you specify the element name (for readers and writers) or operation name
-(for operations). OPTIONS are specified as LIST, ARRAY or HASH.
-
-example: 
-
-   $wsdl->declare(OPERATION => 'GetStockPrice', @extra_opts);
-   $wsdl->compileCalls;
-   my $answer = $wsdl->call(GetStockPrice => %request);
-
-=item $obj-E<gt>B<doesExtend>(EXTTYPE, BASETYPE)
-
-See L<XML::Compile::Schema/"Administration">
-
-=item $obj-E<gt>B<elements>()
-
-See L<XML::Compile::Schema/"Administration">
-
-=item $obj-E<gt>B<findName>(NAME)
-
-See L<XML::Compile::Cache/"Administration">
-
-=item $obj-E<gt>B<findSchemaFile>(FILENAME)
-
-=item XML::Compile::WSDL11-E<gt>B<findSchemaFile>(FILENAME)
-
-See L<XML::Compile/"Administration">
-
-=item $obj-E<gt>B<importDefinitions>(XMLDATA, OPTIONS)
-
-See L<XML::Compile::Schema/"Administration">
-
-=item $obj-E<gt>B<knownNamespace>(NAMESPACE|PAIRS)
-
-=item XML::Compile::WSDL11-E<gt>B<knownNamespace>(NAMESPACE|PAIRS)
-
-See L<XML::Compile/"Administration">
-
-=item $obj-E<gt>B<namespaces>()
-
-See L<XML::Compile::Schema/"Administration">
-
-=item $obj-E<gt>B<types>()
-
-See L<XML::Compile::Schema/"Administration">
-
-=item $obj-E<gt>B<walkTree>(NODE, CODE)
-
-See L<XML::Compile/"Administration">
-
-=back
-
-=head2 Introspection
-
-All of the following methods are usually NOT meant for end-users. End-users
-should stick to the L<operation()|XML::Compile::WSDL11/"Extension"> and L<compileClient()|XML::Compile::WSDL11/"Extension"> methods.
-
-=over 4
-
-=item $obj-E<gt>B<endPoint>(OPTIONS)
-
-[2.20] Returns the address of the server, as specified by the WSDL. When
-there are no alternatives for service or port, you not not need to
-specify those parameters.
-
-The endpoint in the WSDL is often wrong.  All compile functions accept
-the C<server> and C<endpoint> parameters to overrule the value.  With
-C<server>, only the hostname:port is being replaced.  With C<endpoint>,
-everything is replaced.
-
- -Option --Default
-  port     <undef>
-  service  <undef>
-
-=over 2
-
-=item port => NAME
-
-=item service => QNAME|PREFIXED
-
-=back
-
-example: 
-
- my $devel = URI->new($wsdl->endPoint);
- $devel->path('/sdk');
- my $call = $wsdl->compileCall($opname, endpoint => $devel);
-
-=item $obj-E<gt>B<explain>(OPERATION, FORMAT, DIRECTION, OPTIONS)
-
-[2.13]
-Produce templates (see L<XML::Compile::Schema::template()|XML::Compile::Schema/"Compilers"> which detail
-the use of the OPERATION. Currently, only the C<PERL> template FORMAT
-is available.
-
-The DIRECTION of operation is either C<INPUT> (input for the server,
-hence to be produced by the client), or C<OUTPUT> (from the server,
-received by the client).
-
-The actual work is done by L<XML::Compile::SOAP::Operation::explain()|XML::Compile::SOAP::Operation/"Helpers">. The
-OPTIONS passed to that method include C<recurse> and C<skip_header>.
-
-example: 
-
-  print $wsdl->explain('CheckStatus', PERL => 'INPUT');
-
-  print $wsdl->explain('CheckStatus', PERL => 'OUTPUT'
-     , recurse => 1                 # explain options
-     , port    => 'Soap12PortName'  # operation options
-     );
-
-=item $obj-E<gt>B<findDef>(CLASS, [QNAME|PREFIXED|NAME])
-
-With a QNAME, the HASH which contains the parsed XML information
-from the WSDL template for that CLASS-NAME combination is returned.
-You may also have a PREFIXED name, using one of the predefined namespace
-abbreviations.  Otherwise, NAME is considered to be the localName in
-that class.  When the NAME is not found, an error is produced.
-
-Without QNAME in SCALAR context, there may only be one such name
-defined otherwise an error is produced.  In LIST context, all definitions
-in CLASS are returned.
-
-example: 
-
- $service  = $obj->findDef(service => 'http://xyz');
- @services = $obj->findDef('service');
-
-=item $obj-E<gt>B<index>([CLASS, [QNAME]])
-
-With a CLASS and QNAME, it returns one WSDL definition HASH or undef.
-Returns the index for the CLASS group of names as HASH.  When no CLASS is
-specified, a HASH of HASHes is returned with the CLASSes on the top-level.
-
-CLASS includes C<service>, C<binding>, C<portType>, and C<message>.
-
-=item $obj-E<gt>B<operations>(OPTIONS)
-
-Return a list with all operations defined in the WSDL.
-
- -Option --Default
-  binding  <undef>
-  port     <undef>
-  service  <undef>
-
-=over 2
-
-=item binding => NAME
-
-Only return operations which use the binding with the specified NAME.
-By default, all bindings are accepted.
-
-=item port => NAME
-
-Return only operations related to the specified port NAME.
-By default operations from all ports.
-
-=item service => NAME
-
-Only return operations related to the NAMEd service, by default all services.
-
-=back
-
-=item $obj-E<gt>B<printIndex>([FILEHANDLE], OPTIONS)
-
-For available OPTIONS, see L<operations()|XML::Compile::WSDL11/"Introspection">.  This method is useful to
-understand the structure of your WSDL: it shows a nested list of
-services, bindings, ports and portTypes.
-
- -Option       --Defined in         --Default
-  show_declared  XML::Compile::Cache  <true>
-
-=over 2
-
-=item show_declared => BOOLEAN
-
-=back
-
-=back
-
-=head1 DETAILS
-
-See L<documentation in the base class|XML::Compile::Cache/"DETAILS">.
- 
-=head2 Comparison
-
-See L<documentation in the base class|XML::Compile::Cache/"Comparison">.
- 
-=head2 Collecting definitions
-
-See L<documentation in the base class|XML::Compile::Cache/"Collecting definitions">.
- 
-=head2 Addressing components
-
-See L<documentation in the base class|XML::Compile::Cache/"Addressing components">.
- 
-=head2 Representing data-structures
-
-See L<documentation in the base class|XML::Compile::Cache/"Representing data-structures">.
- 
-=head2 Schema hooks
-
-See L<documentation in the base class|XML::Compile::Cache/"Schema hooks">.
- 
-=head2 Typemaps
-
-See L<documentation in the base class|XML::Compile::Cache/"Typemaps">.
- 
-=head2 Handling xsi:type
-
-See L<documentation in the base class|XML::Compile::Cache/"Handling xsi:type">.
- 
-=head2 Key rewrite
-
-See L<documentation in the base class|XML::Compile::Cache/"Key rewrite">.
- 
-=head2 Initializing SOAP operations via WSDL
-
-When you have a WSDL file, then SOAP is simple.  If there is no such file
-at hand, then it is still possible to use SOAP.  See the DETAILS chapter
-in L<XML::Compile::SOAP|XML::Compile::SOAP>.
-
-The WSDL file contains operations which can be addressed by name.
-In the WSDL file you need to find the name of the port to be used.
-In most cases, the WSDL has only one service, one port, one binding,
-and one portType and those names can therefore be omitted.  If there is
-a choice, then you must explicitly select one.
-
- use XML::Compile::WSDL11 ();
-
- # once in your program
- my $wsdl   = XML::Compile::WSDL11->new('def.wsdl');
-
- # XML::Compile::Schema refuses to follow "include" and
- # "import" commands, so you need to invoke them explicitly.
- # $wsdl->addWSDL('file2.wsdl');            # optional
- # $wsdl->importDefinitions('schema1.xsd'); # optional
-
- # once for each of the defined operations
- my $call   = $wsdl->compileClient('GetStockPrice');
-
- # see XML::Compile::SOAP chapter DETAILS about call params
- my $answer = $call->(%request);
-
-=head1 DESCRIPTIONS
-
-See L<documentation in the base class|XML::Compile::Cache/"DESCRIPTIONS">.
- 
-=head1 SEE ALSO
-
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
-
-Other distributions in this suite:
-L<XML::Compile>,
-L<XML::Compile::SOAP>,
-L<XML::Compile::SOAP12>,
-L<XML::Compile::SOAP::Daemon>,
-L<XML::Compile::SOAP::WSA>,
-L<XML::Compile::C14N>,
-L<XML::Compile::WSS>,
-L<XML::Compile::WSS::Signature>,
-L<XML::Compile::Tester>,
-L<XML::Compile::Cache>,
-L<XML::Compile::Dumper>,
-L<XML::Compile::RPC>,
-L<XML::Rewrite>
-and
-L<XML::LibXML::Simple>.
-
-Please post questions or ideas to the mailinglist at
-F<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/xml-compile> .
-For live contact with other developers, visit the C<#xml-compile> channel
-on C<irc.perl.org>.
-
-=head1 LICENSE
-
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
-
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-See F<http://www.perl.com/perl/misc/Artistic.html>
-
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,13 +7,13 @@ use strict;
 
 package XML::Compile::XOP::Include;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 
 use Log::Report 'xml-compile-soap', syntax => 'SHORT';
 use XML::Compile::SOAP::Util qw/:xop10/;
 use HTTP::Message            ();
-use File::Slurp              qw/read_file write_file/;
+use File::Slurp::Tiny        qw/read_file write_file/;
 
 
 use overload '""'     => 'content'
@@ -31,11 +31,11 @@ data which is transported inline or packaged separately.
 
 =over 4
 
-=item XML::Compile::XOP::Include-E<gt>B<fromMime>(OBJECT)
+=item XML::Compile::XOP::Include-E<gt>B<fromMime>($object)
 
 Collect the data from a HTTP::Message object.
 
-=item XML::Compile::XOP::Include-E<gt>B<new>(OPTIONS)
+=item XML::Compile::XOP::Include-E<gt>B<new>(%options)
 
 You have to specify either a C<file> or C<byte> source.  Otherwise, the
 constructor will return C<undef>.
@@ -82,9 +82,9 @@ The MIME-Type of the data.
 
 Returns the Content-ID.
 
-=item $obj-E<gt>B<content>([BYREF])
+=item $obj-E<gt>B<content>( [$byref] )
 
-Returns the content, when BYREF (boolean) is true, then the value is
+Returns the content, when $byref (boolean) is true, then the value is
 returned by reference.
 
 =back
@@ -93,21 +93,21 @@ returned by reference.
 
 =over 4
 
-=item $obj-E<gt>B<mimePart>([HEADERS])
+=item $obj-E<gt>B<mimePart>( [$headers] )
 
 Produce the message part which contains a normal mime representation
-of a binary file.  You may provide an initial HEADERS (HTTP::Headers)
+of a binary file.  You may provide an initial $headers (HTTP::Headers)
 object, or an ARRAY of headers to instantiate such an object.
 
-=item $obj-E<gt>B<write>(FILENAME|FILEHANDLE)
+=item $obj-E<gt>B<write>($filename|$fh)
 
 Write the content to the specified FILE.
 
-=item $obj-E<gt>B<xmlNode>(DOCUMENT, PATH, TAG)
+=item $obj-E<gt>B<xmlNode>($document, $path, $tag)
 
-The DOCUMENT will be used to construct the node from.  The PATH
+The $document will be used to construct the node from.  The $path
 is an indicator for the location of the node within the data
-structure (used in error messages).  The TAG is the prefixed name
+structure (used in error messages).  The $tag is the prefixed name
 for the node to be created.
 
 Returned is an XML node to be included in the output tree.
@@ -118,7 +118,7 @@ Returned is an XML node to be included in the output tree.
 
 =over 4
 
-=item overload: B<"" (stringification)>()
+=item overload: B<"">
 
 This object stringifies to its binary content.
 
@@ -126,12 +126,13 @@ This object stringifies to its binary content.
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -153,7 +154,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -7,7 +7,7 @@ use strict;
 
 package XML::Compile::XOP;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 
 use Log::Report 'xml-compile-soap', syntax => 'SHORT';
@@ -15,6 +15,9 @@ XML::Compile::XOP - MTOM and XOP handler
   my $xop_image = $xop->bytes($binary_image);
   my $answer    = $call->(image => $xop_image);
 
+  # returned XOPs in SOAP
+  my ($answer, $trace, $xop) = $wsdl->call($operation)->(%data);
+
 =head1 DESCRIPTION
 
 The SOAP Message Transmission Optimization Mechanism (MTOM) is designed
@@ -37,11 +40,11 @@ the receiver) is avoided.
 
 =over 4
 
-=item $obj-E<gt>B<bytes>((STRING|SCALAR), OPTIONS)
+=item $obj-E<gt>B<bytes>( <STRING|SCALAR>, %options )
 
 Create a L<XML::Compile::XOP::Include|XML::Compile::XOP::Include> object which sources from a
 STRING (representing bytes) or a SCALAR reference to such a string.
-With the OPTIONS, you can overrule defaults generated for the "Include"
+With the %options, you can overrule defaults generated for the "Include"
 object.
 
 example: use of bytes()
@@ -49,10 +52,10 @@ example: use of bytes()
   my $data = $xop->bytes($string, type => 'text/html');
   # $data is a XML::Compile::XOP::Include
 
-=item $obj-E<gt>B<file>((FILENAME|FILEHANDLE), OPTIONS)
+=item $obj-E<gt>B<file>( <$filename|$fh>, %options )
 
 Create a L<XML::Compile::XOP::Include|XML::Compile::XOP::Include> object which sources from a
-FILE specified by NAME or HANDLE.  With the OPTIONS, you can overrule
+FILE specified by NAME or HANDLE.  With the %options, you can overrule
 defaults generated for the "Include" object.
 
 example: use of file()
@@ -64,7 +67,7 @@ example: use of file()
   my $data = $xop->file($fn, type => $fn);
   # $data is a XML::Compile::XOP::Include
 
-=item XML::Compile::XOP-E<gt>B<new>(OPTIONS)
+=item XML::Compile::XOP-E<gt>B<new>(%options)
 
  -Option         --Default
   hostname         'localhost'
@@ -104,12 +107,13 @@ a email address.
 
 =head1 SEE ALSO
 
-This module is part of XML-Compile-SOAP distribution version 2.38,
-built on August 22, 2013. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile-SOAP distribution version 3.05,
+built on May 28, 2014. Website: F<http://perl.overmeer.net/xml-compile/>
 
 Other distributions in this suite:
 L<XML::Compile>,
 L<XML::Compile::SOAP>,
+L<XML::Compile::WSDL11>,
 L<XML::Compile::SOAP12>,
 L<XML::Compile::SOAP::Daemon>,
 L<XML::Compile::SOAP::WSA>,
@@ -131,7 +135,7 @@ on C<irc.perl.org>.
 
 =head1 LICENSE
 
-Copyrights 2007-2013 by [Mark Overmeer]. For other contributors see ChangeLog.
+Copyrights 2007-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
 
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -4,7 +4,7 @@ use warnings;
 use strict;
 
 use lib 'lib', 't';
-use Test::More tests => 19;
+use Test::More tests => 16;
 use TestTools;
 
 # The versions of the following packages are reported to help understanding
@@ -43,9 +43,6 @@ use_ok('XML::Compile::SOAP::Operation');
 use_ok('XML::Compile::SOAP::Client');
 use_ok('XML::Compile::SOAP::Extension');
 
-use_ok('XML::Compile::SOAP10');
-use_ok('XML::Compile::SOAP10::Operation');
-
 use_ok('XML::Compile::SOAP11');
 use_ok('XML::Compile::SOAP11::Client');
 use_ok('XML::Compile::SOAP11::Encoding');
@@ -54,6 +51,5 @@ use_ok('XML::Compile::SOAP11::Server');
 
 use_ok('XML::Compile::Transport');
 use_ok('XML::Compile::Transport::SOAPHTTP');
-use_ok('XML::Compile::WSDL11');
 use_ok('XML::Compile::XOP');
 use_ok('XML::Compile::XOP::Include');
@@ -1,288 +0,0 @@
-#!/usr/bin/env perl
-# Test interpretation of WSDL.
-# The definitions are copied frm the the WSDL 1.1 technical report,
-# available from http://www.w3.org/TR/wsdl/
-# with bugfix:
-#  -  <port name="StockQuotePort" binding="tns:StockQuoteBinding">
-#  +  <port name="StockQuotePort" binding="tns:StockQuoteSoapBinding">
-
-use warnings;
-use strict;
-
-use lib 'lib','t';
-use TestTools;
-
-use Data::Dumper;
-$Data::Dumper::Indent = 1;
-
-use XML::Compile::WSDL11;
-use XML::Compile::Transport::SOAPHTTP;
-use XML::Compile::SOAP::Util  qw/WSDL11 SOAP11HTTP/;
-use XML::Compile::Tester;
-use XML::Compile::SOAP11;
-
-use Test::More tests => 41;
-use Test::Deep;
-
-use Log::Report   'try';
-
-my $xml_xsd = <<__STOCKQUOTE_XSD;
-<?xml version="1.0"?>
-<schema targetNamespace="http://example.com/stockquote/schemas"
-       xmlns="$SchemaNS">
-       
-    <element name="TradePriceRequest">
-        <complexType>
-            <all>
-                <element name="tickerSymbol" type="string"/>
-            </all>
-        </complexType>
-    </element>
-
-    <element name="TradePrice">
-        <complexType>
-            <all>
-                <element name="price" type="float"/>
-            </all>
-        </complexType>
-    </element>
-</schema>
-__STOCKQUOTE_XSD
-
-my $xml_wsdl = <<'__STOCKQUOTE_WSDL';
-<?xml version="1.0"?>
-<definitions name="StockQuote"
-    targetNamespace="http://example.com/stockquote/definitions"
-    xmlns:tns="http://example.com/stockquote/definitions"
-    xmlns:xsd1="http://example.com/stockquote/schemas"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-
-    <import namespace="http://example.com/stockquote/schemas"
-        location="http://example.com/stockquote/stockquote.xsd"/>
-
-    <message name="GetLastTradePriceInput">
-        <part name="body" element="xsd1:TradePriceRequest"/>
-    </message>
-
-    <message name="GetLastTradePriceOutput">
-        <part name="body" element="xsd1:TradePrice"/>
-    </message>
-
-    <portType name="StockQuotePortType">
-        <operation name="GetLastTradePrice">
-           <input message="tns:GetLastTradePriceInput"/>
-           <output message="tns:GetLastTradePriceOutput"/>
-        </operation>
-    </portType>
-</definitions>
-__STOCKQUOTE_WSDL
-
-my $servns    = 'http://example.com/stockquote/service';
-my $servlocal = 'StockQuoteService';
-my $servname  = "{$servns}$servlocal";
-my $servaddr  = 'http://example.com/stockquote';
-
-my $xml_service = <<'__STOCKQUOTESERVICE_WSDL';
-<?xml version="1.0"?>
-<definitions name="StockQuote"
-    targetNamespace="http://example.com/stockquote/service"
-    xmlns:tns="http://example.com/stockquote/service"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:defs="http://example.com/stockquote/definitions"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-
-    <import namespace="http://example.com/stockquote/definitions"
-        location="http://example.com/stockquote/stockquote.wsdl"/>
-
-    <binding name="StockQuoteSoapBinding" type="defs:StockQuotePortType">
-        <soap:binding style="document"
-           transport="http://schemas.xmlsoap.org/soap/http"/>
-        <operation name="GetLastTradePrice">
-           <soap:operation soapAction="http://example.com/GetLastTradePrice"/>
-           <input>
-               <soap:body use="literal"/>
-           </input>
-           <output>
-               <soap:body use="literal"/>
-           </output>
-        </operation>
-    </binding>
-
-    <service name="StockQuoteService">
-        <documentation>My first service</documentation>
-        <port name="StockQuotePort" binding="tns:StockQuoteSoapBinding">
-           <soap:address location="http://example.com/stockquote"/>
-        </port>
-    </service>
-</definitions>
-__STOCKQUOTESERVICE_WSDL
-
-###
-### BEGIN OF TESTS
-###
-
-my $wsdl = XML::Compile::WSDL11->new($xml_service);
-
-ok(defined $wsdl, "created object");
-isa_ok($wsdl, 'XML::Compile::WSDL11');
-is($wsdl->findName('wsdl:'), WSDL11);
-
-my @services = $wsdl->findDef('service');
-cmp_ok(scalar(@services), '==', 1, 'find service list context');
-is($services[0]->{name}, $servlocal);
-
-my $s   = try { $wsdl->findDef(service => 'aap') };
-my $err = $@->wasFatal->toString; $err =~ s! at t/80.*\n$!!;
-ok(!defined $s, 'find non-existing service');
-
-is($err, <<'__ERR');
-error: no definition for `aap' as service, pick from:
-    {http://example.com/stockquote/service}StockQuoteService
-__ERR
-
-$s = try { $wsdl->findDef(service => $servname) };
-$err = $@->wasFatal;
-ok(defined $s, "request existing service $servlocal");
-is("$@", '', 'no errors');
-ok(UNIVERSAL::isa($s, 'HASH'));
-
-my $s2 = try { $wsdl->findDef('service') };
-$err = $@->wasFatal;
-ok(defined $s, "request only service, not by name");
-is("$@", '', 'no errors');
-cmp_ok($s, '==', $s2, 'twice same definition');
-#warn Dumper $s;
-
-is($wsdl->endPoint, $servaddr);
-is($wsdl->endPoint(service => $servname), $servaddr);
-
-$wsdl->importDefinitions($xml_xsd);
-$wsdl->addWSDL($xml_wsdl);
-
-my $op = try { $wsdl->operation('noot') };
-$err = $@->wasFatal->toString; $err =~ s!\sat t/80.*\n$!\n!;
-ok(!defined $op, "non-existing operation");
-is($err, <<'__ERR');
-error: no operation `noot' for portType {http://example.com/stockquote/definitions}StockQuotePortType, pick from
-    GetLastTradePrice
-__ERR
-
-$op = try { $wsdl->operation('GetLastTradePrice') };
-$err = $@->wasFatal || '';
-ok(defined $op, 'existing operation');
-is("$@", '', 'no errors');
-isa_ok($op, 'XML::Compile::SOAP11::Operation');
-is($op->kind, 'request-response');
-
-#delete $op->{schemas};   # far too much to dump
-#warn Dumper $op; exit 1;
-
-#
-# collect some basic facts
-#
-
-my @addrs = $op->endPoints;
-cmp_ok(scalar @addrs, '==', 1, 'get endpoint address');
-is($addrs[0], 'http://example.com/stockquote');
-
-my $http1 = 'http://schemas.xmlsoap.org/soap/http';
-
-is($op->action, 'http://example.com/GetLastTradePrice', 'action');
-is($op->style, 'document');
-is($op->transport, SOAP11HTTP);
-
-#
-# test $wsdl->operations
-#
-
-my @ops = $wsdl->operations;
-cmp_ok(scalar @ops, '==', 1, 'one op hash listed');
-$op = shift @ops;
-
-isa_ok($op, 'XML::Compile::SOAP::Operation');
-isa_ok($op, 'XML::Compile::SOAP11::Operation');
-
-is($op->name, 'GetLastTradePrice', 'got name');
-is($op->action, 'http://example.com/GetLastTradePrice', 'got action');
-
-is($op->serviceName, 'StockQuoteService');
-is($op->bindingName, 'StockQuoteSoapBinding');
-is($op->portName,    'StockQuotePort');
-is($op->portTypeName, 'StockQuotePortType');
-
-#
-# test $wsdl->printIndex
-#
-
-my $x = '';
-open my($out), '>', \$x;
-$wsdl->printIndex($out);
-close $out;
-is($x, <<_INDEX);
-service StockQuoteService
-    SOAP11 port StockQuotePort (binding StockQuoteSoapBinding)
-        GetLastTradePrice
-_INDEX
-
-### HELPER
-my ($server_expects, $server_answers);
-sub fake_server($$)
-{  my ($request, $trace) = @_;
-   my $content = $request->decoded_content;
-   compare_xml($content, $server_expects, 'fake server received');
-
-   HTTP::Response->new(200, 'answer manually created'
-    , [ 'Content-Type' => 'text/xml' ], $server_answers);
-}
-
-#
-# create client
-#
-
-my $client = $op->compileClient
-  ( transport_hook => \&fake_server
-  , sloppy_floats  => 1
-  );
-
-ok(defined $client, 'compiled client');
-isa_ok($client, 'CODE');
-
-$server_expects = <<__EXPECTED;
-<?xml version="1.0" encoding="UTF-8"?>
-<SOAP-ENV:Envelope
-   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
-  <SOAP-ENV:Body>
-     <xsd1:TradePriceRequest xmlns:xsd1="http://example.com/stockquote/schemas">
-        <tickerSymbol>IBM</tickerSymbol>
-     </xsd1:TradePriceRequest>
-  </SOAP-ENV:Body>
-</SOAP-ENV:Envelope>
-__EXPECTED
-
-$server_answers = <<__ANSWER;
-<?xml version="1.0" encoding="UTF-8"?>
-<SOAP-ENV:Envelope
-   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
-   xmlns:x0="http://example.com/stockquote/schemas">
-  <SOAP-ENV:Body>
-     <x0:TradePrice>
-         <price>3.14</price>
-     </x0:TradePrice>
-  </SOAP-ENV:Body>
-</SOAP-ENV:Envelope>
-__ANSWER
-
-my $answer = $client->(tickerSymbol => 'IBM');
-ok(defined $answer, 'got answer');
-cmp_deeply($answer, {body => {price => 3.14}});  # body is the name of the part
-
-#
-### check parsedWSDL
-#
-use Data::Dumper;
-$Data::Dumper::Indent    = 1;
-$Data::Dumper::Quotekeys = 0;
-
-print Dumper $op->parsedWSDL;
-
@@ -1,110 +0,0 @@
-#!/usr/bin/env perl
-# Test interpretation of WSDL one-way.
-
-use warnings;
-use strict;
-
-use lib 'lib','t';
-use TestTools;
-
-#use Data::Dumper;
-#$Data::Dumper::Indent = 1;
-
-use XML::Compile::WSDL11;
-use XML::Compile::Transport::SOAPHTTP;
-use XML::Compile::Util       qw/SCHEMA2001/;
-use XML::Compile::SOAP::Util qw/WSDL11 WSDL11SOAP SOAP11HTTP/;
-use XML::Compile::Tester;
-use XML::Compile::SOAP11;
-
-use Test::More tests => 11;
-use Test::Deep;
-
-my $testNS     = 'http://any-ns';
-my $schema2001 = SCHEMA2001;
-my $wsdl11     = WSDL11;
-my $wsdl11soap = WSDL11SOAP;
-my $soap11http = SOAP11HTTP;
-
-my $xml_wsdl = <<"__WSDL";
-<?xml version="1.0"?>
-<definitions name="one-way-test"
-   targetNamespace="$testNS"
-   xmlns:tns="$testNS"
-   xmlns:soap="$wsdl11soap"
-   xmlns="$wsdl11">
-
-   <types>
-     <schema targetNamespace="$testNS" xmlns:tns="$testNS"
-       xmlns="$schema2001">
-       <element name="Send" type="int" />
-     </schema>
-   </types>
-
-   <message name="SendInput">
-     <part name="body" element="tns:Send" />
-   </message>
-
-   <portType name="MySender">
-     <operation name="doSend">
-       <input message="tns:SendInput" />
-     </operation>
-   </portType>
-
-   <binding name="SendBinding" type="tns:MySender">
-     <soap:binding style="document" transport="$soap11http" />
-     <operation name="doSend">
-        <soap:operation soapAction="http://any-action" />
-        <input><soap:body use="literal" /></input>
-     </operation>
-   </binding>
-
-   <service name="MyService">
-     <documentation>My second service</documentation>
-     <port name="pleaseSend" binding="tns:SendBinding">
-       <soap:address location="fake-location"/>
-     </port>
-   </service>
-</definitions>
-__WSDL
-
-###
-### BEGIN OF TESTS
-###
-
-my $wsdl = XML::Compile::WSDL11->new($xml_wsdl);
-
-ok(defined $wsdl, "created object");
-isa_ok($wsdl, 'XML::Compile::WSDL11');
-
-my $op = eval { $wsdl->operation('doSend') };
-my $err = $@ || '';
-ok(defined $op, 'existing operation');
-is($@, '', 'no errors');
-isa_ok($op, 'XML::Compile::SOAP11::Operation');
-is($op->kind, 'one-way');
-
-sub fake_server($$)
-{  my ($request, $trace) = @_;
-   my $content = $request->decoded_content;
-   compare_xml($content, <<__EXPECTED, 'fake server received');
-<?xml version="1.0" encoding="UTF-8"?>
-<SOAP-ENV:Envelope
-    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
-  <SOAP-ENV:Body>
-     <tns:Send xmlns:tns="http://any-ns">42</tns:Send>
-  </SOAP-ENV:Body>
-</SOAP-ENV:Envelope>
-__EXPECTED
-
-   HTTP::Response->new(202, 'accepted'
-    , [ 'Content-Type' => 'text/plain' ], 'there is no body');
-}
-
-my $client = $op->compileClient(transport_hook => \&fake_server);
-ok(defined $client, 'compiled client');
-isa_ok($client, 'CODE');
-
-my ($answer, $trace) = $client->(body => 42);
-ok(defined $answer, 'got answer');
-cmp_deeply($answer, {});
@@ -1,179 +0,0 @@
-#!/usr/bin/env perl
-# Test interpretation of WSDL faults.
-
-use warnings;
-use strict;
-
-use lib 'lib','t';
-use TestTools;
-
-use Data::Dumper;
-$Data::Dumper::Indent = 1;
-
-use XML::Compile::WSDL11;
-use XML::Compile::Transport::SOAPHTTP;
-use XML::Compile::Util       qw/SCHEMA2001 pack_type/;
-use XML::Compile::SOAP::Util qw/:wsdl11 :soap11/;
-use XML::Compile::Tester;
-use XML::Compile::SOAP11;
-
-use Test::More tests => 14;
-use Test::Deep;
-#use Log::Report mode => 'DEBUG';
-
-my $testNS     = 'http://any-ns';
-my $schema2001 = SCHEMA2001;
-my $wsdl11     = WSDL11;
-my $wsdl11soap = WSDL11SOAP;
-my $soap11http = SOAP11HTTP;
-
-my $xml_wsdl = <<"__WSDL";
-<?xml version="1.0"?>
-<definitions name="two-way-test"
-   targetNamespace="$testNS"
-   xmlns:tns="$testNS"
-   xmlns:soap="$wsdl11soap"
-   xmlns="$wsdl11">
-
-   <types>
-     <schema targetNamespace="$testNS" xmlns:tns="$testNS"
-       xmlns="$schema2001" elementFormDefault="qualified">
-       <element name="Send" type="int" />
-       <element name="Response" type="int" />
-       <element name="Broken" type="tns:Broken" />
-       <complexType name="Broken">
-         <sequence>
-           <element name="message" type="string" minOccurs="0" />
-         </sequence>
-       </complexType>
-     </schema>
-   </types>
-
-   <message name="SendInput">
-     <part name="body" element="tns:Send"/>
-   </message>
-
-   <message name="SendResponse">
-     <part name="body" element="tns:Response"/>
-   </message>
-
-   <message name="WentWrong">
-     <part name="fault" element="tns:Broken"/>
-   </message>
-
-   <portType name="ProcessorPort">
-     <operation name="doSend">
-       <input message="tns:SendInput"/>
-       <output message="tns:SendResponse"/>
-       <fault message="tns:WentWrong" name="WentWrong"/>
-     </operation>
-   </portType>
-
-   <binding name="ProcessorBinding" type="tns:ProcessorPort">
-     <soap:binding style="document" transport="$soap11http"/>
-     <operation name="doSend">
-        <soap:operation soapAction="http://any-action" />
-        <input><soap:body use="literal"/></input>
-        <output><soap:body use="literal"/></output>
-        <fault name="WentWrong">
-          <soap:fault name="WentWrong" use="literal"/>
-        </fault>
-     </operation>
-   </binding>
-
-   <service name="MyService">
-     <documentation>My two-way service</documentation>
-     <port name="pleaseProcess" binding="tns:ProcessorBinding">
-       <soap:address location="fake-location"/>
-     </port>
-   </service>
-</definitions>
-__WSDL
-
-###
-### BEGIN OF TESTS
-###
-
-my $wsdl = XML::Compile::WSDL11->new($xml_wsdl);
-
-ok(defined $wsdl, "created object");
-isa_ok($wsdl, 'XML::Compile::WSDL11');
-
-# Get operation
-
-my $op = eval { $wsdl->operation('doSend') };
-my $err = $@ || '';
-ok(defined $op, 'existing operation');
-is($@, '', 'no errors');
-isa_ok($op, 'XML::Compile::SOAP::Operation');
-isa_ok($op, 'XML::Compile::SOAP11::Operation');
-is($op->kind, 'request-response');
-
-my $server = $op->compileHandler
-  ( callback => \&return_fault
-  , selector => sub {1}
-  );
-
-# Test client side
-
-my $client = $op->compileClient(transport_hook => \&fake_server);
-ok(defined $client, 'compiled client');
-isa_ok($client, 'CODE');
-
-my ($answer, $trace) = $client->(body => 999);
-
-ok(defined $answer, 'got answer');
-#use Data::Dumper;
-#warn Dumper $answer, $trace;
-is($answer->{Fault}->{faultstring}, 'any-ns.WentWrong', 'got fault string');
-is($answer->{WentWrong}{message}, 'Oh noes', 'parsed response XML');
-
-can_ok $trace, 'responseDOM';
-isa_ok $trace->responseDOM, 'XML::LibXML::Document';
-
-# Test server side
-
-sub return_fault(@)
-{
-  +{ WentWrong =>
-       { faultcode   => pack_type(SOAP11ENV, 'Server')
-       , faultstring => 'any-ns.WentWrong'
-       , detail      => { message => 'Oh noes' }
-       }
-   };
-}
-
-sub fake_server($$)
-{  my ($request, $trace) = @_;
-   my $content = $request->decoded_content;
-
-   $content =~ m!<tns:Send[^>]*>999</tns:Send>!
-      or return HTTP::Response->new(202, 'accepted'
-      , [ 'Content-Type' => 'text/plain' ], 'there is no body');
-
-   my ($code, $msg, $xml) = $server->();
-
-   HTTP::Response->new($code, $msg
-      , [ 'Content-Type' => 'text/xml;charset=utf-8' ]
-      , $xml->toString(1)
-      );
-
-=pod
-
-      , [ 'Content-Type' => 'text/xml;charset=utf-8' ], <<__RESPONSE);
-<?xml version="1.0" encoding="UTF-8"?>
-<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-              xmlns:ns0="$testNS" >
-  <env:Body>
-    <env:Fault>
-      <faultcode>env:Server</faultcode>
-      <faultstring>any-ns.WentWrong</faultstring>
-      <detail><ns0:Broken><ns0:message>Oh noes</ns0:message></ns0:Broken></detail>
-    </env:Fault>
-  </env:Body>
-</env:Envelope>
-__RESPONSE
-
-=cut
-
-}
@@ -1,240 +0,0 @@
-#!/usr/bin/env perl
-# Test SOAP
-
-use warnings;
-use strict;
-
-use lib 'lib','t';
-use TestTools;
-use Test::Deep   qw/cmp_deeply/;
-
-#use Log::Report mode => 3;  # debugging
-
-use Data::Dumper;
-$Data::Dumper::Indent = 1;
-
-use XML::Compile::WSDL11;
-use XML::Compile::Tester;
-
-use Test::More tests => 24;
-use XML::LibXML;
-use XML::Compile::SOAP::Util ':soap11';
-use XML::Compile::SOAP11;
-use XML::Compile::Transport::SOAPHTTP;
-
-my $NS      = 'urn:example:wsdl';
-my $NSEXP   = 'urn:sonae:elegibilidade:exp';
-my $soapenv = SOAP11ENV;
-
-my $schema = <<_SCHEMA;
-<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions
- xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
- xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
- xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:exp="$NS"
- targetNamespace="$NS">
-
- <wsdl:types>
-  <xsd:schema targetNamespace="$NS">
-
-   <xsd:complexType name="list_part_type">
-    <xsd:all>
-     <xsd:element name="list" type="exp:listType" />
-    </xsd:all>
-   </xsd:complexType>
-
-   <xsd:element name="list" type="exp:listType" />
-   <xsd:complexType name="listType">
-    <xsd:sequence>
-     <xsd:element minOccurs="0" maxOccurs="unbounded" name="item">
-      <xsd:complexType>
-       <xsd:sequence>
-        <xsd:element name="id" type="xsd:int"/>
-        <xsd:element name="name" type="xsd:string"/>
-       </xsd:sequence>
-      </xsd:complexType>
-     </xsd:element>
-    </xsd:sequence>
-   </xsd:complexType>
-
-   <xsd:element name="result" type="xsd:int"/>
-  </xsd:schema>
- </wsdl:types>
-
- <wsdl:message name="request_via_element">
-   <wsdl:part name="list" element="exp:list"/>
- </wsdl:message>
- <wsdl:message name="request_via_type">
-   <wsdl:part name="list" type="exp:listType"/>
- </wsdl:message>
- <wsdl:message name="answer_via_element">
-   <wsdl:part name="result" element="exp:result"/>
- </wsdl:message>
- <wsdl:message name="answer_via_type">
-   <wsdl:part name="result" type="xsd:int"/>
- </wsdl:message>
-
- <wsdl:portType name="query">
-   <wsdl:operation name="usingElement">
-     <wsdl:input message="exp:request_via_element"/>
-     <wsdl:output message="exp:answer_via_element"/>
-   </wsdl:operation>
-   <wsdl:operation name="usingType">
-     <wsdl:input message="exp:request_via_type"/>
-     <wsdl:output message="exp:answer_via_type"/>
-   </wsdl:operation>
- </wsdl:portType>
-
- <wsdl:binding name="query_SOAPHTTP" type="exp:query">
-   <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-   <wsdl:operation name="usingElement">
-     <soap:operation style="rpc"/>
-     <wsdl:input>
-       <soap:body use="literal" namespace="$NSEXP"/>
-     </wsdl:input>
-     <wsdl:output>
-       <soap:body use="literal" namespace="$NSEXP"/>
-     </wsdl:output>
-   </wsdl:operation>
-   <wsdl:operation name="usingType">
-     <soap:operation style="rpc"/>
-     <wsdl:input>
-       <soap:body use="literal" namespace="$NSEXP"/>
-     </wsdl:input>
-     <wsdl:output>
-       <soap:body use="literal" namespace="$NSEXP"/>
-     </wsdl:output>
-   </wsdl:operation>
- </wsdl:binding>
-
- <wsdl:service name="service">
-   <wsdl:port binding="exp:query_SOAPHTTP" name="query">
-     <soap:address location="http://localhost:3000/ws/exp/soap"/>
-   </wsdl:port>
- </wsdl:service>
-</wsdl:definitions>
-_SCHEMA
-
-### HELPER
-my ($server_expects, $server_answers);
-sub fake_server($$)
-{  my ($request, $trace) = @_;
-   my $content = $request->decoded_content;
-   compare_xml($content, $server_expects, 'fake server received');
-#warn "CONTENT=$content###";
-
-   HTTP::Response->new(200, 'answer manually created'
-    , [ 'Content-Type' => 'text/xml' ], $server_answers);
-}
-
-#
-# Create and interpret a message
-#
-
-my $soap = XML::Compile::SOAP11::Client->new;
-isa_ok($soap, 'XML::Compile::SOAP11::Client');
-isa_ok($soap, 'XML::Compile::SOAP11');
-
-my $wsdl = XML::Compile::WSDL11->new($schema);
-ok(defined $wsdl, "created object");
-isa_ok($wsdl, 'XML::Compile::WSDL11');
-$wsdl->prefixes(sonae => $NSEXP);
-
-#
-# Element part
-#
-
-ok(1, "** using element");
-
-my $eop = $wsdl->operation('usingElement');
-isa_ok($eop, 'XML::Compile::SOAP11::Operation');
-is($eop->name, 'usingElement');
-is($eop->style, 'rpc');
-
-my $er = $eop->compileClient(transport_hook => \&fake_server);
-isa_ok($er, 'CODE');
-
-$server_expects = <<_EXPECTS;
-<?xml version="1.0" encoding="UTF-8"?>
-<SOAP-ENV:Envelope xmlns:SOAP-ENV="$soapenv">
-  <SOAP-ENV:Body>
-    <sonae:usingElement xmlns:sonae="$NSEXP">
-      <exp:list xmlns:exp="$NS">
-        <item><id>1</id><name>aap</name></item>
-        <item><id>2</id><name>noot</name></item>
-        <item><id>3</id><name>mies</name></item>
-      </exp:list>
-    </sonae:usingElement>
-  </SOAP-ENV:Body>
-</SOAP-ENV:Envelope>
-_EXPECTS
-
-$server_answers = <<_ANSWER;
-<?xml version="1.0" encoding="UTF-8"?>
-<SOAP-ENV:Envelope xmlns:SOAP-ENV="$soapenv">
-  <SOAP-ENV:Body>
-    <sonae:usingElementResponse xmlns:sonae="$NSEXP">
-      <exp:result xmlns:exp="$NS">3</exp:result>
-    </sonae:usingElementResponse>
-  </SOAP-ENV:Body>
-</SOAP-ENV:Envelope>
-_ANSWER
-
-my %data = ( item =>
-   [ { id => 1, name => 'aap'  }
-   , { id => 2, name => 'noot' }
-   , { id => 3, name => 'mies' } ] );
-
-my $ea = $er->(\%data);
-ok(defined $ea, 'got element answer');
-my $u = $ea->{usingElementResponse};
-isa_ok($u, 'HASH');
-cmp_ok(keys %$u, '==', 1);
-is($u->{result}, '3');
-
-#
-# Type part
-#
-
-ok(1, "** using type");
-my $top = $wsdl->operation('usingType');
-isa_ok($top, 'XML::Compile::SOAP11::Operation', 'using type');
-is($top->name, 'usingType');
-is($top->style, 'rpc');
-
-my $tr = $top->compileClient(transport_hook => \&fake_server);
-isa_ok($tr, 'CODE');
-
-$server_expects = <<_REQUEST;
-<?xml version="1.0" encoding="UTF-8"?>
-<SOAP-ENV:Envelope xmlns:SOAP-ENV="$soapenv">
-  <SOAP-ENV:Body>
-    <sonae:usingType xmlns:sonae="$NSEXP">
-      <list>
-        <item><id>1</id><name>aap</name></item>
-        <item><id>2</id><name>noot</name></item>
-        <item><id>3</id><name>mies</name></item>
-      </list>
-    </sonae:usingType>
-  </SOAP-ENV:Body>
-</SOAP-ENV:Envelope>
-_REQUEST
-
-$server_answers = <<_ANSWER;
-<SOAP-ENV:Envelope xmlns:SOAP-ENV="$soapenv">
- <SOAP-ENV:Body>
-  <sonae:usingTypeResponse xmlns:sonae="$NSEXP">
-    <result>5</result>
-  </sonae:usingTypeResponse>
- </SOAP-ENV:Body>
-</SOAP-ENV:Envelope>
-_ANSWER
-
-my $ta = $tr->(%data);
-ok(defined $ta, 'got type answer');
-my $r = $ta->{usingTypeResponse};
-isa_ok($r, 'HASH');
-cmp_ok(keys %$r, '==', 1);
-is($r->{result}, '5');
@@ -1,157 +0,0 @@
-#!/usr/bin/env perl
-# Test Literal RPC
-# Example contributed by Daniel Ruoso
-
-use warnings;
-use strict;
-
-use lib 'lib','t';
-use TestTools;
-use Test::Deep   qw/cmp_deeply/;
-
-#use Log::Report mode => 3;  # debugging
-
-use Data::Dumper;
-$Data::Dumper::Indent = 1;
-
-use XML::Compile::WSDL11;
-use XML::Compile::Tester;
-
-use Test::More tests => 14;
-use XML::LibXML;
-use XML::Compile::SOAP::Util ':soap11';
-use XML::Compile::SOAP11;
-use XML::Compile::Transport::SOAPHTTP;
-
-my $NS      = 'http://example.com/hello';
-my $soapenv = SOAP11ENV;
-
-my $schema = <<_SCHEMA;
-<?xml version="1.0" encoding="UTF-8"?>
-<wsdl: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:wsdl="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:hello="$NS"
-    xmlns="$NS"
-    targetNamespace="http://example.com/hello">
-
-  <wsdl:types>
-    <s:schema elementFormDefault="qualified" targetNamespace="http://example.com/hello">
-      <s:element minOccurs="0" maxOccurs="1" name="who" type="s:string"/>
-      <s:element minOccurs="0" maxOccurs="1" name="greeting" type="s:string"/>
-    </s:schema>
-  </wsdl:types>
-  <wsdl:message name="AskGreeting">
-    <wsdl:part name="who" element="hello:who"/>
-    <wsdl:part name="greeting" element="hello:greeting"/>
-  </wsdl:message>
-  <wsdl:message name="GiveGreeting">
-    <wsdl:part name="greeting" element="hello:greeting"/>
-  </wsdl:message>
-  <wsdl:portType name="Greeting">
-    <wsdl:operation name="Greet">
-      <wsdl:input message="hello:AskGreeting"/>
-      <wsdl:output message="hello:GiveGreeting"/>
-    </wsdl:operation>
-    <wsdl:operation name="Shout">
-      <wsdl:input message="hello:AskGreeting"/>
-      <wsdl:output message="hello:GiveGreeting"/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding name="Greeting" type="hello:Greeting">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
-    <wsdl:operation name="Greet">
-      <wsdl:input>
-        <soap:body use="literal" namespace="$NS" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" namespace="$NS" />
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="Shout">
-      <wsdl:input>
-        <soap:body use="literal" namespace="$NS" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" namespace="$NS" />
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:service name="GreetService">
-    <wsdl:port name="Greet" binding="hello:Greeting">
-      <soap:address location="http://localhost:3000/rpcliteral/"/>
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>
-_SCHEMA
-
-### HELPER
-my ($server_expects, $server_answers);
-sub fake_server($$)
-{  my ($request, $trace) = @_;
-   my $content = $request->decoded_content;
-   compare_xml($content, $server_expects, 'fake server received');
-
-   HTTP::Response->new(200, 'answer manually created'
-    , [ 'Content-Type' => 'text/xml' ], $server_answers);
-}
-
-#
-# Create and interpret a message
-#
-
-my $soap = XML::Compile::SOAP11::Client->new;
-isa_ok($soap, 'XML::Compile::SOAP11::Client');
-isa_ok($soap, 'XML::Compile::SOAP11');
-
-my $wsdl = XML::Compile::WSDL11->new($schema);
-ok(defined $wsdl, "created object");
-isa_ok($wsdl, 'XML::Compile::WSDL11');
-
-#
-# Element part
-#
-
-ok(1, "** using element");
-
-my $eop = $wsdl->operation('Greet');
-isa_ok($eop, 'XML::Compile::SOAP11::Operation');
-is($eop->name, 'Greet');
-is($eop->style, 'rpc');
-
-my $er = $eop->compileClient(transport_hook => \&fake_server);
-isa_ok($er, 'CODE');
-
-$server_expects = <<_EXPECTS;
-<?xml version="1.0" encoding="UTF-8"?>
-<SOAP-ENV:Envelope xmlns:SOAP-ENV="$soapenv">
-  <SOAP-ENV:Body>
-   <hello:Greet xmlns:hello="$NS">
-     <hello:who xmlns:hello="$NS">World</hello:who>
-     <hello:greeting xmlns:hello="$NS">Hello</hello:greeting>
-   </hello:Greet>
-  </SOAP-ENV:Body>
-</SOAP-ENV:Envelope>
-_EXPECTS
-
-$server_answers = <<_ANSWER;
-<?xml version="1.0" encoding="UTF-8"?>
-<SOAP-ENV:Envelope xmlns:SOAP-ENV="$soapenv">
-  <SOAP-ENV:Body>
-    <hello:GreetResponse xmlns:hello="$NS">
-      <hello:greeting>Hello, World!</hello:greeting>
-    </hello:GreetResponse>
-  </SOAP-ENV:Body>
-</SOAP-ENV:Envelope>
-_ANSWER
-
-my %data = ( who => 'World', greeting => 'Hello' );
-
-my $ea = $er->(\%data);
-ok(defined $ea, 'got element answer');
-my $g = $ea->{GreetResponse};
-isa_ok($g, 'HASH');
-cmp_ok(keys %$g, '==', 1);
-is($g->{greeting}, 'Hello, World!');
@@ -1,115 +0,0 @@
-#!/usr/bin/env perl
-# Test interpretation of RPC literal one-way, derived from 51wsdloneway-rpc.t
-
-use warnings;
-use strict;
-
-use lib 'lib','t';
-use TestTools;
-
-#use Data::Dumper;
-#$Data::Dumper::Indent = 1;
-#use Log::Report mode => 'DEBUG';
-
-use XML::Compile::WSDL11;
-use XML::Compile::Transport::SOAPHTTP;
-use XML::Compile::Util       qw/SCHEMA2001/;
-use XML::Compile::SOAP::Util qw/WSDL11 WSDL11SOAP SOAP11HTTP SOAP11ENV/;
-use XML::Compile::Tester;
-use XML::Compile::SOAP11;
-
-use Test::More tests => 11;
-use Test::Deep;
-
-my $myNS     = 'http://any-ns';
-my $schema2001 = SCHEMA2001;
-my $wsdl11     = WSDL11;
-my $wsdl11soap = WSDL11SOAP;
-my $soap11http = SOAP11HTTP;
-my $soapenv    = SOAP11ENV;
-
-my $xml_wsdl = <<"__WSDL";
-<?xml version="1.0"?>
-<definitions name="one-way-test"
-   targetNamespace="$myNS"
-   xmlns:tns="$myNS"
-   xmlns:soap="$wsdl11soap"
-   xmlns="$wsdl11">
-
-   <types>
-     <schema targetNamespace="$myNS" xmlns:tns="$myNS"
-       xmlns="$schema2001">
-       <element name="Send" type="int" />
-     </schema>
-   </types>
-
-   <message name="SendInput">
-     <part name="body" element="tns:Send" />
-   </message>
-
-   <portType name="MySender">
-     <operation name="doSend">
-       <input message="tns:SendInput" />
-     </operation>
-   </portType>
-
-   <binding name="SendBinding" type="tns:MySender">
-     <soap:binding style="rpc" transport="$soap11http" />
-     <operation name="doSend">
-        <soap:operation soapAction="http://any-action" />
-        <input><soap:body use="literal" namespace="$myNS" /></input>
-     </operation>
-   </binding>
-
-   <service name="MyService">
-     <documentation>My second service</documentation>
-     <port name="pleaseSend" binding="tns:SendBinding">
-       <soap:address location="fake-location"/>
-     </port>
-   </service>
-</definitions>
-__WSDL
-
-###
-### BEGIN OF TESTS
-###
-
-my $wsdl = XML::Compile::WSDL11->new($xml_wsdl);
-
-ok(defined $wsdl, "created object");
-isa_ok($wsdl, 'XML::Compile::WSDL11');
-
-my $op = eval { $wsdl->operation('doSend') };
-my $err = $@ || '';
-ok(defined $op, 'existing operation');
-is($@, '', 'no errors');
-isa_ok($op, 'XML::Compile::SOAP11::Operation');
-is($op->kind, 'one-way');
-
-sub fake_server($$)
-{  my ($request, $trace) = @_;
-   my $content = $request->decoded_content;
-   #warn $request->headers->as_string;
-
-   compare_xml($content, <<__EXPECTED, 'fake server received');
-<?xml version="1.0" encoding="UTF-8"?>
-<SOAP-ENV:Envelope xmlns:SOAP-ENV="$soapenv">
-  <SOAP-ENV:Body>
-    <tns:doSend xmlns:tns="$myNS">
-      <tns:Send xmlns:tns="$myNS">42</tns:Send>
-    </tns:doSend>
-  </SOAP-ENV:Body>
-</SOAP-ENV:Envelope>
-__EXPECTED
-
-   HTTP::Response->new(202, 'accepted'
-    , [ 'Content-Type' => 'text/plain' ], 'there is no body');
-}
-
-my $client = $op->compileClient(transport_hook => \&fake_server);
-ok(defined $client, 'compiled client');
-isa_ok($client, 'CODE');
-
-my ($answer, $trace) = $client->(body => 42);
-ok(defined $answer, 'got answer');
-cmp_deeply($answer, {});
@@ -1,4 +1,4 @@
-# Copyrights 2007-2013 by [Mark Overmeer].
+# Copyrights 2007-2014 by [Mark Overmeer].
 #  For other contributors see ChangeLog.
 # See the manual pages for details on the licensing terms.
 # Pod stripped from pm file by OODoc 2.01.
@@ -10,7 +10,7 @@ use lib '../XMLCompile/lib', '../LogReport/lib', '../XMLTester/lib';
 
 package TestTools;
 use vars '$VERSION';
-$VERSION = '2.38';
+$VERSION = '3.05';
 
 use base 'Exporter';