Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
XSLSourceMessageNotAvailable
Codice di errore
steps.xsl.XSLSourceMessageNotAvailable
Corpo della risposta di 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
message
o stringa specificata nell'elemento <Source> del criterio XSLTransform è:
- Al di fuori dell'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 XSLTransform deve essere eseguito
nel flusso di richiesta, ma l'elemento <Source> è impostato sulla variabile di risposta,
che non esiste nel flusso di richiesta.
Diagnosi
Identifica il criterio XSLTransform in cui si è verificato l'errore e il nome della variabile non disponibile. Puoi trovare entrambi questi elementi nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il nome della policy èxslte la variabile èresponse:faultstring": "response message is not available for XSL: xsltNel file XML della policy XSLTransform non riuscita, verifica che il nome della variabile impostata nell'elemento
<Source>corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, la seguente policy XSLTransform specifica una variabile denominataresponsenell'elemento<Source>, che corrisponde a quella nella 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 eseguita la norma XSLTransform.Se la variabile è:
- Al di fuori dell'ambito (non disponibile nel flusso specifico in cui viene eseguita la policy) o
- Non può essere risolto (non è definito)
allora è questa la causa dell'errore.
Ad esempio, supponiamo che il criterio XSLTransform mostrato sopra debba essere eseguito nel flusso di richiesta. Ricorda che la variabile
responseviene utilizzata nell'elemento<Source>della norma di esempio. La variabileresponseè disponibile solo nel flusso di risposta.Poiché la variabile
responsenon esiste nel flusso di richiesta, ricevi il codice di errore:steps.xsl.XSLSourceMessageNotAvailable
Risoluzione
Assicurati che la variabile impostata nell'elemento <Source> del criterio XSLTransform non riuscito
sia definita ed esista nel flusso in cui viene eseguito il criterio.
Per correggere la policy XSLTransform di esempio mostrata sopra, puoi modificare l'elemento
<Source> in modo che utilizzi la variabile request, perché esiste nel flusso
della 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 di 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"
}
}
}
Cause possibili
Questo errore si verifica se:
- Il payload XML di input non è disponibile/è in formato errato.
- La policy XSLTransform non riesce/non è in grado di trasformare il file XML di input in base alle regole di trasformazione fornite nel file XSL. Potrebbero esserci molti motivi diversi per cui il criterio XSLTransform non va a buon fine. Il motivo dell'errore nel messaggio di errore fornirà ulteriori informazioni sulla causa. La tabella seguente elenca una delle cause di questo errore, ovvero il prefisso non valido, e viene spiegata con un esempio.
| Causa | Descrizione |
|---|---|
| Payload XML di input non disponibile | Il payload XML di input non viene passato o è vuoto. |
| XML di input non valido | Il payload XML di input non è valido o ha un formato non corretto. |
| Prefisso non valido | Il payload XML di input ha un prefisso 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 passato o se il payload XML passato come parte della richiesta API al proxy API con la policy 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"
}
}
}
Diagnosi
Identifica il file XSL che non è stato possibile valutare in base al criterio di trasformazione XML e il motivo dell'errore. Se il payload XML di input non viene trasmesso o è vuoto, il motivo dell'errore indicherà che si è verificata una fine prematura del documento durante l'analisi. Puoi trovare tutte queste informazioni nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il file XSL èXSL-Transform.xsle il motivo dell'errore èPremature end of document while parsing at line 1 (possibly around char 0). Questo errore indica 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 passato come parte della richiesta è vuoto. Se il payload di input non viene trasmesso o è vuoto, questo è il motivo dell'errore.
Nel seguente esempio di richiesta, il payload della richiesta (ovvero il corpo della richiesta) inviato dall'utente era vuoto.
Ad esempio:
curl -v "http://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml"
dove your_host_alias è un dominio pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliasesnel file di override. Consulta Specificare gli override della configurazione.Poiché il payload di input XML è vuoto, viene visualizzato 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 di esempio XSLTransform, trasmetti un payload XML valido. Ad esempio:
Crea un file denominato
city.xmlcon 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://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
dove your_host_alias è un dominio pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliasesnel file di override. Consulta Specificare gli override della configurazione.
Causa: XML di input non valido
Il payload XML di input passato come parte della richiesta API al criterio XSLTransform non è valido o è formattato in modo errato.
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"
}
}
}
Diagnosi
Identifica il file XSL che non è stato possibile valutare in base al criterio di trasformazione XML e il motivo dell'errore. Se il payload XML di input non è valido, il motivo dell'errore indicherà che è presente un carattere imprevisto. Puoi trovare tutte queste informazioni nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il file XSL èXSL-Transform.xsle il motivo dell'errore èUnexpected char while looking for open tag ('<') character. ovvero manca "<" 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 passato al criterio XSLTransform e verifica se contiene contenuti XML validi. Se il payload di input non è XML valido, questo è il motivo dell'errore.
Nella richiesta di esempio riportata di seguito, il payload di input (ovvero il corpo della richiesta) inviato dall'utente non era valido.
Ad esempio:
curl -v "http://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
dove your_host_alias è un dominio pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliasesnel file di override. Consulta Specificare gli override della configurazione.In questo esempio,
city.xmlè definito come:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }Poiché il payload di input è JSON e non 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.xmlin modo che i contenuti siano in formato 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://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
dove your_host_alias è un dominio pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliasesnel file di override. Consulta Specificare gli override della configurazione.
Causa: prefisso non valido
Il payload XML di input passato al criterio XSLTransform contiene 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"
}
}
}
Diagnosi
Identifica il file XSL che non è stato possibile valutare in base al criterio di trasformazione XML e il motivo dell'errore. In questo caso, il motivo dell'errore indicherebbe che esiste un prefisso non risolto in un numero di riga specifico nel payload XML di input. Puoi trovare tutte queste informazioni nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il file XSL èXSL-Transform.xsle il motivo dell'errore èUnresolved Prefixe 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, questo è il motivo dell'errore.
Di seguito sono riportati l'XSL di esempio e il payload XML corrispondente che hanno generato 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>Input XML Payload
<?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>. Tieni presente che l'XSL non ha questo prefisso. ma ha il prefisso<xsl:text><Life></xsl:text>. Pertanto, ricevi 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 segue:
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>