Política XSLTransform

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Qué

La política de transformación de XSL aplica transformaciones de lenguaje de hoja de estilo extensible (XSLT) personalizadas a mensajes XML, lo que te permite transformarlos del formato XML a otro formato, como XML, HTML o texto sin formato. La política se usa a menudo con el fin de integrar aplicaciones que admiten el archivo XML, pero que requieren diferentes formatos XML para los mismos datos.

Ejemplos

En los siguientes ejemplos, se muestran todos los recursos en un flujo de transformación de XSL.

Política XSL ->

<XSL name="TransformXML">
  <ResourceURL>xsl://my_transform.xsl</ResourceURL>
  <Source>request</Source>
</XSL>

Política XSL simple. Ve al siguiente ejemplo para ver la hoja de estilo XSLT a la que se hace referencia en la política (my_transform.xsl). El elemento <Source> es importante. Por ejemplo, si el XML que deseas transformar está en la respuesta, no se producirá la transformación, a menos que establezcas el origen en response (y la política se adjunte al flujo de respuesta). Sin embargo, en este caso, el XML que se va a transformar se encuentra en la solicitud.

Hoja de estilo XSLT ->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="text"/>
  <xsl:variable name="newline">
  <xsl:text>
  </xsl:text>
  </xsl:variable>
  <xsl:template match="/">
  <xsl:text>&lt;Life&gt;</xsl:text>
    <xsl:value-of select="$newline"/>
    <xsl:text>Here are the odd-numbered items from the list:</xsl:text>
    <xsl:value-of select="$newline"/>
    <xsl:for-each select="list/listitem">
      <xsl:if test="(position() mod 2) = 1">
        <xsl:number format="1. "/>
        <xsl:value-of select="."/>
        <xsl:value-of select="$newline"/>
      </xsl:if>
    </xsl:for-each>
  <xsl:text>&lt;/Life&gt;</xsl:text>
</xsl:template>
</xsl:stylesheet>

La hoja de estilo my_transform.xsl a la que se hace referencia en la política. Ve a la siguiente muestra para ver un ejemplo de un mensaje XML entrante.

Mensaje ->

<?xml version="1.0"?>
<list>
  <title>A few of my favorite albums</title>
  <listitem>A Love Supreme</listitem>
  <listitem>Beat Crazy</listitem>
  <listitem>Here Come the Warm Jets</listitem>
  <listitem>Kind of Blue</listitem>
  <listitem>London Calling</listitem>
  <listitem>Remain in Light</listitem>
  <listitem>The Joshua Tree</listitem>
  <listitem>The Indestructible Beat of Soweto</listitem>
</list>

Mensaje de muestra en la solicitud (que se indicó en el elemento <Source>request</Source> de la política en la primera muestra).

Mensaje transformado

<Life>
Here are the odd-numbered items from the list:
1. A Love Supreme
3. Here Come the Warm Jets
5. London Calling
7. The Joshua Tree
</Life>

El mensaje transformado que aparece después de la hoja de estilo XSLT de estas muestras se aplica al mensaje XML.


Referencia de elementos

Configura una política de transformación XSL mediante los siguientes elementos:

Nombre del campo Descripción
Nombre (obligatorio) Nombre de la política. Los caracteres que puede usar en el nombre están restringidos a: A-Z0-9._\-$ %. Sin embargo, la IU de administración aplica restricciones adicionales, como quitar automáticamente los caracteres que no son alfanuméricos.
Fuente (opcional) Contiene el mensaje del cual se debe extraer la información. Por lo general, este valor se establece en request o response, según si el mensaje que se va a transformar es entrante o saliente.
  • Si falta la fuente, se trata como un mensaje simple. Por ejemplo, <Source>mensaje</Source>
  • Si la variable de origen no se puede resolver o se resuelve en un tipo que no es de mensaje, el paso de transformación fallará.
OutputVariable (opcional)

Una variable que almacena el resultado de la transformación. La variable OutputVariable no puede ser de tipo de mensaje, es decir, no puede ser “mensaje”, “solicitud” ni “respuesta”. Debes configurar este elemento para que sea una variable personalizada y, luego, consumirla.

Para reemplazar el contenido del mensaje con el resultado de la transformación, borra este elemento. Por ejemplo, si transformas un mensaje en HTML, no incluyas este elemento.

ResourceURL (obligatorio) El archivo XSLT que se usa para transformar el mensaje.
Parámetros (opcional) ignoreUnresolvedVariables (opcional)
Ignora los errores variables no resueltos en las instrucciones de la secuencia de comandos de XSLT.
Valores válidos: verdadero/falso
Valor predeterminado: falso
Parámetro (opcional) Nombre (obligatorio)

Los parámetros admiten el uso del parámetro XSL en las hojas de estilo, en el que el nombre que agregas aquí en la política es el nombre del parámetro XSL. Por ejemplo, si ingresas un nombre “uid”, tu XSL podría verse de la siguiente manera: <xsl:param name="uid" select="''"/>).

El parámetro obtiene su valor de una referencia a una variable de contexto (identificada por el atributo ref) o de un value explícito.

Para ver un ejemplo y más información, consulta http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864.

ref (opcional)

Especifica la referencia que origina el valor de una variable. Por ejemplo, si un parámetro “uid” necesita obtener su valor de una variable llamada “authn.uid”, el elemento de parámetro se vería de la siguiente manera: <Parameter name="uid" ref="authn.uid"/>

Si usa este atributo, no use el atributo de valor.

Valor (opcional)

Puedes usar este atributo para codificar el valor del parámetro de forma hard-coded.

Si usas este atributo, no uses el atributo ref.


Notas de uso

La hoja de estilo XSLT se implementa en un archivo .xsl independiente, que se almacena en el proxy de API, en /resources/xsl. La política XSL solo hace referencia al archivo XSL. Consulta Archivos de recursos para obtener más información.

La política XSL requiere dos entradas:

  • El nombre de una hoja de estilo XSLT, que contiene un conjunto de reglas de transformación, almacenada en el proxy de API en /resources/xsl
  • La fuente del XML que se transformará (por lo general, un mensaje de solicitud o respuesta)

<xsl:include> y <xsl:import> no son compatibles.

Apigee Edge se basa en el procesador XSLT de Saxon y es compatible con XSLT 1.0 y 2.0.


Referencia de errores

Errores de entorno de ejecución

Estos errores pueden producirse cuando se ejecuta la política.

Código de falla Estado de HTTP Causa Corregir
steps.xsl.XSLSourceMessageNotAvailable 500 Este error se produce si el mensaje o la variable de string especificada en el elemento <Source> de la política de transformación XSL está fuera del alcance (no está disponible en el flujo específico en el que se ejecuta la política) o no se puede resolver (no está definido).
steps.xsl.XSLEvaluationFailed 500 Este error se produce si la carga útil del archivo XML de entrada no está disponible o tiene una forma incorrecta o si la política XSLTransform falla o no puede transformar el archivo XML de entrada según las reglas de transformación proporcionadas en el archivo XSL. Puede haber muchas causas diferentes por las cuales la política XSLTransform puede fallar. El motivo de la falla en el mensaje de error proporcionará más información sobre la causa.

Errores en la implementación

Estos errores pueden generarse cuando implementas un proxy que contiene esta política.

Nombre del error Causa Corregir
XSLEmptyResourceUrl Si el elemento <ResourceURL> en la política de transformación de XSL está vacío, la implementación del proxy de API falla.
XSLInvalidResourceType Si el tipo de recurso especificado en el elemento <ResourceURL> de la política de transformación XSL no es del tipo xsl, la implementación del proxy de la API fallará.

Temas relacionados