एक्सएसएलटी
Paradigm | Declarative |
---|---|
Developer | World Wide Web Consortium (W3C) |
पहली प्रस्तुति | 1998 |
Stable release | 3.0
/ June 8, 2017 |
फ़ाइल नाम एक्सटेंशनएस | .xslt |
वेबसाइट | www |
Major implementations | |
libxslt, Saxon, Xalan | |
Influenced by | |
DSSSL |
एक्सएसएलटी (एक्स्टेंसिबल स्टाइलशीट लैंग्वेज ट्रांसफॉर्मेशन) मूल रूप से एक्सएमएल दस्तावेजों को अन्य एक्सएमएल दस्तावेजों,[1] या वेब पेजों के लिए एचटीएमएल जैसे अन्य प्रारूपों, सादे पाठ या एक्सएसएल फॉर्मेटिंग ऑब्जेक्ट्स में बदलने के लिए डिज़ाइन की गई भाषा है, जिसे बाद में अन्य प्रारूपों में परिवर्तित किया जा सकता है। जैसे पीडीएफ, पोस्टस्क्रिप्ट और पीएनजी।[2] एक्सएसएलटी 1.0 विनिर्देशन के बाद के अपडेट में JSON और प्लेन-टेक्स्ट ट्रांसफ़ॉर्मेशन के लिए समर्थन जोड़ा गया था।
अगस्त 2022 तक, भाषा का सबसे हालिया स्थिर संस्करण एक्सएसएलटी 3.0 है, जिसने जून 2017 में सिफारिश की स्थिति हासिल की।
एक्सएसएलटी 3.0 कार्यान्वयन Java, .NET, C/C++, पायथन, PHP और NodeJS को सपोर्ट करता है। एक एक्सएसएलटी 3.0 Javascript लाइब्रेरी को वेब ब्राउज़र में भी होस्ट किया जा सकता है। आधुनिक वेब ब्राउज़र में एक्सएसएलटी 1.0 के लिए मूल समर्थन भी शामिल है।[3]
एक एक्सएसएलटी दस्तावेज़ परिवर्तन के लिए, मूल दस्तावेज़ नहीं बदला गया है; बल्कि, मौजूदा दस्तावेज़ की सामग्री के आधार पर एक नया दस्तावेज़ बनाया जाता है।[4] विशिष्ट रूप से, इनपुट दस्तावेज़ एक्सएमएल फ़ाइलें होते हैं, लेकिन कोई भी चीज़ जिससे प्रोसेसर एक्सक्वेरी और XPath डेटा मॉडल का निर्माण कर सकता है, का उपयोग किया जा सकता है, जैसे संबंध का डेटाबेस टेबल या भौगोलिक सूचना प्रणाली।[5]
जबकि एक्सएसएलटी को मूल रूप से एक्सएमएल परिवर्तन के लिए एक विशेष-उद्देश्य वाली भाषा के रूप में डिजाइन किया गया था, यह भाषा ट्यूरिंग-पूर्ण है, जो इसे सैद्धांतिक रूप से मनमाना संगणना करने में सक्षम बनाती है।[6]
इतिहास
एक्सएसएलटी कार्यात्मक भाषाओं,[7] और SNOBOL और AWK जैसी पाठ-आधारित पैटर्न मिलान भाषाओं से प्रभावित है। इसका सबसे प्रत्यक्ष पूर्ववर्ती DSSSL है, जिसने SGML के लिए वही किया जो एक्सएसएलटी एक्सएमएल के लिए करता है।[8]
- एक्सएसएलटी 1.0: एक्सएसएलटी विश्वव्यापी वेब संकाय (W3C) के एक्स्टेंसिबल स्टाइलशीट लैंग्वेज (XSL) के 1998-1999 के विकास प्रयास का हिस्सा था, एक ऐसी परियोजना जिसने XSL-FO और XPath का भी उत्पादन किया। एक्सएसएलटी को विकसित करने वाली मानक समिति के कुछ सदस्य, जिनमें संपादक जेम्स क्लार्क भी शामिल हैं, ने पहले DSSSL पर काम किया था। एक्सएसएलटी 1.0 को नवंबर 1999 में W3C अनुशंसा के रूप में प्रकाशित किया गया था।[9] इसकी उम्र के बावजूद, एक्सएसएलटी 1.0[10] अभी भी व्यापक रूप से उपयोग किया जाता है (2018 तक), क्योंकि बाद के संस्करण वेब ब्राउज़र या LAMP जैसे वातावरण के लिए मूल रूप से समर्थित नहीं हैं।
- एक्सएसएलटी 2.0: 2001 में एक संस्करण 1.1 बनाने के असफल प्रयास के बाद,[11] XSL कार्यकारी समूह ने XPath 2.0 बनाने के लिए एक्सक्वेरी कार्यकारी समूह के साथ सेना में शामिल हो गए,[12] एक्सएमएल स्कीमा पर आधारित एक समृद्ध डेटा मॉडल और प्रकार प्रणाली के साथ। इस पर निर्माण एक्सएसएलटी 2.0 है,[13] माइकल हॉवर्ड के संपादन के तहत विकसित किया गया, जो जनवरी 2007 में सिफारिश की स्थिति तक पहुंच गया।[14] एक्सएसएलटी 2.0 में सबसे महत्वपूर्ण नवप्रवर्तनों में शामिल हैं:
- नियमित अभिव्यक्ति का उपयोग करते हुए स्ट्रिंग हेरफेर
- दिनांक, समय और अवधि में हेरफेर करने के लिए कार्य और ऑपरेटर
- एकाधिक आउटपुट दस्तावेज़
- ग्रुपिंग (फ्लैट इनपुट अनुक्रमों से पदानुक्रमित संरचना बनाना)
- एक समृद्ध प्रकार की प्रणाली और मजबूत प्रकार की जाँच
- एक्सएसएलटी 3.0: 8 जून 2017 को W3C अनुशंसा बन गया। मुख्य नई विशेषताएं हैं:[15]
- स्ट्रीमिंग परिवर्तन: पिछले संस्करणों में पूरे इनपुट दस्तावेज़ को संसाधित करने से पहले मेमोरी में पढ़ना पड़ता था,[16] और प्रसंस्करण समाप्त होने तक आउटपुट नहीं लिखा जा सकता था। एक्सएसएलटी 3.0 एक्सएमएल स्ट्रीमिंग की अनुमति देता है जो स्मृति में फ़िट होने के लिए बहुत बड़े दस्तावेज़ों को प्रोसेस करने के लिए उपयोगी है या जब एक्सएमएल पाइपलाइनों में परिवर्तन जंजीर हैं।
- संकुल, बड़ी स्टाइलशीट की प्रतिरूपकता में सुधार करने के लिए।
- उदाहरण के लिए, xsl:try निर्देश के साथ गतिशील त्रुटियों का बेहतर प्रबंधन।
- नक्शे और सरणियों के लिए समर्थन, एक्सएसएलटी को JSON के साथ-साथ एक्सएमएल को संभालने में सक्षम बनाता है।
- कार्य अब अन्य (उच्च-क्रम) कार्यों के लिए तर्क हो सकते हैं।
डिजाइन और प्रसंस्करण मॉडल
एक्सएसएलटी प्रोसेसर एक या अधिक एक्सएमएल स्रोत दस्तावेज़ों के साथ-साथ एक या अधिक एक्सएसएलटी स्टाइलशीट लेता है, और उन्हें एक या एकाधिक आउटपुट दस्तावेज़ बनाने के लिए संसाधित करता है।[17][18] सी (प्रोग्रामिंग भाषा), एक्सएसएलटी जैसी व्यापक रूप से लागू अनिवार्य प्रोग्रामिंग भाषाओं के विपरीत घोषणात्मक है।[19] मूल प्रसंस्करण प्रतिमान पैटर्न मिलान है।[20] स्टेटफुल वातावरण में प्रदर्शन करने के लिए क्रियाओं के एक अनिवार्य अनुक्रम को सूचीबद्ध करने के बजाय, टेम्पलेट नियम केवल यह परिभाषित करते हैं कि किसी विशेष XPath-जैसे पैटर्न से मेल खाने वाले नोड को कैसे संभालना है, यदि प्रोसेसर को एक का सामना करना चाहिए, और टेम्पलेट की सामग्री प्रभावी रूप से कार्यात्मक होती है अभिव्यक्तियाँ जो सीधे उनके मूल्यांकित रूप का प्रतिनिधित्व करती हैं: परिणाम ट्री, जो प्रोसेसर के आउटपुट का आधार है।
एक विशिष्ट प्रोसेसर निम्नानुसार व्यवहार करता है। सबसे पहले, यह मानते हुए कि स्टाइलशीट पहले ही पढ़ी और तैयार की जा चुकी है, प्रोसेसर इनपुट एक्सएमएल दस्तावेज़ से एक स्रोत ट्री बनाता है। इसके बाद यह स्रोत ट्री के रूट नोड को संसाधित करता है, स्टाइलशीट में उस नोड के लिए सबसे अच्छा मेल खाने वाला टेम्पलेट ढूंढता है, और टेम्पलेट की सामग्री का मूल्यांकन करता है। प्रत्येक टेम्प्लेट में निर्देश आम तौर पर प्रोसेसर को या तो परिणाम ट्री में नोड्स बनाने के लिए निर्देशित करते हैं, या रूट नोड के समान ही स्रोत ट्री में अधिक नोड्स को प्रोसेस करने के लिए निर्देशित करते हैं। अंत में परिणाम ट्री को एक्सएमएल या एचटीएमएल टेक्स्ट के रूप में क्रमबद्ध किया जाता है।
एक्सपाथ
एक्सएसएलटी स्रोत दस्तावेज़ ट्री के सबसेट की पहचान करने और गणना करने के लिए एक्सपाथ का उपयोग करता है। एक्सपाथ कई प्रकार के फ़ंक्शन भी प्रदान करता है, जिसे एक्सएसएलटी स्वयं और बढ़ाता है।
एक्सएसएलटी 1.0 एक्सपाथ 1.0 का उपयोग करता है, जबकि एक्सएसएलटी 2.0 एक्सपाथ 2.0 का उपयोग करता है। एक्सएसएलटी 3.0 या तो एक्सपाथ 3.0 या 3.1 के साथ काम करेगा। 1.0 और 2.0 के मामले में, एक्सएसएलटी और एक्सपाथ विनिर्देशों को एक ही तिथि पर प्रकाशित किया गया था। 3.0 के साथ, हालांकि, वे अब सिंक्रनाइज़ नहीं थे; एक्सपाथ 3.0 अप्रैल 2014 में एक सिफारिश बन गया, उसके बाद फरवरी 2017 में एक्सपाथ 3.1, एक्सएसएलटी 3.0 जून 2017 में आया।
एक्सक्वेरी तुलना
एक्सएसएलटी प्रकार्यात्मकताएँ एक्सक्वेरी के साथ ओवरलैप करती हैं, जिसे शुरू में एक्सएमएल दस्तावेज़ों के बड़े संग्रह के लिए एक क्वेरी भाषा के रूप में माना गया था।
XSLT 2.0 और XQuery 1.0 मानकों को W3C के भीतर अलग-अलग कार्य समूहों द्वारा विकसित किया गया था, जहां उपयुक्त हो, एक सामान्य दृष्टिकोण सुनिश्चित करने के लिए मिलकर काम करना। वे समान डेटा मॉडल, टाइप सिस्टम और फ़ंक्शन लाइब्रेरी साझा करते हैं, और दोनों में XPath 2.0 को एक उपभाषा के रूप में शामिल किया गया है।
हालाँकि, दो भाषाएँ विभिन्न परंपराओं में निहित हैं और विभिन्न समुदायों की आवश्यकताओं को पूरा करती हैं। XSLT को मुख्य रूप से एक स्टाइलशीट भाषा के रूप में माना गया था जिसका प्राथमिक लक्ष्य वेब पर (एक वेब टेम्पलेट भाषा के रूप में), या कागज पर मानव पाठक के लिए XML को प्रस्तुत करना था। XQuery को मुख्य रूप से SQL की परंपरा में डेटाबेस क्वेरी भाषा के रूप में माना गया था।
क्योंकि दो भाषाओं की उत्पत्ति विभिन्न समुदायों में हुई है, एक्सएसएलटी अधिक लचीली संरचना के साथ वर्णनात्मक दस्तावेज़ों को संभालने में अधिक मजबूत है, जबकि एक्सक्वेरी अपने डेटा प्रबंधन में अधिक मजबूत है, उदाहरण के लिए संबंधपरक जुड़ाव करते समय।[21]
मीडिया प्रकार
<आउटपुट>
ई> तत्व वैकल्पिक रूप से विशेषता ले सकता है मीडिया प्रकार
, जो किसी को परिणामी आउटपुट के लिए इंटरनेट मीडिया प्रकार (या MIME प्रकार) सेट करने की अनुमति देता है, उदाहरण के लिए: <xsl:output output="एक्सएमएल" media-type="application/एक्सएमएल"/>
. एक्सएसएलटी 1.0 अनुशंसा अधिक सामान्य विशेषता प्रकारों की अनुशंसा करती है text/एक्सएमएल
और application/एक्सएमएल
चूंकि लंबे समय से एक्सएसएलटी के लिए कोई पंजीकृत मीडिया प्रकार नहीं था। इस समय के दौरान text/xsl
वास्तविक मानक बन गया। एक्सएसएलटी 1.0 में यह निर्दिष्ट नहीं किया गया था कि कैसे media-type
मूल्यों का प्रयोग करना चाहिए।
एक्सएसएलटी 2.0 की रिलीज़ के साथ, W3C ने MIME मीडिया प्रकार के पंजीकरण की सिफारिश की application/एक्सएसएलटी+एक्सएमएल
[22] और इसे बाद में इंटरनेट निरुपित नंबर प्राधिकरण के साथ पंजीकृत किया गया।[23]
एक्सएसएलटी के प्री-1.0 वर्किंग ड्राफ्ट का उपयोग किया गया text/xsl
उनके एम्बेडिंग उदाहरणों में, और इस प्रकार को लागू किया गया था और Microsoft द्वारा Internet Explorer में प्रचारित किया जाना जारी है[24] और एमएसएक्सएमएल। में भी व्यापक रूप से मान्यता प्राप्त है एक्सएमएल-stylesheet
अन्य ब्राउज़रों द्वारा प्रसंस्करण निर्देश। व्यवहार में, इसलिए, इस प्रसंस्करण निर्देश का उपयोग करके ब्राउज़र में परिवर्तन को नियंत्रित करने के इच्छुक उपयोगकर्ता इस अपंजीकृत मीडिया प्रकार का उपयोग करने के लिए बाध्य हैं।[25]
उदाहरण
ये उदाहरण निम्न आवक XML दस्तावेज़ का उपयोग करते हैं
<?एक्सएमएल संस्करण = 1.0 ?><व्यक्ति>
<व्यक्ति उपयोगकर्ता नाम = JS1> <नाम>जॉन</name> <परिवार-नाम>स्मिथ</परिवार-नाम> </व्यक्ति> <व्यक्ति उपयोगकर्ता नाम = MI1> <नाम>मोरका</name> <परिवार-नाम>इस्मिन्शियस</परिवार-नाम> </व्यक्ति>
</व्यक्ति> </वाक्यविन्यास हाइलाइट>
उदाहरण 1 (एक्सएमएल को एक्सएमएल में बदलना)
यह XSLT स्टाइलशीट XML दस्तावेज़ को रूपांतरित करने के लिए टेम्पलेट प्रदान करती है:
<xsl: आउटपुट मेथड = एक्सएमएल इंडेंट = हाँ />
<xsl: साँचा मिलान = /व्यक्तियों > <जड़> <xsl:apply-templates select= person /> </ जड़> </xsl: साँचा>
<xsl: टेम्पलेट मैच = व्यक्ति> <नाम उपयोगकर्ता नाम = {@उपयोगकर्ता नाम}> <xsl: चयन का मूल्य = नाम /> </ नाम> </xsl: साँचा>
</xsl: स्टाइलशीट></वाक्यविन्यास हाइलाइट>
इसका मूल्यांकन एक नए XML दस्तावेज़ में होता है, जिसमें एक और संरचना होती है:
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल><?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?><जड़>
<नाम उपयोगकर्ता नाम = JS1> जॉन </ नाम> <नाम उपयोगकर्ता नाम = MI1> मोरका </ नाम>
</ जड़></वाक्यविन्यास हाइलाइट>
उदाहरण 2 (एक्सएमएल को एक्सएचटीएमएल में बदलना)
निम्न उदाहरण XSLT फ़ाइल संसाधित कर रहा है
<?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?>
<xsl: स्टाइलशीट
संस्करण = 1.0 एक्सएमएलns:xsl= http://www.w3.org/1999/XSL/Transform एक्सएमएलns= http://www.w3.org/1999/xएचटीएमएल >
<xsl: आउटपुट विधि = एक्सएमएल इंडेंट = हाँ एन्कोडिंग = UTF-8 />
<xsl: साँचा मिलान = /व्यक्तियों > <एचटीएमएल> <head> <title>एक्सएमएल का परीक्षण उदाहरण</title> </head> <शरीर>
<उल> <xsl:apply-templates select= person > <xsl: सॉर्ट सेलेक्ट = फैमिली-नेम /> </xsl:apply-templates> </शरीर> </एचटीएमएल> </xsl: साँचा>
<xsl: टेम्पलेट मैच = व्यक्ति> <ली> <xsl: value-of select= family-name /><xsl:text>, </xsl:text><xsl:value-of select= name /> </ली> </xsl: साँचा>
</xsl: स्टाइलशीट>
</वाक्यविन्यास हाइलाइट>
उपरोक्त दिखाए गए एक्सएमएल इनपुट फ़ाइल के साथ निम्नलिखित एक्सएचटीएमएल में परिणाम (व्हाट्सएप (कंप्यूटर साइंस) को स्पष्टता के लिए यहां समायोजित किया गया है):
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल>
<?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?>
<एचटीएमएल एक्सएमएलns= http://www.w3.org/1999/xएचटीएमएल >
<head> <title>एक्सएमएल का परीक्षण उदाहरण</title> </head> <शरीर>
<उल>
</शरीर> </एचटीएमएल> </वाक्यविन्यास हाइलाइट> वेब ब्राउजर में प्रस्तुत किए जाने पर यह एक्सएचटीएमएल नीचे आउटपुट उत्पन्न करता है।
एक वेब ब्राउज़र के लिए प्रदर्शन पर एक XML दस्तावेज़ में XSL परिवर्तन लागू करने में सक्षम होने के लिए, एक XML स्टाइलशीट प्रसंस्करण निर्देश XML में सम्मिलित किया जा सकता है। इसलिए, उदाहरण के लिए, यदि उपरोक्त उदाहरण 2 में स्टाइलशीट "example2.xsl" के रूप में उपलब्ध थी, तो निम्नलिखित निर्देश मूल इनकमिंग XML में जोड़े जा सकते हैं:[26]
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल>
<?एक्सएमएल-stylesheet href= example2.xsl type= text/xsl ?>
</वाक्यविन्यास हाइलाइट>
इस उदाहरण में, text/xsl
W3C विनिर्देशों के अनुसार तकनीकी रूप से गलत है[26] (जो कहते हैं कि प्रकार होना चाहिए application/एक्सएसएलटी+एक्सएमएल
), लेकिन यह एकमात्र मीडिया प्रकार है जो 2009 तक सभी ब्राउज़रों में व्यापक रूप से समर्थित है, और 2021 में स्थिति अपरिवर्तित है।
प्रोसेसर कार्यान्वयन
- अल्टोवा से रैप्टरएक्सएमएल एक एक्सएसएलटी 3.0 प्रोसेसर है जो एक्सएमएलस्पाई डेवलपमेंट टूलकिट में उपलब्ध है और एक फ्री-स्टैंडिंग सर्वर कार्यान्वयन के रूप में, एक रेस्ट इंटरफेस का उपयोग करके लागू किया गया है।
- आईबीएम डेटापॉवर ब्रांड के तहत एक विशेष प्रयोजन के हार्डवेयर उपकरण में एम्बेडेड एक्सएसएलटी प्रसंस्करण प्रदान करता है।
- लिबएक्सएमएल एमआईटी लाइसेंस के तहत जारी की गई एक मुफ्त लाइब्रेरी है जिसे व्यावसायिक अनुप्रयोगों में पुन: उपयोग किया जा सकता है। यह लिबएक्सएमएलl पर आधारित है और गति और सुवाह्यता के लिए C (प्रोग्रामिंग भाषा) में लागू किया गया है। यह XSLT 1.0 और EXSLT एक्सटेंशन को सपोर्ट करता है।[27]
- इसका उपयोग कमांड लाइन पर एक्सएसएलटीproc[28] के माध्यम से किया जा सकता है जो macOS[29] और कई लिनक्स वितरणों में शामिल है, और साइगविन के माध्यम से माइक्रोसॉफ़्ट विंडोज़ पर इस्तेमाल किया जा सकता है।[30]
- वेबकिट और ब्लिंक (लेआउट इंजन), उदाहरण के लिए क्रमशः एप्पल सफारी और गूगल क्रोम वेब ब्राउज़र में उपयोग किए जाते हैं, एक्सएसएल ट्रांसफॉर्मेशन करने के लिए लिबएक्सएसएलटी लाइब्रेरी का उपयोग करते हैं।[31]
- पायथन (प्रोग्रामिंग भाषा),[32] पर्ल,[33] रूबी (प्रोग्रामिंग भाषा),[34] पीएचपी,[35] सामान्य लिस्प,[36] टीसीएल,[37] और सी ++ के लिए बाइंडिंग मौजूद हैं।[38]
- Microsoft दो XSLT प्रोसेसर प्रदान करता है (दोनों XSLT 1.0 केवल)। पहले का प्रोसेसर MSएक्सएमएल COM इंटरफेस प्रदान करता है, एमएसएक्सएमएल 4.0 से इसमें कमांड लाइन उपयोगिता
msxsl.exe
भी शामिल है।[39] .NET रनटाइम में इसकेSystem.एक्सएमएल.Xsl
लाइब्रेरी में एक अलग बिल्ट-इन XSLT प्रोसेसर शामिल है। - Saxon एक एक्सएसएलटी 3.0 और एक्सक्वेरी 3.1 प्रोसेसर है जिसमें स्टैंड-अलोन ऑपरेशन और Java, JavaScript और .NET के लिए ओपन-सोर्स और मालिकाना संस्करण है। एक अलग उत्पाद सैक्सन-जेएस[40] Node.js और ब्राउज़र में एक्सएसएलटी 3.0 प्रसंस्करण प्रदान करता है।
- Xalan जावा और C++ के लिए उपलब्ध Apache Software Foundation का एक ओपन सोर्स XSLT 1.0 प्रोसेसर है। ओरेकल से मानक जावा वितरण में Xalan प्रोसेसर का एक संस्करण डिफ़ॉल्ट XSLT प्रोसेसर के रूप में शामिल है।
- वेब ब्राउज़र: सफारी, क्रोम, फ़ायरफ़ॉक्स, ओपेरा और इंटरनेट एक्सप्लोरर सभी एक्सएसएलटी 1.0 (केवल) का समर्थन करते हैं। ब्राउज़र XML फ़ाइलों का ऑन-द-फ्लाई ट्रांसफ़ॉर्मेशन कर सकते हैं और ब्राउज़र विंडो में ट्रांसफ़ॉर्मेशन आउटपुट प्रदर्शित कर सकते हैं। यह या तो XML दस्तावेज़ में XSL एम्बेड करके या XML दस्तावेज़ से XSL निर्देशों वाली फ़ाइल को संदर्भित करके किया जाता है। बाद वाला अपने सुरक्षा मॉडल के कारण स्थानीय फ़ाइल सिस्टम से फ़ाइलों पर क्रोम के साथ काम नहीं कर सकता है।[41]
- Adobe AXSLE इंजन, एक मालिकाना पुस्तकालय
प्रदर्शन
अधिकांश शुरुआती XSLT प्रोसेसर दुभाषिए थे। हाल ही में, लक्ष्य के रूप में पोर्टेबल इंटरमीडिएट भाषाओं (जैसे जावा बाइटकोड या .NET सामान्य मध्यवर्ती भाषा) का उपयोग करते हुए, कोड जेनरेशन तेजी से सामान्य हो रहा है। हालांकि, यहां तक कि व्याख्यात्मक उत्पाद आम तौर पर अलग-अलग विश्लेषण और निष्पादन चरणों की पेशकश करते हैं, जिससे एक अनुकूलित अभिव्यक्ति ट्री को स्मृति में बनाया जा सकता है और कई परिवर्तन करने के लिए पुन: उपयोग किया जा सकता है। यह ऑनलाइन प्रकाशन अनुप्रयोगों में पर्याप्त प्रदर्शन लाभ देता है, जहां एक ही परिवर्तन प्रति सेकंड कई बार विभिन्न स्रोत दस्तावेजों पर लागू होता है।[42] यह पृथक्करण एक्सएसएलटी प्रोसेसिंग API (जैसे एक्सएमएल प्रोसेसिंग के लिए Java API) के डिज़ाइन में परिलक्षित होता है।
शुरुआती XSLT प्रोसेसर में बहुत कम अनुकूलन थे। स्टाइलशीट दस्तावेज़ों को दस्तावेज़ ऑब्जेक्ट मॉडल में पढ़ा गया और प्रोसेसर सीधे उन पर कार्य करेगा। XPath इंजन भी अनुकूलित नहीं थे। हालाँकि, XSLT प्रोसेसर कार्यात्मक प्रोग्रामिंग भाषाओं और डेटाबेस क्वेरी भाषाओं में पाई जाने वाली अनुकूलन तकनीकों का उपयोग करते हैं, जैसे कि एक अभिव्यक्ति ट्री की स्थिर पुनर्लेखन (जैसे, गणनाओं को लूप से बाहर ले जाने के लिए), और मध्यवर्ती परिणामों की मेमोरी फ़ुटप्रिंट को कम करने के लिए आलसी पाइपलाइन मूल्यांकन (और "जल्दी बाहर निकलने" की अनुमति दें जब प्रोसेसर सभी उप-अभिव्यक्तियों के पूर्ण मूल्यांकन के बिना following-sibling::*[1]
जैसे अभिव्यक्ति का मूल्यांकन कर सकता है)। कई प्रोसेसर ट्री अभ्यावेदन का भी उपयोग करते हैं जो सामान्य-उद्देश्य वाले DOM कार्यान्वयन की तुलना में काफी अधिक कुशल (स्थान और समय दोनों में)[43] हैं।
जून 2014 में, डेबी लॉकेट और माइकल के ने एक्सएसएलटी प्रोसेसर के लिए एक्सटी-स्पीडो नामक एक ओपन-सोर्स बेंचमार्किंग फ्रेमवर्क पेश किया।[44]
यह भी देखें
- एक्सएसएलटी तत्व - कुछ सामान्य रूप से प्रयुक्त एक्सएसएलटी संरचनाओं की एक सूची।
- एक्सएसएलटी/Muenchian समूहीकरण - एक्सएसएलटी1 और एक्सएसएलटी2+ के बीच बोली का अंतर।
- एक्स्टेंसिबल स्टाइलशीट लैंग्वेज - भाषाओं का एक परिवार जिसका एक्सएसएलटी एक सदस्य है
- एक्सक्वेरी# एक्सक्वेरी और एक्सएसएलटी की तुलना
- एक्सएसएल फॉर्मेटिंग ऑब्जेक्ट्स या एक्सएसएल-एफओ - दस्तावेज़ों के लिए एक एक्सएमएल-आधारित भाषा, आमतौर पर एक्सएसएलटी के साथ स्रोत दस्तावेज़ों को बदलने से उत्पन्न होती है, जिसमें स्वरूपित आउटपुट बनाने के लिए उपयोग की जाने वाली वस्तुएं शामिल होती हैं।
- पहचान परिवर्तन - फिल्टर चेन के लिए एक शुरुआती बिंदु जो एक ट्रांसफॉर्मेशन पाइपलाइन में एक्सएमएल ट्री से डेटा एलिमेंट्स को जोड़ता या हटाता है
- अपाचे कोकून - एक्सएसएलटी और अन्य ट्रांसफार्मर के साथ डेटा प्रोसेसिंग के लिए एक जावा (प्रोग्रामिंग भाषा) आधारित ढांचा।
संदर्भ
- ↑ "परिवर्तन". 2012-09-19.
- ↑ "XML Output Method". 2012-09-19.
- ↑ "What is XSLT Used For?". 2018-02-07.
- ↑ "Introduction". XSL Transformations (XSLT) Version 1.0 W3C Recommendation. W3C. 16 November 1999. Retrieved November 7, 2012.
- ↑ Cite error: Invalid
<ref>
tag; no text was provided for refs namedTransformation
- ↑ XSLT Version 2.0 Is Turing-Complete: A Purely Transformation Based Proof
- ↑ Michael Kay. "What kind of language is XSLT?". IBM. Retrieved July 8, 2016.
- ↑ "A Proposal for XSL". W3C. Retrieved November 7, 2012.
- ↑ "XML and Semantic Web W3C Standards Timeline" (PDF). Archived from the original (PDF) on 2013-04-24. Retrieved 2012-02-04.
- ↑ "XSL Transformations (XSLT)". W3.org. 1999-11-16. Retrieved 2014-07-12.
- ↑ "XSL Transformations (XSLT) Version 1.1". W3.org. 2001-08-24. Retrieved 2014-07-12.
- ↑ "XML Path Language (XPath) 2.0 (Second Edition)". W3.org. 2010-12-14. Retrieved 2014-07-12.
- ↑ "XSL Transformations (XSLT) Version 2.0". W3.org. 2007-01-23. Retrieved 2014-07-12.
- ↑ "XML and Semantic Web W3C Standards Timeline" (PDF). 2012-02-04. Archived from the original (PDF) on 2013-04-24. Retrieved 2012-02-04.
- ↑ "What's New in XSLT 3.0?". w3. Retrieved 6 January 2014.
- ↑ Kay, Michael. "A Streaming XSLT Processor". Balisage: The Markup Conference 2010 Proceedings. Retrieved 15 February 2012.
- ↑ Flatt, Amelie; Langner, Arne; Leps, Olof (2022), "Phase III: Generating Artifacts from the Model", Model-Driven Development of Akoma Ntoso Application Profiles (in English), Cham: Springer International Publishing, pp. 31–37, doi:10.1007/978-3-031-14132-4_5, ISBN 978-3-031-14131-7, retrieved 2023-01-07
- ↑ "XSL Transformations (XSLT) Version 2.0 (Second Edition)". www.w3.org. Retrieved 2023-02-07.
Example: Multiple Result Documents
- ↑ "Discover the Wonders of XSLT: XSLT Quirks". Archived from the original on 2011-07-09. Retrieved 2011-02-11.
XSLT is a very specialized language with a distinct declarative flavor.
- ↑ Kay, Michael. "What kind of language is XSLT?". IBM. Retrieved 13 November 2013.
- ↑ "Saxonica: XSLT and XQuery". www.saxonica.com. Retrieved 2022-06-29.
- ↑ "XSL Transformations (XSLT) Version 2.0". W3C. Retrieved 19 October 2012.
- ↑ "Application Media Types". IANA. Retrieved 19 October 2012.
- ↑ "XSLT Requirements for Viewing XML in a Browser". Microsoft. Retrieved 19 October 2012.
- ↑ Kay, Michael (2008). XSLT 2.0 and XPath 2.0 Programmer's Reference. Wiley. p. 100. ISBN 978-0-470-19274-0.
- ↑ 26.0 26.1 "XSL Transformations (XSLT) Version 1.0: W3C Recommendation – Embedding Stylesheets". W3C. 16 November 1999. Retrieved 20 September 2016.
- ↑ "The XSLT C library for GNOME: libxslt". Retrieved 23 November 2012.
- ↑ "The XSLT C library for GNOME: The xsltproc tool". Retrieved 23 November 2012.
- ↑ "xsltproc man page". Retrieved 23 November 2012.
- ↑ "New package: libxslt". Retrieved 23 November 2012.
- ↑ "The WebKit Open Source Project - XSLT". Retrieved 2009-10-25.
- ↑ "The XML C parser and toolkit of Gnome: Python and bindings". Retrieved 23 November 2012.
- ↑ "XML::LibXSLT - Interface to the GNOME libxslt library". CPAN. Retrieved 23 November 2012.
- ↑ "libxslt-ruby". Retrieved 23 November 2012.
- ↑ "libxml". Retrieved 23 November 2012.
- ↑ "cl-libxml2 High-level wrapper around libxml2 and libxslt libraries".
- ↑ "टीसीएलएक्सएमएल". Retrieved 21 May 2013.
- ↑ "libxml++". sourceforge.net. Retrieved 23 November 2012.
- ↑ "Command Line Transformation Utility (msxsl.exe)". Microsoft. Retrieved 22 October 2012.
- ↑ "Saxon-JS". Saxonica. Retrieved 6 September 2018.
- ↑ "Issue 58151: Fails to load xml file on local file system using XMLHttpRequest".
- ↑ Saxon: Anatomy of an XSLT processor - Article describing implementation & optimization details of a popular XSLT processor.
- ↑ Lumley, John; Kay, Michael (June 2015). "Improving Pattern Matching Performance in XSLT". XML London 2015: 9–25. doi:10.14337/XMLLondon15.Lumley01. ISBN 978-0-9926471-2-4.
- ↑ Kay, Michael; Lockett, Debbie (June 2014). "Benchmarking XSLT Performance". XML London 2014: 10–23. doi:10.14337/XMLLondon14.Kay01. ISBN 978-0-9926471-1-7.
अग्रिम पठन
- एक्सएसएलटी by Doug Tidwell, published by O’Reilly (ISBN 0-596-00053-7)
- एक्सएसएलटी Cookbook by Sal Mangano, published by O’Reilly (ISBN 0-596-00974-7)
- एक्सएसएलटी 2.0 Programmer's Reference by Michael Kay (ISBN 0-764-56909-0)
- एक्सएसएलटी 2.0 and XPath 2.0 Programmer's Reference by Michael Kay (ISBN 978-0-470-19274-0)
- एक्सएसएलटी 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)
- एक्सएसएलटी and XPath on the Edge (Unlimited Edition) by Jeni Tennison, published by Hungry Minds Inc, U.S. (ISBN 0-7645-4776-3)
- एक्सएसएलटी & XPath, A Guide to एक्सएमएल 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
- एक्सएसएलटी 1.0 W3C Recommendation
- एक्सएसएलटी 2.0 W3C Recommendation
- एक्सएसएलटी 3.0 W3C Recommendation
- एक्सएसएलटी - MDC Docs Archived 2011-12-26 at the Wayback Machine by Mozilla Developer Network
- एक्सएसएलटी Reference (MSDN)
- एक्सएसएलटी Elements (Saxon)
- एक्सएसएलटी introduction and reference
- एक्सएसएलटी code लिबraries
- Eएक्सएसएलटी is a widespread community initiative to provide extensions to एक्सएसएलटी.
- FXSL is a लिबrary implementing support for Higher-order functions in एक्सएसएलटी. FXSL is written in एक्सएसएलटी itself.
- The एक्सएसएलटी Standard लिबrary एक्सएसएलटीsl, provides the एक्सएसएलटी developer with a set of एक्सएसएलटी templates for commonly used functions. These are implemented purely in एक्सएसएलटी, that is they do not use any extensions. एक्सएसएलटीsl is a SourceForge project.
- Kernow A GUI for Saxon that provides a point and click interface for running transforms.
- एक्सएसएलटी.js – Transform एक्सएमएल with एक्सएसएलटी JavaScript लिबrary that transforms एक्सएमएल with एक्सएसएलटी in the browser.