Política XSLTransform

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

ícono de política

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 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.

Esta política es una política extensible, y el uso de esta política puede tener implicaciones de costo o uso, según tu licencia de Apigee. Para obtener información sobre los tipos de políticas y sus implicaciones de uso, consulta Tipos de políticas.

Entradas

La política de XSL incluye las siguientes entradas:

  • (Obligatorio) El nombre de una hoja de estilo XSLT, que contiene un conjunto de reglas de transformación almacenadas en el proxy de API en /resources/xsl.
  • (Obligatorio) El archivo XML que se transformará (por lo general, un mensaje de solicitud o respuesta).
  • El nombre de una variable que almacenará el resultado (opcional).
  • (Opcional) Parámetros que coinciden con los parámetros de la hoja de estilo XSL.

Procesador de análisis

Apigee se basa en el procesador XSLT de Saxon y admite XSLT 1.0 y 2.0.

Elementos XSL no compatibles

La política de XSL no es compatible con los siguientes elementos XSL:

  • <xsl:include>
  • <xsl:import>

Muestras

En los siguientes ejemplos, se muestra un flujo de transformación 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, la transformación no se producirá a menos que establezcas <Source> en response (y la política se adjunta 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.

Elemento <XSL>

Define una política XSLTransform.

Valor predeterminado n/a
¿Es obligatorio? Obligatorio
Tipo Objeto complejo
Elemento principal No disponible
Elementos secundarios <OutputVariable>
<Parameters>
<ResourceURL>
<Source>

El elemento <XSL> tiene los siguientes atributos:

Atributo Descripción ¿Es obligatorio? Tipo
name 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 Apigee aplica restricciones adicionales, como quitar automáticamente los caracteres que no son alfanuméricos. Obligatorio String

Referencia del elemento secundario

En esta sección, se describen los elementos secundarios de <XSL>.

<OutputVariable>

Una variable que almacena el resultado de la transformación. Debes configurar este elemento para que sea una variable personalizada y, luego, consumirla.

Valor predeterminado n/a
¿Es obligatorio? Opcional
Tipo String
Elemento principal <XSL>
Elementos secundarios Ninguno

El valor de <OutputVariable> no puede ser un tipo de message. es decir, no puede ser message, request ni response.

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.

<Parameters>

Agrega compatibilidad con el elemento <xsl:param> en las hojas de estilo. Define cada parámetro como un elemento secundario <Parameter> de este elemento.

Valor predeterminado n/a
¿Es obligatorio? Opcional
Tipo Arreglo de elementos <Parameter>
Elemento principal <XSL>
Elementos secundarios <Parameter>

El elemento <Parameters> tiene los siguientes atributos:

Atributo Descripción ¿Es obligatorio? Tipo
ignoreUnresolvedVariables Determina si la política ignora cualquier error de variable no resuelto en las instrucciones de la secuencia de comandos de XSLT. El valor predeterminado es false, lo que significa que, de forma predeterminada, la política arrojará errores si encuentra variables sin resolver. Opcional Booleano

<Parameter>

Define un parámetro en el elemento <Parameters>.

Valor predeterminado n/a
¿Es obligatorio? Opcional
Tipo Objeto complejo
Elemento principal <Parameters>
Elementos secundarios Ninguno

El elemento <Parameter> tiene los siguientes atributos:

Atributo ¿Es obligatorio? Tipo Descripción
name Obligatorio String

El nombre del parámetro. Apigee hace coincidir el valor que estableces aquí con el valor del atributo name en un elemento <xsl:param> de la hoja de estilo.

Por ejemplo, si ingresas un nombre de uid, tu XSL podría tener el siguiente aspecto:

<xsl:param name="uid" select="''"/>
ref Opcional String

Apunta a una variable de contexto que contiene el valor del parámetro. Los valores para las variables de contexto ref deben establecerse antes de la evaluación de esta política.

Por ejemplo, si un parámetro uid necesita obtener su valor de una variable llamada authn.uid, el elemento <Parameter> se vería de la siguiente manera:

<Parameter name="uid" ref="authn.uid"/>

Si usas este atributo, no uses el atributo value.

value Opcional String

Especifica un valor hard-coded para el parámetro. Por ejemplo, si un parámetro llamado answer debe tener el valor 42, el elemento <Parameter> se vería de la siguiente manera:

<Parameter name="answer" value="42"/>

Si usas este atributo, no uses el atributo ref.

El parámetro obtiene su valor a partir del atributo ref o con un value explícito.

Para obtener un ejemplo y más información, consulta ¿Cómo se deben usar los parámetros opcionales en la política de transformación XSL?

<ResourceURL>

El archivo XSL que Apigee usa para transformar el mensaje. El valor de este elemento es el nombre de la hoja de estilo XSL almacenada en el proxy de API en /resources/xsl.

Valor predeterminado n/a
¿Es obligatorio? Obligatorio
Tipo String
Elemento principal <XSL>
Elementos secundarios Ninguno

Por ejemplo:

<ResourceURL>xsl://SubscriberNumbers-Request.xsl</ResourceURL>

Para obtener más información, consulta Archivos de recursos.

<Source>

Especifica el mensaje que se transforma. 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.

Valor predeterminado n/a
¿Es obligatorio? Opcional
Tipo String
Elemento principal <XSL>
Elementos secundarios Ninguno

El archivo XSL que define la transformación se define con <ResourceURL>.

  • Si falta la fuente, se trata como un mensaje simple. Por ejemplo:<Source>message</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á.

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 XSLTransform está fuera del alcance (no está disponible en el flujo específico donde 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 XSLTransform 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 XSLTransform no es del tipo xsl, la implementación del proxy de API falla.

Temas relacionados