Вы просматриваете документацию 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"
}
}
}
Причина
Эта ошибка возникает, если переменная сообщения или строка, указанная в элементе <Source>
политики преобразования XSL, имеет одно из следующих значений:
- Вне области действия (недоступно в конкретном потоке, в котором выполняется политика)
- Не может быть решено (не определено)
Например, эта ошибка возникает, если политика преобразования XSL должна выполняться в потоке запросов, но для элемента <Source>
установлена переменная ответа, которой нет в потоке запросов.
Диагностика
Определите политику преобразования XSL, в которой произошла ошибка, и имя недоступной переменной. Оба этих элемента можно найти в элементе
faultstring
ответа об ошибке. Например, в следующейfaultstring
имя политики —xslt
, а переменная —response
:faultstring": "response message is not available for XSL: xslt
В XML-файле неудавшейся политики преобразования XSL убедитесь, что имя переменной, установленной в элементе
<Source>
, соответствует имени переменной, указанной в строке ошибки (шаг № 1 выше). Например, следующая политика преобразования XSL определяет переменную с именемresponse
в элементе<Source>
, которая соответствует значению в строке ошибки:<?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.Если переменная:
- Вне области действия (недоступно в конкретном потоке, в котором выполняется политика) или
- Не может быть решено (не определено)
тогда это причина ошибки.
В качестве примера предположим, что политика 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, и причину сбоя. Если входные полезные данные 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>