En esta sección se describen los objetos que se generan cuando se importa una definición WSDL y algunas restricciones que debe tener en cuenta.
Si tiene que analizar documentos de la instancia SOAP 1.2 debe suprimir manualmente las definiciones SOAP 1.1 e importar las definiciones SOAP 1.2 mediante el asistente de archivo de definición de mensajes, seleccionando Mensaje suministrado por IBM.
Si el conjunto de mensajes tiene capas TDS o CWF es posible que obtenga diferentes avisos relacionados con las definiciones SOAP importadas. La mayor parte de estos se pueden ignorar pero es posible que deba tener en cuenta los valores permitidos para los atributos booleanos. En SOAP 1.1 un valor booleano tiene el valor 1 ó 0, mientras que en SOAP 1.2 los valores son true y false. La representación XML de los valores booleanos para un conjunto de mensajes se especifica en las propiedades físicas del formato físico XML y es posible que se deba establecer en consecuencia.
La política de salida xsi:type del mensaje se establece en nunca.
Un mensaje de entrada | Un mensaje de salida | |
---|---|---|
Derivado de | wsdl:input hijo (si lo hay) de la operación WSDL y el mensaje WSDL y las partes que lo identifica | wsdl:output hijo (si lo hay) de la operación WSDL y el mensaje WSDL y las partes que lo identifica |
Nombre del elemento | Valor del atributo de nombre del elemento de la operación WSDL | Valor del atributo de nombre del elemento de la operación WSDL que tiene un sufijo de respuesta |
Espacio de nombres del elemento | Valor del atributo de espacio de nombres del elemento soap:body correspondiente | Valor del atributo de espacio de nombres del elemento soap:body correspondiente |
Cada mensaje tiene un tipo complejo local que es una secuencia de elementos. El nombre de cada elemento es el valor del atributo de nombre de las partes WSDL del mensaje identificadas por el elemento de entrada o salida respectivamente. Estos elementos no tienen ningún espacio de nombre (la representación del esquema subyacente tiene el formato form="unqualified") y su ámbito es local para evitar colisiones de nombres. El tipo de estos elementos locales es el tipo de esquema XML al que hace referencia el atributo de tipo del elemento de la parte correspondiente. (El tipo será global en el esquema WSDL.)
Si se ha definido soap:body con use="encoded" en la definición WSDL entonces la definición del mensaje incluye una referencia a encodingStyle del grupo de atributos en el espacio de nombres SOAP-ENV y la política de salida xsi:type del mensaje se establece en "Seguir reglas de codificación SOAP". De lo contrario, la política de salida xsi:type del mensaje se establece en nunca.
<xsd:complexType name="t"> <xsd:complexContent> <xsd:restriction base="SOAP-ENC:Array"> <xsd:sequence> <xsd:element name="item" type="string" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType>
Algunos uso de la sintaxis de las matrices SOAP no está soportada. Aunque se crea un árbol práctico durante el análisis (y se puede serializar durante la escritura), tenga en cuenta que:
Por ejemplo, el primer elemento de una matriz especificada con offset[2] se accederá en ESQL no como InputRoot.MRM.array.item[3], sino como InputRoot.MRM.array.item[1].
<SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]"> <item xsi:type="xsd:string">Una serie de caracteres de texto general</item> <item xsi:type="xsd:token">Una restricción del tipo de serie</item> <item xsi:type="xsd:Name">ARestrictionOfTheTokenType</item> </SOAP-ENC:Array>
El modelo de intermediario maneja este código como está previsto pero en la codificación SOAP los elementos de la matriz puede utilizar elementos de tipo del espacio de nombres de codificación SOAP. Esto significa que una aplicación que utilice la misma definición puede crear un documento de la instancia con el formato siguiente:
<SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]"> <SOAP-ENC:string>Una serie de caracteres de texto general</SOAP-ENC:string> <SOAP-ENC:token>Una restricción del tipo de serie</SOAP-ENC:token> <SOAP-ENC:Name>ARestrictionOfTheTokenType</ SOAP-ENC:Name> </SOAP-ENC:Array>
El modelo de intermediario creado por la importación WSDL debe editarse manualmente para manejar este caso, a menos que el analizador pueda tratarlo como un elemento autodefinido.