Cette page s'applique à Apigee et à Apigee hybrid.
Consultez la documentation d'Apigee Edge.
Quoi
La règle XSLTransform 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 HTML ou texte brut. Elle est souvent utilisée pour intégrer des applications compatibles avec XML, mais qui exigent des formats XML différents pour les mêmes données.
Cette règle est une règle extensible et son utilisation peut avoir des conséquences sur le coût ou l'utilisation, en fonction de votre licence Apigee. Pour en savoir plus sur les types de règles et les implications en termes d'utilisation, consultez la section Types de règles.
Entrées
La règle XSL utilise en entrée les paramètres suivants :
- (Obligatoire) Nom d'une feuille de style XSLT qui contient un ensemble de règles de transformation stockées dans le proxy d'API sous
/resources/xsl
. - (Obligatoire) Fichier XML à transformer (généralement un message de requête ou de réponse).
- (Facultatif) Nom d'une variable qui stocke le résultat en sortie.
- (Facultatif) Paramètres correspondant aux paramètres de la feuille de style XSL.
Processeur d'analyse
Apigee s'appuie sur le processeur XSLT Saxon et est compatible avec XSLT 1.0 et 2.0.
Éléments XSL non compatibles
La règle XSL n'est pas compatible avec les éléments XSL suivants :
<xsl:include>
<xsl:import>
Exemples
Les exemples suivants illustrent 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 fichier XML que vous souhaitez transformer est présent dans la réponse, la transformation ne se produira que si vous définissez <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><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>
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.
Élément <XSL>
Définit une règle XSLTransform
.
Valeur par défaut | N/A |
Obligatoire ? | Obligatoire |
Type | Objet complexe |
Élément parent | Non disponible |
Éléments enfants |
<OutputVariable> <Parameters> <ResourceURL> <Source> |
L'élément <XSL>
possède les attributs suivants :
Attribut | Description | Obligatoire ? | Type |
---|---|---|---|
name |
Nom de la stratégie Les caractères que vous pouvez utiliser dans le nom se limitent à : A-Z0-9._\-$ % . L'interface utilisateur Apigee applique cependant des restrictions supplémentaires, telles que la suppression automatique des caractères qui ne sont pas alphanumériques. |
Obligatoire | Chaîne |
Référence d'élément enfant
Cette section décrit les éléments enfants de <XSL>
.
<OutputVariable>
Variable qui stocke le résultat de la transformation. Vous devez définir cet élément en tant que variable personnalisée, puis utiliser cette variable.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Chaîne |
Élément parent |
<XSL>
|
Éléments enfants | Aucun |
La valeur de <OutputVariable>
ne peut pas être de type message ; autrement dit, ni message
, request
, ou response
.
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.
<Parameters>
Ajout de la compatibilité avec l'élément <xsl:param>
dans vos feuilles de style. Vous définissez chaque paramètre en tant qu'élément enfant <Parameter>
de cet élément.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Tableau d'éléments <Parameter> |
Élément parent |
<XSL>
|
Éléments enfants |
<Parameter> |
L'élément <Parameters>
possède les attributs suivants :
Attribut | Description | Obligatoire ? | Type |
---|---|---|---|
ignoreUnresolvedVariables |
Détermine si la règle ignore les erreurs de variables non résolues dans les instructions de script XSLT. La valeur par défaut est false , ce qui signifie que, par défaut, la règle génère des erreurs si elle rencontre des variables non résolues. |
Facultatif | Booléen |
<Parameter>
Définit un paramètre dans l'élément <Parameters>
.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Objet complexe |
Élément parent |
<Parameters>
|
Éléments enfants | Aucun |
L'élément <Parameter>
possède les attributs suivants :
Attribut | Obligatoire ? | Type | Description |
---|---|---|---|
name |
Obligatoire | Chaîne |
Nom du paramètre. Apigee met en correspondance la valeur que vous définissez ici avec la valeur de l'attribut Par exemple, si vous saisissez le nom <xsl:param name="uid" select="''"/> |
ref |
Facultatif | Chaîne |
Pointe vers une variable de contexte contenant la valeur du paramètre. Les valeurs des variables de contexte Par exemple, si un paramètre <Parameter name="uid" ref="authn.uid"/> Si vous utilisez cet attribut, n'utilisez pas l'attribut |
value |
Facultatif | Chaîne |
Spécifie une valeur codée en dur pour le paramètre. Par exemple, si un paramètre nommé <Parameter name="answer" value="42"/> Si vous utilisez cet attribut, n'utilisez pas l'attribut |
Le paramètre obtient sa valeur à partir de l'attribut ref
ou à partir d'une valeur value
explicite.
Pour obtenir un exemple et davantage d'informations, consultez la section Comment utiliser les paramètres facultatifs de la règle de transformation XSL ?
<ResourceURL>
Le fichier XSL qu'Apigee utilise pour transformer le message. La valeur de cet élément correspond au nom de la feuille de style XSL stockée dans le proxy d'API sous /resources/xsl
.
Valeur par défaut | N/A |
Obligatoire ? | Obligatoire |
Type | Chaîne |
Élément parent |
<XSL>
|
Éléments enfants | Aucun |
Exemple :
<ResourceURL>xsl://SubscriberNumbers-Request.xsl</ResourceURL>
Pour en savoir plus, consultez la section Fichiers de ressources.
<Source>
Spécifie le message transformé. Cette valeur est généralement définie sur request
ou response
, selon que le message à transformer est entrant ou sortant.
Valeur par défaut | N/A |
Obligatoire ? | Facultatif |
Type | Chaîne |
Élément parent |
<XSL>
|
Éléments enfants | Aucun |
Le fichier XSL qui définit la transformation est défini par la <ResourceURL>
.
- Si la source est manquante, celui-ci est traité comme un message simple. 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.
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 | Corriger |
---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
Cette erreur se produit si le message (ou la variable de chaîne) spécifié dans l'élément <Source> de la règle XSLTransform est hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée) ou s'il ne peut pas être résolu (non défini).
|
build |
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. | build |
Erreurs de déploiement
Ces erreurs peuvent se produire lorsque vous déployez un proxy contenant cette règle.
Nom de l'erreur | Cause | Corriger |
---|---|---|
XSLEmptyResourceUrl |
Si l'élément <ResourceURL> de la règle XSLTransform est vide, le déploiement du proxy d'API échoue. |
build |
XSLInvalidResourceType |
Si le type de ressource spécifié dans l'élément <ResourceURL> de la règle XSLTransform n'est pas du type xsl , le déploiement du proxy d'API échoue. |
build |