Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.
Cosa
Il criterio XSLTransform applica trasformazioni del linguaggio dei fogli di stile Extensible (XSLT) personalizzate ai messaggi XML, consentendoti di trasformarli da XML in un altro formato, ad esempio HTML o testo normale. Il criterio viene spesso utilizzato per integrare applicazioni che supportano XML, ma che richiedono diversi formati basati su XML per gli stessi dati.
Questo criterio è un criterio estensibile e il suo utilizzo potrebbe comportare implicazioni in termini di costi o utilizzo, a seconda della licenza Apigee. Per informazioni sui tipi di criteri e sulle implicazioni per l'utilizzo, consulta Tipi di criteri.
Input
Il criterio XSL accetta i seguenti input:
- (Obbligatorio) Il nome di uno stile XSLT, che contiene un insieme di
regole di trasformazione memorizzate nel proxy API in
/resources/xsl
. - (Obbligatorio) Il codice XML da trasformare (in genere un messaggio di richiesta o risposta).
- (Facoltativo) Il nome di una variabile che memorizza l'output.
- (Facoltativo) Parametri corrispondenti a quelli nello 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:
Criterio XSL -->
<XSL name="TransformXML"> <ResourceURL>xsl://my_transform.xsl</ResourceURL> <Source>request</Source> </XSL>
Criterio XSL semplice. Vai all'esempio successivo per vedere lo stile XSLT a cui viene fatto riferimento nel
criterio (my_transform.xsl
). L'elemento <Source>
è importante.
Ad esempio, se il file XML che vuoi trasformare è nella risposta, la trasformazione non verrà eseguita
a meno che non imposti <Source>
su response
(e il criterio sia associato al
flusso di risposta). Tuttavia, in questo caso, il codice XML da trasformare si trova nella richiesta.
Foglio di stile 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>
Il foglio di stile my_transform.xsl
a cui si fa riferimento nel criterio. Vai all'esempio successivo per vedere un esempio di messaggio XML in arrivo.
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>
del criterio 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 un criterio 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 |
Nome del criterio. I caratteri che puoi utilizzare nel nome sono limitati a:
A-Z0-9._\-$ % . Tuttavia, l'interfaccia utente di Apigee applica ulteriori limitazioni, 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 un tipo di 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 ciascun 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 irrisolti nelle istruzioni dello script XSLT. Il valore predefinito è false , il che significa che, per impostazione predefinita,
il criterio restituirà 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 abbina il valore impostato qui al valore dell'attributo Ad esempio, se inserisci un nome di
<xsl:param name="uid" select="''"/> |
ref |
Facoltativo | Stringa |
Indica una variabile di contesto che contiene il valore del parametro. I valori per le variabili di contesto
Ad esempio, se un
parametro <Parameter name="uid" ref="authn.uid"/> Se utilizzi questo attributo, non utilizzare l'attributo |
value |
Facoltativo | Stringa |
Specifica un valore hardcoded per il parametro. Ad esempio, se un parametro denominato
<Parameter name="answer" value="42"/> Se utilizzi questo attributo, non utilizzare l'attributo |
Il parametro ottiene il valore dall'attributo ref
o con un value
esplicito.
Per un esempio e ulteriori informazioni, consulta Come devono essere utilizzati i parametri facoltativi nel criterio di trasformazione XSL?.
<ResourceURL>
Il file XSL utilizzato da Apigee per trasformare il messaggio. Il valore di questo elemento è il
nome dello 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 ulteriori informazioni, consulta i file di risorse.
<Source>
Specifica il messaggio da trasformare. In genere 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 dall'elemento <ResourceURL>
.
- Se l'origine non è presente, viene trattata come un semplice messaggio. Ad esempio:
<Source>message</Source>
- Se la variabile di origine non può essere risolta o si risolve in un tipo diverso da messaggio, il passaggio di trasformazione non va a buon fine.
Messaggi di errore
Errori di runtime
Questi errori possono verificarsi durante l'esecuzione del criterio.
Codice guasto | Stato HTTP | Causa | Correggi |
---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
Questo errore si verifica se il messaggio o la variabile stringa specificata nell'elemento <Source> del
criterio XSLTransform non rientra nell'ambito (non è disponibile nel flusso specifico in cui viene eseguito il
criterio) o non può essere risolto (non è definito).
|
build |
steps.xsl.XSLEvaluationFailed |
500 |
Questo errore si verifica se il payload XML di input non è disponibile/non è valido o se il criterio XSLTransform non riesce/non è in grado di trasformare il file XML di input in base alle regole di trasformazione fornite nel file XSL. Il mancato rispetto del criterio XSLTransform può essere causato da molti fattori diversi. Il motivo dell'errore nel messaggio di errore fornirà ulteriori informazioni sulla causa. | build |
Errori di deployment
Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.
Nome dell'errore | Causa | Correggi |
---|---|---|
XSLEmptyResourceUrl |
Se l'elemento <ResourceURL> nel criterio XSLTransform è vuoto, il deployment del proxy API non va a buon fine. |
build |
XSLInvalidResourceType |
Se il tipo di risorsa specificato nell'elemento <ResourceURL> del criterio XSLTransform
non è di tipo xsl , il deployment del proxy API non va a buon fine. |
build |