আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
কী
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><Life></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></Life></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 ' বা response হিসেবে সেট করা হয়।
| |||
| আউটপুট ভেরিয়েবল ( ঐচ্ছিক ) | একটি ভেরিয়েবল যা রূপান্তরের আউটপুট সংরক্ষণ করে। OutputVariable-টি Message টাইপের হতে পারবে না, অর্থাৎ এটি 'message', 'request', বা 'response' হতে পারবে না। আপনার এই এলিমেন্টটিকে একটি কাস্টম ভেরিয়েবল হিসেবে সেট করা উচিত এবং তারপর সেই ভেরিয়েবলটি ব্যবহার করা উচিত। রূপান্তরের আউটপুট দিয়ে বার্তার বিষয়বস্তু প্রতিস্থাপন করতে, এই এলিমেন্টটি মুছে ফেলুন। উদাহরণস্বরূপ, যদি আপনি কোনো বার্তাকে HTML-এ রূপান্তর করেন, তাহলে এই এলিমেন্টটি অন্তর্ভুক্ত করবেন না। | |||
| রিসোর্সইউআরএল ( আবশ্যিক ) | বার্তাটি রূপান্তর করার জন্য ব্যবহৃত XSLT ফাইল। | |||
| প্যারামিটার ( ঐচ্ছিক ) | অমীমাংসিত ভেরিয়েবল উপেক্ষা করুন ( ঐচ্ছিক ) | XSLT স্ক্রিপ্ট নির্দেশাবলীতে থাকা যেকোনো অমীমাংসিত ভেরিয়েবল ত্রুটি উপেক্ষা করে। বৈধ মান: সত্য/মিথ্যা ডিফল্ট মান: মিথ্যা | ||
| প্যারামিটার ( ঐচ্ছিক ) | নাম ( আবশ্যিক ) | প্যারামিটার আপনার স্টাইলশীটে XSL param ব্যবহারের সুবিধা দেয়, যেখানে আপনি পলিসিতে যে নামটি যোগ করেন, সেটিই XSL param-এর নাম হিসেবে কাজ করে। উদাহরণস্বরূপ, যদি আপনি "uid" নামটি প্রবেশ করান, তাহলে আপনার XSL-টি দেখতে এইরকম হতে পারে: প্যারামিটারটি তার মান পায় হয় কোনো কনটেক্সট ভেরিয়েবলের রেফারেন্স থেকে (যা উদাহরণ ও আরও তথ্যের জন্য কমিউনিটি পোস্টটি দেখুন। | ||
| রেফারেন্স (ঐচ্ছিক) | যে রেফারেন্স থেকে কোনো ভেরিয়েবলের মান নেওয়া হয়, তা নির্দিষ্ট করে। উদাহরণস্বরূপ, যদি "uid" প্যারামিটারকে "authn.uid" নামক একটি ভেরিয়েবল থেকে তার মান নিতে হয়, তাহলে Parameter এলিমেন্টটি দেখতে এইরকম হবে: আপনি যদি এই অ্যাট্রিবিউটটি ব্যবহার করেন, তাহলে ভ্যালু অ্যাট্রিবিউটটি ব্যবহার করবেন না। | |||
| মান (ঐচ্ছিক) | আপনি এই অ্যাট্রিবিউটটি ব্যবহার করে প্যারামিটারের মান হার্ড কোড করতে পারেন। আপনি যদি এই অ্যাট্রিবিউটটি ব্যবহার করেন, তাহলে ref অ্যাট্রিবিউটটি ব্যবহার করবেন না। | |||
ব্যবহারের নির্দেশাবলী
XSLT একটি স্বতন্ত্র .xsl ফাইলে প্রয়োগ করা হয়, যা API প্রক্সিতে /resources/xsl অধীনে সংরক্ষিত থাকে। XSL পলিসিটি কেবল XSL ফাইলটিকে রেফারেন্স করে। আরও তথ্যের জন্য রিসোর্স ফাইলস দেখুন।
XSL পলিসির জন্য দুটি ইনপুট প্রয়োজন:
- একটি XSLT স্টাইলশীটের নাম (যেটিতে একগুচ্ছ রূপান্তর নিয়ম থাকে) যা API প্রক্সিতে
/resources/xslঅধীনে সংরক্ষিত থাকে। - যে XML-কে রূপান্তর করতে হবে তার উৎস (সাধারণত একটি অনুরোধ বা প্রতিক্রিয়া বার্তা)
<xsl:include> এবং <xsl:import> সমর্থিত নয়।
Apigee Edge স্যাক্সন XSLT প্রসেসরের উপর নির্ভর করে এবং XSLT 1.0 ও 2.0 সমর্থন করে।
ত্রুটির রেফারেন্স
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | HTTP স্থিতি | কারণ | ঠিক করুন |
|---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable | 500 | XSL ট্রান্সফর্ম নীতির <Source> উপাদানে নির্দিষ্ট করা বার্তা বা স্ট্রিং ভেরিয়েবলটি হয় সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা সমাধান করা না গেলে এই ত্রুটি ঘটে (সংজ্ঞায়িত করা হয়নি) ) | build |
steps.xsl.XSLEvaluationFailed | 500 | এই ত্রুটিটি ঘটে যদি ইনপুট XML পেলোড অনুপলব্ধ/বিকৃত হয় বা XSLTransform নীতি ব্যর্থ হয়/XSL ফাইলে প্রদত্ত রূপান্তর নিয়মের উপর ভিত্তি করে ইনপুট XML ফাইলটিকে রূপান্তর করতে অক্ষম হয়৷ XSLTransform নীতি ব্যর্থ হওয়ার জন্য বিভিন্ন কারণ থাকতে পারে। ত্রুটি বার্তায় ব্যর্থতার কারণ কারণ সম্পর্কে আরও তথ্য প্রদান করবে। | build |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
| ত্রুটির নাম | কারণ | ঠিক করুন |
|---|---|---|
XSLEmptyResourceUrl | যদি XSL ট্রান্সফর্ম নীতিতে <ResourceURL> উপাদানটি খালি থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। | build |
XSLInvalidResourceType | যদি XSL ট্রান্সফর্ম নীতির <ResourceURL> এলিমেন্টে উল্লেখ করা রিসোর্স টাইপ xsl টাইপ না হয়, তাহলে API প্রক্সির ডিপ্লয়মেন্ট ব্যর্থ হয়। | build |
সম্পর্কিত বিষয়
, আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
কী
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><Life></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></Life></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 ' বা response হিসেবে সেট করা হয়।
| |||
| আউটপুট ভেরিয়েবল ( ঐচ্ছিক ) | একটি ভেরিয়েবল যা রূপান্তরের আউটপুট সংরক্ষণ করে। OutputVariable-টি Message টাইপের হতে পারবে না, অর্থাৎ এটি 'message', 'request', বা 'response' হতে পারবে না। আপনার এই এলিমেন্টটিকে একটি কাস্টম ভেরিয়েবল হিসেবে সেট করা উচিত এবং তারপর সেই ভেরিয়েবলটি ব্যবহার করা উচিত। রূপান্তরের আউটপুট দিয়ে বার্তার বিষয়বস্তু প্রতিস্থাপন করতে, এই এলিমেন্টটি মুছে ফেলুন। উদাহরণস্বরূপ, যদি আপনি কোনো বার্তাকে HTML-এ রূপান্তর করেন, তাহলে এই এলিমেন্টটি অন্তর্ভুক্ত করবেন না। | |||
| রিসোর্সইউআরএল ( আবশ্যিক ) | বার্তাটি রূপান্তর করার জন্য ব্যবহৃত XSLT ফাইল। | |||
| প্যারামিটার ( ঐচ্ছিক ) | অমীমাংসিত ভেরিয়েবল উপেক্ষা করুন ( ঐচ্ছিক ) | XSLT স্ক্রিপ্ট নির্দেশাবলীতে থাকা যেকোনো অমীমাংসিত ভেরিয়েবল ত্রুটি উপেক্ষা করে। বৈধ মান: সত্য/মিথ্যা ডিফল্ট মান: মিথ্যা | ||
| প্যারামিটার ( ঐচ্ছিক ) | নাম ( আবশ্যিক ) | প্যারামিটার আপনার স্টাইলশীটে XSL param ব্যবহারের সুবিধা দেয়, যেখানে আপনি পলিসিতে যে নামটি যোগ করেন, সেটিই XSL param-এর নাম হিসেবে কাজ করে। উদাহরণস্বরূপ, যদি আপনি "uid" নামটি প্রবেশ করান, তাহলে আপনার XSL-টি দেখতে এইরকম হতে পারে: প্যারামিটারটি তার মান পায় হয় কোনো কনটেক্সট ভেরিয়েবলের রেফারেন্স থেকে (যা উদাহরণ ও আরও তথ্যের জন্য কমিউনিটি পোস্টটি দেখুন। | ||
| রেফারেন্স (ঐচ্ছিক) | যে রেফারেন্স থেকে কোনো ভেরিয়েবলের মান নেওয়া হয়, তা নির্দিষ্ট করে। উদাহরণস্বরূপ, যদি "uid" প্যারামিটারকে "authn.uid" নামক একটি ভেরিয়েবল থেকে তার মান নিতে হয়, তাহলে Parameter এলিমেন্টটি দেখতে এইরকম হবে: আপনি যদি এই অ্যাট্রিবিউটটি ব্যবহার করেন, তাহলে ভ্যালু অ্যাট্রিবিউটটি ব্যবহার করবেন না। | |||
| মান (ঐচ্ছিক) | আপনি এই অ্যাট্রিবিউটটি ব্যবহার করে প্যারামিটারের মান হার্ড কোড করতে পারেন। আপনি যদি এই অ্যাট্রিবিউটটি ব্যবহার করেন, তাহলে ref অ্যাট্রিবিউটটি ব্যবহার করবেন না। | |||
ব্যবহারের নির্দেশাবলী
XSLT একটি স্বতন্ত্র .xsl ফাইলে প্রয়োগ করা হয়, যা API প্রক্সিতে /resources/xsl অধীনে সংরক্ষিত থাকে। XSL পলিসিটি কেবল XSL ফাইলটিকে রেফারেন্স করে। আরও তথ্যের জন্য রিসোর্স ফাইলস দেখুন।
XSL পলিসির জন্য দুটি ইনপুট প্রয়োজন:
- একটি XSLT স্টাইলশীটের নাম (যেটিতে একগুচ্ছ রূপান্তর নিয়ম থাকে) যা API প্রক্সিতে
/resources/xslঅধীনে সংরক্ষিত থাকে। - যে XML-কে রূপান্তর করতে হবে তার উৎস (সাধারণত একটি অনুরোধ বা প্রতিক্রিয়া বার্তা)
<xsl:include> এবং <xsl:import> সমর্থিত নয়।
Apigee Edge স্যাক্সন XSLT প্রসেসরের উপর নির্ভর করে এবং XSLT 1.0 ও 2.0 সমর্থন করে।
ত্রুটির রেফারেন্স
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | HTTP স্থিতি | কারণ | ঠিক করুন |
|---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable | 500 | XSL ট্রান্সফর্ম নীতির <Source> উপাদানে নির্দিষ্ট করা বার্তা বা স্ট্রিং ভেরিয়েবলটি হয় সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা সমাধান করা না গেলে এই ত্রুটি ঘটে (সংজ্ঞায়িত করা হয়নি) ) | build |
steps.xsl.XSLEvaluationFailed | 500 | এই ত্রুটিটি ঘটে যদি ইনপুট XML পেলোড অনুপলব্ধ/বিকৃত হয় বা XSLTransform নীতি ব্যর্থ হয়/XSL ফাইলে প্রদত্ত রূপান্তর নিয়মের উপর ভিত্তি করে ইনপুট XML ফাইলটিকে রূপান্তর করতে অক্ষম হয়৷ XSLTransform নীতি ব্যর্থ হওয়ার জন্য বিভিন্ন কারণ থাকতে পারে। ত্রুটি বার্তায় ব্যর্থতার কারণ কারণ সম্পর্কে আরও তথ্য প্রদান করবে। | build |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
| ত্রুটির নাম | কারণ | ঠিক করুন |
|---|---|---|
XSLEmptyResourceUrl | যদি XSL ট্রান্সফর্ম নীতিতে <ResourceURL> উপাদানটি খালি থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। | build |
XSLInvalidResourceType | যদি XSL ট্রান্সফর্ম নীতির <ResourceURL> এলিমেন্টে উল্লেখ করা রিসোর্স টাইপ xsl টাইপ না হয়, তাহলে API প্রক্সির ডিপ্লয়মেন্ট ব্যর্থ হয়। | build |