Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
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
tin nhắn
biến hoặc chuỗi được chỉ định trong phần tử <Source>
của chính sách Chuyển đổi PPID là:
- Không thuộc phạm vi (không có trong luồng cụ thể mà chính sách đang được thực thi)
- Không thể giải quyết (không xác định)
Ví dụ: lỗi này xảy ra nếu chính sách Chuyển đổi BII được cho là sẽ được 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 có trong luồng yêu cầu.
Chẩn đoán
Xác định chính sách Chuyển đổi BII trong trường hợp 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ử
faultstring
của phản hồi lỗi. Ví dụ: trong các trường hợp saufaultstring
, tên chính sách làxslt
và biến làresponse
:faultstring": "response message is not available for XSL: xslt
Trong tệp XML chính sách Chuyển đổi XSL 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 Chuyển đổi PPID sau chỉ định một biến có tên làresponse
trong phần tử<Source>
. Biến này 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 sử dụng trong phần tử
<Source>
có được xác định và có sẵn trong luồng mà chính sách Chuyển đổi XSL đang được thực thi hay không.Nếu biến là:
- Ngoài phạm vi (không có trong luồng cụ thể mà 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 Chuyển đổi BII được hiển thị ở trên được cho là 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ếnresponse
chỉ có trong luồng phản hồi.Vì biến
response
khô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 Chuyển đổi XSL 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 Chuyển đổi XSL mẫ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:
- Không có/không đúng định dạng tải trọng XML đầu vào.
- 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ó rất nhiều các nguyên nhân khác nhau khiến chính sách PPIDTransform không thành công. Lý do lỗi trong thông báo lỗi sẽ cung cấp thêm thông tin về nguyên nhân. Nội dung sau đây bảng liệt kê một nguyên nhân gây ra lỗi này – Tiền tố không hợp lệ – và được giải thích với ví dụ.
Nguyên nhân | Mô tả |
---|---|
Không thể tải dữ liệu XML đầu vào | Tải trọng XML đầu vào không được truyền hoặc bị trống. |
Tệp XML đầu vào có định dạng không đúng | Trọng tải 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ó tiền tố không được xác định trong tệp {8/}. |
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 trong yêu cầu API đến Proxy API có chính sách XSLTransform 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 Chuyển đổi XML không thể đánh giá và lý do không đánh giá được. Nếu tải trọng XML đầu vào không được truyền hoặc trống, thì lý do không thành công 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
faultstring
của phản hồi lỗi. Ví dụ: trongfaultstring
sau, thuộc tính Tệp PPID làXSL-Transform.xsl
và lý do không thành công 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 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 như một phần của yêu cầu hay chưa là trống. Nếu tải trọng đầu vào không được truyền hoặc trống, thì đó là nguyên nhân gây ra lỗi.
Trong yêu cầu mẫu bên dưới, tải trọng yêu cầu (tức là nội dung yêu cầu) mà 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 bị 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à 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 tải trọng XML hợp lệ. Ví dụ:
Tạo một tệp có tên
city.xml
vớ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 như một phần của yêu cầu API vào chính sách VASTTransform không đúng định dạng hoặc không hợp lệ.
Ví dụ về thông báo lỗi
{
"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 {8/} không thể đánh giá được bằng chính sách Chuyển đổi XML và lý do thất bại. Nếu tải trọng XML đầu vào có định dạng không đúng, thì lý do lỗi 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ử
faultstring
của phản hồi lỗi. Ví dụ: trongfaultstring
sau đây, tệp PPID làXSL-Transform.xsl
, và lý do cho lỗi làUnexpected char while looking for open tag ('<') character
. Đó chính là "<
" bị 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 liệu 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 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.xml
Trong đó
city.xml
là:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
Vì tải trọng đầu vào là JSON và không phải XML hợp lệ nên bạn sẽ gặp 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 VASTTransform mẫu, hãy chuyển 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 chuyển vào chính sách {8/}Transform có một phần tử không được được xác định là tiền tố trong tệp {8/} đượ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 Chuyển đổi XML không thể đánh giá và lý do không đánh giá được. Trong trường hợp này, lý do 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ử
faultstring
của phản hồi lỗi. Ví dụ: trongfaultstring
sau, tệp ABI làXSL-Transform.xsl
và lý do không thành công làUnresolved Prefix
và dòng số điện thoại 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 PPID (được xác định trong bước #1 ở trên) và dữ liệu đầu vào tải trọng XML. Nếu tiền tố được sử dụng trong số dòng (xác định ở bước 1 ở trên) của tải trọng XML đầu vào không tồn tại trong tệp XSL, thì đó là nguyên nhân gây ra lỗi.
Dưới đây là BII 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>
Nhập trọng tải 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>
Tải trọng XML mẫu hiển thị ở trên chứa phần tử
<Life:Books>
. Lưu ý rằng XSL không có tiền tố này. Thay vào đó, lớp này có tiền tố 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ả đị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 ở trên, bạn có thể sửa đổi tệp như sau:
Đã cập nhật tải trọng đầu vào 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>