أنت الآن بصدد الاطّلاع على مستندات 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"
}
}
}
السبب
يحدث هذا الخطأ إذا كان
المتغير الخاص بالرسالة
أو السلسلة المحدّدة في العنصر <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 للإدخال غير متاحة أو غير صالحة.
- تعذُّر/عدم إمكانية تحويل ملف XML الإدخال باستخدام سياسة XSLTransform استنادًا إلى قواعد التحويل المتوفّرة في ملف XSL قد تكون هناك أسباب مختلفة لتعذُّر تنفيذ سياسة XSLTransform. سيوفر سبب التعذّر في رسالة الخطأ مزيدًا من المعلومات حول السبب. يسرد الجدول التالي أحد أسباب هذا الخطأ، وهو "بادئة غير صالحة"، ويتم توضيح ذلك بمثال.
| السبب | الوصف |
|---|---|
| حمولة XML للإدخال غير متوفّرة | لم يتم تمرير حمولة XML للإدخال أو أنّها فارغة. |
| تنسيق XML غير صالح | حمولة XML للإدخال غير صحيحة أو غير صالحة. |
| بادئة غير صالحة | تحتوي حمولة XML المُدخَلة على بادئة غير محدَّدة في ملف XSL. |
السبب: حمولة XML للإدخال غير متاحة
يحدث هذا الخطأ إذا لم يتم تمرير حمولة XML للإدخال أو إذا كانت حمولة XML التي تم تمريرها كجزء من طلب بيانات من واجهة برمجة التطبيقات إلى الخادم الوكيل لواجهة برمجة التطبيقات الذي يتضمّن سياسة 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التالي، يكون ملف 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 على النحو التالي:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
السبب: ملف XML للإدخال مكتوب بشكلٍ غير صحيح
حمولة XML التي تم إدخالها والتي تم تمريرها كجزء من طلب البيانات من واجهة برمجة التطبيقات إلى سياسة 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التالي، ملف 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>أرسِل طلب بيانات من واجهة برمجة التطبيقات باستخدام أمر 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 Transform وسبب تعذُّر التقييم. في هذه الحالة، سيشير سبب الخطأ إلى أنّه هناك بادئة لم يتم حلّها في رقم سطر معيّن في حمولة 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>