Criterio XSLTransform

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Il criterio XSLTransform applica trasformazioni personalizzate del linguaggio di fogli di stile estensibile (XSLT) ai messaggi XML, consentendoti di trasformarli da XML a un altro formato, ad esempio HTML o testo normale. Il criterio viene spesso utilizzato per integrare applicazioni che supportano XML, ma che richiedono formati diversi basati su XML per gli stessi dati.

Queste norme sono estendibili e il loro utilizzo potrebbe avere implicazioni in termini di costi o utilizzo, a seconda della licenza Apigee. Per informazioni sui tipi di policy e sulle implicazioni di utilizzo, consulta Tipi di policy.

Input

Le norme XSL accettano i seguenti input:

  • (Obbligatorio) Il nome di un foglio di stile XSLT, che contiene un insieme di regole di trasformazione archiviate nel proxy API in /resources/xsl.
  • (Obbligatorio) Il file XML da trasformare (in genere un messaggio di richiesta o risposta).
  • (Facoltativo) Il nome di una variabile che memorizza l'output.
  • (Facoltativo) Parametri che corrispondono a quelli nel foglio di stile XSL.

Processore di analisi

Apigee si basa sul processore Saxon XSLT e supporta XSLT 1.0 e 2.0.

Elementi XSL non supportati

Il criterio XSL non supporta i seguenti elementi XSL:

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

Esempi

Gli esempi riportati di seguito mostrano un flusso di trasformazione XSL:

Policy XSL -->

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

Policy XSL semplice. Vai all'esempio successivo per visualizzare il foglio di stile XSLT a cui viene fatto riferimento nelle norme (my_transform.xsl). L'elemento <Source> è importante. Ad esempio, se l'XML che vuoi trasformare si trova nella risposta, la trasformazione non avverrà a meno che tu non imposti <Source> su response (e la norma sia allegata al flusso di risposta). Ma in questo caso, l'XML da trasformare si trova nella richiesta.

XSLT stylesheet -->

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

Il foglio di stile my_transform.xsl a cui viene fatto riferimento nella policy. Vai all'esempio successivo per vedere un esempio di messaggio XML in entrata.

Messaggio -->

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

