एक्सएसएलटी

एक्सएसएलटी (एक्सटेंसिबल स्टाइलशीट लैंग्वेज ट्रांसफॉर्मेशन) मूल रूप से [[एक्सएमएल परिवर्तन भाषा]] एक्सएमएल दस्तावेजों के लिए अन्य एक्सएमएल दस्तावेजों में डिजाइन की गई भाषा है, या अन्य प्रारूप जैसे वेब पृष्ठों के लिए HTML, सादा पाठ या XSL स्वरूपण ऑब्जेक्ट, जिन्हें बाद में पोर्टेबल दस्तावेज़ स्वरूप, परिशिष्ट भाग और पोर्टेबल नेटवर्क ग्राफ़िक्स जैसे अन्य स्वरूपों में परिवर्तित किया जा सकता है। XSLT 1.0 विनिर्देशन के बाद के अपडेट में JSON और प्लेन-टेक्स्ट ट्रांसफ़ॉर्मेशन के लिए समर्थन जोड़ा गया था।

अगस्त 2022 तक, भाषा का सबसे हालिया स्थिर संस्करण XSLT 3.0 है, जिसने जून 2017 में सिफारिश की स्थिति हासिल की।

XSLT 3.0 कार्यान्वयन Java, .NET, C/C++, Python, PHP और NodeJS को सपोर्ट करता है। एक XSLT 3.0 Javascript लाइब्रेरी को वेब ब्राउज़र में भी होस्ट किया जा सकता है। आधुनिक वेब ब्राउज़र में XSLT 1.0 के लिए मूल समर्थन भी शामिल है। एक XSLT दस्तावेज़ परिवर्तन के लिए, मूल दस्तावेज़ नहीं बदला गया है; बल्कि, मौजूदा दस्तावेज़ की सामग्री के आधार पर एक नया दस्तावेज़ बनाया जाता है। विशिष्ट रूप से, इनपुट दस्तावेज़ XML फ़ाइलें होते हैं, लेकिन कोई भी चीज़ जिससे प्रोसेसर XQuery और XPath डेटा मॉडल बना सकता है, का उपयोग किया जा सकता है, जैसे संबंध का डेटाबेस टेबल या भौगोलिक सूचना प्रणाली।

जबकि XSLT को मूल रूप से XML परिवर्तन के लिए एक विशेष-उद्देश्य वाली भाषा के रूप में डिजाइन किया गया था, भाषा ट्यूरिंग पूर्णता है।

