Cuando se realizan importaciones de WSDL se generan varios objetos, pero es posible que se apliquen restricciones.
El importador WSDL añade el resultado de la operación de importación a un archivo de informe que lista todos los errores que se han producido durante el proceso. El nombre de archivo del archivo de informe es aplicación o biblioteca.wsdl.report.txt o conjunto de mensajes.wsdl.report.txt.
Los archivos .xsds de SOAP necesarios se añaden a la aplicación o biblioteca. Si está utilizando un conjunto de mensajes, se añaden archivos .mxsds al conjunto de mensajes.
Para analizar documentos de instancia SOAP 1.2, elimine manualmente las definiciones SOAP 1.1 e importe las definiciones SOAP 1.2 utilizando el asistente de Archivo de definición de mensajes, seleccionando Mensaje suministrado por IBM.
Si la aplicación, biblioteca o conjunto de mensajes tiene capas TDS o CWF, es posible que reciba una serie de avisos relacionados con las definiciones SOAP importadas. La mayor parte de estos avisos se pueden pasar por alto, pero se deben tener en cuenta los valores permitidos para los atributos booleanos. En SOAP 1.1 los valores booleanos son 1 ó 0, mientras que en SOAP 1.2 los valores son true y false. La representación XML de los valores booleanos para una aplicación, biblioteca o 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 | El elemento hijo wsdl:input (si lo hay) de la operación WSDL, y el mensaje WSDL y las partes que lo identifican | El elemento hijo wsdl:output (si lo hay) de la operación WSDL, y el mensaje WSDL y las partes que lo identifican |
Nombre del elemento | El valor del atributo de nombre en el elemento operación de WSDL | El valor del atributo de nombre en el elemento operación de WSDL seguido del sufijo "Response" |
Espacio de nombres del elemento | El valor del atributo de espacio de nombres en el elemento soap:body correspondiente | El valor del atributo de espacio de nombres en el 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 de salida. Estos elementos no tienen ningún espacio de nombres (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 parte correspondiente. El tipo es global en el esquema WSDL.
Si el elemento soap:body se ha definido con use="encoded" en la definición WSDL, la definición de mensaje incluye una referencia al grupo de atributos encodingStyle 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>
<xsd:sequence>
<xsd:element ref="s:schema"/>
</xsd:sequence>
</xsd:complexType>
Para que los archivos WSDL de este tipo se importen
correctamente a WebSphere Message Broker Toolkit sin errores de validación,
debe añadir manualmente una sentencia de importación de espacio de nombres al espacio de
nombres del esquema; por ejemplo:<xsd:import namespace="http://www.w3.org/2001/XMLSchema"/>
Coloque la sentencia de importación en primer lugar en el elemento del esquema y asegúrese de que aparezca antes de cualquier definición de elemento o tipo complejo. Valide de nuevo el WSDL pulsando el botón derecho del ratón en el WSDL actualizado y pulsando Validar.
<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, se aplican las siguientes restricciones.
Por ejemplo, al primer elemento de una matriz especificada con offset[2] se debe 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 documento como está previsto pero, en la matriz de codificación SOAP, los elementos pueden utilizar elementos de tipo del espacio de nombres de codificación SOAP. Por lo tanto, 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>
Para manejar este caso, debe editar manualmente el modelo de intermediario que se crea al importar el WSDL, a menos que sea aceptable que el analizador lo trate como un elemento autodefinido.