Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
XSLSourceMessageNotAvailable
Код ошибки
steps.xsl.XSLSourceMessageNotAvailable
Тело ответа с ошибкой
{
"fault": {
"faultstring": "response message is not available for XSL: policy_name",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}Пример сообщения об ошибке
{
"fault": {
"faultstring": "response message is not available for XSL: xslt",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}
Причина
Эта ошибка возникает, если переменная message или строковая переменная, указанная в элементе <Source> правила преобразования XSL, является:
- Вне области действия (недоступно в определенном процессе, в котором выполняется правило).
- Не удается разрешить (не определено)
Например, эта ошибка возникает, если правило преобразования XSL должно быть выполнено в потоке запроса, но элемент <Source> задан для переменной ответа, которая не существует в потоке запроса.
диагностика;
Определите правило преобразования XSL, в котором произошла ошибка, и название недоступной переменной. Оба этих элемента можно найти в элементе
faultstringответа об ошибке. Например, в следующем фрагменте кодаfaultstringназвание правила –xslt, а переменная –response:faultstring": "response message is not available for XSL: xsltВ XML-файле правила XSL Transform, которое не удалось выполнить, убедитесь, что название переменной, заданной в элементе
<Source>, совпадает с названием переменной, указанным в строке ошибки (шаг 1 выше). Например, в следующем правиле преобразования XSL в элементе<Source>задана переменнаяresponse, которая соответствует строке ошибки:<?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>Определите, задана ли переменная, используемая в элементе
<Source>, и доступна ли она в потоке, в котором выполняется правило XSL Transform.Если переменная:
- Недоступно в определенном процессе, в котором выполняется политика.
- Не удается разрешить (не определено)
то это и есть причина ошибки.
Предположим, что правило XSL Transform, показанное выше, должно выполняться в потоке запроса. Напомним, что переменная
responseиспользуется в элементе<Source>примера правила. Переменнаяresponseдоступна только в цепочке ответов.Поскольку переменная
responseотсутствует в потоке запроса, вы получите код ошибки:steps.xsl.XSLSourceMessageNotAvailable
Разрешение
Убедитесь, что переменная, заданная в элементе <Source> правила "Не удалось выполнить преобразование XSL", определена и существует в потоке, в котором выполняется правило.
Чтобы исправить приведенный выше пример правила преобразования XSL, можно изменить элемент <Source>, чтобы использовать переменную request, поскольку она существует в потоке запроса:
<?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
Код ошибки
steps.xsl.XSLEvaluationFailed
Тело ответа с ошибкой
{
"fault": {
"faultstring": "Evaluation of XSL <var>XSL_file_name</var> failed with reason: \"<var>reason_for_failure</var>",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Пример сообщения об ошибке
{
"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"
}
}
}
Возможные причины
Эта ошибка возникает, если:
- Входные данные XML недоступны или имеют неверный формат.
- Правило XSLTransform не работает или не может преобразовать входной XML-файл на основе правил преобразования, указанных в XSL-файле. Сбой в работе правила XSLTransform может быть вызван разными причинами. Причина ошибки будет указана в сообщении об ошибке. В таблице ниже приведена одна из причин сбоя – "Недействительный префикс" – и пример.
| Причина | Описание |
|---|---|
| Недоступна полезная нагрузка XML | Входные данные XML не переданы или пусты. |
| Неправильный формат входного XML-файла | Входные данные XML имеют неправильный формат или недействительны. |
| Недопустимый префикс | Входные данные XML содержат префикс, не определенный в файле XSL. |
Причина: входная полезная нагрузка XML недоступна
Эта ошибка возникает, если входные данные XML не переданы или если полезная нагрузка XML, переданная в рамках запроса к API прокси-серверу API с правилом XSLTransform, пуста.
Пример сообщения об ошибке
{
"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"
}
}
}
диагностика;
Определите XSL-файл, который не удалось обработать с помощью правила XML Transform, и причину ошибки. Если входная полезная нагрузка XML не передана или пуста, в причине сбоя будет указано, что при анализе документа произошел преждевременный конец документа. Всю эту информацию можно найти в элементе
faultstringответа об ошибке. Например, в следующем кодеfaultstringфайл XSL –XSL-Transform.xsl, а причина ошибки –Premature end of document while parsing at line 1 (possibly around char 0). Эта ошибка означает, что полезная нагрузка XML не передается или пуста."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""Определите, пуста ли входная XML-полезная нагрузка, переданная в составе запроса. Если входные данные не переданы или пусты, это и будет причиной ошибки.
В примере запроса ниже полезная нагрузка запроса (то есть тело запроса), отправленного пользователем, пуста.
Пример:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml"Поскольку полезная нагрузка XML пуста, вы получите ошибку:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Разрешение
Убедитесь, что входные данные, переданные правилу XSLTransform, представляют собой действительную полезную нагрузку XML и не являются пустыми.
Чтобы устранить проблему с правилом XSLTransform, передайте действительную полезную нагрузку XML. Пример:
Создайте файл с названием
city.xmlсо следующим содержимым:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>Выполните вызов API с помощью команды cURL, как показано ниже:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Причина: неверный формат входного XML-файла
Входные данные XML, переданные как часть запроса API к правилу XSLTransform, имеют неправильный формат или недействительны.
Пример сообщения об ошибке
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
диагностика;
Определите XSL-файл, который не удалось обработать с помощью правила преобразования XML, и причину ошибки. Если входные данные XML повреждены, в причине ошибки будет указано, что обнаружен недопустимый символ. Всю эту информацию можно найти в элементе
faultstringответа об ошибке. Например, в следующем кодеfaultstringфайл XSL –XSL-Transform.xsl, а причина ошибки –Unexpected char while looking for open tag ('<') character. То есть в полезной нагрузке XML отсутствует элемент "<"."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""Проверьте входные данные XML, переданные в правило XSLTransform, и убедитесь, что они содержат действительный XML-контент. Если входные данные не являются допустимым XML-кодом, это и будет причиной ошибки.
В примере запроса ниже входные данные (то есть тело запроса), отправленные пользователем, недействительны.
Пример:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xmlГде находится
city.xml:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }Поскольку входная полезная нагрузка представляет собой JSON, а не действительный XML-код, вы получаете ошибку:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Разрешение
Убедитесь, что входные данные, переданные в правило XSLTransform, представляют собой действительную полезную нагрузку XML и не являются пустыми.
Чтобы устранить проблему с правилом XSLTransform, передайте действительную полезную нагрузку XML. Пример:
Измените файл
city.xml, чтобы его содержимое было представлено в формате XML, как показано ниже:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>Выполните вызов API с помощью команды cURL, как показано ниже:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Причина: недопустимый префикс
Входная полезная нагрузка XML, переданная правилу XSLTransform, содержит элемент, который не определен как префикс в XSL-файле, указанном в правиле.
Пример сообщения об ошибке
{
"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"
}
}
}
диагностика;
Определите XSL-файл, который не удалось обработать с помощью правила преобразования XML, и причину ошибки. В этом случае причина ошибки будет указывать на неразрешенный префикс в определенной строке входных данных XML. Вся эта информация содержится в элементе
faultstringответа об ошибке. Например, в следующем кодеfaultstringфайл XSL –XSL-Transform.xsl, причина ошибки –Unresolved Prefix, а номер строки –1."faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""Проверьте содержимое файла XSL (определенного на шаге 1) и входные данные XML. Если префикс, используемый в номере строки (определенном на шаге 1 выше) входной полезной нагрузки XML, отсутствует в файле XSL, то это и является причиной ошибки.
Ниже приведены примеры XSL и соответствующей полезной нагрузки XML, которые приводят к ошибке:
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
<?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>В примере полезной нагрузки XML, приведенном выше, есть элемент
<Life:Books>. Обратите внимание, что в XSL этого префикса нет. Вместо этого у него префикс<xsl:text><Life></xsl:text>. Поэтому возникает ошибка:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Разрешение
Убедитесь, что полезная нагрузка XML, переданная в правило XSLTransform, содержит все форматы элементов, определенные как префиксы в XSL-файле, используемом в правиле.
Чтобы исправить приведенный выше пример XML-файла, измените его следующим образом:
Обновленная полезная нагрузка 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>