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 podana w elemencie <Source>
zasady przekształcania XSL to:
- Poza zakresem (niedostępne w ramach konkretnego procesu, w którym jest wykonywana zasada)
- Nie można rozwiązać (niezdefiniowana)
Ten błąd występuje na przykład, gdy w przepływie żądania ma być wykonana zasada transformacji XSL, ale element <Source>
jest ustawiony na zmienną odpowiedzi, która nie istnieje w przepływie żądania.
Diagnostyka
Wskaż zasadę transformacji XSL, w której wystąpił błąd, oraz nazwę zmiennej, która jest niedostępna. Oba te elementy znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w tym wyrażeniufaultstring
nazwa zasad toxslt
, a zmienna toresponse
:faultstring": "response message is not available for XSL: xslt
W pliku XML zasad przekształcenia XSL, które nie przeszło weryfikacji, sprawdź, czy nazwa zmiennej w elemencie
<Source>
odpowiada nazwie zmiennej wskazanej w ciągu znaków błędu (krok 1 powyżej). Na przykład ta zasada przekształcania XSL określa zmienną o nazwieresponse
w elemencie<Source>
, 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 przepływie, w którym jest wykonywana zasada XSL Transform.Jeśli zmienna to:
- poza zakresem (niedostępne w konkretnym procesie, w którym są wykonywane zasady) lub
- Nie można rozwiązać (niezdefiniowana)
to jest przyczyna błędu.
Załóżmy, że zasada transformacji XSL, która jest widoczna powyżej, ma być wykonywana w przepływie żądania. Pamiętaj, że zmienna
response
jest używana w elemencie<Source>
w przykładowych zasadach. Zmiennaresponse
jest dostępna tylko w przepływie odpowiedzi.Ponieważ zmienna
response
nie istnieje w przepływie żądania, otrzymasz kod błędu:steps.xsl.XSLSourceMessageNotAvailable
Rozdzielczość
Upewnij się, że zmienna ustawiona w elemencie <Source>
nieprawidłowej zasady przekształcenia XSL jest zdefiniowana i istnieje w przepływie, w którym jest wykonywana zasada.
Aby poprawić przykładową zasadę transformacji XSL pokazaną powyżej, 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, jeśli:
- Dane wejściowe XML są niedostępne lub zniekształcone.
- Zasada XSLTransform nie może przekształcić wejściowego pliku XML na podstawie reguł przekształcania podanych w pliku XSL. Niepowodzenie reguły XSLTransform może mieć wiele różnych przyczyn. Wyjaśnienie przyczyny niepowodzenia w komunikacie o błędzie zawiera więcej informacji na temat przyczyny. W tabeli poniżej znajdziesz jedną z przyczyn tego błędu – nieprawidłowy prefiks – i objaśniono ją na przykładzie.
Przyczyna | Opis |
---|---|
Dane wejściowe w formacie XML niedostępne | Dane wejściowe XML nie zostały przekazane lub są puste. |
Nieprawidłowy plik XML z danymi wejściowymi | Dane wejściowe XML są nieprawidłowe lub błędnie sformatowane. |
Nieprawidłowy prefiks | Dane wejściowe w pliku XML mają prefiks, który nie jest zdefiniowany w pliku XSL. |
Przyczyna: dane wejściowe XML są niedostępne
Ten błąd występuje, gdy nie przekazano danych wejściowych w formacie XML lub gdy dane wejściowe w formacie XML przekazane w ramach żądania interfejsu API do interfejsu API Proxy z zasadami XSLTransform są puste.
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óry nie mógł zostać oceniony przez zasadę przekształcania XML, oraz przyczynę błędu. Jeśli wejściowy ładunek XML nie został przekazany lub jest pusty, przyczyna błędu będzie wskazywać, że podczas analizy występuje przedwczesny koniec dokumentu. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w poniższymfaultstring
plik XSL maXSL-Transform.xsl
, a przyczyna błędu toPremature 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 dane wejściowe XML przekazane jako część żądania są puste. Jeśli ładunek wejściowy nie został przekazany lub jest pusty, jest to przyczyna błędu.
W przykładowym żądaniu 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ż ładunek danych wejściowych 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ść
Upewnij się, że dane wejściowe przekazane do zasady XSLTransform są prawidłowym ładunkiem XML i nie są puste.
Aby rozwiązać problem z przykładową polityką XSLTransform, prześlij 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>
Wykonaj wywołanie interfejsu 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 w formacie XML
Wejściowy ładunek XML przekazywany jako część żądania do interfejsu API do zasady XSLTransform jest nieprawidłowy lub niedozwolony.
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óry nie mógł zostać oceniony przez zasadę przekształcania XML, oraz przyczynę niepowodzenia. Jeśli kod XML jest nieprawidłowy, przyczyna błędu będzie wskazywać na nieoczekiwany znak. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w poniższymfaultstring
plik XSL maXSL-Transform.xsl
, a przyczyna błędu toUnexpected char while looking for open tag ('<') character
. Oznacza to, że w pliku danych XML brakuje elementu „<
”."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Sprawdź dane wejściowe XML przekazane do reguły XSLTransform, aby się przekonać, czy zawierają one prawidłowe treści XML. Jeśli ładunek wejściowy nie ma prawidłowego kodu XML, to właśnie jest przyczyną błędu.
W przykładowym żądaniu poniżej ładunek wejściowy (tj. 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 nieprawidłowy 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 przekazane do reguły 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
, aby zawierał zawartość 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>
Wykonaj wywołanie interfejsu 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 pliku XSL określony 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
Zidentyfikuj plik XSL, który nie mógł zostać oceniony przez zasadę przekształcania XML, oraz przyczynę niepowodzenia. W tym przypadku przyczyna błędu wskazuje, że w danym wierszu w danych wejściowych XML występuje nierozwiązany prefiks. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w plikufaultstring
plik 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ściowy ładunek XML. Jeśli prefiks używany w numerze wiersza (określony w kroku 1 powyżej) wejściowego ładunku XML nie istnieje w pliku XSL, jest to przyczyna błędu.
Oto przykładowy plik XSL i odpowiadający mu ładunek XML, który powoduje 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>
Dane XML do wprowadzenia
<?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>
. Pamiętaj, że plik 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ść
Upewnij się, że dane wejściowe XML przekazane do zasad XSLTransform zawierają wszystkie formaty elementów zdefiniowane jako prefiksy w pliku XSL używanym w zasadach.
Aby naprawić powyższy przykładowy plik XML, możesz go zmodyfikować w ten sposób:
Zaktualizowany kod XML danych wejściowych
<?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>