Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.
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><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 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 Por ejemplo, si ingresas un nombre de <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 Por ejemplo, si un parámetro <Parameter name="uid" ref="authn.uid"/> Si usas este atributo, no uses el atributo |
value |
Opcional | String |
Especifica un valor hard-coded 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 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).
|
build |
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. | build |
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. |
build |
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. |
build |