Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
XSLSourceMessageNotAvailable
Kod błędu
steps.xsl.XSLSourceMessageNotAvailable
Treść odpowiedzi o błędzie
{ "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 komunikatu lub ciągu znaków określona w elemencie <Source>
zasady przekształcania XSL ma jeden z tych stanów:
- Poza zakresem (niedostępne w konkretnym procesie, w którym jest wykonywana zasada)
- Nie można rozwiązać (nie określono)
Ten błąd występuje np. wtedy, gdy zasada przekształcania XSL powinna być wykonywana w przepływie żądania, ale element <Source>
jest ustawiony na zmienną odpowiedzi, której nie ma w przepływie żądania.
Diagnostyka
Wskaż zasadę transformacji XSL, w której wystąpił błąd, oraz nazwę niedostępnej zmiennej. Oba te elementy znajdziesz w elemencie
faultstring
odpowiedzi o błędzie. Na przykład w poniższym elemenciefaultstring
nazwa zasady toxslt
, a zmienna toresponse
:faultstring": "response message is not available for XSL: xslt
W pliku XML zasady przekształcania XSL, którego nie udało się przetworzyć, sprawdź, czy nazwa zestawu zmiennych w elemencie
<Source>
odpowiada nazwie zmiennej określonej w ciągu błędu (krok 1 powyżej). Na przykład ta zasada przekształcenia XSL określa w elemencie<Source>
zmienną o nazwieresponse
, która odpowiada zawartości 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żywana w elemencie
<Source>
jest zdefiniowana i dostępna w procesie, w którym wykonywana jest zasada przekształcenia XSL.Jeśli zmienna to:
- Wykracza poza zakres (niedostępne w konkretnym procesie, w którym jest wykonywana zasada) lub
- Nie można rozwiązać (nie określono)
to jest jego przyczyna.
Załóżmy na przykład, że pokazana powyżej zasada przekształcenia XSL powinna być zrealizowana w ramach przepływu żądania. Pamiętaj, że zmienna
response
jest używana w elemencie<Source>
przykładowej zasady. Zmiennaresponse
jest dostępna tylko w procesie odpowiedzi.Ponieważ w przepływie żądań nie ma zmiennej
response
, pojawia się kod błędu:steps.xsl.XSLSourceMessageNotAvailable
Rozdzielczość
Upewnij się, że zmienna ustawiona w elemencie <Source>
nieudanej zasady przekształcenia XSL jest zdefiniowana i istnieje w procesie, w którym jest wykonywana.
Aby poprawić pokazaną powyżej przykładową zasadę przekształcania XSL, możesz zmodyfikować element <Source>
tak, aby używał zmiennej request
, ponieważ występuje on 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 o błędzie
{
"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, jeśli:
- Wejściowy ładunek XML jest niedostępny lub błędnie sformatowany.
- Zasada XSLTransform nie lub nie może przekształcić wejściowego pliku XML na podstawie reguł przekształcania podanych w pliku XSL. Przyczyn niepowodzenia zasady XSLTransform może być wiele. Komunikat o przyczynie błędu będzie zawierał więcej informacji na temat przyczyny niepowodzenia. W tabeli poniżej znajdziesz jedną z przyczyn tego błędu – nieprawidłowy prefiks – oraz objaśniono ją na przykładzie.
Przyczyna | Opis |
---|---|
Wejściowy ładunek XML niedostępny | Wejściowy ładunek XML nie jest przekazywany lub jest pusty. |
Nieprawidłowy format XML wejściowego | Wejściowy ładunek XML jest zniekształcony lub nieprawidłowy. |
Nieprawidłowy prefiks | Wejściowy ładunek XML ma prefiks, który nie został zdefiniowany w pliku XSL. |
Przyczyna: wejściowy ładunek XML jest niedostępny
Ten błąd występuje, jeśli ładunek XML nie zostanie przekazany lub ładunek XML przekazany w ramach żądania interfejsu API do serwera proxy interfejsu API z zasadą 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
Wskaż plik XSL, którego nie udało się ocenić za pomocą zasady przekształcania XML, oraz wskaż przyczynę niepowodzenia. Jeśli wejściowy ładunek XML nie zostanie przekazany lub będzie pusty, przyczyna błędu będzie wskazywać, że podczas analizy dokument miał przedwczesny koniec. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi o błędzie. Na przykład w poniższym przykładziefaultstring
plik 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)\""
Określ, czy wejściowy ładunek XML, który został przekazany w ramach żądania, jest pusty. Jeśli ładunek wejściowy nie został przekazany lub jest pusty, jest to przyczyna błędu.
W przykładowym żądaniu poniżej ładunek żądania (tj. 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ż ładunek wejściowy XML jest pusty, pojawia 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 ładunkiem XML i nie są puste.
Aby rozwiązać problem z przykładową zasadą XSLTransform, przekaż prawidłowy ładunek XML. Na przykład:
Utwórz plik o nazwie
city.xml
z tą zawartoś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 danych wejściowych XML
Wejściowy ładunek XML przekazany w ramach żądania interfejsu API do zasady XSLTransform jest uszkodzony lub nieprawidłowy.
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
Wskaż plik XSL, którego nie udało się ocenić przez zasadę przekształcania XML, oraz wskaż przyczynę niepowodzenia. Jeśli wejściowy ładunek XML ma nieprawidłowy format, przyczyna niepowodzenia będzie wskazywać na nieoczekiwany znak. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi błędu. Na przykład w polufaultstring
plik XSL toXSL-Transform.xsl
, a przyczyna niepowodzenia 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ściowe dane XML przekazane do zasady XSLTransform i upewnij się, że zawierają prawidłowe treści w formacie XML. Jeśli ładunek wejściowy nie jest prawidłowym kodem XML, to właśnie jest przyczyną błędu.
W przykładowym żądaniu poniżej ładunek wejściowy (czyli treść żądania), który został wysłany przez użytkownika, był nieprawidłowy.
Na przykład:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Gdzie
city.xml
to:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
Ponieważ ładunek wejściowy jest w formacie JSON, a nie jest prawidłowym kodem XML, pojawia się błąd:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Rozdzielczość
Upewnij się, że dane wejściowe przekazywane do zasady XSLTransform są prawidłowym ładunkiem XML i nie są puste.
Aby rozwiązać problem z przykładową zasadą XSLTransform, przekaż prawidłowy ładunek XML. Na przykład:
Zmodyfikuj plik
city.xml
tak, aby jego zawartość była podana 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
Wskaż plik XSL, którego nie udało się ocenić za pomocą zasady transformacji XML, oraz podaj przyczynę niepowodzenia. W tym przypadku przyczyna niepowodzenia wskazuje, że w określonym numerze wiersza w wejściowym ładunku XML występuje nierozstrzygnięty prefiks. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi o błędzie. Na przykład w poniższym przykładziefaultstring
plik XSL toXSL-Transform.xsl
, a przyczyną błędu jestUnresolved 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 (określonego w kroku 1 powyżej) i wejściowy ładunek XML. Jeśli prefiksu używanego w numerze wiersza (zidentyfikowanym w kroku 1 powyżej) wejściowego ładunku XML nie ma w pliku XSL, to jest przyczyną błędu.
Oto przykładowy plik XSL i odpowiedni ładunek XML, który spowodował 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 kod XSL nie ma tego prefiksu. Zamiast tego ma prefiks<xsl:text><Life></xsl:text>
. W związku z tym pojawia się błąd:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Rozdzielczość
Upewnij się, że wejściowy ładunek XML przekazany do zasady XSLTransform zawiera 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 zmodyfikować plik w następujący sposób:
Zaktualizowano ładunek wejściowego kodu 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>