Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.
Cosa
Il criterio XSLTransform applica le trasformazioni del linguaggio XSLT (Extensible) del linguaggio del foglio di stile XSLT personalizzate ai messaggi XML, consentendoti di trasformarli da XML in un altro formato, come HTML o testo normale. Il criterio viene spesso utilizzato per integrare applicazioni che supportano XML, ma che richiedono formati basati su XML diversi per gli stessi dati.
Questo criterio è un criterio estendibile e il suo utilizzo potrebbe avere implicazioni in termini di costi o utilizzo, a seconda della licenza Apigee. Per informazioni sui tipi di criteri e sulle implicazioni di utilizzo, consulta Tipi di criteri.
Input
Il criterio XSL prende i seguenti input:
- (Obbligatorio) Il nome di un foglio di stile YAML, che contiene un set di regole di trasformazione archiviate nel proxy API in
/resources/xsl
. - (Obbligatorio) Il codice XML da trasformare (di solito un messaggio di richiesta o risposta).
- (Facoltativo) Il nome di una variabile che memorizza l'output.
- (Facoltativo) Parametri che corrispondono ai parametri nel foglio di stile XSL.
Processore di analisi
Apigee si basa sul processore YAML Saxon e supporta YAML 1.0 e 2.0.
Elementi XSL non supportati
Le norme XSL non supportano i seguenti elementi XSL:
<xsl:include>
<xsl:import>
Esempi
I seguenti esempi mostrano un flusso di trasformazione XSL:
Criteri XSL -->
<XSL name="TransformXML"> <ResourceURL>xsl://my_transform.xsl</ResourceURL> <Source>request</Source> </XSL>
Norma XSL semplice. Vai all'esempio successivo per visualizzare il foglio di stile YAML a cui viene fatto riferimento nel criterio (my_transform.xsl
). L'elemento <Source>
è importante.
Ad esempio, se l'XML che vuoi trasformare è nella risposta, la trasformazione non verrà eseguita, a meno che non imposti <Source>
su response
(e il criterio è associato al flusso di risposta). In questo caso, però, il codice XML da trasformare si trova nella richiesta.
foglio di stile YAML -->
<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 viene fatto 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 campione).
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 che il foglio di stile YAML di questi esempi viene applicato al messaggio XML.
<XSL>
elemento
Definisce un criterio XSLTransform
.
Valore predefinito | n/d |
Obbligatorio? | Obbligatorio |
Tipo | Oggetto complesso |
Elemento principale | n/d |
Elementi secondari |
<OutputVariable> <Parameters> <ResourceURL> <Source> |
L'elemento <XSL>
ha i seguenti attributi:
Attributo | Descrizione | Obbligatorio? | Tipo |
---|---|---|---|
name |
Nome del criterio. I caratteri che puoi usare nel nome sono limitati a:
A-Z0-9._\-$ % . Tuttavia, l'interfaccia utente di Apigee applica limitazioni aggiuntive, come la rimozione automatica dei caratteri non alfanumerici. |
Obbligatorio | String |
Riferimento elemento secondario
In questa sezione vengono descritti gli elementi secondari di <XSL>
.
<OutputVariable>
Una variabile che archivia l'output della trasformazione. Devi impostare questo elemento come variabile personalizzata e quindi utilizzare questa variabile.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | String |
Elemento principale |
<XSL>
|
Elementi secondari | Nessuna |
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 per l'elemento <xsl:param>
nei fogli di stile. Definisci
ogni parametro come elemento secondario <Parameter>
di questo elemento.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Array di elementi <Parameter> |
Elemento principale |
<XSL>
|
Elementi secondari |
<Parameter> |
L'elemento <Parameters>
ha i seguenti attributi:
Attributo | Descrizione | Obbligatorio? | Tipo |
---|---|---|---|
ignoreUnresolvedVariables |
Determina se il criterio ignora eventuali errori relativi alle variabili non risolti nelle istruzioni dello script YAML. Il valore predefinito è false , il che significa che, per impostazione predefinita, il criterio genera errori se rileva variabili non risolte. |
Facoltativo | Booleano |
<Parameter>
Definisce un parametro nell'elemento <Parameters>
.
Valore predefinito | n/d |
Obbligatorio? | Facoltativo |
Tipo | Oggetto complesso |
Elemento principale |
<Parameters>
|
Elementi secondari | Nessuna |
L'elemento <Parameter>
ha i seguenti attributi:
Attributo | Obbligatorio? | Tipo | Descrizione |
---|---|---|---|
name |
Obbligatorio | String |
Il nome del parametro. Apigee corrisponde al valore impostato qui con il valore dell'attributo Ad esempio, se inserisci il nome <xsl:param name="uid" select="''"/> |
ref |
Facoltativo | String |
Punta a una variabile di contesto contenente il valore del parametro. I valori delle
variabili di contesto Ad esempio, se un
parametro <Parameter name="uid" ref="authn.uid"/> Se utilizzi questo attributo, non usare l'attributo |
value |
Facoltativo | String |
Specifica un valore impostato come hardcoded per il parametro. Ad esempio, se un parametro denominato
<Parameter name="answer" value="42"/> Se utilizzi questo attributo, non usare l'attributo |
Il parametro riceve il valore dall'attributo ref
o con un valore value
esplicito.
Per un esempio e ulteriori informazioni, consulta Come devono essere utilizzati i parametri facoltativi nel criterio XSL Transform?.
<ResourceURL>
Il file XSL che Apigee utilizza 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/d |
Obbligatorio? | Obbligatorio |
Tipo | String |
Elemento principale |
<XSL>
|
Elementi secondari | Nessuna |
Ad esempio:
<ResourceURL>xsl://SubscriberNumbers-Request.xsl</ResourceURL>
Per ulteriori informazioni, consulta i file di risorse.
<Source>
Specifica il messaggio che viene 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/d |
Obbligatorio? | Facoltativo |
Tipo | String |
Elemento principale |
<XSL>
|
Elementi secondari | Nessuna |
Il file XSL che definisce la trasformazione è definito dal parametro <ResourceURL>
.
- Se l'origine non è presente, viene considerata come un semplice messaggio. Ad esempio:
<Source>message</Source>
- Se la variabile di origine non può essere risolta o se si risolve in un tipo non di messaggio, il passaggio di trasformazione non va a buon fine.
Messaggi di errore
Errori di runtime
Questi errori possono verificarsi quando il criterio viene eseguito.
Codice di errore | Stato HTTP | Causa | Correggi |
---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
Questo errore si verifica se il messaggio o la variabile di stringa specificata nell'elemento <Source> del criterio XSLTransform non rientra nell'ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) o se non può essere risolto (non è definito).
|
build |
steps.xsl.XSLEvaluationFailed |
500 |
Questo errore si verifica se il payload XML di input non è disponibile/non è in formato corretto oppure se il criterio XSLTransform ha esito negativo o non è in grado di trasformare il file XML di input in base alle regole di trasformazione fornite nel file XSL. L'errore del criterio XSLTransform può essere causato da molte cause diverse. 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 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 riesce. |
build |