تحديد وحلّ المشاكل المتعلقة بأخطاء وقت تشغيل سياسة تحويل XSL

يتم الآن عرض مستندات 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 هو إما:

  • خارج النطاق (غير متاحة في المسار المحدّد الذي يتم فيه تنفيذ السياسة)
  • لا يمكن حلها (غير محددة)

على سبيل المثال، يحدث هذا الخطأ إذا كان من المفترض أن يتم تنفيذ سياسة تحويل XSL في تدفق الطلب، ولكن تم ضبط العنصر <Source> على متغيّر الاستجابة، وهو غير متوفّر في مسار الطلب.

التشخيص

  1. حدد سياسة تحويل XSL التي حدث فيها الخطأ واسم المتغير غير المتاح. يمكنك العثور على هذين العنصرَين في العنصر faultstring الخاص باستجابة الخطأ. على سبيل المثال، في faultstring التالي، يكون اسم السياسة هو xslt والمتغير response:

    faultstring": "response message is not available for XSL: xslt
    
  2. في ملف 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>
    
  3. حدِّد ما إذا كان المتغيّر المستخدَم في العنصر <Source> محدّدًا ومتاحًا في التدفق الذي يتم فيه تنفيذ سياسة تحويل XSL.

  4. إذا كان المتغير إما:

    • خارج النطاق (غير متاح في التدفق المحدد حيث يتم تنفيذ السياسة) أو
    • لا يمكن حلها (غير محددة)

    فسيكون هذا هو سبب الخطأ.

    على سبيل المثال، لنفترض أنه من المفترض أن يتم تنفيذ سياسة تحويل XSL الموضحة أعلاه في تدفق الطلب. تذكّر أنّ المتغيّر response يُستخدم في العنصر <Source> ضمن نموذج السياسة. لا يتوفّر المتغيّر response إلا في مسار الاستجابة.

    بما أنّ المتغيّر response غير متوفّر في مسار الطلب، ستتلقّى رمز الخطأ:

    steps.xsl.XSLSourceMessageNotAvailable
    

درجة الدقّة

تأكَّد من أنّ المتغيّر الذي تم ضبطه في العنصر <Source> في سياسة تحويل XSL الذي تعذّر تنفيذه قد تم تحديده وتوفُّره في المسار الذي يتم فيه تنفيذ السياسة.

لتصحيح مثال سياسة 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 التي تم إدخالها غير متوفّرة/غير صحيحة.
  • تفشل/تتعذّر سياسة WebRTCransform تحويل ملف XML المُدخَل بناءً على قواعد التحويل المتوفرة في ملف XSL. قد يكون هناك العديد من الأسباب المختلفة لفشل سياسة WebRTCransform. سيوفر سبب الفشل في رسالة الخطأ مزيدًا من المعلومات حول السبب. يدرج الجدول التالي أحد الأسباب المؤدية إلى هذا الخطأ، وهو بادئة غير صالحة، ويتضمّن مثالًا.
السبب الوصف
حمولة XML المدخلة غير متوفرة لم يتم تمرير حمولة XML المدخلة كما أنها فارغة.
إدخال XML غير صحيح حمولة XML المدخلة مكتوبة بشكل غير صحيح أو غير صالحة.
بادئة غير صالحة إنّ حمولة بيانات XML المدخلة لها بادئة لم يتم تعريفها في ملف XSL.

السبب: حمولة بيانات XML المُدخَلة غير متاحة

يحدث هذا الخطأ إذا لم يتم تمرير حمولة XML المُدخلة أو إذا كانت حمولة XML التي تم تمريرها كجزء من طلب واجهة برمجة التطبيقات إلى سياسة الخادم الوكيل لواجهة برمجة التطبيقات التي تحتوي على نوع WebRTCransform فارغًا.

مثال على رسالة الخطأ

{
    "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"
        }
    }
}

التشخيص

  1. حدِّد ملف 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)\""
    
  2. يُرجى تحديد ما إذا كانت حمولة بيانات 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)\""
    

درجة الدقّة

تأكَّد من أنّ الإدخال الذي تم تمريره إلى سياسة WebRTCransform هو حمولة XML صالحة وغير فارغة.

لإصلاح المشكلة المتعلقة بنموذج سياسة WebRTCransform، يجب ضبط حمولة بيانات XML صالحة. مثال:

  1. إنشاء ملف باسم city.xml يتضمّن المحتوى التالي:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. يمكنك إجراء طلب بيانات من واجهة برمجة التطبيقات باستخدام أمر cURL على النحو التالي:

    curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
    

السبب: إدخال XML غير صحيح

بيانات حمولة XML المدخلة التي تم تمريرها كجزء من طلب واجهة برمجة التطبيقات إلى سياسة WebRTCransform غير صالحة أو مكتوبة بشكل غير صحيح.

مثال على رسالة الخطأ

{
    "fault": {
        "faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('&lt;') character\"",
        "detail": {
            "errorcode": "steps.xsl.XSLEvaluationFailed"
        }
    }
}

التشخيص

  1. حدِّد ملف XSL الذي تعذّر تقييمه من خلال سياسة تحويل XML وسبب الإخفاق. إذا كانت حمولة بيانات XML المدخلة مكتوبة بشكل غير صحيح، سيشير سبب الفشل إلى وجود حرف غير متوقّع. يمكنك العثور على كل هذه المعلومات في العنصر faultstring الخاص باستجابة الخطأ. على سبيل المثال، في faultstring التالي، ملف XSL هو XSL-Transform.xsl، وسبب الإخفاق هو Unexpected char while looking for open tag ('&lt;') character. بمعنى أنّ "<" غير متوفّرة في حمولة بيانات XML.

    "faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('&lt;') character\""
    
  2. افحص حمولة بيانات 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 ('&lt;') character\""
    

درجة الدقّة

تأكَّد من أنّ الإدخال الذي تم تمريره إلى سياسة WebRTCransform هو حمولة بيانات XML صالحة وغير فارغة.

لإصلاح المشكلة المتعلقة بنموذج سياسة WebRTCransform، يجب ضبط حمولة بيانات XML صالحة. مثال:

  1. عدِّل الملف city.xml بحيث يكون المحتوى بتنسيق XML كما هو موضح أدناه:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. يمكنك إجراء طلب بيانات من واجهة برمجة التطبيقات باستخدام الأمر cURL على النحو التالي:

    curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
    

السبب: البادئة غير صالحة

تحتوي حمولة XML المدخلة التي تم تمريرها إلى سياسة WebRTCransform على عنصر لم يتم تعريفه كبادئة في ملف 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"
        }
    }
}

التشخيص

  1. يمكنك تحديد ملف 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)\""
    
  2. افحص محتوى ملف 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>&lt;Life&gt;</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>&lt;/Life&gt;</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>&lt;Life&gt;</xsl:text>. ومن ثم تظهر لك رسالة الخطأ:

    "faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly  around char 270)\""
    

درجة الدقّة

تأكَّد من أنّ حمولة XML المُدخلة التي يتم تمريرها إلى سياسة WebRTCransform تتضمّن جميع تنسيقات العناصر المحدّدة كبادئات في ملف 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>