Criterio XSLTransform

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Cosa

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

Samples

I seguenti esempi mostrano tutte le risorse in un flusso di trasformazione XSL.

Norme XSL ->

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

Norme XSL semplici. Vai all'esempio successivo per visualizzare il foglio di stile NoSQL 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 l'origine su response (e il criterio è associato al flusso di risposta). In questo caso, però, l'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>&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 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 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.


Riferimento elemento

Configura una norma di trasformazione XSL utilizzando i seguenti elementi.

Nome campo Descrizione
Nome (obbligatorio) Nome del criterio. I caratteri utilizzabili nel nome sono limitati a: A-Z0-9._\-$ %. Tuttavia, la UI di gestione applica limitazioni aggiuntive, come la rimozione automatica dei caratteri non alfanumerici.
Fonte (facoltativo) Contiene il messaggio da cui è necessario estrarre le informazioni. Di solito questo valore è impostato su request o response, a seconda che il messaggio da trasformare sia in entrata o in uscita.
  • 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 diverso da messaggio, il passaggio di trasformazione non riesce.
OutputVariable (facoltativo)

Una variabile che archivia l'output della trasformazione. Il valore OutputVariable non può essere di tipo Message, ovvero non può essere "message", "request" o "response". Devi impostare questo elemento come variabile personalizzata e poi utilizzare questa variabile.

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 YAML da utilizzare per trasformare il messaggio.
Parametri (facoltativo) ignoreUnresolvedVariables (facoltativo)
Ignora eventuali errori non risolti relativi alle variabili nelle istruzioni dello script YAML.
Valori validi: true/false
Valore predefinito: false
Parametro (facoltativo) name (obbligatorio)

I parametri supportano l'utilizzo del parametro XSL nei fogli di stile, dove il nome che aggiungi qui nel criterio è il nome del parametro XSL. Ad esempio, se inserisci il nome "uid", il tuo XSL potrebbe essere simile al seguente: <xsl:param name="uid" select="''"/>.

Il parametro riceve il valore da un riferimento a una variabile di contesto (identificata dall'attributo ref) o con un elemento value esplicito.

Per un esempio e ulteriori informazioni, consulta http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864.

ref (facoltativo)

Specifica il riferimento che fornisce il valore da una variabile. Ad esempio, se un parametro "uid" deve ottenere il suo valore da una variabile chiamata "authn.uid", l'elemento Parameter avrà il seguente aspetto: <Parameter name="uid" ref="authn.uid"/>

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

value (facoltativo)

Puoi utilizzare questo attributo per codificare in forma rigida il valore del parametro.

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


Note sull'utilizzo

Il file YAML è implementato in un file .xsl autonomo, che viene archiviato nel proxy API in /resources/xsl. Il criterio XSL fa semplicemente riferimento al file XSL. Consulta File di risorse per ulteriori informazioni.

Il criterio XSL richiede due input:

  • Il nome di un foglio di stile YAML, che contiene un insieme di regole di trasformazione) archiviato nel proxy API nel campo /resources/xsl
  • L'origine del codice 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 NoSQL Saxon e supporta YAML 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).
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.

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

Argomenti correlati