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> উপাদানে নির্দিষ্ট করা বার্তা বা স্ট্রিং ভেরিয়েবল যদি হয়: এই ত্রুটিটি ঘটে:

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

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

রোগ নির্ণয়

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

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

XSLEমূল্যায়ন ব্যর্থ হয়েছে৷

ত্রুটি কোড

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. 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)\""
    

রেজোলিউশন

নিশ্চিত করুন যে 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. 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. 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. 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 পেলোড। যদি XSL ফাইলে ইনপুট XML পেলোডের লাইন নম্বরে ব্যবহৃত উপসর্গটি (উপরের ধাপ # 1 এ চিহ্নিত করা হয়েছে), তাহলে সেটিই ত্রুটির কারণ।

    এখানে নমুনা 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>