Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Cosa
La policy di trasformazione XSL applica trasformazioni personalizzate del linguaggio di fogli di stile estensibile (XSLT) ai messaggi XML, consentendoti di trasformarli da XML a un altro formato, come XML, HTML o testo normale. La policy viene spesso utilizzata per integrare applicazioni che supportano XML, ma che richiedono formati XML diversi per gli stessi dati.
Esempi
I seguenti esempi mostrano tutte le risorse in 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 fa riferimento la
policy (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 non imposti l'origine su response (e la policy sia collegata al
flusso di risposta). In questo caso, l'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 fa riferimento la policy. Vai all'esempio successivo
per visualizzare 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> della policy 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 che il foglio di stile XSLT di questi esempi è stato applicato al messaggio XML messaggio.
Riferimento elemento
Configura una policy di trasformazione XSL utilizzando i seguenti elementi.
| Nome campo | Descrizione | |||
|---|---|---|---|---|
| Nome (obbligatorio) |
Nome della policy. I caratteri che puoi utilizzare nel nome sono limitati a:
A-Z0-9._\-$ %. Tuttavia, l'interfaccia utente di gestione applica ulteriori limitazioni,
ad esempio la rimozione automatica dei caratteri non alfanumerici.
|
|||
| Origine (facoltativo) |
Contiene il messaggio da cui devono essere estratte le informazioni. In genere, questo valore è
impostato su request o response, a seconda che il messaggio da
trasformare sia in entrata o in uscita.
|
|||
| OutputVariable (facoltativo) |
Una variabile che memorizza l'output della trasformazione. OutputVariable non può essere di tipo Message, ovvero non può essere "message", "request" o "response". Devi impostare questo elemento come variabile personalizzata e poi utilizzarla. Per sostituire il contenuto del messaggio con l'output della trasformazione, elimina questo elemento. Ad esempio, se stai trasformando un messaggio in HTML, non includere questo elemento. |
|||
| ResourceURL (obbligatorio) | Il file XSLT da utilizzare per trasformare il messaggio. | |||
| Parametri (facoltativo) | ignoreUnresolvedVariables (facoltativo) |
Ignora eventuali errori di variabili non risolte nelle istruzioni dello script XSLT.
Valori validi: true/false
Valore predefinito: false
|
||
| Parametro (facoltativo) | name (obbligatorio) |
I parametri supportano l'utilizzo di XSL param nei fogli di stile, dove il nome che aggiungi
qui nella policy è il nome di XSL param. Ad esempio, se inserisci il nome
"uid", il tuo XSL potrebbe essere simile al seguente: Il parametro riceve il suo valore da un riferimento a una variabile di contesto (identificata dall'
attributo Per un esempio e ulteriori informazioni, consulta il post della community. |
||
| ref (facoltativo) |
Specifica il riferimento che recupera il valore da una variabile. Ad esempio, se un
parametro "uid" deve recuperare il suo valore da una variabile denominata "authn.uid", l'elemento Parameter
sarà simile al seguente: Se utilizzi questo attributo, non utilizzare l'attributo value. |
|||
| value (facoltativo) |
Puoi utilizzare questo attributo per codificare il valore del parametro. Se utilizzi questo attributo, non utilizzare l'attributo ref. |
|||
Note sull'utilizzo
XSLT viene implementato in un file .xsl autonomo, archiviato nel proxy API
in /resources/xsl. La policy XSL fa semplicemente riferimento al file XSL. Per saperne di più, consulta
File di risorse.
La policy XSL richiede due input:
- Il nome di un foglio di stile XSLT, che contiene un insieme di regole di trasformazione) archiviato nel
proxy API in
/resources/xsl - L'origine dell'XML da trasformare (in genere un messaggio di richiesta o risposta)
<xsl:include> e <xsl:import> non sono supportati.
Apigee Edge si basa sul processore Saxon XSLT e supporta XSLT 1.0 e 2.0.
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 la variabile del messaggio o della stringa specificata nell'elemento <Source> del criterio XSL Transform non rientra nell'ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) o non può essere risolta (non è definita).
|
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 XSL Transform è vuoto, il deployment del proxy API non va a buon fine. |
build |
XSLInvalidResourceType |
Se il tipo di risorsa specificato nell'elemento <ResourceURL> del criterio XSL Transform non è di tipo xsl, il deployment del proxy API non riesce. |
build |