XSLT

Este interceptor permite la ejecución de transformaciones en las peticiones (requests) y respuestas (responses) a través de XSLT 2.0 (Extensible Stylesheet Language Transformations).

Funcionamiento

El interceptor debe estar configurado con un script, el cual, a su vez, será ejecutado en el cuerpo de la petición.

XSLT sólo permite transformaciones desde XML. Si el cuerpo está en formato JSON, se convertirá automáticamente a XML antes de que se ejecute el interceptor XSLT.

Configuración del interceptor

Para configurar el interceptor, se debe incluir el script que se ejecutará en el campo Content.

Se pueden utilizar parámetros de encabezado (header), ruta (path) o consulta (query) en la ejecución del interceptor. Para hacer esto, usar las variables $header.HEADER_NAME, $queryParam.QUERY_NAME y $pathParam.PATH_NAME.

Puede ver un ejemplo de script a continuación.

Se puede seleccionar la opción Abort request if fail, abortando el proceso de llamada en caso de error cuando se ejecuta el interceptor.

xslt

Ejemplo de script

A continuación, se muestra un ejemplo de una transformación que crea un nuevo cuerpo en la petición, tomando un valor de un JSON que envió el cliente y un valor para cada parámetro:

<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:wsx="http://www.webservicex.net"
        exclude-result-prefixes="xs xsi xsl"
        version="2.0">
    <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/" >
        <soap:Envelope>
            <soap:Header/>
            <soap:Body>
                <wsx:GetWeatherByPlaceName>
                    <wsx:ValorBody>
                        <xsl:value-of select="tool/name" />
                    </wsx:BodyValue>
                    <wsx:HeaderValue>
                        <xsl:value-of select="$header.content-type" />
                    </wsx:HeaderValue>
                    <wsx:QueryValue>
                        <xsl:value-of select="$queryParam.id" />
                    </wsx:QueryValue>
                </wsx:GetWeatherByPlaceName>
            </soap:Body>
        </soap:Envelope>
    </xsl:template>
</xsl:stylesheet>

Imaginando que el interceptor XSLT está insertado en el flujo, él transformará el cuerpo de esta petición:

POST /api?id=123
Header Content-Type:application/json
{
  "tool": {
    "name": "API Suite",
    "since": "2012"
  }
}

Y este será el nuevo cuerpo creado:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:wsx="http://www.webservicex.net">
    <soap:Header/>
    <soap:Body>
        <wsx:GetWeatherByPlaceName>
            <wsx:ValorBody>API Suite</wsx:ValorBody>
            <wsx:ValorHeader>application/json</wsx:ValorHeader>
            <wsx:ValorQuery>123</wsx:ValorQuery>
        </wsx:GetWeatherByPlaceName>
    </soap:Body>
</soap:Envelope>
Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]