Вы просматриваете документацию 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, показанная выше, должна выполняться в потоке запросов. Напомним, что переменная - 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ответа об ошибке. Например, в следующей- faultstringXSL-файл —- 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ответа об ошибке. Например, в следующей- faultstringXSL-файл называется- 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ответа об ошибке. Например, в следующей- faultstringXSL-файл —- 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>