Você está visualizando a documentação do Apigee Edge.
Acesse a
documentação da
Apigee X. info
XSLSourceMessageNotAvailable
Código do erro
steps.xsl.XSLSourceMessageNotAvailable
Corpo da resposta de erro
{ "fault": { "faultstring": "response message is not available for XSL: policy_name", "detail": { "errorcode": "steps.xsl.XSLSourceMessageNotAvailable" } } }
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "response message is not available for XSL: xslt",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}
Causa
Esse erro ocorre se a
mensagem
ou a variável de string especificada no elemento <Source>
da política de transformação XSL for:
- Fora do escopo (não disponível no fluxo específico em que a política está sendo executada)
- Não é possível resolver (não está definida)
Por exemplo, esse erro ocorrerá se a política de transformação XSL precisar ser executada
no fluxo de solicitação, mas o elemento <Source>
estiver definido como a variável da resposta,
que não existe no fluxo de solicitação.
Diagnóstico
Identifique a política de transformação XSL em que o erro ocorreu e o nome da variável que não está disponível. É possível encontrar os dois itens no elemento
faultstring
da resposta de erro. Por exemplo, nofaultstring
a seguir, o nome da política éxslt
e a variável éresponse
:faultstring": "response message is not available for XSL: xslt
No XML de política de transformação XSL com falha, verifique se o nome da variável definida no elemento
<Source>
corresponde ao nome da variável identificado na string de falha (etapa 1 acima). Por exemplo, a seguinte política de transformação XSL especifica uma variável chamadaresponse
no elemento<Source>
, que corresponde ao que está na string de falha:<?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>
Determine se a variável usada no elemento
<Source>
está definida e disponível no fluxo em que a política de transformação XSL está sendo executada.Se a variável for:
- Fora do escopo (não disponível no fluxo específico em que a política está sendo executada) ou
- Não é possível resolver (não está definida)
essa é a causa do erro.
Como exemplo, digamos que a política de transformação XSL mostrada acima seja executada no fluxo de solicitação. Lembre-se de que a variável
response
é usada no elemento<Source>
da política de exemplo. A variávelresponse
está disponível somente no fluxo de resposta.Como a variável
response
não existe no fluxo de solicitação, você recebe o código de erro:steps.xsl.XSLSourceMessageNotAvailable
Resolução
Verifique se a variável definida no elemento <Source>
da política de transformação XSL com falha
está definida e existe no fluxo em que a política é executada.
Para corrigir o exemplo de política de transformação XSL mostrado acima, modifique o
elemento <Source>
para usar a variável request
, porque ele existe no fluxo de
solicitações:
<?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
Código do erro
steps.xsl.XSLEvaluationFailed
Corpo da resposta de erro
{
"fault": {
"faultstring": "Evaluation of XSL <var>XSL_file_name</var> failed with reason: \"<var>reason_for_failure</var>",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Exemplo de mensagem de erro
{
"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"
}
}
}
Causas possíveis
Este erro ocorre se:
- o payload XML de entrada está indisponível/incorreto;
- a política de transformação XSL falha/não consegue transformar o arquivo XML de entrada com base nas regras de transformação fornecidas no arquivo XSL. Pode haver muitas causas diferentes para a falha da política de transformação XSL. O motivo da falha na mensagem de erro fornecerá mais informações sobre a causa. A tabela a seguir lista uma dessas causas para essa falha (prefixo inválido) e é explicada com um exemplo.
Causa | Descrição |
---|---|
Payload XML de entrada indisponível | O payload XML de entrada não é transmitido ou está vazio. |
XML de entrada incorreto | O payload XML de entrada está incorreto ou é inválido. |
Prefixo inválido | O payload XML de entrada tem um prefixo não definido no arquivo XSL. |
Causa: o payload XML de entrada está indisponível
Esse erro ocorre se o payload XML de entrada não for transmitido ou o que foi transmitido como parte da solicitação da API ao proxy da API com a política de transformação XSL estiver vazio.
Exemplo de mensagem de erro
{
"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"
}
}
}
Diagnóstico
Identifique o arquivo XSL que não foi avaliado pela política de transformação XML e o motivo da falha. Se o payload XML de entrada não for transmitido ou estiver vazio, o motivo da falha indicará que há um fim antecipado documento em análise. Você encontra todas essas informações no elemento
faultstring
da resposta de erro. Por exemplo, nofaultstring
a seguir, o arquivo XSL éXSL-Transform.xsl
e o motivo da falha éPremature end of document while parsing at line 1 (possibly around char 0)
. Esse erro significa que o payload XML não foi transmitido ou está vazio."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Determine se o payload XML de entrada que foi transmitido como parte da solicitação está vazio. Se o payload de entrada não for transmitido ou estiver vazio, essa será a causa do erro.
No exemplo de solicitação abaixo, o payload da solicitação (ou seja, o corpo da solicitação) que foi enviado pelo usuário estava vazio.
Exemplo:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml"
Como o payload de entrada XML está vazio, você recebe o erro:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Resolução
Verifique se a entrada transmitida para a política de transformação XSL é um payload XML válido e se não está vazia.
Para corrigir o problema com a política de transformação XSL da amostra, transmita um payload XML válido. Exemplo:
Crie um arquivo chamado
city.xml
com o seguinte conteúdo:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Faça a chamada de API usando um comando curl da seguinte maneira:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Causa: XML de entrada incorreto
O payload XML de entrada transmitido como parte da solicitação da API à política de transformação XSL está incorreto ou é inválido.
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Diagnóstico
Identifique o arquivo XSL que não foi avaliado pela política de transformação XML e o motivo da falha. Se o payload XML de entrada estiver incorreto, o motivo da falha indicará que há um caractere inesperado. Você encontra todas essas informações no elemento
faultstring
da resposta de erro. Por exemplo, nofaultstring
a seguir, o arquivo XSL éXSL-Transform.xsl
e o motivo da falha éUnexpected char while looking for open tag ('<') character
. Ou seja, o "<
" está ausente no payload XML."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Examine o payload XML de entrada transmitido para a política de transformação XSL e veja se ele tem conteúdo XML válido ou não. Se o payload de entrada não for um XML válido, essa será a causa do erro.
Na solicitação de exemplo abaixo, o payload de entrada (ou seja, o corpo da solicitação) enviado pelo usuário era inválido.
Exemplo:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Onde
city.xml
é:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
Como o payload de entrada é JSON e não é XML válido, você recebe o erro:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Resolução
Verifique se a entrada transmitida para a política de transformação XSL é um payload XML válido e não vazio.
Para corrigir o problema com a política de transformação XSL da amostra, transmita um payload XML válido. Exemplo:
Modifique o arquivo
city.xml
para ter o conteúdo em XML, conforme mostrado abaixo:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Faça a chamada de API usando o comando cURL da seguinte maneira:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Causa: prefixo inválido
O payload XML de entrada transmitido para a política de transformação XSL tem um elemento que não é definido como um prefixo no arquivo XSL especificado na política.
Exemplo de mensagem de erro
{
"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"
}
}
}
Diagnóstico
Identifique o arquivo XSL que não foi avaliado pela política de transformação XML e o motivo da falha. Nesse caso, o motivo da falha indicaria que há um prefixo não resolvido em um número de linha específico no payload XML de entrada. Você encontra todas essas informações no elemento
faultstring
da resposta de erro. Por exemplo, nofaultstring
a seguir, o arquivo XSL éXSL-Transform.xsl
, o motivo da falha éUnresolved Prefix
e o número de linha é1
."faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Examine o conteúdo do arquivo XSL (identificado na etapa 1 acima) e o payload XML de entrada. Se o prefixo usado no número da linha (identificado na etapa 1 acima) do payload XML de entrada não existir no arquivo XSL, essa será a causa do erro.
Veja o exemplo de XSL e o payload XML correspondente que levam ao erro:
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>
Payload de entrada 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>
O payload XML de exemplo mostrado acima contém um elemento
<Life:Books>
. Observe que o XSL não tem esse prefixo. Em vez disso, ele tem o prefixo como<xsl:text><Life></xsl:text>
. Portanto, você receberá o erro:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Resolução
Certifique-se de que o payload XML de entrada transmitido à política de transformação XSL tenha todos os formatos de elemento definidos como prefixos no arquivo XSL usado na política.
Para corrigir o arquivo XML de exemplo acima, você pode modificar o arquivo conforme mostrado abaixo:
Payload XML de entrada atualizado
<?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>