इतिहास
XSLT कार्यात्मक प्रोग्रामिंग से प्रभावित है, और SNOBOL और AWK (प्रोग्रामिंग लैंग्वेज) जैसी टेक्स्ट-आधारित पैटर्न मिलान भाषाओं द्वारा। इसका सबसे प्रत्यक्ष पूर्ववर्ती DSSSL है, जिसने SGML के लिए वही किया जो XSLT XML के लिए करता है।
 * XSLT 1.0: XSLT विश्वव्यापी वेब संकाय (W3C) के एक्स्टेंसिबल स्टाइलशीट लैंग्वेज (XSL) के 1998-1999 के विकास प्रयास का हिस्सा था, एक ऐसी परियोजना जिसने XSL-FO और XPath का भी उत्पादन किया। XSLT को विकसित करने वाली मानक समिति के कुछ सदस्य, जिनमें जेम्स क्लार्क (XML विशेषज्ञ), संपादक शामिल हैं, ने पहले DSSSL पर काम किया था। XSLT 1.0 को नवंबर 1999 में W3C अनुशंसा के रूप में प्रकाशित किया गया था। इसकी उम्र के बावजूद, XSLT 1.0 अभी भी व्यापक रूप से उपयोग किया जाता है, चूंकि बाद के संस्करण मूल रूप से वेब ब्राउज़र में या LAMP (सॉफ़्टवेयर बंडल) जैसे परिवेशों के लिए समर्थित नहीं हैं।


 * XSLT 2.0: 2001 में संस्करण 1.1 बनाने के विफल प्रयास के बाद, XSL वर्किंग ग्रुप ने XPath 2.0 बनाने के लिए XQuery वर्किंग ग्रुप के साथ हाथ मिलाया, XML स्कीमा (W3C) पर आधारित एक समृद्ध डेटा मॉडल और टाइप सिस्टम के साथ। इस पर निर्माण XSLT 2.0 है, माइकल हॉवर्ड के के संपादन के तहत विकसित, जो जनवरी 2007 में सिफारिश की स्थिति में पहुंच गया। XSLT 2.0 में सबसे महत्वपूर्ण नवप्रवर्तनों में शामिल हैं:
 * नियमित अभिव्यक्ति का उपयोग करते हुए स्ट्रिंग हेरफेर
 * दिनांक, समय और अवधि में हेरफेर करने के लिए कार्य और ऑपरेटर
 * एकाधिक आउटपुट दस्तावेज़
 * ग्रुपिंग (फ्लैट इनपुट अनुक्रमों से पदानुक्रमित संरचना बनाना)
 * एक समृद्ध प्रकार की प्रणाली और मजबूत प्रकार की जाँच


 * XSLT 3.0: 8 जून 2017 को W3C अनुशंसा बन गया। मुख्य नई विशेषताएं हैं: ** स्ट्रीमिंग एक्सएमएल: पिछले संस्करणों में पूरे इनपुट दस्तावेज़ को संसाधित करने से पहले मेमोरी में पढ़ना पड़ता था, और प्रोसेसिंग समाप्त होने तक आउटपुट नहीं लिखा जा सकता था। XSLT 3.0 स्ट्रीमिंग XML की अनुमति देता है जो स्मृति में फ़िट होने के लिए बहुत बड़े दस्तावेज़ों को प्रोसेस करने के लिए उपयोगी है या जब XML पाइपलाइनों में परिवर्तन जंजीर हैं।
 * संकुल, बड़ी स्टाइलशीट की प्रतिरूपकता में सुधार करने के लिए।
 * उदाहरण के लिए, xsl:try निर्देश के साथ गतिशील त्रुटियों से निपटने में सुधार।
 * नक्शे और सरणियों के लिए समर्थन, XSLT को JSON के साथ-साथ XML को संभालने में सक्षम बनाता है।
 * कार्य अब अन्य (उच्च-क्रम) कार्यों के लिए तर्क हो सकते हैं।

डिजाइन और प्रसंस्करण मॉडल
XSLT प्रोसेसर एक या अधिक XML स्रोत दस्तावेज़, प्लस एक या अधिक XSLT स्टाइलशीट लेता है, और उन्हें एक या एकाधिक आउटपुट दस्तावेज़ बनाने के लिए संसाधित करता है। सी (प्रोग्रामिंग भाषा) जैसी व्यापक रूप से कार्यान्वित अनिवार्य प्रोग्रामिंग भाषाओं के विपरीत, XSLT घोषणात्मक प्रोग्रामिंग है। मूल प्रसंस्करण प्रतिमान पैटर्न मिलान है। स्टेटफुल वातावरण में प्रदर्शन करने के लिए क्रियाओं के एक अनिवार्य अनुक्रम को सूचीबद्ध करने के बजाय, टेम्पलेट नियम केवल यह परिभाषित करते हैं कि किसी विशेष XPath-जैसे पैटर्न से मेल खाने वाले नोड को कैसे संभालना है, यदि प्रोसेसर को एक का सामना करना चाहिए, और टेम्पलेट की सामग्री प्रभावी रूप से कार्यात्मक होती है प्रोग्रामिंग अभिव्यक्ति (प्रोग्रामिंग) जो सीधे उनके मूल्यांकित रूप का प्रतिनिधित्व करते हैं: परिणाम वृक्ष, जो प्रोसेसर के आउटपुट का आधार है।

