XSLTransform নীতি

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

কি

XSL ট্রান্সফর্ম নীতি XML বার্তাগুলিতে কাস্টম এক্সটেনসিবল স্টাইলশিট ল্যাঙ্গুয়েজ ট্রান্সফর্মেশন (XSLT) প্রয়োগ করে, যা আপনাকে XML থেকে অন্য ফর্ম্যাটে, যেমন XML, HTML, অথবা প্লেইন টেক্সটে রূপান্তর করতে দেয়। নীতিটি প্রায়শই XML সমর্থন করে এমন অ্যাপ্লিকেশনগুলিকে একীভূত করার জন্য ব্যবহৃত হয়, কিন্তু একই ডেটার জন্য বিভিন্ন XML-ফরম্যাটের প্রয়োজন হয়।

নমুনা

নিম্নলিখিত নমুনাগুলি XSL রূপান্তর প্রবাহের সমস্ত সংস্থান দেখায়।

XSL নীতি ->

<XSL name="TransformXML">
  <ResourceURL>xsl://my_transform.xsl</ResourceURL>
  <Source>request</Source>
</XSL>

সহজ XSL নীতি। নীতিতে উল্লেখিত XSLT স্টাইলশিটটি দেখতে পরবর্তী উদাহরণে যান ( my_transform.xsl )। <Source> উপাদানটি গুরুত্বপূর্ণ। উদাহরণস্বরূপ, আপনি যে XML রূপান্তর করতে চান তা যদি প্রতিক্রিয়াতে থাকে, তাহলে আপনি যদি Source কে response সেট না করেন (এবং নীতিটি প্রতিক্রিয়া প্রবাহের সাথে সংযুক্ত থাকে) তবে রূপান্তরটি ঘটবে না। তবে এই ক্ষেত্রে, রূপান্তরিত XML অনুরোধে রয়েছে।

XSLT স্টাইলশিট ->

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

নীতিমালায় উল্লেখিত my_transform.xsl স্টাইলশিট। একটি আগত XML বার্তার উদাহরণ দেখতে পরবর্তী নমুনায় যান।

বার্তা ->

<?xml version="1.0"?>
<list>
  <title>A few of my favorite albums</title>
  <listitem>A Love Supreme</listitem>
  <listitem>Beat Crazy</listitem>
  <listitem>Here Come the Warm Jets</listitem>
  <listitem>Kind of Blue</listitem>
  <listitem>London Calling</listitem>
  <listitem>Remain in Light</listitem>
  <listitem>The Joshua Tree</listitem>
  <listitem>The Indestructible Beat of Soweto</listitem>
</list>

অনুরোধে নমুনা বার্তা (প্রথম নমুনায় নীতিমালার <Source>request</Source> উপাদানে নির্দেশিত)।

রূপান্তরিত বার্তা

<Life>
Here are the odd-numbered items from the list:
1. A Love Supreme
3. Here Come the Warm Jets
5. London Calling
7. The Joshua Tree
</Life>

এই নমুনাগুলি থেকে XSLT স্টাইলশিটের পরে রূপান্তরিত বার্তাটি XML বার্তায় প্রয়োগ করা হয়।


উপাদানের রেফারেন্স

নিম্নলিখিত উপাদানগুলি ব্যবহার করে একটি XSL রূপান্তর নীতি কনফিগার করুন।

ক্ষেত্রের নাম বিবরণ
নাম ( বাধ্যতামূলক ) নীতিমালার নাম। নামে আপনি যে অক্ষরগুলি ব্যবহার করতে পারেন সেগুলি সীমাবদ্ধ: A-Z0-9._\-$ % । তবে, ম্যানেজমেন্ট UI অতিরিক্ত বিধিনিষেধ আরোপ করে, যেমন বর্ণানুক্রমিক নয় এমন অক্ষরগুলি স্বয়ংক্রিয়ভাবে অপসারণ করা।
উৎস ( ঐচ্ছিক ) যে বার্তা থেকে তথ্য বের করা প্রয়োজন তা ধারণ করে। সাধারণত এই মানটি request or response তে সেট করা হয়, যা রূপান্তরিত বার্তাটি ইনবাউন্ড নাকি আউটবাউন্ড তার উপর নির্ভর করে।
  • যদি উৎস অনুপস্থিত থাকে, তাহলে এটি একটি সাধারণ বার্তা হিসেবে বিবেচিত হবে। উদাহরণস্বরূপ, <Source>বার্তা</Source>
  • যদি উৎস ভেরিয়েবলটি সমাধান করা না যায়, অথবা একটি নন-মেসেজ টাইপে সমাধান করা যায়, তাহলে রূপান্তর ধাপটি ব্যর্থ হয়।
