Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. informazioni
XSLSourceMessageNotAvailable
Codice di errore
steps.xsl.XSLSourceMessageNotAvailable
Corpo della risposta all'errore
{ "fault": { "faultstring": "response message is not available for XSL: policy_name", "detail": { "errorcode": "steps.xsl.XSLSourceMessageNotAvailable" } } }
Esempio di messaggio di errore
{
"fault": {
"faultstring": "response message is not available for XSL: xslt",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}
Causa
Questo errore si verifica se la variabile di stringa o message specificata nell'elemento <Source>
del criterio XSL Transform è:
- Fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio)
- Non può essere risolto (non è definito)
Ad esempio, questo errore si verifica se il criterio di trasformazione XSL deve essere eseguito nel flusso della richiesta, ma l'elemento <Source>
è impostato sulla variabile di risposta, che non esiste nel flusso della richiesta.
Diagnostica
Identifica la norma di trasformazione XSL in cui si è verificato l'errore e il nome della variabile che non è disponibile. Puoi trovare entrambi gli elementi nell'elemento
faultstring
della risposta di errore. Ad esempio, infaultstring
seguente, il nome del criterio èxslt
e la variabile èresponse
:faultstring": "response message is not available for XSL: xslt
Nel file XML del criterio XSL Transform, verifica che il nome della variabile impostata nell'elemento
<Source>
corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 riportato sopra). Ad esempio, il seguente criterio XSL Transform specifica una variabile denominataresponse
nell'elemento<Source>
, che corrisponde al contenuto della stringa di errore:<?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 se la variabile utilizzata nell'elemento
<Source>
è definita e disponibile nel flusso in cui viene eseguito il criterio di trasformazione XSL.Se la variabile è:
- Fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) oppure
- Non può essere risolto (non è definito)
è questa la causa dell'errore.
Supponiamo, ad esempio, che la norma della trasformazione XSL mostrata sopra debba essere eseguita nel flusso della richiesta. Ricorda che la variabile
response
viene utilizzata nell'elemento<Source>
del criterio di esempio. La variabileresponse
è disponibile solo nel flusso di risposta.Poiché la variabile
response
non esiste nel flusso di richiesta, riceverai il codice di errore:steps.xsl.XSLSourceMessageNotAvailable
Risoluzione
Assicurati che la variabile impostata nell'elemento <Source>
del criterio di trasformazione XSL che non ha superato il test sia definita e esista nel flusso in cui viene eseguito il criterio.
Per correggere il criterio di trasformazione XSL di esempio mostrato sopra, puoi modificare l'elemento <Source>
in modo da utilizzare la variabile request
, perché esiste nel flusso di richiesta:
<?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
Codice di errore
steps.xsl.XSLEvaluationFailed
Corpo della risposta all'errore
{
"fault": {
"faultstring": "Evaluation of XSL <var>XSL_file_name</var> failed with reason: \"<var>reason_for_failure</var>",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Esempio di messaggio di errore
{
"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"
}
}
}
Possibili cause
Questo errore si verifica se:
- Il payload XML di input non è disponibile/non è in formato corretto.
- Il criterio XSLTransform non funziona o non è in grado di trasformare il file XML di input in base alle regole di trasformazione fornite nel file XSL. Il mancato funzionamento del criterio XSLTransform può essere causato da molte cause diverse. Il motivo dell'errore nel messaggio di errore fornirà ulteriori informazioni sulla causa. La seguente tabella elenca una di queste cause dell'errore, Prefisso non valido, ed è spiegata con un esempio.
Causa | Descrizione |
---|---|
Payload XML di input non disponibile | Il payload XML di input non è stato trasmesso o è vuoto. |
XML di input non corretto | Il payload XML di input non è nel formato corretto o non è valido. |
Prefisso non valido | Il payload XML di input ha un prefisso che non è definito nel file XSL. |
Causa: il payload XML di input non è disponibile
Questo errore si verifica se il payload XML di input non viene trasmesso o se il payload XML viene trasmesso come parte della richiesta API al proxy API con il criterio XSLTransform vuoto.
Esempio di messaggio di errore
{
"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"
}
}
}
Diagnostica
Identifica il file XSL che non è stato possibile valutare dal criterio XML Transform e il motivo dell'errore. Se il payload XML di input non viene passato o è vuoto, il motivo dell'errore indicherebbe che è presente una fine prematura del documento durante l'analisi. Puoi trovare tutte queste informazioni nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il file XLL èXSL-Transform.xsl
e il motivo dell'errore èPremature end of document while parsing at line 1 (possibly around char 0)
. Questo errore significa che il payload XML non è stato trasmesso o è vuoto."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Determina se il payload XML di input che è stato trasmesso come parte della richiesta di è vuoto. Se il payload di input non viene passato o è vuoto, è questa la causa dell'errore.
Nella richiesta di esempio riportata di seguito, il payload (ovvero il corpo della richiesta) inviato dall'utente era vuoto.
Ad esempio:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml"
Poiché il payload di input XML è vuoto, riceverai l'errore:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Risoluzione
Assicurati che l'input passato al criterio XSLTransform sia un payload XML valido e non vuoto.
Per risolvere il problema relativo al criterio XSLTransform di esempio, trasmetti un payload XML valido. Ad esempio:
Crea un file denominato
city.xml
con il seguente contenuto:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Effettua la chiamata API utilizzando un comando cURL come segue:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Causa: formato XML di input non corretto
Il payload XML di input trasmesso come parte della richiesta API al criterio XSLTransform non è valido o è in un formato non valido.
Esempio di messaggio di errore
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Diagnostica
Identifica il file XSL che non è stato possibile valutare dal criterio XML Transform e il motivo dell'errore. Se il formato del payload XML di input non è corretto, il motivo dell'errore indica la presenza di un carattere imprevisto. Puoi trovare tutte queste informazioni nell'elemento
faultstring
della risposta di errore. Ad esempio, infaultstring
di seguito, il file XSL èXSL-Transform.xsl
e il motivo dell'errore èUnexpected char while looking for open tag ('<') character
. Questo significa che "<
" non è presente nel payload XML."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Esamina il payload XML di input trasmesso al criterio XSLTransform e controlla se presenta contenuti XML validi o meno. Se il payload di input non è un XML valido, è questa la causa dell'errore.
Nella richiesta di esempio riportata di seguito, il payload di input (ovvero il corpo della richiesta) inviato dall'utente non è valido.
Ad esempio:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Dove si trova
city.xml
:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
Poiché il payload di input è JSON e non è un XML valido, viene visualizzato l'errore:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Risoluzione
Assicurati che l'input passato al criterio XSLTransform sia un payload XML valido e non vuoto.
Per risolvere il problema relativo al criterio XSLTransform di esempio, trasmetti un payload XML valido. Ad esempio:
Modifica il file
city.xml
in modo che abbia i contenuti in XML, come mostrato di seguito:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Effettua la chiamata API utilizzando il comando cURL come segue:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Causa: prefisso non valido
Il payload XML di input passato al criterio XSLTransform include un elemento che non è definito come prefisso nel file XSL specificato nel criterio.
Esempio di messaggio di errore
{
"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"
}
}
}
Diagnostica
Identifica il file XSL che non è stato possibile valutare dal criterio XML Transform e il motivo dell'errore. In questo caso, il motivo dell'errore indicherebbe la presenza di un prefisso non risolto in corrispondenza di un numero di riga specifico nel payload XML di input. Puoi trovare tutte queste informazioni nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il file XSL èXSL-Transform.xsl
, il motivo dell'errore èUnresolved Prefix
e il numero di riga è1
."faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Esamina il contenuto del file XSL (identificato nel passaggio 1 sopra) e il payload XML di input. Se il prefisso utilizzato nel numero di riga (identificato nel passaggio 1 sopra) del payload XML di input non esiste nel file XSL, allora questa è la causa dell'errore.
Di seguito sono riportati il codice XSL di esempio e il payload XML corrispondente che generano l'errore:
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 XML di input
<?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>
Il payload XML di esempio mostrato sopra contiene un elemento
<Life:Books>
. Nota che l'XSL non ha questo prefisso. ma ha il prefisso<xsl:text><Life></xsl:text>
. Ricevi quindi l'errore:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Risoluzione
Assicurati che il payload XML di input passato al criterio XSLTransform abbia tutti i formati degli elementi definiti come prefissi nel file XSL utilizzato nel criterio.
Per correggere il file XML di esempio mostrato sopra, puoi modificarlo come mostrato di seguito:
Payload XML di input aggiornato
<?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>