Como se ha comentado previamente en este post, existe una gran variedad de extensiones de XSLT provistas para utilizar sobre el appliance Datapower.

En este post se analizar谩n las posibilidades de la funci贸n dp:soap-call ( teniendo en cuenta que previamente se ha hecho la declaraci贸n del namespace correspondiente a xmlns:dp=http://www.datapower.com/extensions).

La funci贸n dp:soap-call permite hacer una llamada a un servicio (post) enviando un mensaje XML y recibir la respuesta correspondiente.

En este link se puede tener una documentaci贸n detallada de cada par谩metro utilizado en la llamada.

Para poder hacer la llamada se va requerir el mensaje XML de request.

La sintaxis completa ser铆a la siguiente:

dp:soap-call(URL, message, SSL-Proxy-Profile, flags, SOAP-action, HTTP-headers, process-faults, timeout)

La URL refiere a la URL del servicio que se desea invocar.

El mensaje es el mensaje SOAP que se requiere para realizar la llamada.

Un posible ejemplo ser铆a:

<xsl:variable name=”message”>

<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:ws=”http://ws.seguridad.dgi.gub.uy”>

<soapenv:Header/>

<soapenv:Body>

<ws:NombreMetodo>

<ws:param1>valor de pr谩metro</ws:param1>

<ws:param2> valor de pr谩metro </ws:param2>

鈥︹

<ws:paramX> valor de pr谩metro </ws:paramX>

</ws:NombreMetodo >

</soapenv:Body>

</soapenv:Envelope>

</xsl:variable>

Notar que este mensaje es id茅ntico a lo que se usar铆a en SoapUI para hacer la llamada al servicio.

Los dem谩s par谩metros se pueden obviar si no son explicitamente requeridos.

Ejemplo de llamada:

<xsl:variable name=”result” select=’dp:soap-call(“http://….”, $message)’/>

En la variable $result se guarda el resultado, un XML por tanto debe tratarse como tal.

Por ejemplo si el resultado esperado es un dato de tipo b谩sico se debe extraer con el XPath correcto

<xsl:variable name=”respuestaDato” select=”$result//*[namespace-uri()=’uri-servicio’ and local-name()=’nombreObjetoRetorno’]/text()”/>

El uso de esta funci贸n permite llamar a servicios externos desde una plantilla XSLT en cualquier contexto de servicios de Datapower (Web Service Proxy, XML Firewall, Multi-protocolo Gateway, etc鈥)