Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
XSLSourceMessageNotAvailable
Código de error
steps.xsl.XSLSourceMessageNotAvailable
Cuerpo de respuesta de error
{ "fault": { "faultstring": "response message is not available for XSL: policy_name", "detail": { "errorcode": "steps.xsl.XSLSourceMessageNotAvailable" } } }
Ejemplo de mensaje de error
{
"fault": {
"faultstring": "response message is not available for XSL: xslt",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}
Causa
Este error se produce si la variable de cadena o message
especificada en el elemento <Source>
de la política XSLTransform es:
- Fuera del ámbito (no disponible en el flujo específico en el que se está ejecutando la política)
- No se puede resolver (no está definido)
Por ejemplo, este error se produce si la política XSLTransform se debe ejecutar en el flujo de solicitudes, pero el elemento <Source>
se asigna a la variable de respuesta, que no existe en el flujo de solicitudes.
Diagnóstico
Identifica la política XSLTransform en la que se ha producido el error y el nombre de la variable que no está disponible. Puedes encontrar ambos elementos en el elemento
faultstring
de la respuesta de error. Por ejemplo, en el siguientefaultstring
, el nombre de la política esxslt
y la variable esresponse
:faultstring": "response message is not available for XSL: xslt
En el XML de la política XSLTransform fallida, comprueba que el nombre de la variable definida en el elemento
<Source>
coincide con el nombre de la variable identificada en la cadena de error (paso 1 anterior). Por ejemplo, la siguiente política XSLTransform especifica una variable llamadaresponse
en el elemento<Source>
, que coincide con lo que hay en la cadena de error:<?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>
Determina si la variable utilizada en el elemento
<Source>
está definida y disponible en el flujo en el que se está ejecutando la política XSLTransform.Si la variable es:
- Fuera del ámbito (no disponible en el flujo específico en el que se está ejecutando la política) o
- No se puede resolver (no está definido)
entonces, esa es la causa del error.
Por ejemplo, supongamos que la política XSLTransform mostrada arriba se debe ejecutar en el flujo de solicitud. Recuerde que la variable
response
se usa en el elemento<Source>
de la política de ejemplo. La variableresponse
solo está disponible en el flujo de respuesta.Como la variable
response
no existe en el flujo de la solicitud, recibes el código de error:steps.xsl.XSLSourceMessageNotAvailable
Resolución
Comprueba que la variable definida en el elemento <Source>
de la política XSLTransform fallida se haya definido y exista en el flujo en el que se ejecuta la política.
Para corregir la política XSLTransform de ejemplo que se muestra arriba, puede modificar el elemento <Source>
para que use la variable request
, ya que existe en el flujo de solicitud:
<?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 de error
steps.xsl.XSLEvaluationFailed
Cuerpo de respuesta de error
{
"fault": {
"faultstring": "Evaluation of XSL <var>XSL_file_name</var> failed with reason: \"<var>reason_for_failure</var>",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Ejemplo de mensaje de error
{
"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"
}
}
}
Posibles motivos
Este error se produce si:
- La carga útil XML de entrada no está disponible o tiene un formato incorrecto.
- La política XSLTransform falla o no puede transformar el archivo XML de entrada en función de las reglas de transformación proporcionadas en el archivo XSL. Puede haber muchos motivos diferentes por los que falle la política XSLTransform. El motivo del error en el mensaje de error proporcionará más información sobre la causa. En la siguiente tabla se muestra una de las causas de este error (prefijo no válido) y se explica con un ejemplo.
Causa | Descripción |
---|---|
Input XML Payload unavailable (Carga útil XML de entrada no disponible) | La carga útil XML de entrada no se ha enviado o está vacía. |
XML de entrada con formato incorrecto | La carga útil XML de entrada tiene un formato incorrecto o no es válida. |
Prefijo no válido | La carga útil XML de entrada tiene un prefijo que no está definido en el archivo XSL. |
Causa: la carga útil XML de entrada no está disponible
Este error se produce si no se transfiere la carga útil XML de entrada o si la carga útil XML transferida como parte de la solicitud de API al proxy de API que tiene la política XSLTransform está vacía.
Ejemplo de mensaje de error
{
"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
Identifica el archivo XSL que no ha podido evaluar la política XML Transform y el motivo del error. Si no se envía la carga útil XML de entrada o está vacía, el motivo del fallo indicará que se ha producido un error de finalización prematura del documento durante el análisis. Puede encontrar toda esta información en el elemento
faultstring
de la respuesta de error. Por ejemplo, en el siguientefaultstring
, el archivo XSL esXSL-Transform.xsl
y el motivo del error esPremature end of document while parsing at line 1 (possibly around char 0)
. Este error significa que la carga útil XML no se ha enviado o está vacía."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Determina si la carga útil de XML de entrada que se ha transferido como parte de la solicitud está vacía. Si la carga útil de entrada no se envía o está vacía, ese es el motivo del error.
En la solicitud de ejemplo que se muestra a continuación, la carga útil de la solicitud (es decir, el cuerpo de la solicitud) que envió el usuario estaba vacía.
Por ejemplo:
curl -v "http://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml"
Donde your_host_alias es un dominio público que se usa para acceder a tus APIs, tal como se ha configurado en la propiedad
virtualhosts.hostAliases
de tu archivo de anulaciones. Consulta Especificar anulaciones de configuración.Como la carga útil de entrada XML está vacía, se muestra el siguiente error:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Resolución
Asegúrate de que la entrada que se ha pasado a la política XSLTransform sea una carga útil XML válida y no esté vacía.
Para solucionar el problema con la política XSLTransform de ejemplo, envía una carga útil XML válida. Por ejemplo:
Crea un archivo llamado
city.xml
con el siguiente contenido:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Haz la llamada a la API con un comando curl de la siguiente manera:
curl -v "http://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Donde your_host_alias es un dominio público que se usa para acceder a tus APIs, tal como se ha configurado en la propiedad
virtualhosts.hostAliases
de tu archivo de anulaciones. Consulta Especificar anulaciones de configuración.
Causa: XML de entrada incorrecto
La carga útil XML de entrada que se ha enviado como parte de la solicitud a la API de la política XSLTransform tiene un formato incorrecto o no es válida.
Ejemplo de mensaje de error
{
"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
Identifica el archivo XSL que no ha podido evaluar la política XML Transform y el motivo del error. Si la carga útil XML de entrada tiene un formato incorrecto, el motivo del error indicará que hay un carácter inesperado. Puedes encontrar toda esta información en el elemento
faultstring
de la respuesta de error. Por ejemplo, en el siguientefaultstring
, el archivo XSL esXSL-Transform.xsl
y el motivo del error esUnexpected char while looking for open tag ('<') character
. Es decir, falta el elemento "<
" en la carga útil XML."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Examina la carga útil XML de entrada que se ha enviado a la política XSLTransform y comprueba si tiene contenido XML válido. Si la carga útil de entrada no es un XML válido, esa es la causa del error.
En la solicitud de ejemplo que se muestra a continuación, la carga útil de entrada (es decir, el cuerpo de la solicitud) que ha enviado el usuario no es válida.
Por ejemplo:
curl -v "http://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Donde your_host_alias es un dominio público que se usa para acceder a tus APIs, tal como se ha configurado en la propiedad
virtualhosts.hostAliases
de tu archivo de anulaciones. Consulta Especificar anulaciones de configuración.En este ejemplo,
city.xml
se define de la siguiente manera:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
Como la carga útil de entrada es JSON y no XML válido, recibe el siguiente error:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Resolución
Asegúrate de que la entrada que se pasa a la política XSLTransform sea una carga útil XML válida y no esté vacía.
Para solucionar el problema con la política XSLTransform de ejemplo, envía una carga útil XML válida. Por ejemplo:
Modifica el archivo
city.xml
para que tenga el contenido en XML, tal como se muestra a continuación:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Haz la llamada a la API con el comando curl de la siguiente manera:
curl -v "http://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Donde your_host_alias es un dominio público que se usa para acceder a tus APIs, tal como se ha configurado en la propiedad
virtualhosts.hostAliases
de tu archivo de anulaciones. Consulta Especificar anulaciones de configuración.
Causa: prefijo no válido
La carga útil XML de entrada que se ha enviado a la política XSLTransform tiene un elemento que no se ha definido como prefijo en el archivo XSL especificado en la política.
Ejemplo de mensaje de error
{
"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
Identifica el archivo XSL que no ha podido evaluar la política XML Transform y el motivo del error. En este caso, el motivo del error indicaría que hay un prefijo sin resolver en un número de línea específico de la carga útil XML de entrada. Puedes encontrar toda esta información en el elemento
faultstring
de la respuesta de error. Por ejemplo, en el siguientefaultstring
, el archivo XSL esXSL-Transform.xsl
, el motivo del error esUnresolved Prefix
y el número de línea es1
."faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Examina el contenido del archivo XSL (identificado en el paso 1 anterior) y la carga útil XML de entrada. Si el prefijo utilizado en el número de línea (identificado en el paso 1 anterior) de la carga útil XML de entrada no existe en el archivo XSL, esa es la causa del error.
A continuación, se muestran el XSL de ejemplo y la carga útil XML correspondiente que provocan el error:
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>
Carga útil XML de entrada
<?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>
La carga útil XML de ejemplo que se muestra arriba contiene un elemento
<Life:Books>
. Ten en cuenta que el XSL no tiene este prefijo. En su lugar, tiene el prefijo<xsl:text><Life></xsl:text>
. Por lo tanto, aparece el error:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Resolución
Asegúrate de que la carga útil XML de entrada que se ha transferido a la política XSLTransform tiene todos los formatos de elemento definidos como prefijos en el archivo XSL que se usa en la política.
Para corregir el archivo XML de ejemplo que se muestra arriba, puede modificarlo como se indica a continuación:
Carga útil XML de entrada actualizada
<?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>