एक विशिष्ट प्रोसेसर निम्नानुसार व्यवहार करता है। सबसे पहले, यह मानते हुए कि स्टाइलशीट पहले ही पढ़ी और तैयार की जा चुकी है, प्रोसेसर इनपुट XML दस्तावेज़ से एक स्रोत ट्री डेटा संरचना बनाता है। इसके बाद यह स्रोत ट्री के रूट नोड को संसाधित करता है, स्टाइलशीट में उस नोड के लिए सबसे अच्छा मेल खाने वाला टेम्पलेट ढूंढता है, और टेम्पलेट की सामग्री का मूल्यांकन करता है। प्रत्येक टेम्प्लेट में निर्देश आम तौर पर प्रोसेसर को या तो परिणाम ट्री में नोड्स बनाने के लिए निर्देशित करते हैं, या रूट नोड के समान ही स्रोत ट्री में अधिक नोड्स को प्रोसेस करने के लिए निर्देशित करते हैं। अंत में परिणाम ट्री को XML या HTML टेक्स्ट के रूप में क्रमबद्ध किया जाता है।

एक्सपाथ
XSLT स्रोत दस्तावेज़ ट्री के सबसेट की पहचान करने और गणना करने के लिए XPath का उपयोग करता है। XPath उपनेमका की एक श्रृंखला भी प्रदान करता है, जिसे XSLT स्वयं आगे बढ़ाता है।

XSLT 1.0 XPath 1.0 का उपयोग करता है, जबकि XSLT 2.0 XPath 2.0 का उपयोग करता है। XSLT 3.0 या तो XPath 3.0 या 3.1 के साथ काम करेगा। 1.0 और 2.0 के मामले में, XSLT और XPath विनिर्देशों को एक ही तिथि पर प्रकाशित किया गया था। 3.0 के साथ, हालांकि, वे अब सिंक्रनाइज़ नहीं थे; XPath 3.0 अप्रैल 2014 में एक सिफारिश बन गया, उसके बाद फरवरी 2017 में XPath 3.1; XSLT 3.0 जून 2017 में आया।

XQuery तुलना
XSLT प्रकार्यात्मकताएँ XQuery के साथ ओवरलैप करती हैं, जिसे शुरू में XML दस्तावेज़ों के बड़े संग्रह के लिए एक क्वेरी भाषा के रूप में माना गया था।

XSLT 2.0 और XQuery 1.0 मानकों को W3C के भीतर अलग-अलग कार्य समूहों द्वारा विकसित किया गया था, जहां उपयुक्त हो, एक सामान्य दृष्टिकोण सुनिश्चित करने के लिए मिलकर काम करना। वे समान डेटा मॉडल, टाइप सिस्टम और फ़ंक्शन लाइब्रेरी साझा करते हैं, और दोनों में XPath 2.0 को एक उपभाषा के रूप में शामिल किया गया है।

हालाँकि, दो भाषाएँ विभिन्न परंपराओं में निहित हैं और विभिन्न समुदायों की आवश्यकताओं को पूरा करती हैं। XSLT को मुख्य रूप से एक स्टाइलशीट भाषा के रूप में माना गया था जिसका प्राथमिक लक्ष्य मानव पाठक के लिए स्क्रीन पर, वेब पर (एक वेब टेम्पलेट के रूप में), या कागज पर XML को प्रस्तुत करना था। XQuery को मुख्य रूप से SQL की परंपरा में डेटाबेस क्वेरी भाषा के रूप में माना गया था।

क्योंकि दो भाषाएँ विभिन्न समुदायों में उत्पन्न होती हैं, XSLT इसकी हैंडलिंग में अधिक मजबूत है अधिक लचीली संरचना के साथ वर्णनात्मक दस्तावेज़ों की, जबकि XQuery अपने डेटा हैंडलिंग में अधिक मजबूत है, उदाहरण के लिए जब रिलेशनल जॉइन करते हैं।

मीडिया प्रकार
ई> तत्व वैकल्पिक रूप से विशेषता ले सकता है, जो किसी को परिणामी आउटपुट के लिए इंटरनेट मीडिया प्रकार (या MIME प्रकार) सेट करने की अनुमति देता है, उदाहरण के लिए:. XSLT 1.0 अनुशंसा अधिक सामान्य विशेषता प्रकारों की अनुशंसा करती है  और   चूंकि लंबे समय से XSLT के लिए कोई पंजीकृत मीडिया प्रकार नहीं था। इस समय के दौरान   वास्तविक मानक बन गया। XSLT 1.0 में यह निर्दिष्ट नहीं किया गया था कि कैसे   मूल्यों का प्रयोग करना चाहिए।

