diff --git a/Build.PL b/Build.PL
index 22ca352..e993b19 100644
--- a/Build.PL
+++ b/Build.PL
@@ -1,40 +1,41 @@
-use Module::Build;
-
-Module::Build->new(
- create_makefile_pl => 'passthrough',
- dist_abstract => 'SOAP with WSDL support',
- dist_name => 'SOAP-WSDL',
- dist_version => '2.00_12',
- module_name => 'SOAP::WSDL',
- license => 'artistic',
- requires => {
- 'Class::Std' => q/v0.0.8/,
- 'Class::Std::Storable' => 0,
- 'Date::Parse' => 0,
- 'Date::Format' => 0,
- 'LWP::UserAgent' => 0,
- 'List::Util' => 0,
- 'File::Basename' => 0,
- 'File::Path' => 0,
- 'XML::Parser::Expat' => 0,
- 'Template' => 0,
- 'Getopt::Long' => 0,
- },
- buildrequires => {
- 'Date::Parse' => 0,
- 'Date::Format' => 0,
- 'Test::More' => 0,
- 'Class::Std' => q/v0.0.8/,
- 'Class::Std::Storable' => 0,
- 'List::Util' => 0,
- 'LWP::UserAgent' => 0,
- 'File::Basename' => 0,
- 'File::Path' => 0,
- 'XML::Parser::Expat' => 0,
- 'Template' => 0,
- 'Getopt::Long' => 0,
- 'Cwd' => 0,
- 'File::Find' => 0,
- },
- recursive_test_files => 1,
-)->create_build_script;
+use Module::Build;
+
+Module::Build->new(
+ create_makefile_pl => 'passthrough',
+ dist_abstract => 'SOAP with WSDL support',
+ dist_name => 'SOAP-WSDL',
+ dist_version => '2.00_13',
+ module_name => 'SOAP::WSDL',
+ license => 'artistic',
+ requires => {
+ 'Class::Std' => q/v0.0.8/,
+ 'Class::Std::Storable' => 0,
+ 'Date::Parse' => 0,
+ 'Date::Format' => 0,
+ 'LWP::UserAgent' => 0,
+ 'List::Util' => 0,
+ 'File::Basename' => 0,
+ 'File::Path' => 0,
+ 'XML::Parser::Expat' => 0,
+ 'Template' => 0,
+ 'Getopt::Long' => 0,
+ },
+ buildrequires => {
+ 'Date::Parse' => 0,
+ 'Date::Format' => 0,
+ 'Test::More' => 0,
+ 'Class::Std' => q/v0.0.8/,
+ 'Class::Std::Storable' => 0,
+ 'List::Util' => 0,
+ 'LWP::UserAgent' => 0,
+ 'File::Basename' => 0,
+ 'File::Path' => 0,
+ 'XML::Parser::Expat' => 0,
+ 'Template' => 0,
+ 'Getopt::Long' => 0,
+ 'Cwd' => 0,
+ 'File::Find' => 0,
+ 'Storable' => 0,
+ },
+ recursive_test_files => 1,
+)->create_build_script;
diff --git a/CHANGES b/CHANGES
index 5c2e318..f3605ea 100644
--- a/CHANGES
+++ b/CHANGES
@@ -26,10 +26,49 @@ Features:
The following changes have been made:
+2.00_13
+----
+The following features were added (the numbers in square brackets are the
+tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924):
+ * [ 1790619 ] Test transport backend
+ A test transport backend has been implemented (SOAP::WSDL::Transport::Test).
+ It returns the contents from a file and discards the response.
+ The filename is determined from the soap_action field.
+
+ * [ 1785196 ] Replace outputsom(1) by deserializer plugin
+ outputsom(1) in SOAP::WSDL is now implemented via using the deserializer
+ plugin SOAP::WSDL::Deserializer::SOM.
+
+ * [1785195] Support deserializer plugins
+ Deserializer plugin API added via SOAP::WSDL::Factory::Deserializer.
+
+The following bugs have been fixed (the numbers in square brackets are the
+tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660921):
+
+ * [1789581] Support ComplexType mixed
+ WSDL parser now supports using the mixed="true" attribute in complexType
+ definitions. Mixed content in messages is only supported via SOAP::SOM yet.
+
+ * [1787975] 016_client_object.t fails due to testing XML as string
+ Removed string test.
+
+ * [1787959] Test wsdl seems to be broken
+ Corrected typo.
+
+ * [1787955] ::XSD::Typelib::date is broken
+ SOAP::WSDL::XSD::Typelib::Builtin::date now converts time-zoned dates properly,
+ and adds the local time zone if none is given.
+
+ * [1785646] SOAPAction header not set from soap:operation soapAction
+ SOAP::WSDL now sets the SOAPAction header correctly.
+
+The following uncategorized improvements have been mad:
+
+ * Documentation improvements
2.00_12
----
-
+
The following bugs have been fixed (the numbers in square brackets are the
tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660921):
@@ -40,6 +79,16 @@ tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660921):
* [1787054] Test suite requires XML::LibXML in 2.00_11
The test suite no longer requires XML::LibXML to pass.
+ * [1785678] SOAP envelope not checked for namespace
+ The SOAP envelope is now checked for the correct namespace.
+
+ * [1786644] SOAP::WSDL::Manual - doc error
+ Documentation improvements
+
+The following uncategorized improvements have been made
+
+ * The SOAPAction header is now alway quoted (R1109 in WS-I BP 1.0).
+
2.00_11
----
@@ -75,7 +124,8 @@ The following uncategorized improvements have been made
- XML::LibXML
* The missing prerequisite Template has been added.
- * Documentation has been improved.
+ * Documentation has been improved:
+ - WS-I Compliance document added.
2.00_10
diff --git a/HACKING b/HACKING
index d680422..cc27f04 100644
--- a/HACKING
+++ b/HACKING
@@ -15,31 +15,31 @@ The (my) current roadmap for SOAP::WSDL is:
1.* Development of the 1.* tree has stopped - I won't get past 1.2x anymore...
2.* WSDL -> Perl Class factory with offline WSDL processing
-
-2.01
-- WSDL support for the most common type definitions
-- Online-facility (SOAP::WSDL) using WSDL object tree directly
-- usable code generator
+
+2.01
+- WSDL support for the most common type definitions
+- Online-facility (SOAP::WSDL) using WSDL object tree directly
+- usable code generator
- full namespace support when processing WSDL
- high performance when parsing WSDL messages - get nearly as fast as
- XML::Simple...
-
-2.02
-- Support for Apache-SOAP datatypes
-- support for embedded atomic simpleType/complexType definitions
-- Caching of WSDL object tree + generated code (when using SOAP::WSDL).
-- Online-facility (SOAP::WSDL) using code generator via cache directory
-
-Somewhere on the TODO list (in no particular order):
-
-- validation
-- typemaps for use with the type="tns:MyComplexType" XML attribute
-- external entities support when parsing WSDL
-- support all these XML Schema variants
-- support creating XML Schmema definitions via SOAP::WSDL::XSD::* ('minimal conformant')
+ XML::Simple...
+
+2.02
+- Support for Apache-SOAP datatypes
+- support for embedded atomic simpleType/complexType definitions
+- Caching of WSDL object tree + generated code (when using SOAP::WSDL).
+- Online-facility (SOAP::WSDL) using code generator via cache directory
+
+Somewhere on the TODO list (in no particular order):
+
+- validation
+- typemaps for use with the type="tns:MyComplexType" XML attribute
+- external entities support when parsing WSDL
+- support all these XML Schema variants
+- support creating XML Schmema definitions via SOAP::WSDL::XSD::* ('minimal conformant')
- support other Schema definition languages than XML::Schema (maybe RelaxNG?)
-- factor out SOAP::WSDL::XSD into it's own namespace (maybe just XSD ?)
-
+- factor out SOAP::WSDL::XSD into it's own namespace (maybe just XSD ?)
+
July 2007,
Martin Kutter
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 41d0626..fd6bcd3 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,7 @@
-SOAP::WSDL is dual licensed under the same terms as
-Perl itself.
-
-This means at your choice, either the Perl Artistic License, or
-the GNU GPL version 1 or higher.
-
-
+SOAP::WSDL is dual licensed under the same terms as
+Perl itself.
+
+This means at your choice, either the Perl Artistic License, or
+the GNU GPL version 1 or higher.
+
+
diff --git a/MANIFEST b/MANIFEST
index 4452f08..7b65424 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,206 +1,214 @@
-benchmark/01_expat.t
-bin/wsdl2perl.pl
-Build.PL
-CHANGES
-example/fortune.pl
-example/lib/MyElements/CountCookies.pm
-example/lib/MyElements/CountCookiesResponse.pm
-example/lib/MyElements/GetCitiesByCountry.pm
-example/lib/MyElements/GetCitiesByCountryResponse.pm
-example/lib/MyElements/GetFortuneCookie.pm
-example/lib/MyElements/GetFortuneCookieResponse.pm
-example/lib/MyElements/GetSpecificCookie.pm
-example/lib/MyElements/GetSpecificCookieResponse.pm
-example/lib/MyElements/GetWeather.pm
-example/lib/MyElements/GetWeatherResponse.pm
-example/lib/MyElements/int.pm
-example/lib/MyElements/readNodeCount.pm
-example/lib/MyElements/readNodeCountResponse.pm
-example/lib/MyElements/string.pm
-example/lib/MyInterfaces/FullerData_x0020_Fortune_x0020_Cookie.pm
-example/lib/MyInterfaces/GlobalWeather.pm
-example/lib/MyTypemaps/FullerData_x0020_Fortune_x0020_Cookie.pm
-example/lib/MyTypemaps/GlobalWeather.pm
-example/weather.pl
-example/weather_wsdl.pl
-example/wsdl/FortuneCookie.xml
-example/wsdl/genericbarcode.xml
-example/wsdl/globalweather.xml
-HACKING
-lib/SOAP/WSDL.pm
-lib/SOAP/WSDL/Base.pm
-lib/SOAP/WSDL/Binding.pm
-lib/SOAP/WSDL/Client.pm
-lib/SOAP/WSDL/Client/Base.pm
-lib/SOAP/WSDL/Definitions.pm
-lib/SOAP/WSDL/Expat/MessageParser.pm
-lib/SOAP/WSDL/Expat/MessageStreamParser.pm
-lib/SOAP/WSDL/Expat/MessageSubParser.pm
-lib/SOAP/WSDL/Expat/SubParser.pm
-lib/SOAP/WSDL/Expat/WSDLParser.pm
-lib/SOAP/WSDL/Factory/Serializer.pm
-lib/SOAP/WSDL/Factory/Transport.pm
-lib/SOAP/WSDL/Manual.pod
-lib/SOAP/WSDL/Manual/Glossary.pod
-lib/SOAP/WSDL/Manual/WS_I.pod
-lib/SOAP/WSDL/Message.pm
-lib/SOAP/WSDL/Operation.pm
-lib/SOAP/WSDL/OpMessage.pm
-lib/SOAP/WSDL/Parser.pod
-lib/SOAP/WSDL/Part.pm
-lib/SOAP/WSDL/Port.pm
-lib/SOAP/WSDL/PortType.pm
-lib/SOAP/WSDL/SAX/MessageHandler.pm
-lib/SOAP/WSDL/SAX/WSDLHandler.pm
-lib/SOAP/WSDL/Serializer/SOAP11.pm
-lib/SOAP/WSDL/Service.pm
-lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm
-lib/SOAP/WSDL/SoapOperation.pm
-lib/SOAP/WSDL/Transport/HTTP.pm
-lib/SOAP/WSDL/TypeLookup.pm
-lib/SOAP/WSDL/Types.pm
-lib/SOAP/WSDL/XSD/Builtin.pm
-lib/SOAP/WSDL/XSD/ComplexType.pm
-lib/SOAP/WSDL/XSD/Element.pm
-lib/SOAP/WSDL/XSD/Schema.pm
-lib/SOAP/WSDL/XSD/Schema/Builtin.pm
-lib/SOAP/WSDL/XSD/SimpleType.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/anyURI.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/base64Binary.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/byte.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/date.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/dateTime.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/decimal.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/double.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/duration.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/float.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/gDay.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/gMonth.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/gMonthDay.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/gYear.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/gYearMonth.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/hexBinary.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/ID.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/IDREF.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/IDREFS.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/int.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/integer.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/language.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/list.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/long.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/Name.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/NCName.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/negativeInteger.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/NMTOKEN.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/NMTOKENS.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/nonNegativeInteger.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/nonPositiveInteger.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/normalizedString.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/NOTATION.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/positiveInteger.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/QName.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/short.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/string.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/time.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/token.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedByte.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedInt.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedLong.pm
-lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedShort.pm
-lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm
-lib/SOAP/WSDL/XSD/Typelib/Element.pm
-lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
-LICENSE
-Makefile.PL
-MANIFEST This list of files
-META.yml
-README
-t/001_use.t
-t/002_parse_wsdl.t
-t/002_sax.t
-t/003_sax_serializer.t
-t/003_wsdl_based_serializer.t
-t/004_parse_wsdl.t
-t/004_sax_wsdl.t
-t/005_parse_contributed.t
-t/005_sax_contributed_wsdl.t
-t/006_client.t
-t/007_envelope.t
-t/008_client_wsdl_complexType.t
-t/009_data_classes.t
-t/011_simpleType.t
-t/012_element.t
-t/013_complexType.t
-t/014_sax_typelib.t
-t/015_to_typemap.t
-t/016_client_object.t
-t/017_generator_expat.t
-t/017_generator_libxml.t
-t/018_generator_expat.t
-t/018_generator_libxml.t
-t/020_storable.t
-t/021_generator_element_ref_expat.t
-t/021_generator_element_ref_libxml.t
-t/098_pod.t
-t/acceptance/results/03_complexType-all.xml
-t/acceptance/results/03_complexType-sequence.xml
-t/acceptance/results/04_element-simpleType.xml
-t/acceptance/results/04_element.xml
-t/acceptance/results/05_simpleType-list.xml
-t/acceptance/results/05_simpleType-restriction.xml
-t/acceptance/results/05_simpleType-union.xml
-t/acceptance/results/11_helloworld.xml
-t/acceptance/wsdl/006_sax_client.wsdl
-t/acceptance/wsdl/008_complexType.wsdl
-t/acceptance/wsdl/02_port.wsdl
-t/acceptance/wsdl/03_complexType-all.wsdl
-t/acceptance/wsdl/03_complexType-element-ref.wsdl
-t/acceptance/wsdl/03_complexType-sequence.wsdl
-t/acceptance/wsdl/04_element-simpleType.wsdl
-t/acceptance/wsdl/04_element.wsdl
-t/acceptance/wsdl/05_simpleType-list.wsdl
-t/acceptance/wsdl/05_simpleType-restriction.wsdl
-t/acceptance/wsdl/05_simpleType-union.wsdl
-t/acceptance/wsdl/10_helloworld.asmx.xml
-t/acceptance/wsdl/11_helloworld.wsdl
-t/acceptance/wsdl/contributed/Axis.wsdl
-t/acceptance/wsdl/contributed/ETest.wsdl
-t/acceptance/wsdl/contributed/OITest.wsdl
-t/acceptance/wsdl/contributed/tools.wsdl
-t/acceptance/wsdl/email_account.wsdl
-t/Expat/01_expat.t
-t/Expat/02_sub_parser.t
-t/Expat/03_wsdl.t
-t/lib/MyComplexType.pm
-t/lib/MyElement.pm
-t/lib/MySimpleType.pm
-t/lib/Test/SOAPMessage.pm
-t/lib/Typelib/Base.pm
-t/lib/Typelib/TEnqueueMessage.pm
-t/lib/Typelib/TMessage.pm
-t/SOAP/WSDL/01_use.t
-t/SOAP/WSDL/02_port.t
-t/SOAP/WSDL/03_complexType-all.t
-t/SOAP/WSDL/03_complexType-choice.t
-t/SOAP/WSDL/03_complexType-complexContent.t
-t/SOAP/WSDL/03_complexType-element-ref.t
-t/SOAP/WSDL/03_complexType-group.t
-t/SOAP/WSDL/03_complexType-sequence.t
-t/SOAP/WSDL/03_complexType-simpleContent.t
-t/SOAP/WSDL/04_element-complexType.t
-t/SOAP/WSDL/04_element-simpleType.t
-t/SOAP/WSDL/04_element.t
-t/SOAP/WSDL/05_simpleType-list.t
-t/SOAP/WSDL/05_simpleType-restriction.t
-t/SOAP/WSDL/05_simpleType-union.t
-t/SOAP/WSDL/11_helloworld.NET.t
-t/SOAP/WSDL/12_binding.pl
-t/SOAP/WSDL/XSD/Typelib/Builtin/001_string.t
-t/SOAP/WSDL/XSD/Typelib/Builtin/002_dateTime.t
-t/SOAP/WSDL/XSD/Typelib/Builtin/003_date.t
-TODO
+benchmark/01_expat.t
+benchmark/XSD/01_anyType.t
+benchmark/XSD/02_anySimpleType.t
+benchmark/XSD/03_string.t
+bin/wsdl2perl.pl
+Build.PL
+CHANGES
+example/fortune.pl
+example/lib/MyElements/CountCookies.pm
+example/lib/MyElements/CountCookiesResponse.pm
+example/lib/MyElements/GetCitiesByCountry.pm
+example/lib/MyElements/GetCitiesByCountryResponse.pm
+example/lib/MyElements/GetFortuneCookie.pm
+example/lib/MyElements/GetFortuneCookieResponse.pm
+example/lib/MyElements/GetSpecificCookie.pm
+example/lib/MyElements/GetSpecificCookieResponse.pm
+example/lib/MyElements/GetWeather.pm
+example/lib/MyElements/GetWeatherResponse.pm
+example/lib/MyElements/int.pm
+example/lib/MyElements/readNodeCount.pm
+example/lib/MyElements/readNodeCountResponse.pm
+example/lib/MyElements/string.pm
+example/lib/MyInterfaces/FullerData_x0020_Fortune_x0020_Cookie.pm
+example/lib/MyInterfaces/GlobalWeather.pm
+example/lib/MyTypemaps/FullerData_x0020_Fortune_x0020_Cookie.pm
+example/lib/MyTypemaps/GlobalWeather.pm
+example/weather.pl
+example/weather_wsdl.pl
+example/wsdl/FortuneCookie.xml
+example/wsdl/genericbarcode.xml
+example/wsdl/globalweather.xml
+HACKING
+lib/SOAP/WSDL.pm
+lib/SOAP/WSDL/Base.pm
+lib/SOAP/WSDL/Binding.pm
+lib/SOAP/WSDL/Client.pm
+lib/SOAP/WSDL/Client/Base.pm
+lib/SOAP/WSDL/Definitions.pm
+lib/SOAP/WSDL/Deserializer/SOAP11.pm
+lib/SOAP/WSDL/Deserializer/SOM.pm
+lib/SOAP/WSDL/Expat/MessageParser.pm
+lib/SOAP/WSDL/Expat/MessageStreamParser.pm
+lib/SOAP/WSDL/Expat/MessageSubParser.pm
+lib/SOAP/WSDL/Expat/SubParser.pm
+lib/SOAP/WSDL/Expat/WSDLParser.pm
+lib/SOAP/WSDL/Factory/Deserializer.pm
+lib/SOAP/WSDL/Factory/Serializer.pm
+lib/SOAP/WSDL/Factory/Transport.pm
+lib/SOAP/WSDL/Manual.pod
+lib/SOAP/WSDL/Manual/Glossary.pod
+lib/SOAP/WSDL/Manual/WS_I.pod
+lib/SOAP/WSDL/Message.pm
+lib/SOAP/WSDL/Operation.pm
+lib/SOAP/WSDL/OpMessage.pm
+lib/SOAP/WSDL/Parser.pod
+lib/SOAP/WSDL/Part.pm
+lib/SOAP/WSDL/Port.pm
+lib/SOAP/WSDL/PortType.pm
+lib/SOAP/WSDL/SAX/MessageHandler.pm
+lib/SOAP/WSDL/SAX/WSDLHandler.pm
+lib/SOAP/WSDL/Serializer/SOAP11.pm
+lib/SOAP/WSDL/Service.pm
+lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm
+lib/SOAP/WSDL/SoapOperation.pm
+lib/SOAP/WSDL/Transport/HTTP.pm
+lib/SOAP/WSDL/TypeLookup.pm
+lib/SOAP/WSDL/Types.pm
+lib/SOAP/WSDL/XSD/Builtin.pm
+lib/SOAP/WSDL/XSD/ComplexType.pm
+lib/SOAP/WSDL/XSD/Element.pm
+lib/SOAP/WSDL/XSD/Schema.pm
+lib/SOAP/WSDL/XSD/Schema/Builtin.pm
+lib/SOAP/WSDL/XSD/SimpleType.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/anyURI.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/base64Binary.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/byte.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/date.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/dateTime.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/decimal.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/double.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/duration.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/float.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/gDay.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/gMonth.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/gMonthDay.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/gYear.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/gYearMonth.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/hexBinary.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/ID.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/IDREF.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/IDREFS.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/int.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/integer.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/language.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/list.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/long.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/Name.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/NCName.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/negativeInteger.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/NMTOKEN.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/NMTOKENS.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/nonNegativeInteger.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/nonPositiveInteger.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/normalizedString.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/NOTATION.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/positiveInteger.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/QName.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/short.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/string.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/time.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/token.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedByte.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedInt.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedLong.pm
+lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedShort.pm
+lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm
+lib/SOAP/WSDL/XSD/Typelib/Element.pm
+lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm
+LICENSE
+Makefile.PL
+MANIFEST This list of files
+META.yml
+README
+t/001_use.t
+t/002_parse_wsdl.t
+t/002_sax.t
+t/003_sax_serializer.t
+t/003_wsdl_based_serializer.t
+t/004_parse_wsdl.t
+t/004_sax_wsdl.t
+t/005_parse_contributed.t
+t/005_sax_contributed_wsdl.t
+t/006_client.t
+t/007_envelope.t
+t/008_client_wsdl_complexType.t
+t/009_data_classes.t
+t/011_simpleType.t
+t/012_element.t
+t/013_complexType.t
+t/014_sax_typelib.t
+t/015_to_typemap.t
+t/016_client_object.t
+t/017_generator_expat.t
+t/017_generator_libxml.t
+t/018_generator_expat.t
+t/018_generator_libxml.t
+t/020_storable.t
+t/021_generator_element_ref_expat.t
+t/021_generator_element_ref_libxml.t
+t/098_pod.t
+t/acceptance/results/03_complexType-all.xml
+t/acceptance/results/03_complexType-sequence.xml
+t/acceptance/results/04_element-simpleType.xml
+t/acceptance/results/04_element.xml
+t/acceptance/results/05_simpleType-list.xml
+t/acceptance/results/05_simpleType-restriction.xml
+t/acceptance/results/05_simpleType-union.xml
+t/acceptance/results/11_helloworld.xml
+t/acceptance/wsdl/006_sax_client.wsdl
+t/acceptance/wsdl/008_complexType.wsdl
+t/acceptance/wsdl/02_port.wsdl
+t/acceptance/wsdl/03_complexType-all.wsdl
+t/acceptance/wsdl/03_complexType-element-ref.wsdl
+t/acceptance/wsdl/03_complexType-sequence.wsdl
+t/acceptance/wsdl/04_element-simpleType.wsdl
+t/acceptance/wsdl/04_element.wsdl
+t/acceptance/wsdl/05_simpleType-list.wsdl
+t/acceptance/wsdl/05_simpleType-restriction.wsdl
+t/acceptance/wsdl/05_simpleType-union.wsdl
+t/acceptance/wsdl/10_helloworld.asmx.xml
+t/acceptance/wsdl/11_helloworld.wsdl
+t/acceptance/wsdl/contributed/Axis.wsdl
+t/acceptance/wsdl/contributed/ETest.wsdl
+t/acceptance/wsdl/contributed/OITest.wsdl
+t/acceptance/wsdl/contributed/tools.wsdl
+t/acceptance/wsdl/email_account.wsdl
+t/Expat/01_expat.t
+t/Expat/02_sub_parser.t
+t/Expat/03_wsdl.t
+t/lib/MyComplexType.pm
+t/lib/MyElement.pm
+t/lib/MySimpleType.pm
+t/lib/Test/SOAPMessage.pm
+t/lib/Typelib/Base.pm
+t/lib/Typelib/TEnqueueMessage.pm
+t/lib/Typelib/TMessage.pm
+t/SOAP/WSDL/01_use.t
+t/SOAP/WSDL/02_port.t
+t/SOAP/WSDL/03_complexType-all.t
+t/SOAP/WSDL/03_complexType-choice.t
+t/SOAP/WSDL/03_complexType-complexContent.t
+t/SOAP/WSDL/03_complexType-element-ref.t
+t/SOAP/WSDL/03_complexType-group.t
+t/SOAP/WSDL/03_complexType-sequence.t
+t/SOAP/WSDL/03_complexType-simpleContent.t
+t/SOAP/WSDL/04_element-complexType.t
+t/SOAP/WSDL/04_element-simpleType.t
+t/SOAP/WSDL/04_element.t
+t/SOAP/WSDL/05_simpleType-list.t
+t/SOAP/WSDL/05_simpleType-restriction.t
+t/SOAP/WSDL/05_simpleType-union.t
+t/SOAP/WSDL/11_helloworld.NET.t
+t/SOAP/WSDL/12_binding.pl
+t/SOAP/WSDL/XSD/Typelib/Builtin/001_string.t
+t/SOAP/WSDL/XSD/Typelib/Builtin/002_dateTime.t
+t/SOAP/WSDL/XSD/Typelib/Builtin/003_date.t
+t/SOAP/WSDL/XSD/Typelib/Builtin/004_time.t
+t/test.pl
+TODO
diff --git a/META.yml b/META.yml
index e60f0ef..838a34d 100644
--- a/META.yml
+++ b/META.yml
@@ -1,6 +1,6 @@
---
name: SOAP-WSDL
-version: 2.00_12
+version: 2.00_13
author:
abstract: SOAP with WSDL support
license: artistic
@@ -23,24 +23,32 @@ meta-spec:
provides:
SOAP::WSDL:
file: lib/SOAP/WSDL.pm
- version: 2.00_12
+ version: 2.00_13
SOAP::WSDL::Base:
file: lib/SOAP/WSDL/Base.pm
SOAP::WSDL::Binding:
file: lib/SOAP/WSDL/Binding.pm
SOAP::WSDL::Client:
file: lib/SOAP/WSDL/Client.pm
- version: 2.00_12
+ version: 2.00_13
SOAP::WSDL::Client::Base:
file: lib/SOAP/WSDL/Client/Base.pm
SOAP::WSDL::Definitions:
file: lib/SOAP/WSDL/Definitions.pm
+ SOAP::WSDL::Deserializer::SOAP11:
+ file: lib/SOAP/WSDL/Deserializer/SOAP11.pm
+ version: 2.00_13
+ SOAP::WSDL::Deserializer::SOM:
+ file: lib/SOAP/WSDL/Deserializer/SOM.pm
+ version: 2.00_13
SOAP::WSDL::Expat::MessageParser:
file: lib/SOAP/WSDL/Expat/MessageParser.pm
SOAP::WSDL::Expat::MessageStreamParser:
file: lib/SOAP/WSDL/Expat/MessageStreamParser.pm
SOAP::WSDL::Expat::MessageSubParser:
file: lib/SOAP/WSDL/Expat/MessageSubParser.pm
+ SOAP::WSDL::Factory::Deserializer:
+ file: lib/SOAP/WSDL/Factory/Deserializer.pm
SOAP::WSDL::Factory::Serializer:
file: lib/SOAP/WSDL/Factory/Serializer.pm
SOAP::WSDL::Factory::Transport:
@@ -63,6 +71,7 @@ provides:
file: lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm
SOAP::WSDL::Serializer::SOAP11:
file: lib/SOAP/WSDL/Serializer/SOAP11.pm
+ version: 2.00_13
SOAP::WSDL::Service:
file: lib/SOAP/WSDL/Service.pm
SOAP::WSDL::SoapOperation:
diff --git a/README b/README
index 92b9c61..d7e76c8 100644
--- a/README
+++ b/README
@@ -1,26 +1,26 @@
-INTRO
------
-
-SOAP-WSDL provides a SOAP client with WSDL support.
-
+INTRO
+-----
+
+SOAP-WSDL provides a SOAP client with WSDL support.
+
This is a developer release - everything may (and most things will) change.
-
-INSTALLING
-----------
-
-Use the following mantra:
-
- perl Build.PL
- perl Build
- perl Build test
- perl Build install
-
-If you don't have Module::Build installed, you may also use
-
- perl Makefile.PL
- make
- make test
- make install
-
-Note that Module::Build is the recommended installer - make will not run
+
+INSTALLING
+----------
+
+Use the following mantra:
+
+ perl Build.PL
+ perl Build
+ perl Build test
+ perl Build install
+
+If you don't have Module::Build installed, you may also use
+
+ perl Makefile.PL
+ make
+ make test
+ make install
+
+Note that Module::Build is the recommended installer - make will not run
all tests provided with SOAP-WSDL.
\ No newline at end of file
diff --git a/TODO b/TODO
index 793436a..79be6dd 100644
--- a/TODO
+++ b/TODO
@@ -1,35 +1,36 @@
-TODO list for SOAP::WSDL
-
-2.00 Pre-releases
---------
-* SOAP Header support (#1764845)
-
-* Implement a interface similar to SOAP::Schema (#1783639)
-
-* (#1785195) Support deserializer plugins
- * Support XML::Compiled as one serializer/deserializer
-
-* Check & probably fix simpleType support.
-The WS at http://www.webservicex.net/genericbarcode.asmx?wsdl should
-make up a good example for simpleType definitions.
-
-* Remove benchmarks from test. Create benchmark/ directory to store benchmarks.
-
-* write inheritance Test for all XSD::Typelib::Builtin::* classes
-
-* support embedded atomic types (#1761532)
-Implement by including a second (and third and fourth)
-
-package type_prefix::complex_type::element_name;
-
-element package.
-Maybe even allow unlimited depth? What does the specs say?
-
-2.1 release
---------
-
-
-Past 2.1 release
---------
-* XML schema support ("minimal conformant") (#1764845)
-* Support SOAP attachments
\ No newline at end of file
+TODO list for SOAP::WSDL
+
+2.00 Pre-releases
+--------
+* SOAP Header support (#1764845)
+
+* Implement a interface similar to SOAP::Schema (#1783639)
+
+* Check & probably fix simpleType support.
+The WS at http://www.webservicex.net/genericbarcode.asmx?wsdl should
+make up a good example for simpleType definitions.
+
+* Remove benchmarks from test. Create benchmark/ directory to store benchmarks.
+
+* write inheritance Test for all XSD::Typelib::Builtin::* classes
+
+* support embedded atomic types (#1761532)
+Implement by including a second (and third and fourth)
+
+package type_prefix::complex_type::element_name;
+
+element package.
+Maybe even allow unlimited depth? What does the specs say?
+
+2.1 release
+--------
+
+
+2.2 release
+--------
+* XML schema support ("minimal conformant") (#1764845)
+* Support SOAP attachments
+
+3.0 release
+--------
+We're not thinking that far ahead right now.
\ No newline at end of file
diff --git a/benchmark/01_expat.t b/benchmark/01_expat.t
index edbf5d6..6a740eb 100644
--- a/benchmark/01_expat.t
+++ b/benchmark/01_expat.t
@@ -5,10 +5,10 @@ use lib '../lib';
use lib 'lib';
use lib '../t/lib';
use SOAP::WSDL::SAX::MessageHandler;
-
-use Benchmark;
+
+use Benchmark;
use SOAP::WSDL::Expat::MessageParser;
-use XML::Simple;
+use XML::Simple;
use XML::LibXML;
use MyComplexType;
use MyElement;
@@ -18,32 +18,32 @@ my $xml = q{
Test
- Test2
+ Test2
};
-
+
my $parser = SOAP::WSDL::Expat::MessageParser->new({
class_resolver => 'FakeResolver'
});
-
-$XML::Simple::PREFERRED_PARSER = 'XML::Parser';
-
-my $libxml = XML::LibXML->new();
-
-timethese 1000,
-{
- 'SOAP::WSDL' => sub { $parser->parse( $xml ) },
+
+$XML::Simple::PREFERRED_PARSER = 'XML::Parser';
+
+my $libxml = XML::LibXML->new();
+
+timethese 1000,
+{
+ 'SOAP::WSDL' => sub { $parser->parse( $xml ) },
#'XML::Simple (Hash)' => sub { XMLin $xml },
- 'XML::LibXML (DOM)' => sub { my $dom = $libxml->parse_string( $xml ) },
-};
-
+ 'XML::LibXML (DOM)' => sub { my $dom = $libxml->parse_string( $xml ) },
+};
+
use Test::More tests => 1;
is $parser->get_data(), q{}
. q{TestTest2}
- , 'Content comparison';
-
+ , 'Content comparison';
+
$parser->class_resolver( 'FakeResolver2' );
-
+
# data classes reside in t/lib/Typelib/
BEGIN {
@@ -54,8 +54,8 @@ BEGIN {
'MyAtomicComplexTypeElement/test' => 'MyTestElement',
'MyAtomicComplexTypeElement/test2' => 'MyTestElement2',
);
-
- sub get_map { return \%class_list };
+
+ sub get_map { return \%class_list };
sub new { return bless {}, 'FakeResolver' };
@@ -65,4 +65,4 @@ BEGIN {
: warn "no class found for $name";
};
};
-};
+};
diff --git a/benchmark/XSD/01_anyType.t b/benchmark/XSD/01_anyType.t
new file mode 100644
index 0000000..a4ef438
--- /dev/null
+++ b/benchmark/XSD/01_anyType.t
@@ -0,0 +1,21 @@
+use strict;
+use warnings;
+use Benchmark;
+use lib '../../lib';
+use SOAP::WSDL::XSD::Typelib::Builtin::anyType;
+
+my $obj = SOAP::WSDL::XSD::Typelib::Builtin::anyType->new();
+
+timethese 10000, {
+ 'new' => sub { SOAP::WSDL::XSD::Typelib::Builtin::anyType->new() },
+ 'new with params' => sub { SOAP::WSDL::XSD::Typelib::Builtin::anyType->new({
+ xmlns => 'urn:Test'
+ }) },
+ 'set_FOO' => sub { $obj->set_xmlns('Test') },
+};
+
+my $data;
+timethese 1000000, {
+ 'set_FOO' => sub { $obj->set_xmlns('Test') },
+ 'get_FOO' => sub { $data = $obj->get_xmlns() },
+};
diff --git a/benchmark/XSD/02_anySimpleType.t b/benchmark/XSD/02_anySimpleType.t
new file mode 100644
index 0000000..5a1e09c
--- /dev/null
+++ b/benchmark/XSD/02_anySimpleType.t
@@ -0,0 +1,22 @@
+use strict;
+use warnings;
+use Benchmark;
+use lib '../../lib';
+use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
+
+my $obj = SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType->new();
+
+timethese 10000, {
+ 'new' => sub { SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType->new() },
+ 'new + params' => sub { SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType->new({
+ xmlns => 'urn:Test',
+ value => 'Teststring'
+ }) },
+ 'set_FOO' => sub { $obj->set_xmlns('Test') },
+};
+
+my $data;
+timethese 1000000, {
+ 'set_FOO' => sub { $obj->set_xmlns('Test') },
+ 'get_FOO' => sub { $data = $obj->get_xmlns() },
+};
diff --git a/benchmark/XSD/03_string.t b/benchmark/XSD/03_string.t
new file mode 100644
index 0000000..5bd4e49
--- /dev/null
+++ b/benchmark/XSD/03_string.t
@@ -0,0 +1,22 @@
+use strict;
+use warnings;
+use Benchmark;
+use lib '../../lib';
+use SOAP::WSDL::XSD::Typelib::Builtin::string;
+
+my $obj = SOAP::WSDL::XSD::Typelib::Builtin::string->new();
+
+timethese 10000, {
+ 'new' => sub { SOAP::WSDL::XSD::Typelib::Builtin::string->new() },
+ 'new + params' => sub { SOAP::WSDL::XSD::Typelib::Builtin::string->new({
+ xmlns => 'urn:Test',
+ value => 'Teststring'
+ }) },
+ 'set_FOO' => sub { $obj->set_xmlns('Test') },
+};
+
+my $data;
+timethese 1000000, {
+ 'set_FOO' => sub { $obj->set_xmlns('Test') },
+ 'get_FOO' => sub { $data = $obj->get_xmlns() },
+};
diff --git a/bin/wsdl2perl.pl b/bin/wsdl2perl.pl
index 5b57121..1448355 100644
--- a/bin/wsdl2perl.pl
+++ b/bin/wsdl2perl.pl
@@ -1,125 +1,125 @@
-#!/usr/bin/perl -w
-use strict;
-use warnings;
-use Pod::Usage;
-use Getopt::Long;
-use LWP::UserAgent;
-use SOAP::WSDL::Expat::WSDLParser;
-
-my %opt = (
- url => '',
- prefix => undef,
- type_prefix => 'MyTypes::',
- element_prefix => 'MyElements::',
- typemap_prefix => 'MyTypemaps::',
- interface_prefix => 'MyInterfaces::',
- base_path => 'lib/',
- proxy => undef
-);
-
-GetOptions(\%opt,
- qw(
- url|u=s
- prefix|p=s
- type_prefix|t=s
- element_prefix|e=s
- typemap_prefix|m=s
- base_path|b=s
- typemap_include|mi=s
- help|h
- proxy|x=s
- )
-);
-
-my $url = $ARGV[0];
-
-pod2usage( -exit => 1 , verbose => 2 ) if ($opt{help});
-pod2usage( -exit => 1 , verbose => 1 ) if not ($url);
-
-my $parser = SOAP::WSDL::Expat::WSDLParser->new();
-
-local $ENV{HTTP_PROXY} = $opt{proxy} if $opt{proxy};
-my $lwp = LWP::UserAgent->new();
-my $response = $lwp->get($url);
-die $response->message(), "\n" if $response->code != 200;
-
-my $xml = $response->content();
-
-my $wsdl = $parser->parse_string( $xml );
-
-if ($opt{typemap_include}) {
- open my $fh , $opt{typemap_include}
- or die "cannot open typemap_include file $opt{typemap_include}\n";
- $opt{custom_types} .= join q{}, <$fh>;
- close $fh;
- delete $opt{typemap_include};
-}
-
-$wsdl->create({ %opt });
-
-=pod
-
-=head1 NAME
-
-wsdl2perl.pl - create perl bindings for SOAP webservices.
-
-=head1 SYNOPSIS
-
- wsdl2perl.pl -t TYPE_PREFIX -e ELEMENT_PREFIX -m TYPEMAP_PREFIX \
- -i INTERFACE_PREFIX -b BASE_DIR URL
-
-=head1 OPTIONS
-
- NAME SHORT DESCRITPION
- ----------------------------------------------------------------------------
- prefix p Prefix for both type and element classes.
- type_prefix t Prefix for type classes. Should end with '::'
- Default: MyTypes::
- element_prefix e Prefix for element classes. Should end with '::'
- Default: MyElements::
- typemap_prefix m Prefix for typemap classes. Should end with '::'
- Default: MyTypemaps::
- interface_prefix i Prefix for interface classes. Should end with '::'
- Default: MyInterfaces::
- base_path b Path to create classes in.
- Default: ./lib
- typemap_include mi File to include in typemap.
- help h Show help content
-
-=head1 DESCRIPTION
-
-Generates a interface class for a SOAP web service described by a WSDL
-definition.
-
-The following classes are created:
-
-=over
-
-=item * A interface class for every service
-
-Interface classes are what you will mainly deal with: They provide a method
-for accessing every web service method.
-
-=item * A typemap for every service
-
-Typemaps are used internally by SOAP::WSDL for parsing the SOAP message into
-object trees.
-
-If the WSDL definition is incomplete, you may need to add some lines to
-your typemap. Especially definitions for faults are sometimes left out.
-
-Additional typemap content may be included by passing a file name as
-typemap_include (mi) option.
-
-=item * A type class for every element, complexType or simpleType definition
-
-You may need to write additional type classes if your WSDL is incomplete.
-
-For writing your own lib classes, see L,
+#!/usr/bin/perl -w
+use strict;
+use warnings;
+use Pod::Usage;
+use Getopt::Long;
+use LWP::UserAgent;
+use SOAP::WSDL::Expat::WSDLParser;
+
+my %opt = (
+ url => '',
+ prefix => undef,
+ type_prefix => 'MyTypes::',
+ element_prefix => 'MyElements::',
+ typemap_prefix => 'MyTypemaps::',
+ interface_prefix => 'MyInterfaces::',
+ base_path => 'lib/',
+ proxy => undef
+);
+
+GetOptions(\%opt,
+ qw(
+ url|u=s
+ prefix|p=s
+ type_prefix|t=s
+ element_prefix|e=s
+ typemap_prefix|m=s
+ base_path|b=s
+ typemap_include|mi=s
+ help|h
+ proxy|x=s
+ )
+);
+
+my $url = $ARGV[0];
+
+pod2usage( -exit => 1 , verbose => 2 ) if ($opt{help});
+pod2usage( -exit => 1 , verbose => 1 ) if not ($url);
+
+my $parser = SOAP::WSDL::Expat::WSDLParser->new();
+
+local $ENV{HTTP_PROXY} = $opt{proxy} if $opt{proxy};
+my $lwp = LWP::UserAgent->new();
+my $response = $lwp->get($url);
+die $response->message(), "\n" if $response->code != 200;
+
+my $xml = $response->content();
+
+my $wsdl = $parser->parse_string( $xml );
+
+if ($opt{typemap_include}) {
+ open my $fh , $opt{typemap_include}
+ or die "cannot open typemap_include file $opt{typemap_include}\n";
+ $opt{custom_types} .= join q{}, <$fh>;
+ close $fh;
+ delete $opt{typemap_include};
+}
+
+$wsdl->create({ %opt });
+
+=pod
+
+=head1 NAME
+
+wsdl2perl.pl - create perl bindings for SOAP webservices.
+
+=head1 SYNOPSIS
+
+ wsdl2perl.pl -t TYPE_PREFIX -e ELEMENT_PREFIX -m TYPEMAP_PREFIX \
+ -i INTERFACE_PREFIX -b BASE_DIR URL
+
+=head1 OPTIONS
+
+ NAME SHORT DESCRITPION
+ ----------------------------------------------------------------------------
+ prefix p Prefix for both type and element classes.
+ type_prefix t Prefix for type classes. Should end with '::'
+ Default: MyTypes::
+ element_prefix e Prefix for element classes. Should end with '::'
+ Default: MyElements::
+ typemap_prefix m Prefix for typemap classes. Should end with '::'
+ Default: MyTypemaps::
+ interface_prefix i Prefix for interface classes. Should end with '::'
+ Default: MyInterfaces::
+ base_path b Path to create classes in.
+ Default: ./lib
+ typemap_include mi File to include in typemap.
+ help h Show help content
+
+=head1 DESCRIPTION
+
+Generates a interface class for a SOAP web service described by a WSDL
+definition.
+
+The following classes are created:
+
+=over
+
+=item * A interface class for every service
+
+Interface classes are what you will mainly deal with: They provide a method
+for accessing every web service method.
+
+=item * A typemap for every service
+
+Typemaps are used internally by SOAP::WSDL for parsing the SOAP message into
+object trees.
+
+If the WSDL definition is incomplete, you may need to add some lines to
+your typemap. Especially definitions for faults are sometimes left out.
+
+Additional typemap content may be included by passing a file name as
+typemap_include (mi) option.
+
+=item * A type class for every element, complexType or simpleType definition
+
+You may need to write additional type classes if your WSDL is incomplete.
+
+For writing your own lib classes, see L,
L and L.
-
-=back
-
+
+=back
+
=head1 LICENSE
Copyright 2007 Martin Kutter.
diff --git a/example/fortune.pl b/example/fortune.pl
index 8a20e18..3a52148 100644
--- a/example/fortune.pl
+++ b/example/fortune.pl
@@ -1,47 +1,47 @@
-# Accessing the fortune cookie service at
-# www.fullerdata.com/FortuneCookie/FortuneCookie.asmx
-#
-# I have no connection to www.fullerdata.com
-#
-# Use this script at your own risk.
-
-# Run before:
-# D:\Eigene Dateien\Martin\SOAP-WSDL\trunk>perl -I../lib wsdl2perl.pl "file:///D:/
-# Eigene Dateien/Martin/SOAP-WSDL/trunk/bin/FortuneCookie.xml"
-
-use lib 'lib/';
-use MyInterfaces::FullerData_x0020_Fortune_x0020_Cookie;
-my $cookieService = MyInterfaces::FullerData_x0020_Fortune_x0020_Cookie->new();
-
-my $cookie;
-$cookie = $cookieService->GetFortuneCookie()
- or die "$cookie";
-
-print $cookie; # ->get_GetFortuneCookieResult()->get_value, "\n";
-
-$cookie = $cookieService->GetSpecificCookie({ index => 23 })
- or die "$cookie";
-
-print $cookie->get_GetSpecificCookieResult(), "\n";
-
-print $cookie;
-
-
-=for demo:
-
-# the same in SOAP lite (second call)
-#
-
-use SOAP::Lite;
-
-my $lite = SOAP::Lite->new()->on_action(sub { join '/', @_ } )
- ->proxy('http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx');
-
-$lite->call(
- SOAP::Data->name('GetSpecificCookie')
- ->attr({ 'xmlns', 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }),
- SOAP::Data->name('index')->value(23)
- );
-
-die $soap->message() if ($soap->fault());
+# Accessing the fortune cookie service at
+# www.fullerdata.com/FortuneCookie/FortuneCookie.asmx
+#
+# I have no connection to www.fullerdata.com
+#
+# Use this script at your own risk.
+
+# Run before:
+# D:\Eigene Dateien\Martin\SOAP-WSDL\trunk>perl -I../lib wsdl2perl.pl "file:///D:/
+# Eigene Dateien/Martin/SOAP-WSDL/trunk/bin/FortuneCookie.xml"
+
+use lib 'lib/';
+use MyInterfaces::FullerData_x0020_Fortune_x0020_Cookie;
+my $cookieService = MyInterfaces::FullerData_x0020_Fortune_x0020_Cookie->new();
+
+my $cookie;
+$cookie = $cookieService->GetFortuneCookie()
+ or die "$cookie";
+
+print $cookie; # ->get_GetFortuneCookieResult()->get_value, "\n";
+
+$cookie = $cookieService->GetSpecificCookie({ index => 23 })
+ or die "$cookie";
+
+print $cookie->get_GetSpecificCookieResult(), "\n";
+
+print $cookie;
+
+
+=for demo:
+
+# the same in SOAP lite (second call)
+#
+
+use SOAP::Lite;
+
+my $lite = SOAP::Lite->new()->on_action(sub { join '/', @_ } )
+ ->proxy('http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx');
+
+$lite->call(
+ SOAP::Data->name('GetSpecificCookie')
+ ->attr({ 'xmlns', 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }),
+ SOAP::Data->name('index')->value(23)
+ );
+
+die $soap->message() if ($soap->fault());
print $soap->result();
\ No newline at end of file
diff --git a/example/lib/MyElements/CountCookies.pm b/example/lib/MyElements/CountCookies.pm
index abd3e09..c57423f 100644
--- a/example/lib/MyElements/CountCookies.pm
+++ b/example/lib/MyElements/CountCookies.pm
@@ -1,71 +1,71 @@
-package MyElements::CountCookies;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-
-__PACKAGE__->_factory(
- [ qw() ],
- {
-
- },
- {
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
-
-__PACKAGE__->__set_name('CountCookies');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME MyElements::CountCookies
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element CountCookies.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
-
-=head1 Object structure
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
-
-
-=cut
-
+package MyElements::CountCookies;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+
+__PACKAGE__->_factory(
+ [ qw() ],
+ {
+
+ },
+ {
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
+
+__PACKAGE__->__set_name('CountCookies');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+=pod
+
+=head1 NAME MyElements::CountCookies
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element CountCookies.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+
+=head1 Object structure
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+
+
+=cut
+
diff --git a/example/lib/MyElements/CountCookiesResponse.pm b/example/lib/MyElements/CountCookiesResponse.pm
index 6168dc4..93f48d3 100644
--- a/example/lib/MyElements/CountCookiesResponse.pm
+++ b/example/lib/MyElements/CountCookiesResponse.pm
@@ -1,85 +1,85 @@
-package MyElements::CountCookiesResponse;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-my %CountCookiesResult_of :ATTR(:get);
-
-
-__PACKAGE__->_factory(
- [ qw(
- CountCookiesResult
- ) ],
- {
- CountCookiesResult => \%CountCookiesResult_of,
-
- },
- {
-
- CountCookiesResult => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
-
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
-
-__PACKAGE__->__set_name('CountCookiesResponse');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME MyElements::CountCookiesResponse
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element CountCookiesResponse.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
- CountCookiesResult
-
-=head1 Object structure
-
- CountCookiesResult => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
- 'CountCookiesResponse'=> {
- 'CountCookiesResult' => $someValue,
- },
-
-
-=cut
-
+package MyElements::CountCookiesResponse;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+my %CountCookiesResult_of :ATTR(:get);
+
+
+__PACKAGE__->_factory(
+ [ qw(
+ CountCookiesResult
+ ) ],
+ {
+ CountCookiesResult => \%CountCookiesResult_of,
+
+ },
+ {
+
+ CountCookiesResult => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
+
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
+
+__PACKAGE__->__set_name('CountCookiesResponse');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+=pod
+
+=head1 NAME MyElements::CountCookiesResponse
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element CountCookiesResponse.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+ CountCookiesResult
+
+=head1 Object structure
+
+ CountCookiesResult => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+ 'CountCookiesResponse'=> {
+ 'CountCookiesResult' => $someValue,
+ },
+
+
+=cut
+
diff --git a/example/lib/MyElements/GetCitiesByCountry.pm b/example/lib/MyElements/GetCitiesByCountry.pm
index 0775531..a294ade 100644
--- a/example/lib/MyElements/GetCitiesByCountry.pm
+++ b/example/lib/MyElements/GetCitiesByCountry.pm
@@ -1,93 +1,93 @@
-package MyElements::GetCitiesByCountry;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-my %CountryName_of :ATTR(:get);
-
-
-__PACKAGE__->_factory(
- [ qw(
- CountryName
- ) ],
- {
- CountryName => \%CountryName_of,
-
- },
- {
-
- CountryName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.webserviceX.NET' }
-
-__PACKAGE__->__set_name('GetCitiesByCountry');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-
-
-
-
-
-=pod
-
-=head1 NAME
-
-MyElements::GetCitiesByCountry
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element GetCitiesByCountry.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
- CountryName
-
-=head1 Object structure
-
- CountryName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
- 'GetCitiesByCountry'=> {
- 'CountryName' => $someValue,
- },
-
-
-=cut
-
+package MyElements::GetCitiesByCountry;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+my %CountryName_of :ATTR(:get);
+
+
+__PACKAGE__->_factory(
+ [ qw(
+ CountryName
+ ) ],
+ {
+ CountryName => \%CountryName_of,
+
+ },
+ {
+
+ CountryName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.webserviceX.NET' }
+
+__PACKAGE__->__set_name('GetCitiesByCountry');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+
+
+
+
+
+=pod
+
+=head1 NAME
+
+MyElements::GetCitiesByCountry
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element GetCitiesByCountry.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+ CountryName
+
+=head1 Object structure
+
+ CountryName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+ 'GetCitiesByCountry'=> {
+ 'CountryName' => $someValue,
+ },
+
+
+=cut
+
diff --git a/example/lib/MyElements/GetCitiesByCountryResponse.pm b/example/lib/MyElements/GetCitiesByCountryResponse.pm
index 835bf39..7f4e87b 100644
--- a/example/lib/MyElements/GetCitiesByCountryResponse.pm
+++ b/example/lib/MyElements/GetCitiesByCountryResponse.pm
@@ -1,93 +1,93 @@
-package MyElements::GetCitiesByCountryResponse;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-my %GetCitiesByCountryResult_of :ATTR(:get);
-
-
-__PACKAGE__->_factory(
- [ qw(
- GetCitiesByCountryResult
- ) ],
- {
- GetCitiesByCountryResult => \%GetCitiesByCountryResult_of,
-
- },
- {
-
- GetCitiesByCountryResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.webserviceX.NET' }
-
-__PACKAGE__->__set_name('GetCitiesByCountryResponse');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-
-
-
-
-
-=pod
-
-=head1 NAME
-
-MyElements::GetCitiesByCountryResponse
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element GetCitiesByCountryResponse.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
- GetCitiesByCountryResult
-
-=head1 Object structure
-
- GetCitiesByCountryResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
- 'GetCitiesByCountryResponse'=> {
- 'GetCitiesByCountryResult' => $someValue,
- },
-
-
-=cut
-
+package MyElements::GetCitiesByCountryResponse;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+my %GetCitiesByCountryResult_of :ATTR(:get);
+
+
+__PACKAGE__->_factory(
+ [ qw(
+ GetCitiesByCountryResult
+ ) ],
+ {
+ GetCitiesByCountryResult => \%GetCitiesByCountryResult_of,
+
+ },
+ {
+
+ GetCitiesByCountryResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.webserviceX.NET' }
+
+__PACKAGE__->__set_name('GetCitiesByCountryResponse');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+
+
+
+
+
+=pod
+
+=head1 NAME
+
+MyElements::GetCitiesByCountryResponse
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element GetCitiesByCountryResponse.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+ GetCitiesByCountryResult
+
+=head1 Object structure
+
+ GetCitiesByCountryResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+ 'GetCitiesByCountryResponse'=> {
+ 'GetCitiesByCountryResult' => $someValue,
+ },
+
+
+=cut
+
diff --git a/example/lib/MyElements/GetFortuneCookie.pm b/example/lib/MyElements/GetFortuneCookie.pm
index fd6c4d6..a0041e4 100644
--- a/example/lib/MyElements/GetFortuneCookie.pm
+++ b/example/lib/MyElements/GetFortuneCookie.pm
@@ -1,71 +1,71 @@
-package MyElements::GetFortuneCookie;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-
-__PACKAGE__->_factory(
- [ qw() ],
- {
-
- },
- {
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
-
-__PACKAGE__->__set_name('GetFortuneCookie');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME MyElements::GetFortuneCookie
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element GetFortuneCookie.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
-
-=head1 Object structure
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
-
-
-=cut
-
+package MyElements::GetFortuneCookie;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+
+__PACKAGE__->_factory(
+ [ qw() ],
+ {
+
+ },
+ {
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
+
+__PACKAGE__->__set_name('GetFortuneCookie');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+=pod
+
+=head1 NAME MyElements::GetFortuneCookie
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element GetFortuneCookie.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+
+=head1 Object structure
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+
+
+=cut
+
diff --git a/example/lib/MyElements/GetFortuneCookieResponse.pm b/example/lib/MyElements/GetFortuneCookieResponse.pm
index 638f15e..571951a 100644
--- a/example/lib/MyElements/GetFortuneCookieResponse.pm
+++ b/example/lib/MyElements/GetFortuneCookieResponse.pm
@@ -1,85 +1,85 @@
-package MyElements::GetFortuneCookieResponse;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-my %GetFortuneCookieResult_of :ATTR(:get);
-
-
-__PACKAGE__->_factory(
- [ qw(
- GetFortuneCookieResult
- ) ],
- {
- GetFortuneCookieResult => \%GetFortuneCookieResult_of,
-
- },
- {
-
- GetFortuneCookieResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
-
-__PACKAGE__->__set_name('GetFortuneCookieResponse');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME MyElements::GetFortuneCookieResponse
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element GetFortuneCookieResponse.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
- GetFortuneCookieResult
-
-=head1 Object structure
-
- GetFortuneCookieResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
- 'GetFortuneCookieResponse'=> {
- 'GetFortuneCookieResult' => $someValue,
- },
-
-
-=cut
-
+package MyElements::GetFortuneCookieResponse;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+my %GetFortuneCookieResult_of :ATTR(:get);
+
+
+__PACKAGE__->_factory(
+ [ qw(
+ GetFortuneCookieResult
+ ) ],
+ {
+ GetFortuneCookieResult => \%GetFortuneCookieResult_of,
+
+ },
+ {
+
+ GetFortuneCookieResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
+
+__PACKAGE__->__set_name('GetFortuneCookieResponse');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+=pod
+
+=head1 NAME MyElements::GetFortuneCookieResponse
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element GetFortuneCookieResponse.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+ GetFortuneCookieResult
+
+=head1 Object structure
+
+ GetFortuneCookieResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+ 'GetFortuneCookieResponse'=> {
+ 'GetFortuneCookieResult' => $someValue,
+ },
+
+
+=cut
+
diff --git a/example/lib/MyElements/GetSpecificCookie.pm b/example/lib/MyElements/GetSpecificCookie.pm
index cd26c3d..766438d 100644
--- a/example/lib/MyElements/GetSpecificCookie.pm
+++ b/example/lib/MyElements/GetSpecificCookie.pm
@@ -1,85 +1,85 @@
-package MyElements::GetSpecificCookie;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-my %index_of :ATTR(:get);
-
-
-__PACKAGE__->_factory(
- [ qw(
- index
- ) ],
- {
- index => \%index_of,
-
- },
- {
-
- index => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
-
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
-
-__PACKAGE__->__set_name('GetSpecificCookie');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME MyElements::GetSpecificCookie
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element GetSpecificCookie.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
- index
-
-=head1 Object structure
-
- index => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
- 'GetSpecificCookie'=> {
- 'index' => $someValue,
- },
-
-
-=cut
-
+package MyElements::GetSpecificCookie;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+my %index_of :ATTR(:get);
+
+
+__PACKAGE__->_factory(
+ [ qw(
+ index
+ ) ],
+ {
+ index => \%index_of,
+
+ },
+ {
+
+ index => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
+
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
+
+__PACKAGE__->__set_name('GetSpecificCookie');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+=pod
+
+=head1 NAME MyElements::GetSpecificCookie
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element GetSpecificCookie.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+ index
+
+=head1 Object structure
+
+ index => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+ 'GetSpecificCookie'=> {
+ 'index' => $someValue,
+ },
+
+
+=cut
+
diff --git a/example/lib/MyElements/GetSpecificCookieResponse.pm b/example/lib/MyElements/GetSpecificCookieResponse.pm
index af90c63..ab29b06 100644
--- a/example/lib/MyElements/GetSpecificCookieResponse.pm
+++ b/example/lib/MyElements/GetSpecificCookieResponse.pm
@@ -1,85 +1,85 @@
-package MyElements::GetSpecificCookieResponse;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-my %GetSpecificCookieResult_of :ATTR(:get);
-
-
-__PACKAGE__->_factory(
- [ qw(
- GetSpecificCookieResult
- ) ],
- {
- GetSpecificCookieResult => \%GetSpecificCookieResult_of,
-
- },
- {
-
- GetSpecificCookieResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
-
-__PACKAGE__->__set_name('GetSpecificCookieResponse');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME MyElements::GetSpecificCookieResponse
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element GetSpecificCookieResponse.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
- GetSpecificCookieResult
-
-=head1 Object structure
-
- GetSpecificCookieResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
- 'GetSpecificCookieResponse'=> {
- 'GetSpecificCookieResult' => $someValue,
- },
-
-
-=cut
-
+package MyElements::GetSpecificCookieResponse;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+my %GetSpecificCookieResult_of :ATTR(:get);
+
+
+__PACKAGE__->_factory(
+ [ qw(
+ GetSpecificCookieResult
+ ) ],
+ {
+ GetSpecificCookieResult => \%GetSpecificCookieResult_of,
+
+ },
+ {
+
+ GetSpecificCookieResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
+
+__PACKAGE__->__set_name('GetSpecificCookieResponse');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+=pod
+
+=head1 NAME MyElements::GetSpecificCookieResponse
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element GetSpecificCookieResponse.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+ GetSpecificCookieResult
+
+=head1 Object structure
+
+ GetSpecificCookieResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+ 'GetSpecificCookieResponse'=> {
+ 'GetSpecificCookieResult' => $someValue,
+ },
+
+
+=cut
+
diff --git a/example/lib/MyElements/GetWeather.pm b/example/lib/MyElements/GetWeather.pm
index 283ce3f..0070896 100644
--- a/example/lib/MyElements/GetWeather.pm
+++ b/example/lib/MyElements/GetWeather.pm
@@ -1,105 +1,105 @@
-package MyElements::GetWeather;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-my %CityName_of :ATTR(:get);
-
-my %CountryName_of :ATTR(:get);
-
-
-__PACKAGE__->_factory(
- [ qw(
- CityName
-
- CountryName
- ) ],
- {
- CityName => \%CityName_of,
- CountryName => \%CountryName_of,
-
- },
- {
-
- CityName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
- CountryName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.webserviceX.NET' }
-
-__PACKAGE__->__set_name('GetWeather');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-
-
-
-
-
-=pod
-
-=head1 NAME
-
-MyElements::GetWeather
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element GetWeather.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
- CityName
- CountryName
-
-=head1 Object structure
-
- CityName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
- CountryName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
- 'GetWeather'=> {
- 'CityName' => $someValue,
- 'CountryName' => $someValue,
- },
-
-
-=cut
-
+package MyElements::GetWeather;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+my %CityName_of :ATTR(:get);
+
+my %CountryName_of :ATTR(:get);
+
+
+__PACKAGE__->_factory(
+ [ qw(
+ CityName
+
+ CountryName
+ ) ],
+ {
+ CityName => \%CityName_of,
+ CountryName => \%CountryName_of,
+
+ },
+ {
+
+ CityName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+ CountryName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.webserviceX.NET' }
+
+__PACKAGE__->__set_name('GetWeather');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+
+
+
+
+
+=pod
+
+=head1 NAME
+
+MyElements::GetWeather
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element GetWeather.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+ CityName
+ CountryName
+
+=head1 Object structure
+
+ CityName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+ CountryName => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+ 'GetWeather'=> {
+ 'CityName' => $someValue,
+ 'CountryName' => $someValue,
+ },
+
+
+=cut
+
diff --git a/example/lib/MyElements/GetWeatherResponse.pm b/example/lib/MyElements/GetWeatherResponse.pm
index 416c300..c259ea1 100644
--- a/example/lib/MyElements/GetWeatherResponse.pm
+++ b/example/lib/MyElements/GetWeatherResponse.pm
@@ -1,93 +1,93 @@
-package MyElements::GetWeatherResponse;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-my %GetWeatherResult_of :ATTR(:get);
-
-
-__PACKAGE__->_factory(
- [ qw(
- GetWeatherResult
- ) ],
- {
- GetWeatherResult => \%GetWeatherResult_of,
-
- },
- {
-
- GetWeatherResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.webserviceX.NET' }
-
-__PACKAGE__->__set_name('GetWeatherResponse');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-
-
-
-
-
-=pod
-
-=head1 NAME
-
-MyElements::GetWeatherResponse
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element GetWeatherResponse.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
- GetWeatherResult
-
-=head1 Object structure
-
- GetWeatherResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
- 'GetWeatherResponse'=> {
- 'GetWeatherResult' => $someValue,
- },
-
-
-=cut
-
+package MyElements::GetWeatherResponse;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+my %GetWeatherResult_of :ATTR(:get);
+
+
+__PACKAGE__->_factory(
+ [ qw(
+ GetWeatherResult
+ ) ],
+ {
+ GetWeatherResult => \%GetWeatherResult_of,
+
+ },
+ {
+
+ GetWeatherResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.webserviceX.NET' }
+
+__PACKAGE__->__set_name('GetWeatherResponse');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+
+
+
+
+
+=pod
+
+=head1 NAME
+
+MyElements::GetWeatherResponse
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element GetWeatherResponse.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+ GetWeatherResult
+
+=head1 Object structure
+
+ GetWeatherResult => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+ 'GetWeatherResponse'=> {
+ 'GetWeatherResult' => $someValue,
+ },
+
+
+=cut
+
diff --git a/example/lib/MyElements/int.pm b/example/lib/MyElements/int.pm
index 7872abf..51a3f4e 100644
--- a/example/lib/MyElements/int.pm
+++ b/example/lib/MyElements/int.pm
@@ -1,60 +1,60 @@
-package MyElements::int;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-#
-# definition
-#
-
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::Builtin::int
-);
-
-
-sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
-
-__PACKAGE__->__set_name('int');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME MyElements::int
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element int.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
-
-=head1 Object structure
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
- 'int' => $someValue,
-
-
-=cut
-
+package MyElements::int;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+#
+# definition
+#
+
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::Builtin::int
+);
+
+
+sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
+
+__PACKAGE__->__set_name('int');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+=pod
+
+=head1 NAME MyElements::int
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element int.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+
+=head1 Object structure
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+ 'int' => $someValue,
+
+
+=cut
+
diff --git a/example/lib/MyElements/readNodeCount.pm b/example/lib/MyElements/readNodeCount.pm
index 995aa8c..405975d 100644
--- a/example/lib/MyElements/readNodeCount.pm
+++ b/example/lib/MyElements/readNodeCount.pm
@@ -1,71 +1,71 @@
-package MyElements::readNodeCount;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-
-__PACKAGE__->_factory(
- [ qw() ],
- {
-
- },
- {
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
-
-__PACKAGE__->__set_name('readNodeCount');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME MyElements::readNodeCount
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element readNodeCount.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
-
-=head1 Object structure
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
-
-
-=cut
-
+package MyElements::readNodeCount;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+
+__PACKAGE__->_factory(
+ [ qw() ],
+ {
+
+ },
+ {
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
+
+__PACKAGE__->__set_name('readNodeCount');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+=pod
+
+=head1 NAME MyElements::readNodeCount
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element readNodeCount.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+
+=head1 Object structure
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+
+
+=cut
+
diff --git a/example/lib/MyElements/readNodeCountResponse.pm b/example/lib/MyElements/readNodeCountResponse.pm
index 1ae98f3..f7f769b 100644
--- a/example/lib/MyElements/readNodeCountResponse.pm
+++ b/example/lib/MyElements/readNodeCountResponse.pm
@@ -1,85 +1,85 @@
-package MyElements::readNodeCountResponse;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-# atomic complexType
-# definition
-use SOAP::WSDL::XSD::Typelib::ComplexType;
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::ComplexType
-);
-
-
-my %readNodeCountResult_of :ATTR(:get);
-
-
-__PACKAGE__->_factory(
- [ qw(
- readNodeCountResult
- ) ],
- {
- readNodeCountResult => \%readNodeCountResult_of,
-
- },
- {
-
- readNodeCountResult => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
-
-
- }
-);
-
-
-
-sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
-
-__PACKAGE__->__set_name('readNodeCountResponse');
-__PACKAGE__->__set_nillable();
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME MyElements::readNodeCountResponse
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element readNodeCountResponse.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
- readNodeCountResult
-
-=head1 Object structure
-
- readNodeCountResult => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
- 'readNodeCountResponse'=> {
- 'readNodeCountResult' => $someValue,
- },
-
-
-=cut
-
+package MyElements::readNodeCountResponse;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+# atomic complexType
+# definition
+use SOAP::WSDL::XSD::Typelib::ComplexType;
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::ComplexType
+);
+
+
+my %readNodeCountResult_of :ATTR(:get);
+
+
+__PACKAGE__->_factory(
+ [ qw(
+ readNodeCountResult
+ ) ],
+ {
+ readNodeCountResult => \%readNodeCountResult_of,
+
+ },
+ {
+
+ readNodeCountResult => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
+
+
+ }
+);
+
+
+
+sub get_xmlns { 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx' }
+
+__PACKAGE__->__set_name('readNodeCountResponse');
+__PACKAGE__->__set_nillable();
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+=pod
+
+=head1 NAME MyElements::readNodeCountResponse
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element readNodeCountResponse.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+ readNodeCountResult
+
+=head1 Object structure
+
+ readNodeCountResult => 'SOAP::WSDL::XSD::Typelib::Builtin::int',
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+ 'readNodeCountResponse'=> {
+ 'readNodeCountResult' => $someValue,
+ },
+
+
+=cut
+
diff --git a/example/lib/MyElements/string.pm b/example/lib/MyElements/string.pm
index 8208b0f..b148ea3 100644
--- a/example/lib/MyElements/string.pm
+++ b/example/lib/MyElements/string.pm
@@ -1,68 +1,68 @@
-package MyElements::string;
-use strict;
-use Class::Std::Storable;
-use SOAP::WSDL::XSD::Typelib::Element;
-
-
-#
-# definition
-#
-
-use base qw(
- SOAP::WSDL::XSD::Typelib::Element
- SOAP::WSDL::XSD::Typelib::Builtin::string
-);
-
-
-sub get_xmlns { 'http://www.webserviceX.NET' }
-
-__PACKAGE__->__set_name('string');
-__PACKAGE__->__set_nillable(true);
-__PACKAGE__->__set_minOccurs();
-__PACKAGE__->__set_maxOccurs();
-__PACKAGE__->__set_ref('');
-
-1;
-
-
-__END__
-
-
-
-
-
-
-=pod
-
-=head1 NAME
-
-MyElements::string
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-Type class for the XML element string.
-
-=head1 PROPERTIES
-
-The following properties may be accessed using get_PROPERTY / set_PROPERTY
-methods:
-
-
-=head1 Object structure
-
-
-Structure as perl hash:
-
- The object structure is displayed as hash below though this is not correct.
- Complex hash elements actually are objects of their corresponding classes
- (look for classes of the same name in your typleib).
- new() will accept a hash structure like this, but transform it to a object
- tree.
-
- 'string' => $someValue,
-
-
-=cut
-
+package MyElements::string;
+use strict;
+use Class::Std::Storable;
+use SOAP::WSDL::XSD::Typelib::Element;
+
+
+#
+# definition
+#
+
+use base qw(
+ SOAP::WSDL::XSD::Typelib::Element
+ SOAP::WSDL::XSD::Typelib::Builtin::string
+);
+
+
+sub get_xmlns { 'http://www.webserviceX.NET' }
+
+__PACKAGE__->__set_name('string');
+__PACKAGE__->__set_nillable(true);
+__PACKAGE__->__set_minOccurs();
+__PACKAGE__->__set_maxOccurs();
+__PACKAGE__->__set_ref('');
+
+1;
+
+
+__END__
+
+
+
+
+
+
+=pod
+
+=head1 NAME
+
+MyElements::string
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Type class for the XML element string.
+
+=head1 PROPERTIES
+
+The following properties may be accessed using get_PROPERTY / set_PROPERTY
+methods:
+
+
+=head1 Object structure
+
+
+Structure as perl hash:
+
+ The object structure is displayed as hash below though this is not correct.
+ Complex hash elements actually are objects of their corresponding classes
+ (look for classes of the same name in your typleib).
+ new() will accept a hash structure like this, but transform it to a object
+ tree.
+
+ 'string' => $someValue,
+
+
+=cut
+
diff --git a/example/lib/MyInterfaces/FullerData_x0020_Fortune_x0020_Cookie.pm b/example/lib/MyInterfaces/FullerData_x0020_Fortune_x0020_Cookie.pm
index fcc2be9..fab733e 100644
--- a/example/lib/MyInterfaces/FullerData_x0020_Fortune_x0020_Cookie.pm
+++ b/example/lib/MyInterfaces/FullerData_x0020_Fortune_x0020_Cookie.pm
@@ -1,327 +1,327 @@
-package MyInterfaces::FullerData_x0020_Fortune_x0020_Cookie;
-use strict;
-use warnings;
-use MyTypemaps::FullerData_x0020_Fortune_x0020_Cookie;
-use base 'SOAP::WSDL::Client::Base';
-
-sub new {
- my $class = shift;
- my $arg_ref = shift || {};
- my $self = $class->SUPER::new({
- class_resolver => 'MyTypemaps::FullerData_x0020_Fortune_x0020_Cookie',
- proxy => 'http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx',
- %{ $arg_ref }
- });
- return bless $self, $class;
-}
-
-__PACKAGE__->__create_methods(
- GetSpecificCookie => [ 'MyElements::GetSpecificCookie', ],
- CountCookies => [ 'MyElements::CountCookies', ],
- readNodeCount => [ 'MyElements::readNodeCount', ],
- GetFortuneCookie => [ 'MyElements::GetFortuneCookie', ],
-
-);
-
-1;
-
-__END__
-
-=pod
-
-=head1 NAME
-
-MyInterfaces::FullerData_x0020_Fortune_x0020_Cookie - SOAP interface to FullerData_x0020_Fortune_x0020_Cookie at
-http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx
-
-=head1 SYNOPSIS
-
- my $interface = MyInterfaces::FullerData_x0020_Fortune_x0020_Cookie->new();
- my $CountCookies = $interface->CountCookies();
-
-
-=head1 Service FullerData_x0020_Fortune_x0020_Cookie
-
-=head2 Service information:
-
- Port name: FullerData_x0020_Fortune_x0020_CookieSoap
- Binding: tns:FullerData_x0020_Fortune_x0020_CookieSoap
- Location: http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx
-
-=head2 SOAP Operations
-
-B
-
- Input, output and fault messages are stated as perl hash refs.
-
- These are only for informational purposes - the actual implementation
- normally uses object trees, not hash refs, though the input messages
- may be passed to the respective methods as hash refs and will be
- converted to object trees automatically.
-
-
-=head3 readNodeCount
-
-B
-
- {
- }
-
-
-B