Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Qué
La política XSLTransform aplica transformaciones de lenguaje de hoja de estilo extensible (XSLT) personalizadas a mensajes XML, lo que te permite transformar estos mensajes de XML a otro formato, como HTML o texto sin formato. Esta política se suele usar para integrar aplicaciones que admiten XML, pero que requieren formatos basados en XML diferentes para los mismos datos.
Esta política es una política extensible y su uso puede tener implicaciones en cuanto a costes o utilización, en función de tu licencia de Apigee. Para obtener información sobre los tipos de políticas y las implicaciones de uso, consulta Tipos de políticas.
Entradas
La política XSL acepta las siguientes entradas:
- Obligatorio. 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 XML que se va a transformar (normalmente, un mensaje de solicitud o de respuesta).
- (Opcional) Nombre de una variable que almacena el resultado.
- (Opcional) Parámetros que coincidan con los parámetros de la hoja de estilo XSL.
Procesador de análisis
Apigee se basa en el procesador Saxon XSLT y admite XSLT 1.0 y 2.0.
Elementos XSL no admitidos
La política XSL no admite los siguientes elementos XSL:
<xsl:include>
<xsl:import>
Ejemplos
En los siguientes ejemplos se muestra un flujo de transformación XSL:
Política de XSL -->
<XSL name="TransformXML"> <ResourceURL>xsl://my_transform.xsl</ResourceURL> <Source>request</Source> </XSL>
Política XSL sencilla. 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 quieres transformar está en la respuesta, la transformación no se producirá a menos que asignes el valor response
a <Source>
(y la política esté asociada al flujo de respuesta). Sin embargo, en este caso, el XML que se va a transformar está 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><Life></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></Life></xsl:text> </xsl:template> </xsl:stylesheet>
La hoja de estilo my_transform.xsl
a la que se hace referencia en la política. Ve al siguiente ejemplo para ver un ejemplo de 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 ejemplo en la solicitud (indicado en el elemento <Source>request</Source>
de la política en el primer ejemplo).
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 después de aplicar la hoja de estilo XSLT de estas muestras al mensaje XML.
Elemento <XSL>
Define una política de XSLTransform
.
Valor predeterminado | n/a |
¿Es obligatorio? | Obligatorio |
Tipo | Objeto complejo |
Elemento principal | n/a |
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. Solo puedes usar los siguientes caracteres en el nombre:
A-Z0-9._\-$ % . Sin embargo, la interfaz de usuario de Apigee aplica restricciones adicionales,
como la eliminación automática de caracteres que no sean alfanuméricos. |
Obligatorio | Cadena |
Referencia de elemento secundario
En esta sección se describen los elementos secundarios de <XSL>
.
<OutputVariable>
Variable que almacena el resultado de la transformación. Deberías configurar este elemento como variable personalizada y, a continuación, usar esa variable.
Valor predeterminado | n/a |
¿Es obligatorio? | Opcional |
Tipo | Cadena |
Elemento principal |
<XSL>
|
Elementos secundarios | Ninguno |
El valor de <OutputVariable>
no puede ser de tipo message, es decir, no puede ser message
, request
ni response
.
Para sustituir el contenido del mensaje por el resultado de la transformación, elimina este elemento. Por ejemplo, si vas a transformar un mensaje a HTML, no incluyas este elemento.
<Parameters>
Añade compatibilidad con el elemento <xsl:param>
en tus hojas de estilo. Define cada parámetro como un elemento secundario <Parameter>
de este elemento.
Valor predeterminado | n/a |
¿Es obligatorio? | Opcional |
Tipo | Matriz 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 los errores de variables sin resolver en las instrucciones del script XSLT. El valor predeterminado es false , lo que significa que, de forma predeterminada, la política generará 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 | Cadena |
El nombre del parámetro. Apigee compara el valor que ha definido aquí con el valor del atributo Por ejemplo, si introduce el nombre <xsl:param name="uid" select="''"/> |
ref |
Opcional | Cadena |
Apunta a una variable de contexto que contiene el valor del parámetro. Los valores de las variables de contexto Por ejemplo, si un parámetro <Parameter name="uid" ref="authn.uid"/> Si usas este atributo, no uses el atributo |
value |
Opcional | Cadena |
Especifica un valor codificado para el parámetro. Por ejemplo, si un parámetro llamado <Parameter name="answer" value="42"/> Si usas este atributo, no uses el atributo |
El parámetro obtiene su valor del atributo ref
o con un value
explícito.
Para ver un ejemplo y obtener más información, consulta ¿Cómo se deben usar los parámetros opcionales de la política de transformación XSL?.
<ResourceURL>
El archivo XSL que usa Apigee 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 | Cadena |
Elemento principal |
<XSL>
|
Elementos secundarios | Ninguno |
Por ejemplo:
<ResourceURL>xsl://SubscriberNumbers-Request.xsl</ResourceURL>
Para obtener más información, consulta el artículo sobre archivos de recursos.
<Source>
Especifica el mensaje que se va a transformar. Normalmente, este valor se asigna a request
o response
, en función de si el mensaje que se va a transformar es entrante o saliente.
Valor predeterminado | n/a |
¿Es obligatorio? | Opcional |
Tipo | Cadena |
Elemento principal |
<XSL>
|
Elementos secundarios | Ninguno |
El archivo XSL que define la transformación se define mediante <ResourceURL>
.
- Si falta la fuente, se trata como un mensaje simple. Por ejemplo:
<Source>message</Source>
- Si no se puede resolver la variable de origen o se resuelve en un tipo que no es de mensaje, se produce un error en el paso de transformación.
Referencia de errores
Errores de tiempo de ejecución
Estos errores pueden producirse cuando se ejecuta la política.
Código de fallo | Estado de HTTP | Causa | Solucionar |
---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
Este error se produce si la variable de mensaje o de cadena especificada en el elemento <Source> de la política XSLTransform está fuera del ámbito (no está disponible en el flujo específico en el que se está ejecutando la política) o no se puede resolver (no está definida).
|
build |
steps.xsl.XSLEvaluationFailed |
500 |
Este error se produce si la carga útil XML de entrada no está disponible o tiene un formato incorrecto, 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. La política XSLTransform puede fallar por muchos motivos. El motivo del error que se indica en el mensaje de error le proporcionará más información sobre la causa. | build |
Errores de implementación
Estos errores pueden producirse al implementar un proxy que contenga esta política.
Nombre del error | Causa | Solucionar |
---|---|---|
XSLEmptyResourceUrl |
Si el elemento <ResourceURL> de la política XSLTransform está vacío, se producirá un error en la implementación del proxy de API. |
build |
XSLInvalidResourceType |
Si el tipo de recurso especificado en el elemento <ResourceURL> de la política XSLTransform no es de tipo xsl , se producirá un error al desplegar el proxy de API. |
build |