Messaggio di esempio nella richiesta (indicato nell'elemento <Source>request</Source> delle norme nel primo esempio).

Messaggio trasformato

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

Il messaggio trasformato dopo l'applicazione del foglio di stile XSLT di questi esempi al messaggio XML.

Elemento <XSL>

Definisce una policy XSLTransform.

Valore predefinito n/a
Obbligatorio? Obbligatorio
Tipo Oggetto complesso
Elemento principale n/a
Elementi secondari <OutputVariable>
<Parameters>
<ResourceURL>
<Source>

L'elemento <XSL> prevede i seguenti attributi:

Attributo Descrizione Obbligatorio? Tipo
name Il nome del criterio. I caratteri che puoi utilizzare nel nome sono limitati a: A-Z0-9._\-$ %. Tuttavia, la UI Apigee impone ulteriori restrizioni, come la rimozione automatica dei caratteri non alfanumerici. Obbligatorio Stringa

Riferimento all'elemento secondario

Questa sezione descrive gli elementi secondari di <XSL>.

<OutputVariable>

Una variabile che memorizza l'output della trasformazione. Devi impostare questo elemento come variabile personalizzata e poi utilizzarla.

Valore predefinito n/a
Obbligatorio? Facoltativo
Tipo Stringa
Elemento principale <XSL>
Elementi secondari Nessuno

Il valore di <OutputVariable> non può essere di tipo messaggio, ovvero non può essere message, request o response.

Per sostituire i contenuti del messaggio con l'output della trasformazione, elimina questo elemento. Ad esempio, se stai trasformando un messaggio in HTML, non includere questo elemento.

<Parameters>

Aggiunge il supporto dell'elemento <xsl:param> nei fogli di stile. Definisci ogni parametro come elemento secondario <Parameter> di questo elemento.

Valore predefinito n/a
Obbligatorio? Facoltativo
Tipo Array di elementi <Parameter>
Elemento principale <XSL>
Elementi secondari <Parameter>

L'elemento <Parameters> prevede i seguenti attributi:

Attributo Descrizione Obbligatorio? Tipo
ignoreUnresolvedVariables Determina se il criterio ignora eventuali errori di variabili non risolti nelle istruzioni dello script XSLT. Il valore predefinito è false, il che significa che, per impostazione predefinita, il criterio genererà errori se rileva variabili non risolte. Facoltativo Booleano

<Parameter>

Definisce un parametro nell'elemento <Parameters>.

Valore predefinito n/a
Obbligatorio? Facoltativo
Tipo Oggetto complesso
Elemento principale <Parameters>
Elementi secondari Nessuno

L'elemento <Parameter> prevede i seguenti attributi:

Attributo Obbligatorio? Tipo Descrizione
name Obbligatorio Stringa

Il nome del parametro. Apigee confronta il valore impostato qui con il valore dell'attributo name in un elemento <xsl:param> nel foglio di stile.

Ad esempio, se inserisci il nome uid, il tuo XSL potrebbe avere un aspetto simile al seguente:

<xsl:param name="uid" select="''"/>
ref Facoltativo Stringa

Punta a una variabile di contesto che contiene il valore del parametro. I valori delle variabili di contesto ref devono essere impostati prima della valutazione di queste norme.

Ad esempio, se un parametro uid deve ottenere il suo valore da una variabile denominata authn.uid, l'elemento <Parameter> avrebbe il seguente aspetto:

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

Se utilizzi questo attributo, non utilizzare l'attributo value.

value Facoltativo Stringa

Specifica un valore hardcoded per il parametro. Ad esempio, se un parametro denominato answer deve avere il valore 42, l'elemento <Parameter> avrà il seguente aspetto:

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

Se utilizzi questo attributo, non utilizzare l'attributo ref.

Il parametro ottiene il suo valore dall'attributo ref o con un value esplicito.

Per un esempio e maggiori informazioni, vedi Come devono essere utilizzati i parametri facoltativi nella policy di trasformazione XSL?.

<ResourceURL>

Il file XSL utilizzato da Apigee per trasformare il messaggio. Il valore di questo elemento è il nome del foglio di stile XSL memorizzato nel proxy API in /resources/xsl.

Valore predefinito n/a
Obbligatorio? Obbligatorio
Tipo Stringa
Elemento principale <XSL>
Elementi secondari Nessuno

Ad esempio:

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

Per saperne di più, consulta File di risorse.

<Source>

Specifica il messaggio trasformato. Di solito questo valore è impostato su request o response, a seconda che il messaggio da trasformare sia in entrata o in uscita.

Valore predefinito n/a
Obbligatorio? Facoltativo
Tipo Stringa
Elemento principale <XSL>
Elementi secondari Nessuno

Il file XSL che definisce la trasformazione è definito da <ResourceURL>.

  • Se la fonte non è presente, viene trattata come un semplice messaggio. Ad esempio, <Source>message</Source>
  • Se la variabile di origine non può essere risolta o viene risolta in un tipo non di messaggio, il passaggio di trasformazione non va a buon fine.

Messaggi di errore

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.xsl.XSLSourceMessageNotAvailable 500 This error occurs if the message or string variable specified in the <Source> element of the XSLTransform policy is either out of scope (not available in the specific flow where the policy is being executed) or can't be resolved (is not defined).
steps.xsl.XSLEvaluationFailed 500 This error occurs if the input XML payload is unavailable/malformed or the XSLTransform policy fails/is unable to transform the input XML file based on the transformation rules provided in the XSL file. There could be many different causes for the XSLTransform policy to fail. The reason for failure in the error message will provide more information on the cause.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
XSLEmptyResourceUrl If the <ResourceURL> element in the XSLTransform policy is empty, then the deployment of the API proxy fails.
XSLInvalidResourceType If the resource type specified in the <ResourceURL> element of the XSLTransform policy is not of type xsl, then the deployment of the API proxy fails.

Argomenti correlati