SOAP::...::WS_I(3pm)
π NAME π
bestie, welcome to SOAP::...::WS_I(3pm) β straight out of User Contributed Perl Documentation. Its full government name is SOAP::WSDL::Manual::WS_I, and it's literally the whole "how does SOAP::WSDL comply with WS-I Basic Profile 1.0" story. π
β¨ DESCRIPTION β¨
okay so this doc is the vibe check on how SOAP::WSDL confirms to the rules of the WS-I Basic Profile 1.0, which lives at http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html π¦
Errata are not yet worked in.
Also, real talk: you may find rules mis-categorized, especially in the "not applicable" section.
Those mis-categorizations are documentation bugs, so please feel free to report them. π
Rules are categorized into the following sections:
- RULES CONFIRMED β this section contains rules
SOAP::WSDLfollows. Conformance to these rules may be assured by a test. - RULES NOT CONFIRMED β this section contains rules
SOAP::WSDLdoes not follow yet. These may be considered as bugs. π - RULES NOT APPLICABLE β WS-I Basic Profile contains rules for web services as a whole.
SOAP::WSDLonly plays the part of one layer in a Web Service CONSUMER / RECEIVER, thus does not implement some parts the WS-I Basic Profile references. This section contains rules not applicable forSOAP::WSDL, because they refer to partsSOAP::WSDLdoes not implement.
π RULES CONFIRMED π
she's compliant, she's iconic, let's go rule by rule π
R1005
A MESSAGE MUST NOT contain soap:encodingStyle attributes on any of the elements whose namespace name is "http://schemas.xmlsoap.org/soap/envelope/".
SOAP::WSDL::Serializer::SOAP11 does not add soap:encodingStyle attributes on any element. periodt β¨
R1006
A MESSAGE MUST NOT contain soap:encodingStyle attributes on any element that is a child of soap:Body.
SOAP::WSDL::Serializer::SOAP11 does not add soap:encodingStyle attributes on any element. (same energy, different rule π«Ά)
R1008
A MESSAGE MUST NOT contain a Document Type Declaration.
SOAP::WSDL::Serializer::SOAP11 does not add DTDs. no DTDs in this group chat π«
R1009
A MESSAGE MUST NOT contain Processing Instructions.
SOAP::WSDL::Serializer::SOAP11 does not add Processing Instructions.
R1010
A RECEIVER MUST accept messages that contain an XML Declaration.
SOAP::WSDL::Expat::MessageParser allows the use of XML Declarations. π
R1011
A MESSAGE MUST NOT have any element children of soap:Envelope following the soap:Body element.
SOAP::WSDL::Serializer::SOAP11 does not emit children of soap:Envelope following the soap:Body element. Other serializers may behave different. π
R1012
A MESSAGE MUST be serialized as either UTF-8 or UTF-16.
SOAP::WSDL::Serializer::SOAP11 serializes messages as UTF-8.
R1018
The media type of a MESSAGE's envelope MUST indicate the correct character encoding, using the charset parameter.
SOAP::WSDL::Transport::HTTP sets the Content-type header to text/xml; charset=utf8. SOAP::Transport does, too. Other transport backends may behave different. π
R1014
The children of the soap:Body element in a MESSAGE MUST be namespace qualified.
SOAP::WSDL::Serializer::SOAP11 emits namespace-qualified child elements of the soap:Body element. slay π
R1017
A RECEIVER MUST NOT mandate the use of the xsi:type attribute in messages except as required in order to indicate a derived type (see XML Schema Part 1: Structures, Section 2.6.1).
SOAP::WSDL::Expat::MessageParser does not require the use of xsi:type attributes, but uses typemaps instead.
Other deserializers may not comply to this rule. π
R1028
When a Fault is generated by a RECEIVER, further processing SHOULD NOT be performed on the SOAP message aside from that which is necessary to rollback, or compensate for, any effects of processing the message prior to the generation of the Fault.
A fault is generated when an error occurs processing the message. SOAP::WSDL::Deserializer::SOAP11 does not perform any additional processing after an error occurred. we stop right there, no cap β
R1029
Where the normal outcome of processing a SOAP message would have resulted in the transmission of a SOAP response, but rather a SOAP Fault is generated instead, a RECEIVER MUST transmit a SOAP Fault message in place of the response.
A fault is generated when an error occurs processing the message. π₯
R1030
A RECEIVER that generates a SOAP Fault SHOULD notify the end user that a SOAP Fault has been generated when practical, by whatever means is deemed appropriate to the circumstance.
Via return value. short king of a rule π
R1140
A MESSAGE SHOULD be sent using HTTP/1.1.
SOAP::WSDL::Transport::HTTP uses HTTP/1.1. β
R1141
A MESSAGE MUST be sent using either HTTP/1.1 or HTTP/1.0.
SOAP::WSDL::Transport::HTTP uses HTTP/1.1. yes bestie, again π
R1107
A RECEIVER MUST interpret SOAP messages containing only a soap:Fault element as a Fault.
SOAP::WSDL::Deserializer::SOAP11 does this. β¨
R1132
A HTTP request MESSAGE MUST use the HTTP POST method.
Both SOAP::WSDL::Transport::HTTP and SOAP::Transport::HTTP use POST. π«Ά
R1108
A MESSAGE MUST NOT use the HTTP Extension Framework (RFC2774).
SOAP::WSDL::Transport::HTTP does not use the HTTP Extension framework, however SOAP::Transport::HTTP use M-POST if POST was not successful. π¬
To be sure you comply to this rule, use SOAP::WSDL::Transport::HTTP as transport backend. like, do that π
R1109
The value of the SOAPAction HTTP header field in a HTTP request MESSAGE MUST be a quoted string.
SOAP::WSDL::Client always quotes the SOAPAction header. those quotes are iconic and non-negotiable π
R1119
A RECEIVER MAY respond with a Fault if the value of the SOAPAction HTTP header field is not quoted.
SOAP::WSDL does not apply any processing on the SOAPAction header field.
R1131
A CONSUMER MAY automatically redirect a request when it encounters a "307 Temporary Redirect" HTTP status code in a response.
LWP::UserAgent (used by SOAP::WSDL::Transport::HTTP and SOAP::Transport::HTTP) accepts up to 7 levels of redirect by default. seven! the way that's a whole number π₯
R2113
A MESSAGE containing serialized arrays MUST NOT include the soapenc:arrayType attribute.
SOAP::WSDL does not natively support soapenc::arrayType. π
R2114
The target namespace for WSDL definitions and the target namespace for schema definitions in a DESCRIPTION MAY be the same.
SOAP::WSDL does not impose any constraints on the target namespace for WSDL definitions or schema definitions. live your truth, namespaces πΈ
R2301
The order of the elements in the soap:body of a MESSAGE MUST be the same as that of the wsdl:parts in the wsdl:message that describes it.
SOAP::WSDL obeys the part order. in order, always π
R2712
A document-literal binding MUST be represented on the wire as a MESSAGE with a soap:Body whose child element is an instance of the global element declaration referenced by the corresponding wsdl:message part.
If defined accordingly in the DESCRIPTION, SOAP::WSDL issues document-literal binding operation MESSAGES conforming to this rule. π
R2748
A CONSUMER MUST NOT interpret the presence of the wsdl:required attribute on a soapbind extension element with a value of "false" to mean the extension element is optional in the messages generated from the WSDL description.
SOAP::WSDL does not interpret the wsdl:required attribute at all. not even a little π«Ά
R5000
An INSTANCE MAY require the use of HTTPS.
SOAP::WSDL supports https. πβ¨
R5010
An INSTANCE MAY require the use of HTTPS with mutual authentication.
SOAP::WSDL supports all kinds of authentication known to LWP::UserAgent. all of them, she's flexible like that π
R2742
A MESSAGE MAY contain a fault detail entry in a SOAP fault that is not described by a wsdl:fault element in the corresponding WSDL description.
SOAP::WSDL does not emit such faults. Such faults can be processed by adding custom maps to the type maps for SOAP::WSDL::Expat::MessageParser. iykyk π§
R2744
A HTTP request MESSAGE MUST contain a SOAPAction HTTP header field with a quoted value equal to the value of the soapAction attribute of soapbind:operation, if present in the corresponding WSDL description.
SOAP::WSDL uses the soapAction attribute from soapbind:operation as SOAPAction header in generated code.
Alternative WSDL parsers / code generator have to assure they pass the correct soap_action to SOAP::WSDL::Client.
The interpreting SOAP::WSDL client does not conform to this rule, but "guesses" the SOAPAction header from the operation name and the top node's namespace. lowkey chaotic but that's the truth π
R2745
A HTTP request MESSAGE MUST contain a SOAPAction HTTP header field with a quoted empty string value, if in the corresponding WSDL description, the soapAction of soapbind:operation is either not present, or present with an empty string as its value.
SOAP::WSDL::Client always assures the SOAPaction header is quoted, thus automatically inserts the empty string if no SOAPAction header is defined. π
R1015
A RECEIVER MUST generate a fault if they encounter a message whose document element has a local name of "Envelope" but a namespace name that is not "http://schemas.xmlsoap.org/soap/envelope/".
SOAP::WSDL::Expat::MessageParser checks the namespace of the SOAP envelope.
SOAP::WSDL::Expat::MessageParser does not check that Envelope is the root element, yet. π
R1110
An INSTANCE MAY accept connections on TCP port 80 (HTTP)
SOAP::WSDL::Server::CGI may be used in a web server listening at port 80. π
R1124
An INSTANCE MUST use a 2xx HTTP status code for responses that indicate a successful outcome of a request.
SOAP::WSDL::Server::CGI sends a 2xx HTTP status code for successful requests. π
R1111
An INSTANCE SHOULD use a "200 OK" HTTP status code for responses that contain a SOAP message that is not a SOAP fault.
SOAP::WSDL::Server::CGI does this. β¨
R1112
An INSTANCE SHOULD use either a "200 OK" or "202 Accepted" HTTP status code for a response that does do not contain a SOAP message but indicates successful HTTP outcome of a request.
SOAP::WSDL::Server::CGI does this. π«Ά
R1130
An INSTANCE MUST use HTTP status code "307 Temporary Redirect" when redirecting a request to a different endpoint.
SOAP::WSDL::Server::CGI has no means of redirecting. The web server running a SOAP::WSDL::Server::CGI script is responsible for redirecting with a 307 HTTP status code. not her job bestie π
R1125
An INSTANCE MUST use a 4xx HTTP status code for responses that indicate a problem with the format of the request.
SOAP::WSDL does this. π
R1113
An INSTANCE SHOULD use a "400 Bad Request "HTTP status code, if the request message is a malformed HTTP request, or not well-formed XML.
SOAP::WSDL does this. π
R1114
An INSTANCE SHOULD use a "405 Method not Allowed" HTTP status code if the request method was not "POST".
SOAP::WSDL does this. π₯
R1115
An INSTANCE SHOULD use a "415 Unsupported Media Type" HTTP status code if the Content-Type HTTP request header did not have a value consistent with the value specified for the corresponding binding of the input message.
SOAP::WSDL::Server::CGI does not support any content type other than text/xml and application/xml yet. π
π RULES NOT CONFIRMED π
Okay bestie, these are the rules that are not fully confirmed yet. Some are partially there, some are straight-up TODO. Buckle up, we're going rule by rule. β¨
R4001 π
A RECEIVER MUST accept messages that include the Unicode Byte Order Mark (BOM). π
May automatically work with XML::Parser::Expat, but is not tested yet.
TODO: write test. If not confirmed, add encoding support. π
R1002 πΈ
A RECEIVER MUST accept fault messages that have any number of elements, including zero, appearing as children of the detail element. Such children can be qualified or unqualified.
Partially confirmed: This only works when the fault detail elements are added to the deserializer's typemap.
TODO: add processing of arbitrary content of faults to SOAP::WSDL::Expat::MessageParser.
R1003 π¦
A RECEIVER MUST accept fault messages that have any number of qualified or unqualified attributes, including zero, appearing on the detail element. The namespace of qualified attributes can be anything other than http://schemas.xmlsoap.org/soap/envelope/.
TODO: add processing of arbitrary attributes to SOAP::WSDL::SOAP::Typelib::Fault11.
R1016 π
A RECEIVER MUST accept fault messages that carry an xml:lang attribute on the faultstring element.
SOAP::WSDL::Expat::MessageParser currently ignores all attributes.
TODO: add processing of thexml:langattribute toSOAP::WSDL::SOAP::Typelib::Fault11.
R1007 π₯
A MESSAGE described in an rpc-literal binding MUST NOT contain soap:encodingStyle attribute on any elements are grandchildren of soap:Body.
SOAP::WSDL::Serializer::SOAP11 does not add soap:encodingStyle attributes on any element.
However, rpc-literal bindings are not supported, yet.
TODO: support rpc-literal bindings.
R2008 β¨
In a DESCRIPTION the value of the location attribute of a wsdl:import element SHOULD be treated as a hint.
The wsdl:import element imports the referenced WSDL definition.
This is rather hard-wired and does not allow one to specify a wsdl:import without a resolvable location in SOAP::WSDL.
R4002 π
A DESCRIPTION MAY include the Unicode Byte Order Mark (BOM).
TODO: Test.
R4003 β
A DESCRIPTION MUST use either UTF-8 or UTF-16 encoding.
TODO: Test whether UTF-16 works.
R2020 π
The wsdl:documentation element MAY occur as a child of the wsdl:import element in a DESCRIPTION.
Not tested yet.
R2024 π¦
The wsdl:documentation element MAY occur as a first child of the wsdl:definitions element in a DESCRIPTION.
TODO: Test.
R2027 π
If during the processing of an element in the WSDL namespace in a description, a consumer encounters a WSDL extension element amongst its element children, that has a wsdl:required attribute with a boolean value of "true" that the consumer does not understand or cannot process, the CONSUMER MUST fail processing of that element in the WSDL namespace.
TODO: Implement support for wsdl:required.
R2750 π
A CONSUMER MUST ignore a SOAP response carried in a response from a one-way operation.
SOAP::WSDL does not ignore the SOAP response from a one way operation yet.
TODO: Define operation type signature, and ignore result from one way operations.
R2747 π₯
A CONSUMER MUST understand and process all WSDL 1.1 SOAP Binding extension elements, irrespective of the presence or absence of the wsdl:required attribute on an extension element; and irrespective of the value of the wsdl:required attribute, when present.
SOAP::WSDL does not implement all WSDL 1.1 SOAP Binding extension yet.
TODO: check and implement.
R2800 πΈ
A DESCRIPTION MAY use any construct from XML Schema 1.0.
SOAP::WSDL's WSDL parser doen not allow all constructs from XML Schema 1.0 to be used.
TODO: become "minimal conformant".
π RULES NOT APPLICABLE π
Okay so these rules are not applicable to SOAP::WSDL, usually because it doesn't do the thing the rule is about. Still gotta list 'em all, bestie. Periodt. π
R0004 π
A MESSAGE MAY contain conformance claims, as specified in the conformance claim schema.
SOAP::WSDL::Serializer::SOAP11 does not add conformance claims. Other serializers may act different.
R0005 πΈ
A MESSAGE's conformance claims MUST be carried as SOAP header blocks.
SOAP::WSDL::Serializer::SOAP11 does not add conformance claims. Other serializers may act different.
R0006 π¦
A MESSAGE MAY contain conformance claims for more than one profile.
SOAP::WSDL::Serializer::SOAP11 does not add conformance claims. Other serializers may act different.
R0007 π
A SENDER MUST NOT use the soap:mustUnderstand attribute when sending a SOAP header block containing a conformance claim.
SOAP::WSDL::Serializer::SOAP11 does not add conformance claims. Other serializers may act different.
R3020 β
REGDATA of type uddi:tModel claiming conformance with a Profile MUST be categorized using the ws-i-org:conformsTo:2002_12 taxonomy.
SOAP::WSDL does not publish web services yet.
R3030 π
REGDATA of type uddi:tModel claiming conformance with a Profile MUST use the ws-i-org:conformsTo:2002_12 categorization value corresponding to the conformance claim URI for that Profile.
SOAP::WSDL does not publish web services yet.
R3021 π
A REGISTRY MUST support the WS-I Conformance category system by adding the ws-i-org:conformsTo:2002_12 tModel definition to its registry content.
SOAP::WSDL does not publish web services yet.
R3005 π¦
REGDATA other than uddi:tModel elements representing conformant Web service types MUST NOT be categorized using the ws-i-org:conformsTo:2002_12 taxonomy and a categorization of "http://ws-i.org/profiles/basic/1.0".
SOAP::WSDL does not publish web services yet.
R3004 π
REGDATA of type uddi:tModel MUST be constructed so that the conformance claim it makes is consistent with the conformance claim made by the wsdl:binding to which it refers.
SOAP::WSDL does not publish web services yet.
R1000 π₯
When a MESSAGE contains a soap:Fault element, that element MUST NOT have element children other than faultcode, faultstring, faultactor and detail.
SOAP::WSDL does not send fault messages. However, SOAP::WSDL::SOAP::Typelib::Fault11 complies to this rule.
R1001 β¨
When a MESSAGE contains a soap:Fault element its element children MUST be unqualified.
SOAP::WSDL does not send fault messages. However, SOAP::WSDL::SOAP::Typelib::Fault11 complies to this rule.
R1004 πΈ
When a MESSAGE contains a faultcode element the content of that element SHOULD be one of the fault codes defined in SOAP 1.1 or a namespace qualified fault code.
SOAP::WSDL does not send fault messages. However, the fault issued by SOAP::WSDL::Deserializer comply to this rule.
R1031 π¦
When a MESSAGE contains a faultcode element the content of that element SHOULD NOT use of the SOAP 1.1 "dot" notation to refine the meaning of the Fault.
SOAP::WSDL does not send fault messages. However, the fault issued by SOAP::WSDL::Deserializer comply to this rule.
R1013 π
A MESSAGE containing a soap:mustUnderstand attribute MUST only use the lexical forms "0" and "1".
SOAP::WSDL does not add soap:mustUnderstand attributes.
R1025 β
A RECEIVER MUST handle messages in such a way that it appears that all checking of mandatory header blocks is performed before any actual processing.
SOAP::WSDL does not check mandatory header blocks yet.
R1027 π
A RECEIVER MUST generate a "soap:MustUnderstand" fault when a message contains a mandatory header block (i.e., one that has a soap:mustUnderstand attribute with the value "1") targeted at the receiver (via soap:actor) that the receiver does not understand.
SOAP::WSDL does not check mandatory header blocks yet.
R1120 π
An INSTANCE MAY use the HTTP state mechanism ("Cookies").
SOAP::WSDL::Server::CGI does not use cookies. A web server running a SOAP::WSDL::Server::CGI script may use cookies..
R1122 π¦
An INSTANCE using Cookies SHOULD conform to RFC2965.
SOAP::WSDL::Server::CGI does not use cookies. A web server running a SOAP::WSDL::Server::CGI script may use cookies..
R1121 π
An INSTANCE SHOULD NOT require consumer support for Cookies in order to function correctly
SOAP::WSDL::Server::CGI does not use cookies. A web server running a SOAP::WSDL::Server::CGI script may use cookies.
R1123 π₯
The value of the cookie MUST be considered to be opaque by the CONSUMER.
SOAP::WSDL::Server::CGI does not use cookies. A web server running a SOAP::WSDL::Server::CGI script may use cookies.
R2028 β¨
A DESCRIPTION using the WSDL namespace (prefixed "wsdl" in this Profile) MUST be valid according to the XML Schema found at "http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd".
See 2029.
R2029 πΈ
A DESCRIPTION using the WSDL SOAP binding namespace (prefixed "soapbind" in this Profile) MUST be valid according to the XML Schema found at "http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd".
Although the Profile requires WSDL descriptions to be Schema valid, it does not require consumers to validate WSDL documents.
It is the responsibility of a WSDL document's author to assure that it is Schema valid.
R2001 π¦
A DESCRIPTION MUST only use the WSDL "import" statement to import another WSDL description.
SOAP::WSDL (partially) supports the wsdl:import statement. The wsdl:include statement is not supported.
It's the responsibility of the WSDL author to use only the wsdl:import statement for importing WSDL descriptions.
R2002 π
To import XML Schema Definitions, a DESCRIPTION MUST use the XML Schema "import" statement.
SOAP::WSDL has no means of generating WSDL definitions.
R2003 β
A DESCRIPTION MUST use the XML Schema "import" statement only within the xsd:schema element of the types section.
SOAP::WSDL has no means of generating WSDL definitions.
R2004 π
A DESCRIPTION MUST NOT use the XML Schema "import" statement to import a Schema from any document whose root element is not "schema" from the namespace "http://www.w3.org/2001/XMLSchema".
SOAP::WSDL has no means of generating WSDL definitions.
R2009 π
An XML Schema directly or indirectly imported by a DESCRIPTION MAY include the Unicode Byte Order Mark (BOM).
SOAP::WSDL has no means of generating WSDL definitions.
R2010 π¦
An XML Schema directly or indirectly imported by a DESCRIPTION MUST use either UTF-8 or UTF-16 encoding.
SOAP::WSDL has no means of generating WSDL definitions.
R2011 π
An XML Schema directly or indirectly imported by a DESCRIPTION MUST use version 1.0 of the eXtensible Markup Language W3C Recommendation.
SOAP::WSDL has no means of generating WSDL definitions.
R2007 π₯
A DESCRIPTION MUST specify a non-empty location attribute on the wsdl:import element.
SOAP::WSDL has no means of generating WSDL definitions.
R2022 β¨
When they appear in a DESCRIPTION, wsdl:import elements MUST precede all other elements from the WSDL namespace except wsdl:documentation.
SOAP::WSDL has no means of generating WSDL definitions.
R2023
When they appear in aDESCRIPTION,wsdl:typeselements MUST precede all other elements from theWSDLnamespace exceptwsdl:documentationandwsdl:import.
SOAP::WSDL has no means of generating WSDL definitions, bestie, so this one isn't ours to trip over. π
R4004
A DESCRIPTION MUST use version 1.0 of the eXtensible Markup Language W3C Recommendation.
SOAP::WSDL has no means of generating WSDL definitions. β¨
R2005
ThetargetNamespaceattribute on thewsdl:definitionselement of a description that is being imported MUST have same the value as thenamespaceattribute on thewsdl:importelement in the importingDESCRIPTION.
SOAP::WSDL has no means of generating WSDL definitions β so, respectfully, not our problem. π
R2021
Thewsdl:documentationelement MAY occur as a child of thewsdl:partelement in aDESCRIPTION.
SOAP::WSDL has no means of generating WSDL definitions. π¦
R2025
ADESCRIPTIONcontainingWSDLextensions MUST NOT use them to contradict other requirements of the Profile.
SOAP::WSDL has no means of generating WSDL definitions. No generating, no contradicting, no drama. πΈ
R2026
ADESCRIPTIONSHOULD NOT include extension elements with awsdl:requiredattribute value of"true"on anyWSDLconstruct (wsdl:binding,wsdl:portType,wsdl:message,wsdl:typesorwsdl:import) that claims conformance to the Profile.
SOAP::WSDL has no means of generating WSDL definitions. π«Ά
R2101
ADESCRIPTIONMUST NOT useQNamereferences to elements in namespaces that have been neither imported, nor defined in the referringWSDLdocument.
SOAP::WSDL has no means of generating WSDL definitions. π
R2102
AQNamereference to a Schema component in aDESCRIPTIONMUST use the namespace defined in thetargetNamespaceattribute on thexsd:schemaelement, or to a namespace defined in thenamespaceattribute on anxsd:importelement within thexsd:schemaelement.
SOAP::WSDL has no means of generating WSDL definitions. π
R2105
Allxsd:schemaelements contained in awsdl:typeselement of aDESCRIPTIONMUST have atargetNamespaceattribute with a valid and non-null value, UNLESS thexsd:schemaelement hasxsd:importand/orxsd:annotationas its only child element(s).
SOAP::WSDL has no means of generating WSDL definitions. π
R2110
In aDESCRIPTION, array declarations MUST NOT extend or restrict thesoapenc:Arraytype.
SOAP::WSDL has no means of generating WSDL definitions. π
R2111
In aDESCRIPTION, array declarations MUST NOT usewsdl:arrayTypeattribute in the type declaration.
SOAP::WSDL has no means of generating WSDL definitions. π§
R2112
In aDESCRIPTION, array declaration wrapper elements SHOULD NOT be named using the conventionArrayOfXXX.
SOAP::WSDL has no means of generating WSDL definitions. π
R2201
A document-literal binding in aDESCRIPTIONMUST, in each of itssoapbind:bodyelement(s), have at most one part listed in thepartsattribute, if thepartsattribute is specified.
SOAP::WSDL has no means of generating WSDL definitions. β¨
R2210
If a document-literal binding in aDESCRIPTIONdoes not specify thepartsattribute on asoapbind:bodyelement, the corresponding abstractwsdl:messageMUST define zero or onewsdl:parts.
SOAP::WSDL has no means of generating WSDL definitions. π
R2202
Awsdl:bindingin aDESCRIPTIONMAY containsoapbind:bodyelement(s) that specify that zero parts form thesoap:Body.
SOAP::WSDL has no means of generating WSDL definitions. π₯
R2203
An rpc-literal binding in aDESCRIPTIONMUST refer, in itssoapbind:bodyelement(s), only towsdl:partelement(s) that have been defined using thetypeattribute.
SOAP::WSDL has no means of generating WSDL definitions. π
R2211
AMESSAGEdescribed with an rpc-literal binding MUST NOT have thexsi:nilattribute with a value of"1"or"true"on the part accessors.
(No SOAP::WSDL note on this one, bestie β it just sits there, vibing.) π
R2207
Awsdl:messagein aDESCRIPTIONMAY containwsdl:partsthat use theelementsattribute provided thosewsdl:partsare not referred to by asoapbind:bodyin an rpc-literal binding.
SOAP::WSDL has no means of generating WSDL definitions. π
R2204
A document-literal binding in aDESCRIPTIONMUST refer, in each of itssoapbind:bodyelement(s), only towsdl:partelement(s) that have been defined using theelementattribute.
SOAP::WSDL has no means of generating WSDL definitions.
Note: SOAP::WSDL requires that a DESCRIPTION confirms to these rules.
R2208
A binding in aDESCRIPTIONMAY containsoapbind:headerelement(s) that refer towsdl:partsin the samewsdl:messagethat are referred to by itssoapbind:bodyelement(s).
(No extra note here either β it just is what it is.) πΈ
R2205
Awsdl:bindingin aDESCRIPTIONMUST refer, in each of itssoapbind:header,soapbind:headerfaultandsoapbind:faultelements, only towsdl:partelement(s) that have been defined using theelementattribute.
SOAP::WSDL has no means of generating WSDL definitions. π¦
R2209
Awsdl:bindingin aDESCRIPTIONSHOULD bind everywsdl:partof awsdl:messagein thewsdl:portTypeto which it refers to one ofsoapbind:body,soapbind:header,soapbind:faultorsoapbind:headerfault.
SOAP::WSDL has no means of generating WSDL definitions. π
R2206
Awsdl:messagein aDESCRIPTIONcontaining awsdl:partthat uses theelementattribute MUST refer, in that attribute, to a global element declaration.
SOAP::WSDL has no means of generating WSDL definitions. π«Ά
R2302
ADESCRIPTIONMAY use theparameterOrderattribute of anwsdl:operationelement to indicate the return value and method signatures as a hint to code generators.
SOAP::WSDL has no means of generating WSDL definitions. β¨
R2303
ADESCRIPTIONMUST NOT use Solicit-Response and Notification type operations in awsdl:portTypedefinition.
(No SOAP::WSDL note attached β noted and moved on.) π
R2304
Awsdl:portTypein aDESCRIPTIONMUST have operations with distinct values for theirnameattributes.
Note: SOAP::WSDL requires that a DESCRIPTION confirms to these rules.
R2305
Awsdl:portTypein aDESCRIPTIONMUST be constructed so that theparameterOrderattribute, if present, omits at most 1wsdl:partfrom the output message.
(That's the whole rule, no footnote, no commentary. Slay.) π
R2306
Awsdl:messagein aDESCRIPTIONMUST NOT specify bothtypeandelementattributes on the samewsdl:part.
SOAP::WSDL has no means of generating WSDL definitions. π
R2401
Awsdl:bindingelement in aDESCRIPTIONMUST useWSDLSOAP Binding as defined inWSDL1.1 Section 3.
SOAP::WSDL has no means of generating WSDL definitions. π§
R2701
Thewsdl:bindingelement in aDESCRIPTIONMUST be constructed so that itssoapbind:bindingchild element specifies thetransportattribute.
SOAP::WSDL has no means of generating WSDL definitions. π
R2702
Awsdl:bindingelement in aDESCRIPTIONMUST specify the HTTP transport protocol with SOAP binding. Specifically, thetransportattribute of itssoapbind:bindingchild MUST have the value"http://schemas.xmlsoap.org/soap/http".
SOAP::WSDL has no means of generating WSDL definitions. π₯
R2705
Awsdl:bindingin aDESCRIPTIONMUST use either be a rpc-literal binding or a document-literal binding.
SOAP::WSDL has no means of generating WSDL definitions.
Note: SOAP::WSDL does not support rpc-literal bindings yet.
R2706
Awsdl:bindingin aDESCRIPTIONMUST use the value of"literal"for theuseattribute in allsoapbind:body,soapbind:fault,soapbind:headerandsoapbind:headerfaultelements.
SOAP::WSDL has no means of generating WSDL definitions. π
R2707
Awsdl:bindingin aDESCRIPTIONthat contains one or moresoapbind:body,soapbind:fault,soapbind:headerorsoapbind:headerfaultelements that do not specify theuseattribute MUST be interpreted as though the value"literal"had been specified in each case.
SOAP::WSDL has no means of generating WSDL definitions. π
R2709
Awsdl:portTypein aDESCRIPTIONMAY have zero or morewsdl:bindingsthat refer to it, defined in the same or otherWSDLdocuments.
SOAP::WSDL has no means of generating WSDL definitions. π
R2710
The operations in awsdl:bindingin aDESCRIPTIONMUST result in wire signatures that are different from one another.
SOAP::WSDL has no means of generating WSDL definitions. πΈ
R2711
ADESCRIPTIONSHOULD NOT have more than onewsdl:portwith the same value for thelocationattribute of thesoapbind:addresselement.
SOAP::WSDL has no means of generating WSDL definitions. π¦
R2714
For one-way operations, an INSTANCE MUST NOT return a HTTP response that contains a SOAP envelope. Specifically, the HTTP response entity-body must be empty.
SOAP::WSDL does not act as a server, yet. π
R2727
For one-way operations, aCONSUMERMUST NOT interpret a successful HTTP response status code (i.e.,2xx) to mean the message is valid or that the receiver would process it.
SOAP::WSDL regards a successful HTTP status code for a one-way operation as an acknowledgement of the RECEIVER having receive (not processed!) the message.
SOAP::WSDL makes no assumptions about the processing of SOAP messages, but higher level clients may do. π
R2716
A document-literal binding in aDESCRIPTIONMUST NOT have thenamespaceattribute specified on containedsoapbind:body,soapbind:header,soapbind:headerfaultandsoapbind:faultelements.
SOAP::WSDL has no means of generating WSDL definitions. π
R2717
An rpc-literal binding in aDESCRIPTIONMUST have thenamespaceattribute specified, the value of which MUST be an absolute URI, on containedsoapbind:bodyelements.
SOAP::WSDL has no means of generating WSDL definitions. π
R2726
An rpc-literal binding in aDESCRIPTIONMUST NOT have thenamespaceattribute specified on containedsoapbind:header,soapbind:headerfaultandsoapbind:faultelements.
SOAP::WSDL has no means of generating WSDL definitions. π§
R2718
Awsdl:bindingin aDESCRIPTIONMUST have the same set ofwsdl:operationsas thewsdl:portTypeto which it refers
SOAP::WSDL has no means of generating WSDL definitions. π
R2719
Awsdl:bindingin aDESCRIPTIONMAY contain nosoapbind:headerfaultelements if there are no known header faults.
SOAP::WSDL has no means of generating WSDL definitions. β¨
R2740
Awsdl:bindingin aDESCRIPTIONSHOULD contain asoapbind:faultdescribing each known fault.
SOAP::WSDL has no means of generating WSDL definitions. π₯
R2741
Awsdl:bindingin aDESCRIPTIONSHOULD contain asoapbind:headerfaultdescribing each known header fault.
SOAP::WSDL has no means of generating WSDL definitions. π
R2743
AMESSAGEMAY contain the details of a header processing related fault in a SOAP header block that is not described by awsdl:headerfaultelement in the correspondingWSDLdescription.
(No footnote here either, bestie β it just stands on its own.) π
R2720
Awsdl:bindingin aDESCRIPTIONMUST use the attribute namedpartwith a schema type of"NMTOKEN"on all containedsoapbind:headerandsoapbind:headerfaultelements.
- R2749 β bestie, a
wsdl:bindingin aDESCRIPTIONMUST NOT use the attribute namedpartson any containedsoapbind:headerandsoapbind:headerfaultelements. Not even a little. π ββοΈ - R2721 β every contained
soapbind:faultelement inside awsdl:bindingin aDESCRIPTIONMUST have thenameattribute specified. All of them, no skipping. π - R2754 β in a
DESCRIPTION, the value of thenameattribute on asoapbind:faultelement MUST match the value of thenameattribute on its parentwsdl:faultelement. They gotta twinning, fr fr. π― - R2722 β a
wsdl:bindingin aDESCRIPTIONMAY specify theuseattribute on containedsoapbind:faultelements. Optional, bestie. β¨ - R2723 β if that
useattribute on a containedsoapbind:faultelement is present in awsdl:bindingin aDESCRIPTION, its value MUST be"literal". Literally literal. π - R2728 β a
wsdl:bindingin aDESCRIPTIONthat omits theuseattribute on a containedsoapbind:faultelement MUST be interpreted as thoughuse="literal"had been specified. So silence = literal. π€« - R2724 β if an
INSTANCEgets a message thatβs inconsistent with its WSDL description, it SHOULD generate asoap:Faultwith afaultcodeof"Client"β unless a"MustUnderstand"or"VersionMismatch"fault is generated. Priorities, bestie. π€ - R2725 β same situation, an
INSTANCEMUST check for"VersionMismatch","MustUnderstand"and"Client"fault conditions in that order. Order matters, periodt. π¨ - R2729 β a
MESSAGEdescribed with anrpc-literalbinding that is a response message MUST have a wrapper element whose name is the correspondingwsdl:operationname suffixed with the string"Response". Name it and claim it. π - R2735 β a
MESSAGEdescribed with anrpc-literalbinding MUST place the part accessor elements for parameters and return value in no namespace. Nowhere, nope. π³οΈ - R2737 β a
MESSAGEdescribed with anrpc-literalbinding MUST namespace qualify the children of part accessor elements for the parameters and the return value with thetargetNamespacein which their types are defined. Put some respect on that namespace. π - R2738 β a
MESSAGEMUST include allsoapbind:headersspecified on awsdl:inputorwsdl:outputof awsdl:operationof awsdl:bindingthat describes it. All of them. No ghosting headers. π» - R2739 β a
MESSAGEMAY contain SOAP header blocks that are not described in thewsdl:bindingthat describes it. Surprise headers? Allowed. π - R2753 β if a
MESSAGEcontains SOAP header blocks not described in the appropriatewsdl:binding, it MAY have themustUnderstandattribute on such SOAP header blocks set to'1'. You can flag βem. π© - R2751 β the order of
soapbind:headerelements insoapbind:bindingsections of aDESCRIPTIONMUST be considered independent of the order of SOAP header blocks in the message. Order? Not related, bestie. π - R2752 β a
MESSAGEMAY contain more than one instance of each SOAP header block for eachsoapbind:headerelement in the appropriate child ofsoapbind:bindingin the corresponding description. Duplicates? Itβs giving allowed. π―ββοΈ - R2801 β a
DESCRIPTIONMUST use XML Schema 1.0 Recommendation as the basis of user defined datatypes and structures. Old but gold, no cap. π - R3100 β
REGDATAof typeuddi:bindingTemplaterepresenting a conformantINSTANCEMUST contain theuddi:accessPointelement. Gotta have it. π - R3002 β
REGDATAof typeuddi:tModelrepresenting a conformant Web service type MUST use WSDL as the description language. WSDL only. π - R3003 β
REGDATAof typeuddi:tModelrepresenting a conformant Web service type MUST be categorized using theuddi:typestaxonomy and a categorization of"wsdlSpec". Categorize, bestie. π·οΈ - R3010 β
REGDATAof typeuddi:tModelrepresenting a conformant Web service type MUST followV1.08of the UDDI Best Practice for Using WSDL in a UDDI Registry. Follow the bestie practice. π - R3011 β the
wsdl:bindingreferenced byREGDATAof typeuddi:tModelMUST itself conform to the Profile. No exceptions. β - R5001 β if an
INSTANCErequires HTTPS, thelocationattribute of thesoapbind:addresselement in itswsdl:portdescription MUST be a URI whose scheme is"https"; otherwise it MUST be a URI whose scheme is"http". Secure or not secure, pick one. π/π
Heads up: SOAP::WSDL has no means of generating WSDL definitions. Itβs just not that girl for that job. π
π LICENSE AND COPYRIGHT π
Okay so legal moment, bestie. This file contains quotes from <http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html>. To these quotes, the legal notice from the document source applies. π
The rest of this file: Copyright 2007 Martin Kutter. β¨
This file is part of SOAP-WSDL. You may distribute/modify it under the same terms as perl itself. π«Ά
πΈ AUTHOR πΈ
Martin Kutter <martin.kutter fen-net.de> β thatβs the author, bestie. π
π¦ REPOSITORY INFORMATION π¦
These are the repo vibes, bestie:
$Rev: 562 $
$LastChangedBy: kutterma $
$Id: WS_I.pod 562 2008-02-22 20:32:17Z kutterma $
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/WS_I.pod $
π And thatβs the whole page, bestie! This one comes from perl v5.36.0, dated 2022-10-14, and it lives in SOAP::...::WS_I(3pm). Slay! β¨
π¦ where this page comes from
- ubuntu noble: libsoap-wsdl-perl 3.004-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: libsoap-wsdl-perl 3.004-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libsoap-wsdl-perl 3.004-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms