Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
XSLSourceMessageNotAvailable
Mã lỗi
steps.xsl.XSLSourceMessageNotAvailable
Nội dung phản hồi lỗi
{
"fault": {
"faultstring": "response message is not available for XSL: policy_name",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}Thông báo lỗi mẫu
{
"fault": {
"faultstring": "response message is not available for XSL: xslt",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu thông báo hoặc biến chuỗi được chỉ định trong phần tử <Source> của chính sách Biến đổi XSL là:
- Ngoài phạm vi (không có trong quy trình cụ thể nơi chính sách đang được thực thi)
- Không thể phân giải (chưa được xác định)
Ví dụ: lỗi này xảy ra nếu chính sách Biến đổi XSL được giả định sẽ thực thi trong luồng yêu cầu, nhưng phần tử <Source> được đặt thành biến phản hồi, không tồn tại trong luồng yêu cầu.
Chẩn đoán
Xác định chính sách Biến đổi XSL nơi xảy ra lỗi và tên của biến không có sẵn. Bạn có thể tìm thấy cả hai mục này trong phần tử
faultstringcủa phản hồi lỗi. Ví dụ: trongfaultstringsau đây, tên chính sách làxsltvà biến làresponse:faultstring": "response message is not available for XSL: xsltTrong tệp XML chính sách XSL Transform không thành công, hãy xác minh rằng tên của biến được đặt trong phần tử
<Source>khớp với tên biến được xác định trong chuỗi lỗi (bước 1 ở trên). Ví dụ: chính sách Biến đổi XSL sau đây chỉ định một biến có tên làresponsetrong phần tử<Source>, khớp với nội dung trong chuỗi lỗi:<?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>Xác định xem biến được dùng trong phần tử
<Source>có được xác định và có sẵn trong luồng mà chính sách Biến đổi XSL đang được thực thi hay không.Nếu biến là một trong hai trường hợp sau:
- Ngoài phạm vi (không có trong quy trình cụ thể nơi chính sách đang được thực thi) hoặc
- Không thể phân giải (chưa được xác định)
thì đó là nguyên nhân gây ra lỗi.
Ví dụ: giả sử chính sách Biến đổi XSL nêu trên sẽ thực thi trong luồng yêu cầu. Hãy nhớ rằng biến
responseđược dùng trong phần tử<Source>của chính sách mẫu. Biếnresponsechỉ có trong luồng phản hồi.Vì biến
responsekhông tồn tại trong luồng yêu cầu, nên bạn sẽ nhận được mã lỗi:steps.xsl.XSLSourceMessageNotAvailable
Độ phân giải
Đảm bảo rằng biến được đặt trong phần tử <Source> của chính sách XSL Transform không thành công được xác định và tồn tại trong luồng mà chính sách thực thi.
Để sửa chính sách Biến đổi XSL trong ví dụ nêu trên, bạn có thể sửa đổi phần tử <Source> để sử dụng biến request, vì biến này tồn tại trong luồng yêu cầu:
<?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
Mã lỗi
steps.xsl.XSLEvaluationFailed
Nội dung phản hồi lỗi
{
"fault": {
"faultstring": "Evaluation of XSL <var>XSL_file_name</var> failed with reason: \"<var>reason_for_failure</var>",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Thông báo lỗi mẫu
{
"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"
}
}
}
Các nguyên nhân có thể
Lỗi này xảy ra nếu:
- Tải trọng XML đầu vào không có sẵn/không đúng định dạng.
- Chính sách XSLTransform không thành công/không thể chuyển đổi tệp XML đầu vào dựa trên các quy tắc chuyển đổi được cung cấp trong tệp XSL. Có thể có nhiều nguyên nhân khiến chính sách XSLTransform không thành công. Lý do thất bại trong thông báo lỗi sẽ cung cấp thêm thông tin về nguyên nhân. Bảng sau đây liệt kê một nguyên nhân như vậy gây ra lỗi này – Tiền tố không hợp lệ – và được giải thích bằng một ví dụ.
| Nguyên nhân | Mô tả |
|---|---|
| Không có tải trọng XML đầu vào | Tải trọng XML đầu vào không được truyền hoặc bị bỏ trống. |
| XML đầu vào không hợp lệ | Tải trọng XML đầu vào không đúng định dạng hoặc không hợp lệ. |
| Tiền tố không hợp lệ | Tải trọng XML đầu vào có một tiền tố không được xác định trong tệp XSL. |
Nguyên nhân: Không có trọng tải XML đầu vào
Lỗi này xảy ra nếu tải trọng XML đầu vào không được truyền hoặc tải trọng XML được truyền dưới dạng một phần của yêu cầu API đến API Proxy có chính sách XSLTransform bị trống.
Thông báo lỗi mẫu
{
"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"
}
}
}
Chẩn đoán
Xác định tệp XSL mà chính sách Biến đổi XML không đánh giá được và lý do thất bại. Nếu tải trọng XML đầu vào không được truyền hoặc bị trống, lý do thất bại sẽ cho biết rằng có một Kết thúc sớm của tài liệu trong khi phân tích cú pháp. Bạn có thể tìm thấy tất cả thông tin này trong phần tử
faultstringcủa phản hồi lỗi. Ví dụ: trongfaultstringsau đây, tệp XSL làXSL-Transform.xslvà lý do thất bại làPremature end of document while parsing at line 1 (possibly around char 0). Lỗi đó có nghĩa là tải trọng XML không được truyền hoặc bị trống."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""Xác định xem tải trọng XML đầu vào đã được truyền dưới dạng một phần của yêu cầu có trống hay không. Nếu tải trọng đầu vào không được truyền hoặc bị trống, thì đó là nguyên nhân gây ra lỗi.
Trong yêu cầu ví dụ bên dưới, tải trọng yêu cầu (tức là phần nội dung yêu cầu) do người dùng gửi là trống.
Ví dụ:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml"Vì tải trọng đầu vào XML trống, nên bạn sẽ gặp lỗi:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Độ phân giải
Đảm bảo rằng dữ liệu đầu vào được truyền đến chính sách XSLTransform là một tải trọng XML hợp lệ và không trống.
Để khắc phục vấn đề với chính sách XSLTransform mẫu, hãy truyền một tải trọng XML hợp lệ. Ví dụ:
Tạo một tệp có tên là
city.xmlvới nội dung sau:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>Thực hiện lệnh gọi API bằng lệnh cURL như sau:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Nguyên nhân: XML đầu vào không đúng định dạng
Tải trọng XML đầu vào được truyền dưới dạng một phần của yêu cầu API đến chính sách XSLTransform bị sai định dạng hoặc không hợp lệ.
Thông báo lỗi mẫu
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Chẩn đoán
Xác định tệp XSL mà chính sách Biến đổi XML không đánh giá được và lý do dẫn đến lỗi. Nếu tải trọng XML đầu vào không đúng định dạng, thì lý do khiến yêu cầu không thành công sẽ cho biết có một ký tự không mong muốn. Bạn có thể tìm thấy tất cả thông tin này trong phần tử
faultstringcủa phản hồi lỗi. Ví dụ: trongfaultstringsau đây, tệp XSL làXSL-Transform.xslvà lý do thất bại làUnexpected char while looking for open tag ('<') character. Tức là thiếu "<" trong tải trọng XML."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""Kiểm tra tải trọng XML đầu vào được truyền đến chính sách XSLTransform và xem tải trọng đó có nội dung XML hợp lệ hay không. Nếu tải trọng đầu vào không phải là XML hợp lệ, thì đó là nguyên nhân gây ra lỗi.
Trong yêu cầu ví dụ bên dưới, tải trọng đầu vào (tức là phần nội dung yêu cầu) do người dùng gửi là không hợp lệ.
Ví dụ:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xmlNhững nơi có
city.xml:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }Vì tải trọng đầu vào là JSON chứ không phải XML hợp lệ, nên bạn sẽ nhận được lỗi:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Độ phân giải
Đảm bảo rằng dữ liệu đầu vào được truyền đến chính sách XSLTransform là một tải trọng XML hợp lệ và không trống.
Để khắc phục vấn đề với chính sách XSLTransform mẫu, hãy truyền một tải trọng XML hợp lệ. Ví dụ:
Sửa đổi tệp
city.xmlđể có nội dung trong XML như minh hoạ bên dưới:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>Thực hiện lệnh gọi API bằng lệnh cURL như sau:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Nguyên nhân: Tiền tố không hợp lệ
Tải trọng XML đầu vào được truyền đến chính sách XSLTransform có một phần tử không được xác định là tiền tố trong tệp XSL được chỉ định trong chính sách.
Thông báo lỗi mẫu
{
"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"
}
}
}
Chẩn đoán
Xác định tệp XSL mà chính sách Biến đổi XML không thể đánh giá và lý do dẫn đến lỗi. Trong trường hợp này, lý do khiến yêu cầu không thành công sẽ cho biết rằng có một tiền tố chưa được phân giải tại một số dòng cụ thể trong tải trọng XML đầu vào. Bạn có thể tìm thấy tất cả thông tin này trong phần tử
faultstringcủa phản hồi lỗi. Ví dụ: trongfaultstringsau đây, tệp XSL làXSL-Transform.xsl, lý do thất bại làUnresolved Prefixvà số dòng là1."faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""Kiểm tra nội dung của tệp XSL (được xác định ở bước 1 ở trên) và tải trọng XML đầu vào. Nếu tiền tố được dùng trong số dòng (được xác định ở bước 1 nêu trên) của tải trọng XML đầu vào không có trong tệp XSL, thì đó là nguyên nhân gây ra lỗi.
Sau đây là XSL mẫu và tải trọng XML tương ứng dẫn đến lỗi:
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>Tải trọng XML đầu vào
<?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>Tải trọng XML mẫu minh hoạ ở trên chứa một phần tử
<Life:Books>. Lưu ý rằng XSL không có tiền tố này. Thay vào đó, tiền tố của tệp này là<xsl:text><Life></xsl:text>. Do đó, bạn sẽ gặp lỗi:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Độ phân giải
Đảm bảo rằng tải trọng XML đầu vào được truyền đến chính sách XSLTransform có tất cả các định dạng phần tử được xác định là tiền tố trong tệp XSL được dùng trong chính sách.
Để khắc phục tệp XML mẫu nêu trên, bạn có thể sửa đổi tệp như minh hoạ dưới đây:
Tải trọng XML đầu vào đã cập nhật
<?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>