Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X. info
Message source XSL non disponible
Code d'erreur
steps.xsl.XSLSourceMessageNotAvailable
Corps de la réponse d'erreur
{ "fault": { "faultstring": "response message is not available for XSL: policy_name", "detail": { "errorcode": "steps.xsl.XSLSourceMessageNotAvailable" } } }
Exemple de message d'erreur
{
"fault": {
"faultstring": "response message is not available for XSL: xslt",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}
Cause
Cette erreur se produit si la variable de message ou de chaîne spécifiée dans l'élément <Source>
de la règle de transformation XSL est :
- hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée) ; ou
- impossible à résoudre (non définie).
Par exemple, cette erreur se produit si la règle de transformation XSL doit être exécutée dans le flux de requête, mais que l'élément <Source>
est défini sur la variable de réponse, qui n'existe pas dans le flux de requête).
Diagnostic
Identifiez la règle de transformation XSL dans laquelle l'erreur s'est produite et le nom de la variable qui n'est pas disponible. Vous pouvez trouver ces deux informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans le fichierfaultstring
suivant, le nom de la règle estxslt
et la variable estresponse
:faultstring": "response message is not available for XSL: xslt
Dans le fichier XML de transformation XSL ayant échoué, vérifiez que le nom de la variable définie dans l'élément
<Source>
correspond au nom de la variable identifiée dans la chaîne d'erreur (étape 1 ci-dessus). Par exemple, la règle de transformation XSL suivante spécifie une variable nomméeresponse
dans l'élément<Source>
, qui correspond au contenu de la chaîne d'erreur :<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XSL async="false" continueOnError="false" enabled="true" name="xslt"> <DisplayName>xslt</DisplayName> <Properties/> <ResourceURL>xsl://XSL-Transform.xsl</ResourceURL> <Source>response</Source> <Parameters ignoreUnresolvedVariables="false"/> <OutputVariable/> </XSL>
Déterminez si la variable utilisée dans l'élément
<Source>
est définie et disponible dans le flux dans lequel la règle de transformation XSL s'exécute.Si la variable est :
- hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée) ; ou
- impossible à résoudre (non définie).
alors il s'agit de la cause de l'erreur.
Par exemple, supposons que la règle de transformation XSL présentée ci-dessus soit censée être exécutée dans le flux de requête. Rappelez-vous que la variable
response
est utilisée dans l'élément<Source>
de l'exemple de règle. La variableresponse
n'est disponible que dans le flux de réponse.Comme la variable
response
n'existe pas dans le flux de requête, vous recevez le code d'erreur :steps.xsl.XSLSourceMessageNotAvailable
Solution
Vérifiez que la variable définie dans l'élément <Source>
de la règle de transformation XSL ayant échoué est définie et qu'elle existe dans le flux où la règle s'exécute.
Pour corriger l'exemple de règle de transformation XSL présenté ci-dessus, vous pouvez modifier l'élément <Source>
afin d'utiliser la variable request
, car elle existe dans le flux de requête :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XSL async="false" continueOnError="false" enabled="true" name="xslt">
<DisplayName>xslt</DisplayName>
<Properties/>
<ResourceURL>xsl://XSL-Transform.xsl</ResourceURL>
<Source>request</Source>
<Parameters ignoreUnresolvedVariables="false"/>
<OutputVariable/>
</XSL>
Échec de l'évaluation XSL
Code d'erreur
steps.xsl.XSLEvaluationFailed
Corps de la réponse d'erreur
{
"fault": {
"faultstring": "Evaluation of XSL <var>XSL_file_name</var> failed with reason: \"<var>reason_for_failure</var>",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Exemple de message d'erreur
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Causes possibles
Cette erreur se produit dans les cas suivants :
- La charge utile du fichier XML d'entrée est indisponible/mal rédigée.
- La règle de transformation XSL é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 de transformation XSL. Le motif de l'échec dans le message d'erreur fournira davantage d'informations sur la cause de l'échec. Le tableau suivant répertorie l'une des causes de cet échec (préfixe incorrect) et l'explique à l'aide d'un exemple.
Cause | Description |
---|---|
Charge utile du fichier XML d'entrée indisponible | La charge utile du fichier XML d'entrée n'est ni transmise, ni vide. |
Fichier XML d'entrée mal rédigé | La charge utile du fichier XML d'entrée est mal rédigée ou non valide. |
Préfixe non valide | La charge utile du fichier XML d'entrée comporte un préfixe qui n'est pas défini dans le fichier XSL. |
Cause : La charge utile du fichier XML d'entrée n'est pas disponible
Cette erreur se produit si la charge utile du fichier XML d'entrée n'est pas transmise ou si elle est transmise vide dans le cadre de la requête API au proxy d'API sur lequel la règle de transformation XSL est appliquée.
Exemple de message d'erreur
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Diagnostic
Identifiez le fichier XSL qui n'a pas pu être évalué par la règle de transformation XML et le motif de l'échec. Si la charge utile XML d'entrée n'est pas transmise ou est vide, le motif de l'échec indique une fin prématurée du document durant d'analyse. Vous trouverez toutes ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans lefaultstring
suivant, le fichier XSL estXSL-Transform.xsl
et le motif de l'échec estPremature end of document while parsing at line 1 (possibly around char 0)
. Cette erreur signifie que la charge utile XML n'est pas transmise ou est vide."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Déterminez si la charge utile du fichier XML d'entrée transmise dans le cadre de la requête est vide. Si la charge utile d'entrée n'est pas transmise ou est vide, il s'agit de la cause de l'erreur.
Dans l'exemple de requête ci-dessous, la charge utile de la requête (c'est-à-dire le corps de la requête) envoyée par l'utilisateur était vide.
Exemple :
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml"
Comme la charge utile du fichier XML d'entrée est vide, vous recevez l'erreur :
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Solution
Assurez-vous que l'entrée transmise à la règle de transformation XSL est une charge utile XML valide et non vide.
Pour résoudre le problème avec l'exemple de règle de tranformation XSL, transmettez une charge utile XML valide. Exemple :
Créez un fichier nommé
city.xml
avec le contenu suivant :<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Effectuez l'appel d'API à l'aide d'une commande cURL comme suit :
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Cause : Le fichier XML d'entrée est mal rédigé
La charge utile du fichier XML d'entrée transmise dans le cadre de la requête API à la règle de transformation XSL est mal formulée ou non valide.
Exemple de message d'erreur
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Diagnostic
Identifiez le fichier XSL qui n'a pas pu être évalué par la règle de transformation XML et le motif de l'échec. Si la charge utile XML d'entrée est mal rédigée, le motif de l'échec indique un caractère inattendu. Vous trouverez toutes ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans lefaultstring
suivant, le fichier XSL estXSL-Transform.xsl
et le motif de l'échec estUnexpected char while looking for open tag ('<') character
. En d'autres termes, "<
" est manquant dans la charge utile XML."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Examinez la charge utile du fichier XML d'entrée transmise à la règle de transformation XSL et voyez si elle comporte un contenu XML valide ou non. Si la charge utile d'entrée n'est pas un fichier XML valide, il s'agit de la cause de l'erreur.
Dans l'exemple de requête ci-dessous, la charge utile d'entrée (c'est-à-dire le corps de la requête) envoyée par l'utilisateur était non valide.
Exemple :
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Où
city.xml
correspond à :{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
Comme la charge utile d'entrée est au format JSON et non un fichier XML valide, vous obtenez l'erreur suivante :
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Solution
Assurez-vous que l'entrée transmise à la règle de transformation XSL est une charge utile XML valide et non vide.
Pour résoudre le problème avec l'exemple de règle de tranformation XSL, transmettez une charge utile XML valide. Exemple :
Modifiez le fichier
city.xml
pour qu'il présente le contenu en XML, comme illustré ci-dessous :<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Effectuez l'appel d'API à l'aide de la commande cURL comme suit:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Cause : Le préfixe n'est pas valide
La charge utile du fichier d'entrée XML transmise à la règle de transformation XSL comporte un élément qui n'est pas défini en tant que préfixe dans le fichier XSL spécifié dans la règle.
Exemple de message d'erreur
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Diagnostic
Identifiez le fichier XSL qui n'a pas pu être évalué par la règle de transformation XML et le motif de l'échec. Dans ce cas, le motif de l'échec indique qu'il existe un préfixe non résolu à un numéro de ligne spécifique dans la charge utile XML d'entrée. Vous trouverez toutes ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans lefaultstring
suivant, le fichier XSL estXSL-Transform.xsl
, le motif de l'échec estUnresolved Prefix
et le numéro de ligne est1
."faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Examinez le contenu du fichier XSL (identifié à l'étape 1 ci-dessus) et la charge utile du fichier XML d'entrée. Si le préfixe utilisé au numéro de ligne (identifié à l'étape 1 ci-dessus) de la charge utile du fichier XML d'entrée n'existe pas dans le fichier XSL, alors il s'agit de la cause de l'erreur.
Voici l'exemple XSL et la charge utile XML correspondante à l'origine de l'erreur :
XSL-Transform.xsl <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>
Charge utile du fichier XML d'entrée
<?xml version="1.0"?> <Life:Books> <title>A few of my favorite albums</title> <listitem>Beat Crazy</listitem> <listitem>Here Come the Warm Jets</listitem> <listitem>Kind of Blue</listitem> <listitem>London Calling</listitem> </Life:Books>
L'exemple de charge utile XML présenté ci-dessus contient un élément
<Life:Books>
. Notez que le XSL ne comporte pas ce préfixe. À la place, il porte le préfixe<xsl:text><Life></xsl:text>
. Par conséquent, vous obtenez l'erreur suivante :"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Solution
Assurez-vous que la charge utile du fichier XML d'entrée transmise à la règle de transformation XSL possède tous les formats d'élément définis en tant que préfixes dans le fichier XSL utilisé dans la règle.
Pour corriger l'exemple de fichier XML présenté ci-dessus, vous pouvez modifier le fichier comme indiqué ci-dessous :
Charge utile du fichier XML d'entrée mise à jour
<?xml version="1.0"?>
<Life>
<title>A few of my favorite albums</title>
<listitem>Beat Crazy</listitem>
<listitem>Here Come the Warm Jets</listitem>
<listitem>Kind of Blue</listitem>
<listitem>London Calling</listitem>
</Life>