XSLT 2.0 की रिलीज़ के साथ, W3C ने MIME मीडिया प्रकार के पंजीकरण की सिफारिश की और इसे बाद में इंटरनेट निरुपित नंबर प्राधिकरण के साथ पंजीकृत किया गया। XSLT के प्री-1.0 वर्किंग ड्राफ्ट का उपयोग किया गया  उनके एम्बेडिंग उदाहरणों में, और इस प्रकार को लागू किया गया था और Microsoft द्वारा Internet Explorer में प्रचारित किया जाना जारी है और एमएसएक्सएमएल। में भी व्यापक रूप से मान्यता प्राप्त है   अन्य ब्राउज़रों द्वारा प्रसंस्करण निर्देश। व्यवहार में, इसलिए, इस प्रसंस्करण निर्देश का उपयोग करके ब्राउज़र में परिवर्तन को नियंत्रित करने के इच्छुक उपयोगकर्ता इस अपंजीकृत मीडिया प्रकार का उपयोग करने के लिए बाध्य हैं।

उदाहरण
ये उदाहरण निम्नलिखित इनकमिंग XML दस्तावेज़ W3C विनिर्देशों के अनुसार तकनीकी रूप से गलत है (जो कहते हैं कि प्रकार होना चाहिए  ), लेकिन यह एकमात्र मीडिया प्रकार है जो 2009 तक सभी ब्राउज़रों में व्यापक रूप से समर्थित है, और 2021 में स्थिति अपरिवर्तित है।

प्रोसेसर कार्यान्वयन

 * अल्टोवा से रैप्टरएक्सएमएल एक एक्सएसएलटी 3.0 प्रोसेसर है जो एक्सएमएलस्पाई डेवलपमेंट टूलकिट में उपलब्ध है और एक फ्री-स्टैंडिंग सर्वर कार्यान्वयन के रूप में, एक रेस्ट इंटरफेस का उपयोग करके लागू किया गया है।
 * IBM, IBM WebSphere DataPower SOA उपकरण ब्रांड के तहत एक विशेष-उद्देश्य वाले हार्डवेयर उपकरण में एम्बेड किए गए XSLT प्रसंस्करण की पेशकश करता है।
 * libxslt मेरा लाइसेंस के तहत जारी एक मुफ्त सॉफ्टवेयर पुस्तकालय (कम्प्यूटिंग) है जिसे व्यावसायिक अनुप्रयोगों में पुन: उपयोग किया जा सकता है। यह libxml पर आधारित है और गति और सुवाह्यता के लिए C (प्रोग्रामिंग भाषा) में लागू किया गया है। यह XSLT 1.0 और EXSLT एक्सटेंशन को सपोर्ट करता है।
 * इसे xsltproc के माध्यम से कमांड लाइन पर इस्तेमाल किया जा सकता है जो macOS में शामिल है और कई लिनक्स वितरण, और साइगविन के माध्यम से माइक्रोसॉफ़्ट विंडोज़ पर इस्तेमाल किया जा सकता है।
 * वेबकिट और ब्लिंक (लेआउट इंजन) लेआउट इंजन, उदाहरण के लिए क्रमशः एप्पल सफारी और Google क्रोम वेब ब्राउज़र में उपयोग किए जाते हैं, एक्सएसएल ट्रांसफॉर्मेशन करने के लिए libxslt लाइब्रेरी का उपयोग करते हैं।
 * भाषा बाध्यकारी पायथन (प्रोग्रामिंग भाषा) के लिए मौजूद है, पर्ल, रूबी (प्रोग्रामिंग भाषा), पीएचपी, सामान्य लिस्प, टीसीएल, और सी ++।
 * Microsoft दो XSLT प्रोसेसर प्रदान करता है (दोनों XSLT 1.0 केवल)। पहले का प्रोसेसर MSXML COM इंटरफेस प्रदान करता है; MSXML 4.0 से इसमें कमांड लाइन उपयोगिता भी शामिल है . .NET रनटाइम में एक अलग बिल्ट-इन XSLT प्रोसेसर शामिल है   पुस्तकालय।
 * Saxon XSLT एक XSLT 3.0 और XQuery 3.1 प्रोसेसर है जिसमें खुला स्रोत सॉफ्टवेयर है। स्टैंड-अलोन ऑपरेशन के लिए ओपन-सोर्स और मालिकाना सॉफ़्टवेयर संस्करण और Java (प्रोग्रामिंग लैंग्वेज), JavaScript और .NET के लिए। एक अलग उत्पाद सैक्सन-जेएस Node.js और ब्राउज़र में XSLT 3.0 प्रोसेसिंग की पेशकश करता है।
 * Xalan जावा और C++ के लिए उपलब्ध Apache Software Foundation का एक ओपन सोर्स XSLT 1.0 प्रोसेसर है। ओरेकल से मानक जावा वितरण में Xalan प्रोसेसर का एक संस्करण डिफ़ॉल्ट XSLT प्रोसेसर के रूप में शामिल है।
 * वेब ब्राउज़र: सफारी, क्रोम, फायरफॉक्स, ओपेरा और इंटरनेट एक्सप्लोरर सभी XSLT 1.0 (केवल) को सपोर्ट करते हैं। ब्राउज़र XML फ़ाइलों का ऑन-द-फ्लाई ट्रांसफ़ॉर्मेशन कर सकते हैं और ब्राउज़र विंडो में ट्रांसफ़ॉर्मेशन आउटपुट प्रदर्शित कर सकते हैं। यह या तो XML दस्तावेज़ में XSL एम्बेड करके या XML दस्तावेज़ से XSL निर्देशों वाली फ़ाइल को संदर्भित करके किया जाता है। बाद वाला अपने सुरक्षा मॉडल के कारण स्थानीय फ़ाइल सिस्टम की फ़ाइलों पर Chrome के साथ काम नहीं कर सकता है।
 * Adobe AXSLE इंजन, एक मालिकाना पुस्तकालय

