Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
XSLSourceMessageNotAvailable
Kod błędu
steps.xsl.XSLSourceMessageNotAvailable
Treść odpowiedzi na błąd
{
"fault": {
"faultstring": "response message is not available for XSL: policy_name",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}Przykładowy komunikat o błędzie
{
"fault": {
"faultstring": "response message is not available for XSL: xslt",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}
Przyczyna
Ten błąd występuje, jeśli zmienna message lub zmienna ciągu znaków określona w elemencie <Source> zasady przekształcania XSL jest:
- Poza zakresem (niedostępne w określonym procesie, w którym są wykonywane zasady)
- Nie można rozwiązać (nie jest zdefiniowany)
Na przykład ten błąd występuje, jeśli zasada przekształcania XSL ma być wykonywana w przepływie żądania, ale element <Source> jest ustawiony na zmienną odpowiedzi, która nie istnieje w przepływie żądania.
Diagnostyka
Określ zasadę przekształcenia XSL, w której wystąpił błąd, oraz nazwę zmiennej, która jest niedostępna. Oba te elementy znajdziesz w elemencie
faultstringodpowiedzi na błąd. Na przykład w tymfaultstringnazwa zasad toxslt, a zmienna toresponse:faultstring": "response message is not available for XSL: xsltW pliku XML zasady nieudanej transformacji XSL sprawdź, czy nazwa zmiennej ustawionej w elemencie
<Source>jest zgodna z nazwą zmiennej podaną w ciągu błędu (krok 1 powyżej). Na przykład ta zasada przekształcenia XSL określa zmienną o nazwieresponsew elemencie<Source>, która odpowiada temu, co znajduje się w ciągu błędu:<?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>Sprawdź, czy zmienna użyta w elemencie
<Source>jest zdefiniowana i dostępna w przepływie, w którym wykonywana jest zasada XSL Transform.Jeśli zmienna ma wartość:
- poza zakresem (niedostępne w określonym procesie, w którym są wykonywane zasady) lub
- Nie można rozwiązać (nie jest zdefiniowany)
wtedy to jest przyczyną błędu.
Załóżmy na przykład, że zasada XSL Transform pokazana powyżej ma być wykonywana w przepływie żądania. Pamiętaj, że zmienna
responsejest używana w elemencie<Source>przykładowych zasad. Zmiennaresponsejest dostępna tylko w przepływie odpowiedzi.Ponieważ zmienna
responsenie występuje w przepływie żądania, otrzymasz kod błędu:steps.xsl.XSLSourceMessageNotAvailable
Rozdzielczość
Sprawdź, czy zmienna ustawiona w elemencie <Source> nieudanej zasady przekształcenia XSL jest zdefiniowana i występuje w przepływie, w którym zasada jest wykonywana.
Aby poprawić pokazaną powyżej zasadę przekształcenia XSL, możesz zmodyfikować element
<Source>, aby używał zmiennej request, ponieważ występuje ona w przepływie żądania:
<?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
Kod błędu
steps.xsl.XSLEvaluationFailed
Treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Evaluation of XSL <var>XSL_file_name</var> failed with reason: \"<var>reason_for_failure</var>",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Przykładowy komunikat o błędzie
{
"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"
}
}
}
Możliwe przyczyny
Ten błąd występuje, gdy:
- Wejściowy ładunek XML jest niedostępny lub nieprawidłowo sformatowany.
- Zasada XSLTransform nie działa lub nie może przekształcić wejściowego pliku XML na podstawie reguł przekształcania podanych w pliku XSL. Przyczyn niepowodzenia działania zasady XSLTransform może być wiele. Więcej informacji o przyczynie znajdziesz w komunikacie o błędzie. W tabeli poniżej znajdziesz jedną z przyczyn tego błędu – nieprawidłowy prefiks – wraz z przykładem.
| Przyczyna | Opis |
|---|---|
| Niedostępny wejściowy ładunek XML | Wejściowy ładunek XML nie został przekazany lub jest pusty. |
| Nieprawidłowy wejściowy plik XML | Wejściowy ładunek XML jest błędnie sformatowany lub nieprawidłowy. |
| Nieprawidłowy prefiks | Wejściowy ładunek XML ma prefiks, który nie jest zdefiniowany w pliku XSL. |
Przyczyna: wejściowy ładunek XML jest niedostępny
Ten błąd występuje, jeśli wejściowy ładunek XML nie został przekazany lub przekazany jako część żądania do interfejsu API do proxy interfejsu API z zasadami XSLTransform jest pusty.
Przykładowy komunikat o błędzie
{
"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"
}
}
}
Diagnostyka
Określ plik XSL, którego nie można było ocenić za pomocą zasady Transformacja XML, oraz przyczynę błędu. Jeśli wejściowy ładunek XML nie zostanie przekazany lub będzie pusty, przyczyną niepowodzenia będzie przedwczesne zakończenie dokumentu podczas analizowania. Wszystkie te informacje znajdziesz w elemencie
faultstringodpowiedzi na błąd. Na przykład w tymfaultstringplik XSL toXSL-Transform.xsl, a przyczyną niepowodzenia jestPremature end of document while parsing at line 1 (possibly around char 0). Ten błąd oznacza, że ładunek XML nie został przekazany lub jest pusty."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""Sprawdź, czy wejściowy ładunek XML przekazany w ramach żądania jest pusty. Jeśli wejściowy ładunek nie zostanie przekazany lub będzie pusty, będzie to przyczyną błędu.
W przykładzie żądania poniżej ładunek żądania (czyli treść żądania) wysłany przez użytkownika był pusty.
Na przykład:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml"Ponieważ wejściowy ładunek XML jest pusty, pojawi się błąd:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Rozdzielczość
Sprawdź, czy dane wejściowe przekazywane do zasady XSLTransform są prawidłowym i niepustym ładunkiem XML.
Aby rozwiązać problem z przykładowymi zasadami XSLTransform, przekaż prawidłowy ładunek XML. Na przykład:
Utwórz plik o nazwie
city.xmlz taką treścią:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>Wywołaj interfejs API za pomocą polecenia cURL w ten sposób:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Przyczyna: nieprawidłowy format wejściowego pliku XML
Wejściowy ładunek XML przekazany w ramach żądania do interfejsu API do zasady XSLTransform jest nieprawidłowy lub błędnie sformatowany.
Przykładowy komunikat o błędzie
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Diagnostyka
Określ plik XSL, którego nie można było ocenić za pomocą zasady przekształcania XML, i przyczynę błędu. Jeśli wejściowy ładunek XML jest nieprawidłowy, przyczyną niepowodzenia będzie nieoczekiwany znak. Wszystkie te informacje znajdziesz w elemencie
faultstringodpowiedzi na błąd. Na przykład w tymfaultstringplik XSL toXSL-Transform.xsl, a przyczyna błędu toUnexpected char while looking for open tag ('<') character. Oznacza to, że w ładunku XML brakuje elementu „<”."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""Sprawdź wejściowy ładunek XML przekazany do zasady XSLTransform i zobacz, czy zawiera on prawidłową treść XML. Jeśli wejściowy ładunek nie jest prawidłowym plikiem XML, to jest to przyczyna błędu.
W przykładzie żądania poniżej dane wejściowe (czyli treść żądania) wysłane przez użytkownika były nieprawidłowe.
Na przykład:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xmlGdzie
city.xml:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }Ponieważ ładunek wejściowy jest w formacie JSON, a nie w prawidłowym formacie XML, otrzymasz ten błąd:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Rozdzielczość
Sprawdź, czy dane wejściowe przekazywane do zasady XSLTransform są prawidłowym i niepustym ładunkiem XML.
Aby rozwiązać problem z przykładowymi zasadami XSLTransform, przekaż prawidłowy ładunek XML. Na przykład:
Zmodyfikuj plik
city.xml, aby zawierał treść w formacie XML, jak pokazano poniżej:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>Wywołaj interfejs API za pomocą polecenia cURL w ten sposób:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Przyczyna: nieprawidłowy prefiks
Wejściowy ładunek XML przekazany do zasady XSLTransform zawiera element, który nie jest zdefiniowany jako prefiks w pliku XSL określonym w zasadzie.
Przykładowy komunikat o błędzie
{
"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"
}
}
}
Diagnostyka
Określ plik XSL, którego nie można było ocenić za pomocą zasady przekształcania XML, i przyczynę błędu. W takim przypadku przyczyna niepowodzenia będzie wskazywać, że w danych wejściowych XML występuje nierozwiązany prefiks w określonym wierszu. Wszystkie te informacje znajdziesz w elemencie
faultstringodpowiedzi z błędem. Na przykład w tymfaultstringplik XSL toXSL-Transform.xsl, a przyczyna błędu toUnresolved Prefix, a numer wiersza to1."faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""Sprawdź zawartość pliku XSL (zidentyfikowanego w kroku 1 powyżej) i wejściowego ładunku XML. Jeśli prefiks użyty w numerze wiersza (określonym w kroku 1 powyżej) wejściowego ładunku XML nie występuje w pliku XSL, to jest to przyczyną błędu.
Oto przykładowy plik XSL i odpowiadający mu ładunek XML, które powodują błąd:
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>Wejściowy ładunek XML
<?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>Przykładowy ładunek XML pokazany powyżej zawiera element
<Life:Books>. Zwróć uwagę, że XSL nie ma tego prefiksu. Zamiast tego ma prefiks<xsl:text><Life></xsl:text>. Dlatego pojawia się błąd:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Rozdzielczość
Sprawdź, czy wejściowy ładunek XML przekazywany do zasady XSLTransform ma wszystkie formaty elementów zdefiniowane jako prefiksy w pliku XSL używanym w zasadzie.
Aby poprawić przykładowy plik XML pokazany powyżej, możesz go zmodyfikować w sposób przedstawiony poniżej:
Zaktualizowany wejściowy ładunek XML
<?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>