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

কারণ

XSL ট্রান্সফর্ম নীতির <Source> এলিমেন্টে উল্লেখ করা মেসেজ বা স্ট্রিং ভেরিয়েবল যদি:

  • স্কোপের বাইরে (যে নির্দিষ্ট ফ্লোতে নীতি প্রয়োগ করা হচ্ছে সেখানে উপলভ্য নয়)
  • সমাধান করা যাচ্ছে না (সংজ্ঞায়িত করা নেই)

যেমন, XSL ট্রান্সফর্ম নীতি যদি অনুরোধ ফ্লোতে এক্সিকিউট করার কথা থাকে, কিন্তু <Source> এলিমেন্টটি যদি রেসপন্স ভেরিয়েবলে সেট করা থাকে, তাহলে এই সমস্যা হয়। অনুরোধ ফ্লোতে এটি থাকে না।

ডায়াগনসিস

  1. যে XSL ট্রান্সফর্মেশন নীতিতে সমস্যা হয়েছে সেটি এবং উপলভ্য নেই এমন ভেরিয়েবলের নাম চিহ্নিত করুন। আপনি সমস্যার উত্তরের faultstring এলিমেন্টে এই দুটি আইটেমই খুঁজে পাবেন। যেমন, নিম্নলিখিত faultstring-এ, নীতির নাম হল xslt এবং ভেরিয়েবল হল response:

    faultstring": "response message is not available for XSL: xslt
    
  2. XSL ট্রান্সফর্ম নীতি XML কাজ না করলে, যাচাই করে দেখুন যে <Source> এলিমেন্টে সেট করা ভেরিয়েবলের নাম ফল্ট স্ট্রিংয়ে (উপরে #১ ধাপ) শনাক্ত করা ভেরিয়েবলের নামের সাথে ম্যাচ করছে কিনা। যেমন, নিম্নলিখিত XSL ট্রান্সফর্ম নীতিতে <Source> এলিমেন্টে response নামের একটি ভেরিয়েবল নির্দিষ্ট করা হয়েছে, যা ফল্ট স্ট্রিংয়ের সাথে ম্যাচ করে:

    <?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
    

রেজোলিউশন

নিশ্চিত করুন যে ব্যর্থ XSL ট্রান্সফর্ম নীতির <Source> এলিমেন্টে সেট করা ভেরিয়েবল, নীতি যেখানে এক্সিকিউট হয় সেই ফ্লোতে সংজ্ঞায়িত করা আছে এবং বিদ্যমান আছে।

উপরে দেখানো XSL ট্রান্সফর্ম নীতির উদাহরণটি ঠিক করতে, আপনি request ভেরিয়েবল ব্যবহার করার জন্য <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>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 নীতি, XSL ফাইলে দেওয়া ট্রান্সফর্মেশন নিয়ম অনুযায়ী ইনপুট XML ফাইলকে ট্রান্সফর্ম করতে পারছে না/ব্যর্থ হচ্ছে। XSLTransform নীতি কাজ না করার বিভিন্ন কারণ থাকতে পারে। সমস্যার মেসেজে ব্যর্থতার কারণ দেওয়া থাকলে, সেটি থেকে কারণ সম্পর্কে আরও তথ্য পাওয়া যাবে। নিচের টেবিলে এই সমস্যার একটি কারণ - ভুল প্রিফিক্স - তালিকাভুক্ত করা হয়েছে এবং একটি উদাহরণ দিয়ে তা ব্যাখ্যা করা হয়েছে।
কারণ বিবরণ
ইনপুট XML পেলোড উপলভ্য নেই ইনপুট XML পেলোড পাস করা হয়নি বা সেটি খালি আছে।
ইনপুট XML ভুল ফর্ম্যাটে আছে ইনপুট XML পেলোড ভুল ফর্ম্যাটে আছে বা সঠিক নয়।
ভুল প্রিফিক্স ইনপুট XML পেলোডের একটি প্রিফিক্স আছে যা XSL ফাইলে সংজ্ঞায়িত করা হয়নি।

কারণ: ইনপুট XML পেলোড উপলভ্য নেই

ইনপুট XML পেলোড পাস না করা হলে অথবা XSLTransform নীতি সহ API প্রক্সি সার্ভারে API অনুরোধের অংশ হিসেবে পাস করা XML পেলোড খালি থাকলে এই সমস্যা হয়।

সমস্যার মেসেজের উদাহরণ

{
    "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. XML Transform নীতি মূল্যায়ন করতে না পারা XSL ফাইল এবং ব্যর্থতার কারণ শনাক্ত করুন। ইনপুট 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)\""
    

রেজোলিউশন

XSLTransform নীতিতে পাস করা ইনপুটটি সঠিক XML পেলোড এবং খালি নয় কিনা তা নিশ্চিত করুন।

XSLTransform নীতির নমুনা সংক্রান্ত সমস্যার সমাধান করতে, একটি বৈধ XML পেলোড পাস করুন। যেমন:

  1. নিম্নলিখিত কন্টেন্ট সহ city.xml নামে একটি ফাইল তৈরি করুন:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. নিম্নলিখিত cURL কমান্ড ব্যবহার করে API কল করুন:

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

কারণ: ভুল ইনপুট XML

XSLTransform নীতিতে API অনুরোধের অংশ হিসেবে পাস করা ইনপুট XML পেলোড ভুল ফর্ম্যাট বা অবৈধ।

সমস্যার মেসেজের উদাহরণ

{
    "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. XML ট্রান্সফর্ম নীতি দ্বারা মূল্যায়ন করা যায়নি এমন XSL ফাইল এবং ব্যর্থতার কারণ শনাক্ত করুন। ইনপুট 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. XSLTransform নীতিতে পাস করা ইনপুট XML পেলোড পরীক্ষা করে দেখুন যে এতে বৈধ 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\""
    

রেজোলিউশন

XSLTransform নীতিতে পাস করা ইনপুটটি সঠিক XML পেলোড এবং খালি নয় কিনা তা নিশ্চিত করুন।

XSLTransform নীতির নমুনা সংক্রান্ত সমস্যার সমাধান করতে, একটি বৈধ XML পেলোড পাস করুন। যেমন:

  1. নিচে দেখানো XML-এর মতো কন্টেন্ট পেতে ফাইলটি city.xml পরিবর্তন করুন:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. নিম্নলিখিত cURL কমান্ড ব্যবহার করে API কল করুন:

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

কারণ: ভুল প্রিফিক্স

XSLTransform নীতিতে পাস করা ইনপুট XML পেলোডের এমন একটি এলিমেন্ট আছে যা নীতিতে উল্লেখ করা 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. XML ট্রান্সফর্ম নীতি দ্বারা মূল্যায়ন করা যায়নি এমন XSL ফাইল এবং ব্যর্থতার কারণ শনাক্ত করুন। এই ক্ষেত্রে, ব্যর্থতার কারণ হিসেবে ইনপুট 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 ফাইলের কন্টেন্ট (উপরে #১ ধাপে শনাক্ত করা হয়েছে) এবং ইনপুট XML পেলোড পরীক্ষা করুন। ইনপুট 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)\""
    

রেজোলিউশন

XSLTransform নীতিতে পাস করা ইনপুট XML পেলোডের মধ্যে, নীতিতে ব্যবহৃত 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>