Criterio XSLTransform

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Cosa

Il criterio di trasformazione XSL applica trasformazioni XSLT (Extensible Stylesheet Language Transformations) 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.

Esempi

Gli esempi riportati di seguito 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 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 l'origine su response (e le norme non siano associate 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.


Riferimento elemento

Configura una policy di trasformazione XSL utilizzando i seguenti elementi.

Nome campo Descrizione
Nome (obbligatorio) Il nome del criterio. I caratteri che puoi utilizzare nel nome sono limitati a: A-Z0-9._\-$ %. Tuttavia, la UI di gestione impone ulteriori restrizioni, come la rimozione automatica dei caratteri non alfanumerici.
Origine (facoltativo) Contiene il messaggio da cui devono essere estratte 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 la fonte non è presente, viene trattato 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.
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 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.

ResourceURL (obbligatorio) Il file XSLT da utilizzare per trasformare il messaggio.
Parametri (facoltativi) ignoreUnresolvedVariables (facoltativo)
Ignora eventuali errori di variabili non risolti 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 nelle norme è il nome del parametro XSL. Ad esempio, se inserisci il nome "uid", il tuo XSL potrebbe essere simile a questo: <xsl:param name="uid" select="''"/>).

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

Per un esempio e maggiori informazioni, consulta questo post della community.

ref (facoltativo)

Specifica il riferimento che recupera il valore da una variabile. Ad esempio, se un parametro "uid" deve ottenere il suo valore da una variabile denominata "authn.uid", l'elemento Parameter avrebbe questo aspetto: <Parameter name="uid" ref="authn.uid"/>

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

valore (facoltativo)

Puoi utilizzare questo attributo per codificare il valore del parametro.

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


Note sull'utilizzo

L'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 di 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

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 XSL Transform 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 XSL Transform policy is empty, then the deployment of the API proxy fails.
XSLInvalidResourceType If the resource type specified in the <ResourceURL> element of the XSL Transform policy is not of type xsl, then the deployment of the API proxy fails.

Argomenti correlati