আমার (ছোট [jslt.min.js] ) জেএসএলটি - জাভাস্ক্রিপ্ট লাইটওয়েট ট্রান্সফর্মগুলির সাথে আপনি কী করতে পারেন তার কয়েকটি উদাহরণ এখানে রয়েছে :
https://jsfiddle.net/YSharpLanguage/c7usrpsL/10
( [jslt.min.js] ওজন ~ 3.1 কেবি মাইনাইফড )
এটি, কেবল একটি ফাংশন,
function Per ( subject ) { ... }
... যা আসলে এক্সএসএলটি (1.0) এর প্রসেসিং মডেলের নকল করে ।
(সিএফ। পেরের শরীরে "রূপান্তর" এবং "টেমপ্লেট" অভ্যন্তরীণ ফাংশন)
সুতরাং, সংক্ষেপে, এটি কেবলমাত্র সমস্ত একটিকেই বেকড করা হয়েছে function Per ( subject ) { ... }
যা এর (এছাড়াও) অনন্য যুক্তির ধরণের উপর ভিত্তি করে মূল্যায়নের জন্য কাঁটাচামচ করে, বাস্তবায়ন করতে হয়:
1) অ্যারে বিষয়
নোডেট সৃষ্টি / ফিল্টারিং / সমতলকরণ / গ্রুপিং / অর্ডারিং / ইত্যাদি , যদি সাবজেক্টটি একটি অ্যারে হয়, যেখানে ফলস্বরূপ নোডসেট ( পাশাপাশি একটি অ্যারে ) প্রসারিত হয় এবং সেই অনুসারে নামকরণ পদ্ধতিতে আবদ্ধ হয় ( কেবলমাত্র কলটির ফিরে আসা অ্যারের উদাহরণটি হবে Per ( subjectArray )
) বর্ধিত; অর্থাত্ অ্যারে.প্রোটোটাইপটি অচিহ্নিত রেখে গেছে)
যেমন, পের :: অ্যারে -->
অ্যারে ray
(ফলস্বরূপ অ্যারের এক্সটেনশন পদ্ধতিগুলির স্ব-ব্যাখ্যামূলক নাম যেমন, গ্রুপবাই, অর্ডারবি, ফ্ল্যাটনি বাই ইত্যাদি রয়েছে - উদাহরণস্বরূপ সিএফ ব্যবহার)
2) স্ট্রিং বিষয়
স্ট্রিং ইন্টারপোলেশন , যদি বিষয়টি একটি স্ট্রিং হয়
("পের" তারপরে একটি পদ্ধতির সাহায্যে কোনও বস্তু ফেরত দেয় map ( source )
যা বিষয় টেম্পলেট স্ট্রিংয়ের সাথে আবদ্ধ )
যেমন, পার :: স্ট্রিং -->
{ম্যাপ :: ( যেকোনও ভ্যালু -->
স্ট্রিং )}
যেমন,
Per("Hi honey, my name is {last}. {first}, {last}.").map({ "first": "James", "last": "Bond" })
উৎপাদনের:
"Hi honey, my name is Bond. James, Bond."
উভয় যখন
Per("Those '{*}' are our 10 digits.").map([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ])
অথবা
Per("Those '{*}' are our 10 digits.").map(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
একই ফলন:
"Those '0123456789' are our 10 digits."
কিন্তু শুধুমাত্র
Per("Those '{*}' are our 10 digits.").map([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ], ", ")
উৎপাদনের
"Those '0, 1, 2, 3, 4, 5, 6, 7, 8, 9' are our 10 digits."
3) বিষয় রূপান্তর
এক্সএসএলটি চেহারা-অনুরূপ রূপান্তর , যদি বিষয়টি একটি হ্যাশ হয় যা প্রচলিতভাবে সংজ্ঞায়িত "$" সদস্যের সাথে পুনর্লিখনের নিয়মের অ্যারে সরবরাহ করে (এবং (2) এর মতো, "পের") map ( source )
থাকে তবে বিষয়টির সাথে আবদ্ধ পদ্ধতিতে কোনও বস্তু ফেরত দেয় রূপান্তর - যেখানে
"नियमনাম" in alচ্ছিক Per ( subjectTransform [ , ruleName ])
এবং <xsl: কল-টেম্পলেট নাম = "টেম্পলেটনাম"> ...) এর মতো কার্যকারিতা সরবরাহ করে)
অর্থাত্, পের :: ( রূপান্তর [, नियमের নাম :: স্ট্রিং ]) -->
{মানচিত্র :: ( যেকোনও -->
মূল্য )}
সঙ্গে
রূপান্তর :: {$ :: পুনর্লিখনের নিয়মের অ্যারে [rw.r.] }
( [rw.r.] পূর্বাভাস এবং টেম্পলেট ফাংশন জোড়া)
উদাহরণস্বরূপ, প্রদত্ত (... আরও স্বীকৃত উদাহরণ)
// (A "Member" must have first and last names, and a gender)
function Member(obj) {
return obj.first && obj.last && obj.sex;
}
var a_transform = { $: [
//...
[ [ Member ], // (alike <xsl:template match="...">...)
function(member) {
return {
li: Per("{first} {last}").map(member) +
" " +
Per(this).map({ gender: member.sex })
};
}
],
[ [ function(info) { return info.gender; } ], // (alike <xsl:template match="...">...)
function(info) { return Per("(gender: {gender})").map(info); }
],
[ [ "betterGenderString" ], // (alike <xsl:template name="betterGenderString">...)
function(info) {
info.pronoun = info.pronoun || "his/her";
return Per("({pronoun} gender is {gender})").map(info);
}
]
//...
] };
তারপর
Per(a_transform).map({ "first": "John", "last": "Smith", "sex": "Male" })
উৎপাদনের:
{ "li": "John Smith (gender: Male)" }
যখন ... (অনেকটা সমান <xsl:call-template name="betterGenderString">...
)
"James Bond... " +
Per(a_transform, "betterGenderString").map({ "pronoun": "his", "gender": "Male" })
উৎপাদনের:
"James Bond... (his gender is Male)"
এবং
"Someone... " +
Per(a_transform, "betterGenderString").map({ "gender": "Male or Female" })
উৎপাদনের:
"Someone... (his/her gender is Male or Female)"
4) অন্যথায়
অন্যান্য সমস্ত ক্ষেত্রে পরিচয় ফাংশন
যেমন, পার :: টি -->
টি
(যেমন, Per === function ( value ) { return value ; }
)
বিঃদ্রঃ
উপরের (3) এ, কোনও টেম্পলেট ফাংশনের মূল অংশে একটি জাভাস্ক্রিপ্টের "এটি" ধারক / মালিক ট্রান্সফর্ম এবং এর নিয়মের সেটকে আবদ্ধ করা হয়েছে (...: [...] অ্যারে দ্বারা সংজ্ঞায়িত) - সুতরাং, এই প্রসঙ্গে XSLT এর সাথে একটি কার্যত বন্ধ-সমতুল্য, "পরিপ্রেক্ষিতে" এই অভিব্যক্তিটি তৈরি করা
<xsl:apply-templates select="..."/>
'আছে HTH,