查看 Apigee Edge 說明文件。
前往 Apigee X 說明文件。info
XSLSourceMessageNotAvailable
錯誤代碼
steps.xsl.XSLSourceMessageNotAvailable
錯誤回應主體
{ "fault": { "faultstring": "response message is not available for XSL: policy_name", "detail": { "errorcode": "steps.xsl.XSLSourceMessageNotAvailable" } } }
錯誤訊息範例
{
"fault": {
"faultstring": "response message is not available for XSL: xslt",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}
原因
如果系統判定
訊息
或在 XSL 轉換政策的 <Source>
元素中指定的字串變數為以下任一變數:
- 超出範圍 (無法在執行政策的特定流程中使用)
- 無法解析 (未定義)
例如,當應執行 XSL 轉換政策時,就會發生此錯誤
擷取在要求流程中,但 <Source>
元素設為回應變數,
這時就不會出現在要求流程中
診斷
找出發生錯誤的 XSL 轉換政策和名稱 變數的一部分您可以在「 錯誤回應的
faultstring
元素。例如,在以下faultstring
中,政策名稱為xslt
,變數為response
:faultstring": "response message is not available for XSL: xslt
在失敗的 XSL 轉換政策 XML 中,請確認
<Source>
元素中設定的變數名稱與錯誤字串中指出的變數名稱相符 (上方步驟 1)。舉例來說,下列 XSL 轉換政策會在<Source>
元素中指定名為response
的變數,與錯誤字串中的內容相符:<?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>
判斷是否已定義並提供
<Source>
元素中使用的變數 處理了執行 XSL 轉換政策的流程。如果變數為:
- 超出範圍 (不適用於政策的特定流程 執行) 或
- 無法解析 (未定義)
則表示這是錯誤的原因。
舉例來說,假設上述 XSL 轉換政策應在要求流程中執行。提醒您,
response
變數用於 範例政策的<Source>
元素。response
變數是 這只會在回應流程中顯示。由於要求流程中沒有
response
變數,因此您會收到 錯誤代碼:steps.xsl.XSLSourceMessageNotAvailable
解析度
確保失敗的 XSL 轉換的 <Source>
元素中設定的變數
政策的定義並存在於政策執行流程中。
如要修正上述範例 XSL 轉換政策,
<Source>
元素來使用 request
變數,因為要求中已有該變數
流程:
<?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
錯誤代碼
steps.xsl.XSLEvaluationFailed
錯誤回應主體
{
"fault": {
"faultstring": "Evaluation of XSL <var>XSL_file_name</var> failed with reason: \"<var>reason_for_failure</var>",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
錯誤訊息範例
{
"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"
}
}
}
可能原因
發生這個錯誤的原因如下:
- 輸入的 XML 酬載無效/格式錯誤。
- XSLTransform 政策失敗/無法轉換輸入 XML 檔案 依據 XSL 檔案提供的轉換規則進行處理。您希望委刊項 XSLTransform 政策失敗的各種原因失敗原因 訊息中的指示,即可查看原因的詳細資訊。下表列出這項失敗的其中一個原因 - 無效的前置字串 - 並透過範例說明。
原因 | 說明 |
---|---|
輸入 XML 酬載不可用 | 輸入的 XML 酬載未傳遞或為空白。 |
輸入的 XML 格式錯誤 | 輸入的 XML 酬載格式錯誤或無效。 |
無效前置字串 | 輸入 XML 酬載含有 XSL 檔案未定義的前置字串。 |
原因:輸入內容 XML 酬載無法使用
如果未傳送輸入 XML 酬載,或是將 XML 酬載傳送至 API 代理程式,而該代理程式 XSLTransform 政策為空白,就會發生此錯誤。
錯誤訊息範例
{
"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"
}
}
}
診斷
找出 XML 轉換無法評估的 XSL 檔案 以及失敗原因如果沒有傳遞輸入 XML 酬載,或 為空白,失敗原因表示具有早期結束 剖析結果。您可以在
faultstring
中找到所有資訊 元素。例如,在下列faultstring
中, XSL 檔案為XSL-Transform.xsl
,失敗原因為Premature end of document while parsing at line 1 (possibly around char 0)
。這個錯誤代表 表示 XML 酬載未傳遞或為空白。"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
判斷是否已做為要求的一部分傳遞的輸入 XML 酬載 為空白。如果輸入酬載未傳遞或空白,這就是原因 。
在下面的要求範例中,要求酬載 (也就是要求主體) 沒有任何內容
例如:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml"
由於 XML 輸入酬載為空,因此您會收到以下錯誤訊息:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
解析度
請確認傳遞至 XSLTransform 政策的輸入內容為有效的 XML 酬載,且非空白。
如要修正 XSLTransform 政策範例的問題,請傳遞有效的 XML 酬載。例如:
建立名為
city.xml
的檔案,並在當中加入下列內容:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
使用 cURL 指令發出 API 呼叫,如下所示:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
原因:格式錯誤的輸入 XML
將輸入 XML 酬載做為 API 要求的一部分傳遞至 XSLTransform 政策 格式錯誤或無效
錯誤訊息範例
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
診斷
指出 XML 轉換政策無法評估的 XSL 檔案,以及失敗的原因。如果輸入的 XML 酬載格式錯誤,原因會是 失敗可能表示有未預期的字元。您可以在錯誤回應的
faultstring
元素中找到所有這些資訊。例如,在 以下faultstring
,XSL 檔案為XSL-Transform.xsl
,原因在於 失敗則為Unexpected char while looking for open tag ('<') character
。 也就是「<
」XML 酬載中遺失了 。"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
檢查傳遞至 XSLTransform 政策的輸入 XML 酬載,並確認是否可以 是否含有效的 XML 內容如果輸入酬載不是有效的 XML,則是錯誤的原因。
在以下示例要求中,使用者傳送的輸入酬載 (即要求主體) 無效。
例如:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
其中
city.xml
為:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
由於輸入酬載是 JSON 且不是有效的 XML,因此您會收到以下錯誤訊息:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
解析度
請確認傳遞至 XSLTransform 政策的輸入內容為有效的 XML 酬載,且非空白。
如要修正 XSLTransform 政策範例的問題,請傳遞有效的 XML 酬載。 例如:
修改
city.xml
檔案,將內容改成 XML 格式的內容,如下所示:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
使用 cURL 指令發出 API 呼叫,如下所示:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
原因:前置字元無效
傳遞至 XSLTransform 政策的輸入 XML 酬載含有元素,但該元素並未在政策中指定的 XSL 檔案中定義為前置字串。
錯誤訊息範例
{
"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"
}
}
}
診斷
指出 XML 轉換政策無法評估的 XSL 檔案,以及失敗的原因。在此情況下,失敗原因可能代表 指出輸入 XML 中的某行編號有未解析的前置字元 酬載。您可以在
faultstring
錯誤回應。例如,下列faultstring
中的 XSL 檔案為XSL-Transform.xsl
,失敗原因為Unresolved Prefix
且行 編號為1
。"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
檢查 XSL 檔案的內容 (請參閱上述步驟 1) 和輸入的 XML 酬載。如果輸入 XML 酬載的列號 (在步驟 1 中指出) 所使用的前置字串不在 XSL 檔案中,就會導致錯誤。
以下是導致錯誤的 XSL 範例和對應的 XML 酬載:
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>
輸入 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>
上方顯示的 XML 酬載範例包含元素
<Life:Books>
。 請注意,XSL 不含這個前置字串。而是使用前置字串<xsl:text><Life></xsl:text>
。因此,您會收到以下錯誤訊息:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
解析度
確保傳遞至 XSLTransform 政策的輸入 XML 酬載具備 元素格式在政策中使用的 XSL 檔案中定義為前置字元。
如要修正上述 XML 檔案範例,請修改檔案,如下所示:
已更新輸入 XML 酬載
<?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>