আউটপুট ভেরিয়েবল ( ঐচ্ছিক )

একটি ভেরিয়েবল যা রূপান্তরের আউটপুট সংরক্ষণ করে। OutputVariable মেসেজ টাইপের হতে পারে না, অর্থাৎ এটি 'মেসেজ', 'রিকোয়েস্ট', বা 'রেসপন্স' হতে পারে না। আপনার এই এলিমেন্টটিকে একটি কাস্টম ভেরিয়েবল হিসেবে সেট করা উচিত, এবং তারপর সেই ভেরিয়েবলটি ব্যবহার করা উচিত।

বার্তার বিষয়বস্তুকে রূপান্তরের আউটপুট দিয়ে প্রতিস্থাপন করতে, এই উপাদানটি মুছে ফেলুন। উদাহরণস্বরূপ, যদি আপনি একটি বার্তাকে HTML এ রূপান্তর করেন, তাহলে এই উপাদানটি অন্তর্ভুক্ত করবেন না।

রিসোর্স ইউআরএল ( বাধ্যতামূলক ) বার্তা রূপান্তরের জন্য ব্যবহৃত XSLT ফাইল।
পরামিতি ( ঐচ্ছিক ) অমীমাংসিত ভেরিয়েবল উপেক্ষা করুন ( ঐচ্ছিক )
XSLT স্ক্রিপ্ট নির্দেশাবলীতে যেকোনো অমীমাংসিত ভেরিয়েবল ত্রুটি উপেক্ষা করে।
বৈধ মান: সত্য/মিথ্যা
ডিফল্ট মান: মিথ্যা
প্যারামিটার ( ঐচ্ছিক ) নাম ( বাধ্যতামূলক )

প্যারামিটারগুলি আপনার স্টাইলশিটে XSL প্যারামিটার ব্যবহার সমর্থন করে, যেখানে আপনি এখানে নীতিতে যে নামটি যোগ করবেন তা হল XSL প্যারামিটারের নাম। উদাহরণস্বরূপ, যদি আপনি "uid" নামটি প্রবেশ করান, তাহলে আপনার XSL দেখতে এরকম কিছু হতে পারে: <xsl:param name ="uid" select="''"/> )।

প্যারামটি তার মানটি হয় একটি কনটেক্সট ভেরিয়েবলের রেফারেন্স ( ref অ্যাট্রিবিউট দ্বারা চিহ্নিত) থেকে অথবা একটি স্পষ্ট value সহ পায়।

উদাহরণ এবং আরও তথ্যের জন্য, কমিউনিটি পোস্ট দেখুন।

রেফারেন্স (ঐচ্ছিক)

একটি ভেরিয়েবল থেকে মান উৎস করে এমন রেফারেন্স নির্দিষ্ট করে। উদাহরণস্বরূপ, যদি একটি "uid" প্যারামিটারকে "authn.uid" নামক একটি ভেরিয়েবল থেকে তার মান পেতে হয়, তাহলে প্যারামিটার উপাদানটি এইরকম দেখাবে: <Parameter name="uid" ref="authn.uid"/>

যদি আপনি এই বৈশিষ্ট্যটি ব্যবহার করেন, তাহলে value বৈশিষ্ট্যটি ব্যবহার করবেন না।

মান (ঐচ্ছিক)

আপনি এই বৈশিষ্ট্যটি ব্যবহার করে প্যারামিটারের মান হার্ড কোড করতে পারেন।

যদি আপনি এই বৈশিষ্ট্যটি ব্যবহার করেন, তাহলে ref বৈশিষ্ট্যটি ব্যবহার করবেন না।


ব্যবহারবিধি

XSLT একটি স্বতন্ত্র .xsl ফাইলে বাস্তবায়িত হয়, যা /resources/xsl এর অধীনে API প্রক্সিতে সংরক্ষণ করা হয়। XSL নীতি কেবল XSL ফাইলের উল্লেখ করে। আরও তথ্যের জন্য রিসোর্স ফাইলগুলি দেখুন।

XSL নীতির জন্য দুটি ইনপুট প্রয়োজন:

  • /resources/xsl এর অধীনে API প্রক্সিতে সংরক্ষিত একটি XSLT স্টাইলশিটের নাম, যাতে রূপান্তর নিয়মের একটি সেট থাকে)
  • রূপান্তরিত করার জন্য XML এর উৎস (সাধারণত একটি অনুরোধ বা প্রতিক্রিয়া বার্তা)

