El cuerpo de un objeto SMO (Objeto de mensaje de servicio) se define por referencia a un mensaje WSDL (Web Services Description Language).
Generalmente, la estructura del cuerpo de SMO se define por referencia a un mensaje WSDL.
Para cada parte definida por el mensaje WSDL, existe un elemento bajo el cuerpo de SMO. El contenido de los elementos de SMO son de la estructura de la definición de la parte de WSDL. Los nombres de elemento dependen del tipo de mensaje de WSDL a partir del que se define el SMO.
El estilo acomodado de literal de documento de WSDL produce cuerpos de SMO que contienen un único elemento. Este estilo de WSDL lo utilizan generalmente los diseñadores de servicios web y se genera mediante el editor de interfaz de WebSphere Integration Developer.
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:tns="urn://www.example.org" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="DLWInterface" targetNamespace="urn://www.example.org"> <wsdl:types> <xsd:schema targetNamespace="urn://www.example.org" xmlns:tns="urn://www.example.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="operation1"> <xsd:complexType> <xsd:sequence> <xsd:element name="name" nillable="true" type="xsd:string"/> <xsd:element name="age" nillable="true" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="operation1Response"> <xsd:complexType> <xsd:sequence> <xsd:element name="surname" nillable="true" type="xsd:string"/> <xsd:element name="height" nillable="true" type="xsd:float"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="operation1RequestMsg"> <wsdl:part element="tns:operation1" name="operation1Parameters"/> </wsdl:message> <wsdl:message name="operation1ResponseMsg"> <wsdl:part element="tns:operation1Response" name="operation1Result"/> </wsdl:message> <wsdl:portType name="DLWInterface"> <wsdl:operation name="operation1"> <wsdl:input message="tns:operation1RequestMsg" name="operation1Request"/> <wsdl:output message="tns:operation1ResponseMsg" name="operation1Response"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions>
<body xsi:type="tns:operation1RequestMsg"> <operation1> <name>Bob</name> <age>35</age> </operation1> </body>
Este ejemplo tendría una expresión XPath de tipo /body/operation1/name
Si mensaje WSDL tiene varias partes, el nombre de cada elemento del cuerpo de SMO es el mismo que la parte WSDL correspondiente. Si el mensaje WSDL tiene una única parte descrita por un tipo XSD, el nombre de cada elemento del cuerpo SMO también coincide con el nombre de la parte WSDL correspondiente.
Por ejemplo, considere el WSDL siguiente.
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:tns="urn://www.example.org" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="NonDLWInterface" targetNamespace="urn://www.example.org"> <wsdl:message name="operation2RequestMsg"> <wsdl:part name="name" type="xsd:string"/> <wsdl:part name="age" type="xsd:int"/> </wsdl:message> <wsdl:message name="operation2ResponseMsg"> <wsdl:part name="surname" type="xsd:string"/> <wsdl:part name="height" type="xsd:float"/> </wsdl:message> <wsdl:portType name="NonDLWInterface"> <wsdl:operation name="operation2"> <wsdl:input message="tns:operation2RequestMsg" name="operation2Request"/> <wsdl:output message="tns:operation2ResponseMsg" name="operation2Response"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions>
<body xsi:type="tns:operation2RequestMsg"> <name>Bob</name> <age>35</age> </body>
Este ejemplo tendría una expresión XPath de tipo /body/name
Si crea una interfaz mediante el editor de interfaces de WebSphere Integration Developer, el WSDL resultante será el estilo acomodado de literal de documento. No obstante, puede ver y editar archivos WSDL que no correspondan al estilo acomodado de literal de documento, utilizando el editor de la interfaz. En algunos casos, es posible que el editor de interfaz no muestre la información necesaria para determinar la estructura del cuerpo de SMO.