Sie sehen die Dokumentation zu Apigee Edge.
Sehen Sie sich die Apigee X-Dokumentation an. info
XSLSourceMessageNotAvailable
Fehlercode
steps.xsl.XSLSourceMessageNotAvailable
Fehlerantworttext
{ "fault": { "faultstring": "response message is not available for XSL: policy_name", "detail": { "errorcode": "steps.xsl.XSLSourceMessageNotAvailable" } } }
Beispiel für Fehlermeldung
{
"fault": {
"faultstring": "response message is not available for XSL: xslt",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die Nachricht oder Stringvariable, die im Element <Source>
der XSL-Transformationsrichtlinie angegeben ist, einen der folgenden Werte hat:
- Wert liegt außerhalb des Bereichs (nicht in dem spezifischen Ablauf verfügbar, in dem die Richtlinie ausgeführt wird)
- Der Wert kann nicht aufgelöst werden kann (nicht definiert ist)
Dieser Fehler tritt beispielsweise auf, wenn die XSL-Transformationsrichtlinie im Anfrageablauf ausgeführt werden soll, aber das Element <Source>
auf die Antwortvariable gesetzt ist, die im Anfrageablauf nicht vorhanden ist.
Diagnose
Ermitteln Sie die XSL-Transformationsrichtlinie, in der der Fehler aufgetreten ist, sowie den Namen der nicht verfügbaren Variablen. Sie finden beide Elemente im Element
faultstring
der Fehlerantwort. Beispiel: Im folgendenfaultstring
lautet der Richtliniennamexslt
und die Variableresponse
:faultstring": "response message is not available for XSL: xslt
Prüfen Sie im XML der fehlgeschlagenen XSL-Transformationsrichtlinie, ob der Name der Variablen, die im Element
<Source>
festgelegt ist, dem Variablennamen im Fehlerstring entspricht (Schritt 1). Beispiel: Die folgende XSL-Transformationsrichtlinie gibt eine Variable mit dem Namenresponse
im Element<Source>
an, die mit dem Namen im Fehlerstring übereinstimmt:<?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>
Prüfen Sie, ob die im Element
<Source>
verwendete Variable definiert ist, und ob sie in dem Ablauf verfügbar ist, in dem die XSL-Transformationsrichtlinie ausgeführt wird.Wenn die Variable entweder:
- außerhalb des Geltungsbereichs (nicht im spezifischen Ablauf verfügbar, in dem die Richtlinie ausgeführt wird) liegt oder
- kann nicht gelöst werden (ist nicht definiert)
Dann ist dies die Ursache des Fehlers.
Nehmen wir beispielsweise an, dass die oben gezeigte XSL-Transformationsrichtlinie im Anfrageablauf ausgeführt werden soll. Wie bereits erwähnt, wird die Variable
response
im Element<Source>
der Beispielrichtlinie verwendet. Die Variableresponse
ist nur im Antwortablauf verfügbar.Da die Variable
response
nicht im Anfrageablauf vorhanden ist, erhalten Sie den Fehlercode:steps.xsl.XSLSourceMessageNotAvailable
Lösung
Achten Sie darauf, dass die im Element <Source>
der fehlgeschlagenen XSL-Transformationsrichtlinie festgelegte Variable definiert ist und in dem Ablauf vorhanden ist, in dem die Richtlinie ausgeführt wird.
Um die oben gezeigte XSL-Transformationsrichtlinie zu korrigieren, können Sie das Element <Source>
ändern, um die Variable request
zu verwenden, da sie im Anfragefluss vorhanden ist:
<?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>
XSLEvaluationFailed
Fehlercode
steps.xsl.XSLEvaluationFailed
Fehlerantworttext
{
"fault": {
"faultstring": "Evaluation of XSL <var>XSL_file_name</var> failed with reason: \"<var>reason_for_failure</var>",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Beispiel für Fehlermeldung
{
"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"
}
}
}
Mögliche Ursachen
Dieser Fehler tritt in folgenden Fällen auf:
- Die XML-Nutzlast der Eingabe ist nicht verfügbar/fehlerhaft.
- Die XSLTransform-Richtlinie schlägt fehl bzw. kann die XML-Eingabedatei anhand der in der XSL-Datei angegebenen Transformationsregeln nicht transformieren. Es sind viele verschiedene Gründe dafür denkbar, dass die XSLTransform-Richtlinie fehlschlägt. Der in der Fehlermeldung angegebene Fehlerursache enthält weitere Informationen zum Grund. In der folgenden Tabelle ist eine solche Ursache für diesen Fehler aufgeführt – ungültiges Präfix – mit einem Beispiel.
Ursache | Beschreibung |
---|---|
XML-Eingabenutzlast nicht verfügbar | Die XML-Eingabenutzlast wird nicht übergeben oder ist leer. |
Falsch formatierte XML-Eingabe | Die XML-Nutzlast der Eingabe ist fehlerhaft oder ungültig. |
Ungültiges Präfix | Die XML-Nutzlast der Eingabe hat ein Präfix, das in der XSL-Datei nicht definiert ist. |
Ursache: XML-Eingabenutzlast ist nicht verfügbar
Dieser Fehler tritt auf, wenn die XML-Eingabenutzlast nicht übergeben wird oder die als Teil der API-Anfrage an den API-Proxy übergebene XML-Nutzlast leer ist und eine XSL-Transformationsrichtlinie vorliegt.
Beispiel für Fehlermeldung
{
"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"
}
}
}
Diagnose
Ermitteln Sie die XSL-Datei, die nicht durch die XML-Transformationsrichtlinie ausgewertet werden konnte, und den Grund für den Fehler. Wenn die XML-Nutzlast der Eingabe nicht übergeben wird oder leer ist, gibt der Fehler an, dass beim Parsen ein vorzeitiges Ende des Dokuments vorliegt. Alle diese Informationen finden Sie im Element
faultstring
der Fehlerantwort. Im folgendenfaultstring
ist z. B.XSL-Transform.xsl
die XSL-Datei und die Fehlerursache istPremature end of document while parsing at line 1 (possibly around char 0)
. Dieser Fehler bedeutet, dass die XML-Nutzlast entweder nicht übergeben wurde oder leer ist."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Ermitteln Sie, ob die XML-Eingabenutzlast, die als Teil der Anfrage übergeben wurde, leer ist. Wenn die Eingabenutzlast nicht übergeben wurde oder leer ist, ist dies die Ursache des Fehlers.
In der folgenden Beispielanfrage war die vom Nutzer gesendete Anfragenutzlast (der Anfragetext) leer.
Beispiel:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml"
Da die XML-Eingabenutzlast leer ist, erhalten Sie folgende Fehlermeldung:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Lösung
Achten Sie darauf, dass die an die XSL-Transformatiosnrichtlinie übergebene Eingabe eine gültige XML-Nutzlast und nicht leer ist.
Beheben Sie das Problem mit der Beispiel-XSL-Transformationsrichtlinie, indem Sie eine gültige XML-Nutzlast übergeben. Beispiel:
Erstellen Sie eine Datei mit dem Namen
city.xml
und folgendem Inhalt:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Führen Sie folgenden API-Aufruf mit einem curl-Befehl aus:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Ursache: Falsch formatierte XML-Eingabe
Die XML-Eingabenutzlast, die als Teil der API-Anfrage an die XSLTransform-Richtlinie übergeben wird, ist fehlerhaft oder ungültig.
Beispiel für Fehlermeldung
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Diagnose
Ermitteln Sie die XSL-Datei, die nicht durch die XML-Transformationsrichtlinie ausgewertet werden konnte, und den Grund für den Fehler. Wenn die XML-Eingabenutzlast fehlerhaft ist, gibt die Fehlerursache an, dass ein unerwartetes Zeichen vorhanden ist. Alle diese Informationen finden Sie im Element
faultstring
der Fehlerantwort. Im folgendenfaultstring
ist z. B.XSL-Transform.xsl
die XSL-Datei und die Fehlerursache istUnexpected char while looking for open tag ('<') character
. Das heißt, "<
" fehlt in der XML-Nutzlast."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Untersuchen Sie die XML-Eingabenutzlast, die an die XSL-Transformationsrichtlinie übergeben wurde, und prüfen Sie, ob der XML-Inhalt gültig ist oder nicht. Wenn die Eingabenutzlast keine gültige XML-Datei ist, ist dies die Ursache des Fehlers.
In der folgenden Beispielanfrage war die vom Nutzer gesendete Eingabenutzlast (d. h. der Anfragetext) ungültig.
Beispiel:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Wo
city.xml
Folgendes ist:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
Da die Eingabenutzlast JSON ist und kein gültiges XML ist, erhalten Sie den Fehler:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Lösung
Achten Sie darauf, dass die an die XSL-Transformationsrichtlinie übergebene Eingabe eine gültige XML-Nutzlast und nicht leer ist.
Beheben Sie das Problem mit der Beispiel-XSL-Transformationsrichtlinie, indem Sie eine gültige XML-Nutzlast übergeben. Beispiel:
Ändern Sie die Datei
city.xml
so, dass der Inhalt in XML vorhanden ist, wie unten dargestellt:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Führen Sie den API-Aufruf mit dem cURL-Befehl so aus:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Ursache: Ungültiges Präfix
Die an die XSL-Transformationsrichtlinie übergebene XML-Eingabenutzlast enthält ein Element, das in der Richtlinie als Präfix in der XSL-Datei nicht definiert ist.
Beispiel für Fehlermeldung
{
"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"
}
}
}
Diagnose
Identifizieren Sie die XSL-Datei, die nicht durch die XML-Transformationsrichtlinie ausgewertet werden konnte, sowie den Grund für den Fehler. In diesem Fall weist die Fehlerursache darauf hin, dass in der XML-Eingabenutzlast an einer bestimmten Zeilennummer ein nicht aufgelöstes Präfix vorhanden ist. Alle diese Informationen finden Sie im Element
faultstring
der Fehlerantwort. Im folgendenfaultstring
ist die XSL-Datei beispielsweiseXSL-Transform.xsl
, die FehlerursacheUnresolved Prefix
und die Zeilennummer1
."faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Untersuchen Sie den Inhalt der XSL-Datei (oben in Schritt 1 identifiziert) und die XML-Eingabenutzlast. Wenn das Präfix, das in der Zeilennummer (oben in Schritt 1 identifiziert) der XML-Eingabenutzlast verwendet wird, nicht in der XSL-Datei vorhanden ist, ist dies die Fehlerursache.
Hier sehen Sie das Beispiel-XSL-Datei und die entsprechende XML-Eingabenutzlast, die zu dem Fehler geführt haben:
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>
XML-Eingabenutzlast
<?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>
Die oben dargestellte XML-Eingabenutzlast enthält ein Element
<Life:Books>
. Beachten Sie, dass die XSL dieses Präfix nicht hat. Stattdessen wird das Präfix<xsl:text><Life></xsl:text>
verwendet. Daher erhalten Sie folgende Fehlermeldung:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Lösung
Achten Sie darauf, dass die an die XSL-Transformationsrichtlinie übergebene XML-Eingabenutzlast alle Elementformate enthält, die als Präfixe in der XSL-Datei definiert sind, die in der Richtlinie verwendet wird.
Sie können die oben dargestellte Beispiel-XML-Datei so korrigieren:
Die XML-Eingabenutzlast wurde aktualisiert:
<?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>