<xsl:include> এবং <xsl:import> সমর্থিত নয়।

Apigee Edge Saxon XSLT প্রসেসরের উপর নির্ভর করে এবং XSLT 1.0 এবং 2.0 সমর্থন করে।


ত্রুটির উল্লেখ

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড HTTP স্থিতি কারণ ঠিক করুন
steps.xsl.XSLSourceMessageNotAvailable 500 XSL ট্রান্সফর্ম নীতির <Source> উপাদানে নির্দিষ্ট করা বার্তা বা স্ট্রিং ভেরিয়েবলটি হয় সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা সমাধান করা না গেলে এই ত্রুটি ঘটে (সংজ্ঞায়িত করা হয়নি) )
steps.xsl.XSLEvaluationFailed 500 এই ত্রুটিটি ঘটে যদি ইনপুট XML পেলোড অনুপলব্ধ/বিকৃত হয় বা XSLTransform নীতি ব্যর্থ হয়/XSL ফাইলে প্রদত্ত রূপান্তর নিয়মের উপর ভিত্তি করে ইনপুট XML ফাইলটিকে রূপান্তর করতে অক্ষম হয়৷ XSLTransform নীতি ব্যর্থ হওয়ার জন্য বিভিন্ন কারণ থাকতে পারে। ত্রুটি বার্তায় ব্যর্থতার কারণ কারণ সম্পর্কে আরও তথ্য প্রদান করবে।

স্থাপনার ত্রুটি

আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷

ত্রুটির নাম কারণ ঠিক করুন
XSLEmptyResourceUrl যদি XSL ট্রান্সফর্ম নীতিতে <ResourceURL> উপাদানটি খালি থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়।
XSLInvalidResourceType যদি XSL ট্রান্সফর্ম নীতির <ResourceURL> এলিমেন্টে উল্লেখ করা রিসোর্স টাইপ xsl টাইপ না হয়, তাহলে API প্রক্সির ডিপ্লয়মেন্ট ব্যর্থ হয়।

সম্পর্কিত বিষয়

,

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

কি

XSL ট্রান্সফর্ম নীতি XML বার্তাগুলিতে কাস্টম এক্সটেনসিবল স্টাইলশিট ল্যাঙ্গুয়েজ ট্রান্সফর্মেশন (XSLT) প্রয়োগ করে, যা আপনাকে XML থেকে অন্য ফর্ম্যাটে, যেমন XML, HTML, অথবা প্লেইন টেক্সটে রূপান্তর করতে দেয়। নীতিটি প্রায়শই XML সমর্থন করে এমন অ্যাপ্লিকেশনগুলিকে একীভূত করার জন্য ব্যবহৃত হয়, কিন্তু একই ডেটার জন্য বিভিন্ন XML-ফরম্যাটের প্রয়োজন হয়।

নমুনা

নিম্নলিখিত নমুনাগুলি XSL রূপান্তর প্রবাহের সমস্ত সংস্থান দেখায়।

XSL নীতি ->

<XSL name="TransformXML">
  <ResourceURL>xsl://my_transform.xsl</ResourceURL>
  <Source>request</Source>
</XSL>

সহজ XSL নীতি। নীতিতে উল্লেখিত XSLT স্টাইলশিটটি দেখতে পরবর্তী উদাহরণে যান ( my_transform.xsl )। <Source> উপাদানটি গুরুত্বপূর্ণ। উদাহরণস্বরূপ, আপনি যে XML রূপান্তর করতে চান তা যদি প্রতিক্রিয়াতে থাকে, তাহলে আপনি যদি Source কে response সেট না করেন (এবং নীতিটি প্রতিক্রিয়া প্রবাহের সাথে সংযুক্ত থাকে) তবে রূপান্তরটি ঘটবে না। তবে এই ক্ষেত্রে, রূপান্তরিত XML অনুরোধে রয়েছে।

XSLT স্টাইলশিট ->

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

নীতিমালায় উল্লেখিত my_transform.xsl স্টাইলশিট। একটি আগত XML বার্তার উদাহরণ দেখতে পরবর্তী নমুনায় যান।

বার্তা ->

