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 নীতি। নীতিতে (my_transform.xsl) উল্লেখ করা XSLT স্টাইলশিট দেখতে পরের উদাহরণে যান। <Source> এলিমেন্টটি গুরুত্বপূর্ণ। যেমন, আপনি যে XML ট্রান্সফর্ম করতে চান সেটি যদি উত্তরে থাকে, তাহলে আপনি সোর্স 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 মেসেজের উদাহরণ দেখতে, পরবর্তী Sample-এ যান।

মেসেজ ->

<?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 বা response হিসেবে সেট করা হয়, এটি নির্ভর করে যে ট্রান্সফর্ম করতে হবে এমন মেসেজ ইনবাউন্ড নাকি আউটবাউন্ড।
  • সোর্স উল্লেখ করা না থাকলে, এটিকে সাধারণ মেসেজ হিসেবে বিবেচনা করা হয়। যেমন, <Source>message</Source>
  • সোর্স ভেরিয়েবেল সমাধান করা না গেলে অথবা মেসেজ নয় এমন কোনও টাইপে সমাধান করা হলে, ট্রান্সফর্মেশন ধাপটি সম্পূর্ণ করা যায় না।
OutputVariable (ঐচ্ছিক)

ট্রান্সফর্মেশনের আউটপুট স্টোর করে এমন একটি ভেরিয়েবল। OutputVariable মেসেজ ধরনের হতে পারে না, অর্থাৎ এটি 'message', 'request' বা 'response' হতে পারে না। আপনাকে এই এলিমেন্টকে কাস্টম ভেরিয়েবল হিসেবে সেট করতে হবে এবং তারপরে সেই ভেরিয়েবল ব্যবহার করতে হবে।

ট্রান্সফর্মেশনের আউটপুট দিয়ে মেসেজ কন্টেন্ট পরিবর্তন করতে, এই এলিমেন্ট মুছে দিন। যেমন, আপনি কোনও মেসেজকে HTML-এ ট্রান্সফর্ম করলে, এই এলিমেন্টটি যোগ করবেন না।

ResourceURL (বাধ্যতামূলক) মেসেজ ট্রান্সফর্ম করার জন্য ব্যবহার করা XSLT ফাইল।
প্যারামিটার (ঐচ্ছিক) ignoreUnresolvedVariables (ঐচ্ছিক)
XSLT স্ক্রিপ্ট নির্দেশাবলীতে সমাধান না হওয়া ভেরিয়েবল সংক্রান্ত সমস্যা উপেক্ষা করে।
সঠিক ভ্যালু: true/false
ডিফল্ট মান: false
প্যারামিটার (ঐচ্ছিক) নাম (আবশ্যক)

আপনার স্টাইলশিটে প্যারামিটার XSL param ব্যবহার করতে দেয়, যেখানে আপনি এখানে নীতিতে যে নাম যোগ করেন সেটি হল XSL param-এর নাম। যেমন, আপনি যদি "uid" নামের কোনও ফিল্ড যোগ করেন, তাহলে আপনার XSL কোডটি এইরকম দেখতে লাগতে পারে: <xsl:param name="uid" select="''"/>)।

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

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

ref (ঐচ্ছিক)

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

আপনি এই অ্যাট্রিবিউট ব্যবহার করলে, ভ্যালু অ্যাট্রিবিউট ব্যবহার করবেন না।

মান (ঐচ্ছিক)

প্যারামিটারের ভ্যালু হার্ড কোড করার জন্য আপনি এই অ্যাট্রিবিউট ব্যবহার করতে পারবেন।

আপনি এই অ্যাট্রিবিউট ব্যবহার করলে, ref অ্যাট্রিবিউট ব্যবহার করবেন না।


ব্যবহার সংক্রান্ত নোট

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

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

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

<xsl:include> ও <xsl:import> কাজ করে না।

Apigee Edge Saxon XSLT প্রসেসরের উপর নির্ভর করে এবং XSLT 1.0 ও 2.0-এ কাজ করে।


সমস্যার রেফারেন্স

রানটাইম সমস্যা

নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে।

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

ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা

এই নীতি থাকা কোনও প্রক্সি আপনি প্রয়োগ করলে, এই সমস্যা হতে পারে।

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

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