شما در حال مشاهده اسناد 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"
}
}
}
علت
اگر پیام یا متغیر رشته ای که در عنصر <Source>
خط مشی XSL Transform مشخص شده است، این خطا رخ می دهد:
- خارج از محدوده (در جریان خاصی که سیاست در آن اجرا می شود موجود نیست)
- قابل حل نیست (تعریف نشده است)
به عنوان مثال، اگر قرار باشد خط مشی XSL Transform در جریان درخواست اجرا شود، این خطا رخ می دهد، اما عنصر <Source>
روی متغیر پاسخ تنظیم می شود که در جریان درخواست وجود ندارد.
تشخیص
خط مشی XSL Transformation را که در آن خطا رخ داده و نام متغیری را که در دسترس نیست، شناسایی کنید. شما می توانید هر دوی این موارد را در عنصر
faultstring
پاسخ خطا پیدا کنید. به عنوان مثال، درfaultstring
زیر، نام سیاستxslt
و متغیرresponse
است:faultstring": "response message is not available for XSL: xslt
در XML خط مشی XSL Transform شکست خورده، بررسی کنید که نام مجموعه متغیر در عنصر
<Source>
با نام متغیر شناسایی شده در رشته خطا مطابقت داشته باشد (مرحله شماره 1 در بالا). به عنوان مثال، خط مشی XSL Transform زیر یک متغیر به نام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 Transform در آن اجرا میشود، تعریف شده و موجود است یا خیر.اگر متغیر یکی از این موارد باشد:
- خارج از محدوده (در جریان خاصی که سیاست در آن اجرا می شود موجود نیست) یا
- قابل حل نیست (تعریف نشده است)
پس این دلیل خطا است.
به عنوان مثال، فرض کنید سیاست XSL Transform نشان داده شده در بالا قرار است در جریان درخواست اجرا شود. به یاد بیاورید که متغیر
response
در عنصر<Source>
سیاست مثال استفاده می شود. متغیرresponse
فقط در جریان پاسخ موجود است.از آنجایی که متغیر
response
در جریان درخواست وجود ندارد، کد خطا را دریافت می کنید:steps.xsl.XSLSourceMessageNotAvailable
قطعنامه
اطمینان حاصل کنید که مجموعه متغیر در عنصر <Source>
خط مشی XSL Transform شکست خورده، تعریف شده است و در جریانی که سیاست اجرا می شود وجود دارد.
برای تصحیح مثال سیاست XSL Transform نشان داده شده در بالا، می توانید عنصر <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 Payload در دسترس نیست | بار ورودی XML ارسال یا خالی نیست. |
XML ورودی نادرست | بار ورودی XML بد شکل یا نامعتبر است. |
پیشوند نامعتبر است | محموله ورودی XML دارای پیشوندی است که در فایل XSL تعریف نشده است. |
علت: ورودی XML payload در دسترس نیست
اگر بار ورودی 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 Transform قابل ارزیابی نیست و دلیل خرابی آن شناسایی کنید. اگر بار ورودی XML ارسال نشود یا خالی باشد، دلیل خرابی نشان میدهد که در حین تجزیه، سند به پایان رسیده است. شما می توانید تمام این اطلاعات را در عنصر
faultstring
پاسخ خطا پیدا کنید. به عنوان مثال، درfaultstring
زیر، فایل XSLXSL-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 Transform قابل ارزیابی نیست و دلیل خرابی آن شناسایی کنید. اگر بار ورودی XML بد شکل باشد، دلیل خرابی نشان میدهد که یک کاراکتر غیرمنتظره وجود دارد. شما می توانید تمام این اطلاعات را در عنصر
faultstring
پاسخ خطا پیدا کنید. به عنوان مثال، درfaultstring
زیر، فایل XSLXSL-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>
با استفاده از دستور cURL به صورت زیر تماس API را انجام دهید:
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 Transform قابل ارزیابی نیست و دلیل خرابی آن شناسایی کنید. در این مورد، دلیل خرابی نشان می دهد که یک پیشوند حل نشده در یک شماره خط خاص در بار ورودی XML وجود دارد. شما می توانید تمام این اطلاعات را در عنصر
faultstring
پاسخ خطا پیدا کنید. به عنوان مثال، درfaultstring
زیر، فایل XSLXSL-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 payload در فایل 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 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>
مثال XML payload نشان داده شده در بالا حاوی عنصر
<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 Payload به روز شد
<?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>