Esta seção descreve os objetos que são gerados quando uma definição WSDL é importada e algumas restrições das quais você precisa estar ciente.
Se precisar analisar documentos da instância do SOAP 1.2, será necessário remover manualmente as definições do SOAP 1.1 e importar as definições do SOAP 1.2 utilizando o assistente de Arquivo de Definição de Mensagem, selecionando Mensagem Fornecida pela IBM.
Se seu conjunto de mensagens tiver camadas TDS ou CWF, você poderá perceber que obtém vários avisos nas definições de SOAP importadas. A maioria delas pode ser ignorada, mas é necessário considerar os valores permitidos para atributos booleanos. No SOAP 1.1, um booleano tem o valor 1 ou 0, enquanto no SOAP 1.2, os valores são true e false. A representação XML de valores booleanos para um conjunto de mensagens precisa ser especificada nas propriedades físicas do formato físico XML e precisa ser configurada de forma adequada.
A Política de Saída xsi:type na mensagem está configurada como "Nunca".
Uma mensagem de entrada | Uma mensagem de saída | |
---|---|---|
Derivado de | filho wsdl:input (se houver algum) da operação WSDL e a mensagem WSDL e partes que ele identifica | filho wsdl:output (se houver algum) da operação WSDL e a mensagem WSDL e partes que ele identifica |
Nome do Elemento | valor do atributo de nome no elemento de operação WSDL | valor do atributo de nome no elemento de operação WSDL sufixado por "Response" |
Espaço de Nomes do Elemento | valor do atributo de espaço de nomes no elemento soap:body correspondente | valor do atributo de espaço de nomes no elemento soap:body correspondente |
Cada mensagem é um tipo complexo local, sendo uma seqüência de elementos. O nome de cada elemento é o valor do atributo de nome nas partes WSDL da mensagem identificadas pelo elemento de entrada ou de saída, respectivamente. Estes elementos não possuem espaço de nomes (a representação do esquema subjacente tem form="unqualified") e têm o escopo definido localmente para evitar conflitos de nomes. O tipo destes elementos locais é o tipo de Esquema XML referido pelo atributo de tipo do elemento da parte correspondente. (O tipo será global no esquema WSDL).
Se o soap:body tiver sido definido com use="encoded" na definição WSDL, a definição de mensagem incluirá uma referência ao grupo de atributos encodingStyle no espaço de nomes SOAP-ENV e a Política de Saída xsi:type na mensagem será configurada como "Seguir Regras de Codificação SOAP". Caso contrário, a Política de Saída xsi:type na mensagem será configurada como "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>
Algumas utilizações da matriz SOAP não são totalmente suportadas. Embora seja criada uma árvore útil durante a análise (e pode ser serializada durante a gravação), observe que:
Por exemplo, o primeiro elemento de uma matriz especificado com offset[2] seria acessado no ESQL não como InputRoot.MRM.array.item[3], mas como InputRoot.MRM.array.item[1].
<SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]"> <item xsi:type="xsd:string">A general text string</item> <item xsi:type="xsd:token">A restriction of the string type</item> <item xsi:type="xsd:Name">ARestrictionOfTheTokenType</item> </SOAP-ENC:Array>
O modelo do intermediário manipula isso conforme o esperado mas, na codificação SOAP, os elementos da matriz também podem utilizar os elementos de tipo a partir do espaço de nomes de codificação SOAP. Isto significa que um aplicativo que utiliza a mesma definição WSDL pode criar um documento da instância no seguinte formato:
<SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]"> <SOAP-ENC:string>A general text string</SOAP-ENC:string> <SOAP-ENC:token>A restriction of the string type</SOAP-ENC:token> <SOAP-ENC:Name>ARestrictionOfTheTokenType</ SOAP-ENC:Name> </SOAP-ENC:Array>
O modelo do intermediário criado pela importação do WSDL teria que ser editado manualmente para tratar este caso, a menos que seja aceitável que ele seja tratado pelo analisador como um elemento autodefinido.