<?xml version="1.0"?>
<list>
  <title>A few of my favorite albums</title>
  <listitem>A Love Supreme</listitem>
  <listitem>Beat Crazy</listitem>
  <listitem>Here Come the Warm Jets</listitem>
  <listitem>Kind of Blue</listitem>
  <listitem>London Calling</listitem>
  <listitem>Remain in Light</listitem>
  <listitem>The Joshua Tree</listitem>
  <listitem>The Indestructible Beat of Soweto</listitem>
</list>

অনুরোধে নমুনা বার্তা (প্রথম নমুনায় নীতিমালার <Source>request</Source> উপাদানে নির্দেশিত)।

রূপান্তরিত বার্তা

<Life>
Here are the odd-numbered items from the list:
1. A Love Supreme
3. Here Come the Warm Jets
5. London Calling
7. The Joshua Tree
</Life>

এই নমুনাগুলি থেকে XSLT স্টাইলশিটের পরে রূপান্তরিত বার্তাটি XML বার্তায় প্রয়োগ করা হয়।


উপাদানের রেফারেন্স

নিম্নলিখিত উপাদানগুলি ব্যবহার করে একটি XSL রূপান্তর নীতি কনফিগার করুন।

ক্ষেত্রের নাম বিবরণ
নাম ( বাধ্যতামূলক ) নীতিমালার নাম। নামে আপনি যে অক্ষরগুলি ব্যবহার করতে পারেন সেগুলি সীমাবদ্ধ: A-Z0-9._\-$ % । তবে, ম্যানেজমেন্ট UI অতিরিক্ত বিধিনিষেধ আরোপ করে, যেমন বর্ণানুক্রমিক নয় এমন অক্ষরগুলি স্বয়ংক্রিয়ভাবে অপসারণ করা।
উৎস ( ঐচ্ছিক ) যে বার্তা থেকে তথ্য বের করা প্রয়োজন তা ধারণ করে। সাধারণত এই মানটি request or response তে সেট করা হয়, যা রূপান্তরিত বার্তাটি ইনবাউন্ড নাকি আউটবাউন্ড তার উপর নির্ভর করে।
  • যদি উৎস অনুপস্থিত থাকে, তাহলে এটি একটি সাধারণ বার্তা হিসেবে বিবেচিত হবে। উদাহরণস্বরূপ, <Source>বার্তা</Source>
  • যদি উৎস ভেরিয়েবলটি সমাধান করা না যায়, অথবা একটি নন-মেসেজ টাইপে সমাধান করা যায়, তাহলে রূপান্তর ধাপটি ব্যর্থ হয়।
আউটপুট ভেরিয়েবল ( ঐচ্ছিক )

একটি ভেরিয়েবল যা রূপান্তরের আউটপুট সংরক্ষণ করে। OutputVariable মেসেজ টাইপের হতে পারে না, অর্থাৎ এটি 'মেসেজ', 'রিকোয়েস্ট', বা 'রেসপন্স' হতে পারে না। আপনার এই এলিমেন্টটিকে একটি কাস্টম ভেরিয়েবল হিসেবে সেট করা উচিত, এবং তারপর সেই ভেরিয়েবলটি ব্যবহার করা উচিত।

বার্তার বিষয়বস্তুকে রূপান্তরের আউটপুট দিয়ে প্রতিস্থাপন করতে, এই উপাদানটি মুছে ফেলুন। উদাহরণস্বরূপ, যদি আপনি একটি বার্তাকে HTML এ রূপান্তর করেন, তাহলে এই উপাদানটি অন্তর্ভুক্ত করবেন না।

রিসোর্স ইউআরএল ( বাধ্যতামূলক ) বার্তা রূপান্তরের জন্য ব্যবহৃত XSLT ফাইল।
পরামিতি ( ঐচ্ছিক ) অমীমাংসিত ভেরিয়েবল উপেক্ষা করুন ( ঐচ্ছিক )
XSLT স্ক্রিপ্ট নির্দেশাবলীতে যেকোনো অমীমাংসিত ভেরিয়েবল ত্রুটি উপেক্ষা করে।
বৈধ মান: সত্য/মিথ্যা
ডিফল্ট মান: মিথ্যা
প্যারামিটার ( ঐচ্ছিক ) নাম ( বাধ্যতামূলক )

প্যারামিটারগুলি আপনার স্টাইলশিটে XSL প্যারামিটার ব্যবহার সমর্থন করে, যেখানে আপনি এখানে নীতিতে যে নামটি যোগ করবেন তা হল XSL প্যারামিটারের নাম। উদাহরণস্বরূপ, যদি আপনি "uid" নামটি প্রবেশ করান, তাহলে আপনার XSL দেখতে এরকম কিছু হতে পারে: <xsl:param name ="uid" select="''"/> )।

