Estás viendo la documentación de Apigee Edge.
Ve a la
documentación de Apigee X. info
XSLSourceMessageNotAvailable
Código de error
steps.xsl.XSLSourceMessageNotAvailable
Cuerpo de la 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 ocurre si el message o la variable de string especificada en el elemento <Source>
de la política de transformación XSL:
- está fuera del alcance (no está disponible en el flujo específico en el que se ejecuta la política) o
- no se puede resolver (no está definida)
Por ejemplo, este error ocurre si se supone que la política de transformación de XSL se ejecutará en el flujo de solicitudes, pero el elemento <Source>
se establece en la variable de respuesta, que no existe en el flujo de la solicitud.
Diagnóstico
Identifica la política de transformación XSL en la que ocurrió el error y el nombre de la variable que no está disponible. Puedes encontrar ambos elementos en el elemento
faultstring
de la respuesta con error. Por ejemplo, en el siguiente valorfaultstring
, el nombre de la política esxslt
y la variable esresponse
:faultstring": "response message is not available for XSL: xslt
En el archivo XML de la política de transformación de XSL con errores, verifica que el nombre de la variable establecida en el elemento
<Source>
coincida con el nombre de la variable identificado en la cadena de error (paso 1 anterior). Por ejemplo, la siguiente política de transformación de XSL especifica una variable llamadaresponse
en el elemento<Source>
, que coincide con lo que contiene 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 que se usó en el elemento
<Source>
está definida y disponible en el flujo en el que se ejecuta la política de transformación de XSL.Verifica si la variable tiene una de las siguientes características:
- está fuera del alcance (no está disponible en el flujo específico en el que se ejecuta la política) o
- no se puede resolver (no está definida)
entonces esa es la causa del error.
A modo de ejemplo, supongamos que la política de transformación de XSL anterior se tiene que ejecutar en el flujo de solicitud. Recuerda 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.Dado que la variable
response
no existe en el flujo de solicitud, recibes el código de error:steps.xsl.XSLSourceMessageNotAvailable
Solución
Asegúrate de que la variable establecida en el elemento <Source>
de la política de transformación de XSL con errores se defina y exista en el flujo en el que se ejecuta la política.
Para corregir la política de transformación de XSL de ejemplo que se mostró antes, puedes modificar el elemento <Source>
a fin de usar la variable request
, ya que existe en el flujo de la 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 la 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"
}
}
}
Causas posibles
Este error se produce si se produce una de las siguientes situaciones:
- 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 según las reglas de transformación proporcionadas en el archivo XSL. Puede haber muchas causas diferentes por las cuales la política XSLTransform puede fallar. El motivo de la falla en el mensaje de error proporcionará más información sobre la causa. En la siguiente tabla, se muestra una causa de esa falla: prefijo no válido, y se explica con un ejemplo.
Causa | Descripción |
---|---|
La carga útil de XML de entrada no está disponible | La carga útil de XML de entrada no se pasa o está vacía. |
XML de entrada con formato incorrecto | La carga útil de XML de entrada presenta errores o no es válida. |
Prefijo no válido | La carga útil de XML de entrada tiene un prefijo que no se define en el archivo XSL. |
Causa: la carga útil XML de entrada no está disponible
Este error se produce si no se pasa la carga útil XML de entrada o la carga útil de XML como parte de la solicitud a la API al proxy de la API con 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 pudo evaluarse mediante la política de transformación de XML y el motivo del error. Si la carga útil XML de entrada no se pasa o está vacía, el motivo de la falla indica que hay un final de preparación del documento durante el análisis. Puedes encontrar esta información en el elemento
faultstring
de la respuesta de error. Por ejemplo, en la 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)
. Ese error significa que la carga útil de XML no se pasa 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 pasó como parte de la solicitud está vacía. Si la carga útil de entrada no se pasa o está vacía, esa es la causa del error.
En la solicitud de ejemplo 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://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml"
Debido a que la carga útil de entrada XML está vacía, recibirás 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)\""
Solución
Asegúrate de que la entrada que se pase a la política XSLTransform sea una carga útil de XML válida y que no esté vacía.
Para solucionar el problema con la política XSLTransform de muestra, pasa una carga útil de 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>
Realiza la llamada a la API con un comando cURL de la siguiente manera:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Causa: XML de entrada con formato incorrecto
La carga útil de XML de entrada que se pasó como parte de la solicitud a la API a 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 pudo evaluarse mediante la política de transformación de XML y el motivo del error. Si la carga útil de XML de entrada presenta errores de formato, el motivo de la falla indica que hay un carácter inesperado. Puedes encontrar esta información en el elemento
faultstring
de la respuesta de error. Por ejemplo, en la siguientefaultstring
, el archivo XSL esXSL-Transform.xsl
y el motivo del error esUnexpected char while looking for open tag ('<') character
. Es decir, falta el valor “<
” en la carga útil de XML."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Examina la carga útil de XML de entrada que se pasó a la política XSLTransform y verifica si tiene contenido XML válido o no. Si la carga útil de entrada no es un XML válido, esa es la causa del error.
En la solicitud de ejemplo 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://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
En el ejemplo anterior,
city.xml
es:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
Debido a que la carga útil de entrada es JSON y no es un XML válido, recibirás el error:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Solución
Asegúrate de que la entrada que se pase a la política XSLTransform sea una carga útil de XML válida y que no esté vacía.
Para solucionar el problema con la política XSLTransform de muestra, pasa una carga útil de XML válida. Por ejemplo:
Modifica el archivo
city.xml
para que el contenido esté en XML, como se muestra a continuación:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Realiza la llamada a la API con el comando cURL de la siguiente manera:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Causa: prefijo inválido
La carga útil de XML de entrada que se pasa a la política XSLTransform tiene un elemento que no se define como un 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 pudo evaluarse mediante la política de transformación de XML y el motivo del error. En este caso, el motivo de la falla indicaría que hay un prefijo sin resolver en un número de línea específico en la carga útil de XML de entrada. Puedes encontrar 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 de XML de entrada. Si el prefijo que se usa en el número de línea (identificado en el paso 1) de la carga útil de XML de entrada no existe en el archivo XSL, entonces es la causa del error.
A continuación, se muestra el XSL de muestra y la carga útil de XML correspondiente que conducen al 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 de 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 de XML de ejemplo anterior contiene un elemento
<Life:Books>
. Ten en cuenta que XSL no tiene este prefijo. En su lugar, tiene el prefijo como<xsl:text><Life></xsl:text>
. Por lo tanto, verá el siguiente error:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Solución
Asegúrate de que la carga útil de XML de entrada que se pasa a la política XSLTransform tenga todos los formatos de elementos definidos como prefijos en el archivo XSL que se usa en la política.
Para corregir el ejemplo de archivo XML anterior, puedes modificar el archivo como se muestra 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>