คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
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"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปร message หรือสตริงที่ระบุในองค์ประกอบ <Source>
ของนโยบายการแปลง XSL มีลักษณะดังนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนเฉพาะเจาะจงที่มีการใช้นโยบาย)
- แก้ไขไม่ได้ (ไม่ได้กำหนดไว้)
เช่น ข้อผิดพลาดนี้เกิดขึ้นหากควรใช้นโยบายการแปลง XSL ในโฟลว์คำขอ แต่กำหนดองค์ประกอบ <Source>
เป็นตัวแปรการตอบกลับ ซึ่งไม่มีอยู่ในโฟลว์คำขอ
การวินิจฉัย
ระบุนโยบายการเปลี่ยนรูปแบบ XSL ที่เกิดข้อผิดพลาดและชื่อของตัวแปรที่ไม่พร้อมใช้งาน คุณจะพบทั้ง 2 รายการนี้ในองค์ประกอบ
faultstring
ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในfaultstring
ต่อไปนี้ ชื่อนโยบายคือxslt
และตัวแปรคือresponse
faultstring": "response message is not available for XSL: xslt
ใน XML ของนโยบายการแปลง XSL ที่ไม่สำเร็จ ให้ตรวจสอบว่าชื่อตัวแปรที่ตั้งไว้ในองค์ประกอบ
<Source>
ตรงกับชื่อตัวแปรที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน) ตัวอย่างเช่น นโยบายการแปลง XSL ต่อไปนี้ระบุตัวแปรชื่อresponse
ในองค์ประกอบ<Source>
ซึ่งตรงกับสิ่งที่อยู่ในสตริงข้อผิดพลาด<?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
ความละเอียด
ตรวจสอบว่าได้กำหนดตัวแปรที่ตั้งค่าในองค์ประกอบ <Source>
ของนโยบายการแปลง XSL ที่ล้มเหลวและอยู่ในโฟลว์ที่นโยบายดำเนินการ
หากต้องการแก้ไขตัวอย่างนโยบายการเปลี่ยนรูปแบบ 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 ไปยังพร็อกซี 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"
}
}
}
การวินิจฉัย
ระบุไฟล์ XSL ที่นโยบายการแปลง XML ประเมินไม่ได้และสาเหตุของความล้มเหลว หากเพย์โหลด 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>
เรียก API โดยใช้คำสั่ง cURL ดังนี้
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"
}
}
}
การวินิจฉัย
ระบุไฟล์ XSL ที่นโยบายการแปลง XML ประเมินไม่ได้และสาเหตุของความล้มเหลว หากเพย์โหลด 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\""
ตรวจสอบเพย์โหลด XML ของอินพุตที่ส่งผ่านไปยังนโยบาย XSLTransform และดูว่ามีเนื้อหา 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>
เรียก API โดยใช้คำสั่ง cURL ดังนี้
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
สาเหตุ: คำนำหน้าไม่ถูกต้อง
เปย์โหลด XML อินพุตที่ส่งผ่านไปยังนโยบาย XSLTransform มีองค์ประกอบที่ไม่ได้กำหนดเป็นคำนำหน้าในไฟล์ 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"
}
}
}
การวินิจฉัย
ระบุไฟล์ XSL ที่นโยบายการแปลง XML ประเมินไม่ได้และสาเหตุของความล้มเหลว ในกรณีนี้ เหตุผลที่ล้มเหลวจะระบุว่ามีคำนำหน้าที่ยังไม่ได้แก้ไขที่หมายเลขบรรทัดเฉพาะในเพย์โหลด 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 ของอินพุต หากไม่มีคำนำหน้าที่ใช้ในหมายเลขบรรทัด (ระบุในขั้นตอนที่ 1 ด้านบน) ของเพย์โหลด XML อินพุตอยู่ในไฟล์ 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)\""
ความละเอียด
ตรวจสอบว่าเพย์โหลด XML ของอินพุตที่ส่งผ่านไปยังนโยบาย XSLTransform มีรูปแบบองค์ประกอบทั้งหมดที่กำหนดเป็นคำนำหน้าในไฟล์ 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>