प्रदर्शन
अधिकांश शुरुआती XSLT प्रोसेसर दुभाषिए थे। हाल ही में, लक्ष्य के रूप में पोर्टेबल इंटरमीडिएट भाषाओं (जैसे जावा बाइटकोड या .NET सामान्य मध्यवर्ती भाषा) का उपयोग करते हुए, कोड जेनरेशन तेजी से सामान्य हो रहा है। हालांकि, यहां तक ​​कि व्याख्यात्मक उत्पाद आम तौर पर अलग-अलग विश्लेषण और निष्पादन चरणों की पेशकश करते हैं, जिससे एक अनुकूलित अभिव्यक्ति ट्री को स्मृति में बनाया जा सकता है और कई परिवर्तन करने के लिए पुन: उपयोग किया जा सकता है। यह ऑनलाइन प्रकाशन अनुप्रयोगों में पर्याप्त प्रदर्शन लाभ देता है, जहां एक ही परिवर्तन प्रति सेकंड कई बार विभिन्न स्रोत दस्तावेजों पर लागू होता है। यह पृथक्करण XSLT प्रोसेसिंग API (जैसे XML प्रोसेसिंग के लिए Java API) के डिज़ाइन में परिलक्षित होता है।

शुरुआती XSLT प्रोसेसर में बहुत कम अनुकूलन थे। स्टाइलशीट दस्तावेज़ों को दस्तावेज़ ऑब्जेक्ट मॉडल में पढ़ा गया और प्रोसेसर सीधे उन पर कार्य करेगा। XPath इंजन भी अनुकूलित नहीं थे। हालाँकि, XSLT प्रोसेसर कार्यात्मक प्रोग्रामिंग भाषाओं और डेटाबेस क्वेरी भाषाओं में पाई जाने वाली अनुकूलन तकनीकों का उपयोग करते हैं, जैसे कि एक अभिव्यक्ति ट्री की स्थिर पुनर्लेखन (जैसे, गणनाओं को लूप से बाहर ले जाने के लिए), और मध्यवर्ती परिणामों की मेमोरी फ़ुटप्रिंट को कम करने के लिए आलसी पाइपलाइन मूल्यांकन (और जल्दी बाहर निकलने की अनुमति दें जब प्रोसेसर एक अभिव्यक्ति का मूल्यांकन कर सकता है जैसे  सभी उप-अभिव्यक्तियों के पूर्ण मूल्यांकन के बिना)। कई प्रोसेसर पेड़ के प्रतिनिधित्व का भी उपयोग करते हैं जो काफी अधिक कुशल होते हैं (अंतरिक्ष और समय दोनों में) सामान्य-उद्देश्य वाले DOM कार्यान्वयनों की तुलना में।

