أنت تطّلع على مستندات 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 يكون إما:
- خارج النطاق (لا تتوفّر خلال المسار المحدّد الذي يتم فيه تنفيذ السياسة)
- يتعذّر حلّها (غير محدَّد)
على سبيل المثال، يحدث هذا الخطأ إذا كان من المفترض تنفيذ سياسة تحويل XSL
في تدفق الطلب، ولكن تم ضبط العنصر <Source>
على متغيّر الاستجابة،
وهو غير موجود في تدفق الطلب.
التشخيص
تحديد سياسة تحويل XSL حيث حدث الخطأ والاسم للمتغير غير المتاح. يمكنك العثور على كلا العنصرَين في عنصر
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 Transform
التي تعذّر تنفيذها محدّد ومتوفّر في العملية التي يتم تنفيذ السياسة فيها.
لتصحيح مثال سياسة تحويل 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. قد يكون هناك العديد الأسباب المختلفة لفشل سياسة تنسيق WebRTC. سبب التعذُّر في رسالة الخطأ مزيدًا من المعلومات حول السبب. يسرد الجدول التالي أحد أسباب هذا الخطأ، وهو "بادئة غير صالحة"، ويتم شرحه باستخدام مثال.
السبب | الوصف |
---|---|
لم تتوفّر حمولة 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 وسبب تعذُّر التقييم. في حال عدم تمرير حمولة 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 التي تم تمريرها كجزء من الطلب of فارغة. إذا لم يتم تمرير الحمولة البرمجية للإدخال أو كانت فارغة، هذا هو سبب حدوث الخطأ.
في مثال الطلب أدناه، كانت الحمولة المطلوبة (أي نص الطلب) التي أرسلها المستخدم فارغة.
على سبيل المثال:
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 التي تم إدخالها كجزء من طلب واجهة برمجة التطبيقات إلى سياسة WebRTC مكتوبة بشكل غير صحيح أو غير صالحة.
مثال على رسالة الخطأ
{
"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 المُدخَلة التي تم تمريرها إلى سياسة WebRTCransform وتحقَّق مما إذا كانت يشتمل على محتوى 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\""
الدقة
تأكد من أن الإدخال الذي تم تمريره إلى سياسة WebRTCransform يمثل حمولة بيانات أساسية صالحة بتنسيق 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 المدخلة التي تم تمريرها إلى سياسة WebRTC على عنصر لا يتم تحديدها كبادئة في ملف 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>