Règle XSLTransform

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Quoi

La règle de transformation XSL applique des Transformations de langage de feuille de style Extensible (XSLT) personnalisées aux messages XML, ce qui vous permet de les convertir de XML à un autre format, tel que XML, HTML ou texte brut. Elle est souvent utilisée pour intégrer des applications compatibles avec XML, mais qui nécessitent des formats XML différents pour les mêmes données.

Samples

Les exemples suivants illustrent toutes les ressources d'un flux de transformation XSL.

Règle XSL ->

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

Règle XSL simple. Passez à l'exemple suivant pour voir la feuille de style XSLT référencée dans la règle (my_transform.xsl). L'élément <Source> est important. Par exemple, si le XML que vous souhaitez transformer se trouve dans la réponse, la transformation ne se produira que si vous définissez la source sur response (et que la règle est associée au flux de réponse). Cependant, dans le cas présent, le XML à transformer se trouve dans la requête.

Feuille de style 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>&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>

Feuille de style my_transform.xsl référencée dans la règle. Passez à l'exemple suivant pour voir un exemple de message XML entrant.

Message ->

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

Exemple de message dans la requête (indiqué dans l'élément <Source>request</Source> de la règle dans le premier exemple).

Message transformé

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

Le message transformé d'après la feuille de style XSLT de ces échantillons est appliqué au message XML.


Documentation de référence des éléments

Configurez une règle de transformation XSL à l'aide des éléments suivants.

Nom du champ Description
Nom (obligatoire) Nom de la règle. Les caractères que vous pouvez utiliser dans le nom se limitent à : A-Z0-9._\-$ %. Toutefois, l'interface utilisateur de gestion applique des restrictions supplémentaires, telles que la suppression automatique des caractères qui ne sont pas alphanumériques.
Source (facultatif) Contient le message à partir duquel les informations doivent être extraites. Cette valeur est généralement définie sur request ou response, selon que le message à transformer est entrant ou sortant.
  • Si la source est manquante, celui-ci est traité comme un message simple. Par exemple, <Source>message</Source>
  • Si la variable source ne peut pas être résolue, ou si elle est résolue en un type qui n'est pas un message, l'étape de transformation échoue.
Variable de sortie (facultatif)

Variable qui stocke le résultat de la transformation. La variable OutputVariable ne peut pas être de type "Message" ("message", "requête" ou "réponse"). Vous devez définir cet élément en tant que variable personnalisée, puis utiliser cette variable.

Pour remplacer le contenu du message par le résultat de la transformation, supprimez cet élément. Par exemple, si vous transformez un message en HTML, n'incluez pas cet élément.

ResourceURL (obligatoire) Fichier XSLT à utiliser pour transformer le message.
Paramètres (facultatif) ignoreUnresolvedVariables (facultatif)
Permet d'ignorer toutes les erreurs de variable non résolues dans les instructions de script XSLT.
Valeurs valides: true/false
Valeur par défaut : false
Paramètre (facultatif) nom (obligatoire)

Les paramètres permettent d'utiliser le paramètre XSL dans vos feuilles de style, où le nom que vous ajoutez dans la règle est le nom du paramètre XSL. Par exemple, si vous saisissez le nom "uid", votre fichier XSL ressemblera à ceci : <xsl:param name="uid" select="''"/>.

Le paramètre obtient sa valeur à partir d'une référence à une variable de contexte (identifiée par l'attribut ref) ou à partir d'une valeur value explicite.

Pour voir un exemple et en apprendre plus, consultez la page http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864.

ref (facultatif)

Spécifie la référence qui récupère la valeur à partir d'une variable. Par exemple, si un paramètre "uid" doit obtenir sa valeur à partir d'une variable appelée "authn.uid", l'élément Paramètre se présentera comme suit : <Parameter name="uid" ref="authn.uid"/>

Si vous utilisez cet attribut, n'utilisez pas l'attribut "valeur".

valeur (facultatif)

Vous pouvez utiliser cet attribut pour coder en dur la valeur du paramètre.

Si vous utilisez cet attribut, n'utilisez pas l'attribut "ref".


Remarques sur l'utilisation

Le XSLT est mis en œuvre dans un fichier .xsl autonome, qui est stocké dans le proxy d'API sous /resources/xsl. La règle XSL référence simplement le fichier XSL. Consultez la section Fichiers de ressources pour en savoir plus.

La règle XSL nécessite deux entrées :

  • Le nom d'une feuille de style XSLT contenant un ensemble de règles de transformation stockée dans le proxy d'API sous /resources/xsl
  • Source du XML à transformer (généralement un message de requête ou de réponse)

<xsl:include> et <xsl:import> ne sont pas compatibles.

Apigee Edge repose sur le processeur Saxon XSLT et est compatible avec les fichiers XSL0 1.0 et 2.0.


Informations de référence sur les erreurs

Erreurs d'exécution

Ces erreurs peuvent se produire lors de l'exécution de la règle.

Code d'erreur État HTTP Cause Solution
steps.xsl.XSLSourceMessageNotAvailable 500 Cette erreur se produit si le message ou la variable de chaîne spécifiée dans l'élément <Source> de la règle de transformation XSL n'est pas dans le champ d'application (non disponible dans le flux spécifique où la règle est exécutée) ou ne peut pas être résolu (non défini).
steps.xsl.XSLEvaluationFailed 500 Cette erreur se produit si la charge utile du fichier XML d'entrée est non disponible/mal formée, ou si la règle XSLTransform échoue/ne parvient pas à transformer le fichier XML d'entrée en fonction des règles de transformation fournies dans le fichier XSL. Plusieurs raisons peuvent expliquer l'échec de la règle XSLTransform. La raison de l'échec dans le message d'erreur fournira davantage d'informations sur la cause de l'échec.

Erreurs de déploiement

Ces erreurs peuvent se produire lorsque vous déployez un proxy contenant cette règle.

Nom de l'erreur Cause Solution
XSLEmptyResourceUrl Si l'élément <ResourceURL> de la règle de Transformation XSL est vide, le déploiement du proxy d'API échoue.
XSLInvalidResourceType Si le type de ressource spécifié dans l'élément <ResourceURL> de la règle de Transformation XSL n'est pas du type xsl, le déploiement du proxy d'API échoue.

Articles associés