जून 2014 में, डेबी लॉकेट और माइकल हॉवर्ड के ने एक्सएसएलटी प्रोसेसर के लिए एक्सटी-स्पीडो नामक एक ओपन-सोर्स बेंचमार्किंग फ्रेमवर्क पेश किया।

यह भी देखें

 * XSLT तत्व - कुछ सामान्य रूप से प्रयुक्त XSLT संरचनाओं की एक सूची।
 * XSLT/Muenchian समूहीकरण - XSLT1 और XSLT2+ के बीच बोली का अंतर।
 * एक्स्टेंसिबल स्टाइलशीट लैंग्वेज - भाषाओं का एक परिवार जिसका XSLT एक सदस्य है
 * XQuery#XQuery और XSLT की तुलना
 * एक्सएसएल फॉर्मेटिंग ऑब्जेक्ट्स या एक्सएसएल-एफओ - दस्तावेज़ों के लिए एक एक्सएमएल-आधारित भाषा, आमतौर पर एक्सएसएलटी के साथ स्रोत दस्तावेज़ों को बदलने से उत्पन्न होती है, जिसमें स्वरूपित आउटपुट बनाने के लिए उपयोग की जाने वाली वस्तुएं शामिल होती हैं।
 * पहचान परिवर्तन - फिल्टर चेन के लिए एक शुरुआती बिंदु जो एक ट्रांसफॉर्मेशन पाइपलाइन में XML ट्री से डेटा एलिमेंट्स को जोड़ता या हटाता है
 * अपाचे कोकून - एक्सएसएलटी और अन्य ट्रांसफार्मर के साथ डेटा प्रोसेसिंग के लिए एक जावा (प्रोग्रामिंग भाषा) आधारित ढांचा।

अग्रिम पठन

 * XSLT by Doug Tidwell, published by O’Reilly (ISBN 0-596-00053-7)
 * XSLT Cookbook by Sal Mangano, published by O’Reilly (ISBN 0-596-00974-7)
 * XSLT 2.0 Programmer's Reference by Michael Kay (ISBN 0-764-56909-0)
 * XSLT 2.0 and XPath 2.0 Programmer's Reference by Michael Kay (ISBN 978-0-470-19274-0)
 * XSLT 2.0 Web Development by Dmitry Kirsanov (ISBN 0-13-140635-3)
 * XSL Companion, 2nd Edition by Neil Bradley, published by Addison-Wesley (ISBN 0-201-77083-0)
 * XSLT and XPath on the Edge (Unlimited Edition) by Jeni Tennison, published by Hungry Minds Inc, U.S. (ISBN 0-7645-4776-3)
 * XSLT & XPath, A Guide to XML Transformations by John Robert Gardner and Zarella Rendon, published by Prentice-Hall (ISBN 0-13-040446-2)
 * XSL-FO by Dave Pawson, published by O'Reilly (ISBN 978-0-596-00355-5)

बाहरी संबंध

 * Documentation
 * XSLT 1.0 W3C Recommendation
 * XSLT 2.0 W3C Recommendation
 * XSLT 3.0 W3C Recommendation
 * XSLT - MDC Docs by Mozilla Developer Network
 * XSLT Reference (MSDN)
 * XSLT Elements (Saxon)
 * XSLT introduction and reference


 * XSLT code libraries
 * EXSLT is a widespread community initiative to provide extensions to XSLT.
 * FXSL is a library implementing support for Higher-order functions in XSLT. FXSL is written in XSLT itself.
 * The XSLT Standard Library xsltsl, provides the XSLT developer with a set of XSLT templates for commonly used functions. These are implemented purely in XSLT, that is they do not use any extensions. xsltsl is a SourceForge project.
 * Kernow A GUI for Saxon that provides a point and click interface for running transforms.
 * xslt.js – Transform XML with XSLT JavaScript library that transforms XML with XSLT in the browser.