প্যারামটি তার মানটি হয় একটি কনটেক্সট ভেরিয়েবলের রেফারেন্স ( ref অ্যাট্রিবিউট দ্বারা চিহ্নিত) থেকে অথবা একটি স্পষ্ট value সহ পায়।

উদাহরণ এবং আরও তথ্যের জন্য, কমিউনিটি পোস্ট দেখুন।

রেফারেন্স (ঐচ্ছিক)

একটি ভেরিয়েবল থেকে মান উৎস করে এমন রেফারেন্স নির্দিষ্ট করে। উদাহরণস্বরূপ, যদি একটি "uid" প্যারামিটারকে "authn.uid" নামক একটি ভেরিয়েবল থেকে তার মান পেতে হয়, তাহলে প্যারামিটার উপাদানটি এইরকম দেখাবে: <Parameter name="uid" ref="authn.uid"/>

যদি আপনি এই বৈশিষ্ট্যটি ব্যবহার করেন, তাহলে value বৈশিষ্ট্যটি ব্যবহার করবেন না।

মান (ঐচ্ছিক)

আপনি এই বৈশিষ্ট্যটি ব্যবহার করে প্যারামিটারের মান হার্ড কোড করতে পারেন।

যদি আপনি এই বৈশিষ্ট্যটি ব্যবহার করেন, তাহলে ref বৈশিষ্ট্যটি ব্যবহার করবেন না।


ব্যবহারবিধি

XSLT একটি স্বতন্ত্র .xsl ফাইলে বাস্তবায়িত হয়, যা /resources/xsl এর অধীনে API প্রক্সিতে সংরক্ষণ করা হয়। XSL নীতি কেবল XSL ফাইলের উল্লেখ করে। আরও তথ্যের জন্য রিসোর্স ফাইলগুলি দেখুন।

XSL নীতির জন্য দুটি ইনপুট প্রয়োজন:

  • /resources/xsl এর অধীনে API প্রক্সিতে সংরক্ষিত একটি XSLT স্টাইলশিটের নাম, যাতে রূপান্তর নিয়মের একটি সেট থাকে)
  • রূপান্তরিত করার জন্য XML এর উৎস (সাধারণত একটি অনুরোধ বা প্রতিক্রিয়া বার্তা)

<xsl:include> এবং <xsl:import> সমর্থিত নয়।

Apigee Edge Saxon XSLT প্রসেসরের উপর নির্ভর করে এবং XSLT 1.0 এবং 2.0 সমর্থন করে।


ত্রুটির উল্লেখ

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড HTTP স্থিতি কারণ ঠিক করুন
steps.xsl.XSLSourceMessageNotAvailable 500 XSL ট্রান্সফর্ম নীতির <Source> উপাদানে নির্দিষ্ট করা বার্তা বা স্ট্রিং ভেরিয়েবলটি হয় সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা সমাধান করা না গেলে এই ত্রুটি ঘটে (সংজ্ঞায়িত করা হয়নি) )
steps.xsl.XSLEvaluationFailed 500 এই ত্রুটিটি ঘটে যদি ইনপুট XML পেলোড অনুপলব্ধ/বিকৃত হয় বা XSLTransform নীতি ব্যর্থ হয়/XSL ফাইলে প্রদত্ত রূপান্তর নিয়মের উপর ভিত্তি করে ইনপুট XML ফাইলটিকে রূপান্তর করতে অক্ষম হয়৷ XSLTransform নীতি ব্যর্থ হওয়ার জন্য বিভিন্ন কারণ থাকতে পারে। ত্রুটি বার্তায় ব্যর্থতার কারণ কারণ সম্পর্কে আরও তথ্য প্রদান করবে।

স্থাপনার ত্রুটি

আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷

ত্রুটির নাম কারণ ঠিক করুন
XSLEmptyResourceUrl যদি XSL ট্রান্সফর্ম নীতিতে <ResourceURL> উপাদানটি খালি থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়।
XSLInvalidResourceType যদি XSL ট্রান্সফর্ম নীতির <ResourceURL> এলিমেন্টে উল্লেখ করা রিসোর্স টাইপ xsl টাইপ না হয়, তাহলে API প্রক্সির ডিপ্লয়মেন্ট ব্যর্থ হয়।

সম্পর্কিত বিষয়