एक्सएसएलटी: Difference between revisions
No edit summary |
No edit summary |
||
Line 31: | Line 31: | ||
अगस्त 2022 तक, भाषा का सबसे हालिया स्थिर संस्करण एक्सएसएलटी 3.0 है, जिसने जून 2017 में सिफारिश की स्थिति हासिल की। | अगस्त 2022 तक, भाषा का सबसे हालिया स्थिर संस्करण एक्सएसएलटी 3.0 है, जिसने जून 2017 में सिफारिश की स्थिति हासिल की। | ||
एक्सएसएलटी 3.0 कार्यान्वयन Java, .NET, C/C++, पायथन, PHP और NodeJS को सपोर्ट करता है। एक एक्सएसएलटी 3.0 Javascript लाइब्रेरी को वेब ब्राउज़र में भी होस्ट किया जा सकता है। आधुनिक वेब ब्राउज़र में एक्सएसएलटी 1.0 के लिए मूल समर्थन भी | एक्सएसएलटी 3.0 कार्यान्वयन Java, .NET, C/C++, पायथन, PHP और NodeJS को सपोर्ट करता है। एक एक्सएसएलटी 3.0 Javascript लाइब्रेरी को वेब ब्राउज़र में भी होस्ट किया जा सकता है। आधुनिक वेब ब्राउज़र में एक्सएसएलटी 1.0 के लिए मूल समर्थन भी सम्मलित है।<ref name="Used for">{{cite web|url=https://www.w3.org/standards/xml/transformation#uses|title=What is XSLT Used For?|date=2018-02-07}}</ref> | ||
एक एक्सएसएलटी दस्तावेज़ परिवर्तन के लिए, मूल दस्तावेज़ नहीं बदला गया है; बल्कि, | एक एक्सएसएलटी दस्तावेज़ परिवर्तन के लिए, मूल दस्तावेज़ नहीं बदला गया है; बल्कि, उपस्तिथा दस्तावेज़ की सामग्री के आधार पर एक नया दस्तावेज़ बनाया जाता है।<ref>{{cite web | url=http://www.w3.org/TR/xslt#section-Introduction | title=Introduction | publisher=W3C | work=XSL Transformations (XSLT) Version 1.0 W3C Recommendation | date=16 November 1999 | access-date=November 7, 2012}}</ref> विशिष्ट रूप से, इनपुट दस्तावेज़ एक्सएमएल फ़ाइलें होते है, लेकिन कोई भी चीज़ जिससे प्रोसेसर [[XQuery और XPath डेटा मॉडल|एक्सक्वेरी और XPath डेटा मॉडल]] का निर्माण कर सकता है, का उपयोग किया जा सकता है, जैसे [[संबंध का डेटाबेस]] टेबल या [[भौगोलिक सूचना प्रणाली]]।<ref name="Transformation" /> | ||
जबकि एक्सएसएलटी को मूल रूप से एक्सएमएल परिवर्तन के लिए एक विशेष-उद्देश्य वाली भाषा के रूप में डिजाइन किया गया था, यह भाषा [[ट्यूरिंग पूर्णता|ट्यूरिंग-पूर्ण]] है, जो इसे सैद्धांतिक रूप से मनमाना संगणना करने में सक्षम बनाती है।<ref>[https://www.researchgate.net/publication/221568016_XSLT_Version_20_Is_Turing-Complete_A_Purely_Transformation_Based_Proof XSLT Version 2.0 Is Turing-Complete: A Purely Transformation Based Proof]</ref> | जबकि एक्सएसएलटी को मूल रूप से एक्सएमएल परिवर्तन के लिए एक विशेष-उद्देश्य वाली भाषा के रूप में डिजाइन किया गया था, यह भाषा [[ट्यूरिंग पूर्णता|ट्यूरिंग-पूर्ण]] है, जो इसे सैद्धांतिक रूप से मनमाना संगणना करने में सक्षम बनाती है।<ref>[https://www.researchgate.net/publication/221568016_XSLT_Version_20_Is_Turing-Complete_A_Purely_Transformation_Based_Proof XSLT Version 2.0 Is Turing-Complete: A Purely Transformation Based Proof]</ref> | ||
== इतिहास == | == इतिहास == | ||
एक्सएसएलटी [[कार्यात्मक प्रोग्रामिंग|कार्यात्मक]] भाषाओं,<ref>{{cite web | url=http://www.ibm.com/developerworks/library/x-xslt/ | author=Michael Kay | title=What kind of language is XSLT? | website=[[IBM]] | access-date=July 8, 2016}}</ref> और [[SNOBOL]] और AWK जैसी पाठ-आधारित पैटर्न मिलान भाषाओं से प्रभावित है। इसका सबसे प्रत्यक्ष पूर्ववर्ती [[DSSSL]] है, जिसने [[SGML]] के लिए वही किया जो एक्सएसएलटी एक्सएमएल के लिए करता है।<ref>{{cite web | url=http://www.w3.org/TR/NOTE-XSL.html | title=A Proposal for XSL | publisher=W3C | access-date=November 7, 2012}}</ref> | एक्सएसएलटी [[कार्यात्मक प्रोग्रामिंग|कार्यात्मक]] भाषाओं,<ref>{{cite web | url=http://www.ibm.com/developerworks/library/x-xslt/ | author=Michael Kay | title=What kind of language is XSLT? | website=[[IBM]] | access-date=July 8, 2016}}</ref> और [[SNOBOL]] और AWK जैसी पाठ-आधारित पैटर्न मिलान भाषाओं से प्रभावित है। इसका सबसे प्रत्यक्ष पूर्ववर्ती [[DSSSL]] है, जिसने [[SGML]] के लिए वही किया जो एक्सएसएलटी एक्सएमएल के लिए करता है।<ref>{{cite web | url=http://www.w3.org/TR/NOTE-XSL.html | title=A Proposal for XSL | publisher=W3C | access-date=November 7, 2012}}</ref> | ||
* एक्सएसएलटी 1.0: एक्सएसएलटी [[विश्वव्यापी वेब संकाय]] (W3C) के [[एक्स्टेंसिबल स्टाइलशीट लैंग्वेज]] (XSL) के 1998-1999 के विकास प्रयास का हिस्सा था, एक ऐसी परियोजना जिसने [[XSL-FO]] और [[XPath]] का भी उत्पादन किया। एक्सएसएलटी को विकसित करने वाली मानक समिति के कुछ सदस्य, जिनमें संपादक जेम्स क्लार्क भी | * एक्सएसएलटी 1.0: एक्सएसएलटी [[विश्वव्यापी वेब संकाय]] (W3C) के [[एक्स्टेंसिबल स्टाइलशीट लैंग्वेज]] (XSL) के 1998-1999 के विकास प्रयास का हिस्सा था, एक ऐसी परियोजना जिसने [[XSL-FO]] और [[XPath]] का भी उत्पादन किया। एक्सएसएलटी को विकसित करने वाली मानक समिति के कुछ सदस्य, जिनमें संपादक जेम्स क्लार्क भी सम्मलित है, ने पहले DSSSL पर काम किया था। एक्सएसएलटी 1.0 को नवंबर 1999 में W3C अनुशंसा के रूप में प्रकाशित किया गया था।<ref name="timelinehistory">{{cite web |url=http://www.dblab.ntua.gr/~bikakis/XML%20and%20Semantic%20Web%20W3C%20Standards%20Timeline-History.pdf |title=XML and Semantic Web W3C Standards Timeline |access-date=2012-02-04 |archive-date=2013-04-24 |archive-url=https://web.archive.org/web/20130424125723/http://www.dblab.ntua.gr/~bikakis/XML%20and%20Semantic%20Web%20W3C%20Standards%20Timeline-History.pdf |url-status=dead }}</ref> इसकी उम्र के बावजूद, एक्सएसएलटी 1.0<ref>{{cite web|url=http://www.w3.org/TR/xslt |title=XSL Transformations (XSLT) |publisher=W3.org |date=1999-11-16 |access-date=2014-07-12}}</ref> अभी भी व्यापक रूप से उपयोग किया जाता है (2018 तक), क्योंकि बाद के संस्करण [[वेब ब्राउज़र]] या LAMP जैसे वातावरण के लिए मूल रूप से समर्थित नहीं है। | ||
*एक्सएसएलटी 2.0: 2001 में एक संस्करण 1.1 बनाने के असफल प्रयास के बाद,<ref>{{cite web|url=http://www.w3.org/TR/xslt11/ |title=XSL Transformations (XSLT) Version 1.1 |publisher=W3.org |date=2001-08-24 |access-date=2014-07-12}}</ref> XSL कार्यकारी समूह ने XPath 2.0 बनाने के लिए [[XQuery|एक्सक्वेरी]] कार्यकारी समूह के साथ सेना में | *एक्सएसएलटी 2.0: 2001 में एक संस्करण 1.1 बनाने के असफल प्रयास के बाद,<ref>{{cite web|url=http://www.w3.org/TR/xslt11/ |title=XSL Transformations (XSLT) Version 1.1 |publisher=W3.org |date=2001-08-24 |access-date=2014-07-12}}</ref> XSL कार्यकारी समूह ने XPath 2.0 बनाने के लिए [[XQuery|एक्सक्वेरी]] कार्यकारी समूह के साथ सेना में सम्मलित हो गए,<ref>{{cite web|url=http://www.w3.org/TR/xpath20/ |title=XML Path Language (XPath) 2.0 (Second Edition) |publisher=W3.org |date=2010-12-14 |access-date=2014-07-12}}</ref> [[XML स्कीमा (W3C)|एक्सएमएल स्कीमा]] पर आधारित एक समृद्ध डेटा मॉडल और प्रकार प्रणाली के साथ। इस पर निर्माण एक्सएसएलटी 2.0 है,<ref>{{cite web|url=http://www.w3.org/TR/xslt20/ |title=XSL Transformations (XSLT) Version 2.0 |publisher=W3.org |date=2007-01-23 |access-date=2014-07-12}}</ref> [[माइकल हॉवर्ड के]] संपादन के अनुसार विकसित किया गया, जो जनवरी 2007 में सिफारिश की स्थिति तक पहुंच गया।<ref>{{cite web|url=http://www.dblab.ntua.gr/~bikakis/XML%20and%20Semantic%20Web%20W3C%20Standards%20Timeline-History.pdf|title=XML and Semantic Web W3C Standards Timeline|date=2012-02-04|access-date=2012-02-04|archive-date=2013-04-24|archive-url=https://web.archive.org/web/20130424125723/http://www.dblab.ntua.gr/~bikakis/XML%20and%20Semantic%20Web%20W3C%20Standards%20Timeline-History.pdf|url-status=dead}}</ref> एक्सएसएलटी 2.0 में सबसे महत्वपूर्ण नवप्रवर्तनों में सम्मलित है: | ||
** [[नियमित अभिव्यक्ति]] का उपयोग करते हुए स्ट्रिंग हेरफेर | ** [[नियमित अभिव्यक्ति]] का उपयोग करते हुए स्ट्रिंग हेरफेर | ||
** दिनांक, समय और अवधि में हेरफेर करने के लिए कार्य और ऑपरेटर | ** दिनांक, समय और अवधि में हेरफेर करने के लिए कार्य और ऑपरेटर | ||
Line 46: | Line 46: | ||
** एक समृद्ध प्रकार की प्रणाली और मजबूत प्रकार की जाँच | ** एक समृद्ध प्रकार की प्रणाली और मजबूत प्रकार की जाँच | ||
* एक्सएसएलटी 3.0: 8 जून 2017 को W3C अनुशंसा बन गया। मुख्य नई विशेषताएं | * एक्सएसएलटी 3.0: 8 जून 2017 को W3C अनुशंसा बन गया। मुख्य नई विशेषताएं है:<ref name="new-in-3">{{cite web|title=What's New in XSLT 3.0? | ||
|url=http://www.w3.org/TR/xslt-30/#whats-new-in-xslt3|publisher=w3|access-date=6 January 2014}}</ref> | |url=http://www.w3.org/TR/xslt-30/#whats-new-in-xslt3|publisher=w3|access-date=6 January 2014}}</ref> | ||
*[[स्ट्रीमिंग एक्सएमएल|स्ट्रीमिंग]] परिवर्तन: पिछले संस्करणों में पूरे इनपुट दस्तावेज़ को संसाधित करने से पहले मेमोरी में पढ़ना पड़ता था,<ref> | *[[स्ट्रीमिंग एक्सएमएल|स्ट्रीमिंग]] परिवर्तन: पिछले संस्करणों में पूरे इनपुट दस्तावेज़ को संसाधित करने से पहले मेमोरी में पढ़ना पड़ता था,<ref> | ||
{{cite web|last=Kay|first=Michael|title=A Streaming XSLT Processor|url=http://www.balisage.net/Proceedings/vol5/html/Kay01/BalisageVol5-Kay01.html|publisher=Balisage: The Markup Conference 2010 Proceedings|access-date=15 February 2012}}</ref> और प्रसंस्करण समाप्त होने तक आउटपुट नहीं लिखा जा सकता था। एक्सएसएलटी 3.0 एक्सएमएल स्ट्रीमिंग की अनुमति देता है जो स्मृति में फ़िट होने के लिए बहुत बड़े दस्तावेज़ों को प्रोसेस करने के लिए उपयोगी है या जब एक्सएमएल पाइपलाइनों में परिवर्तन जंजीर | {{cite web|last=Kay|first=Michael|title=A Streaming XSLT Processor|url=http://www.balisage.net/Proceedings/vol5/html/Kay01/BalisageVol5-Kay01.html|publisher=Balisage: The Markup Conference 2010 Proceedings|access-date=15 February 2012}}</ref> और प्रसंस्करण समाप्त होने तक आउटपुट नहीं लिखा जा सकता था। एक्सएसएलटी 3.0 एक्सएमएल स्ट्रीमिंग की अनुमति देता है जो स्मृति में फ़िट होने के लिए बहुत बड़े दस्तावेज़ों को प्रोसेस करने के लिए उपयोगी है या जब एक्सएमएल पाइपलाइनों में परिवर्तन जंजीर है। | ||
** संकुल, बड़ी स्टाइलशीट की प्रतिरूपकता में सुधार करने के लिए। | ** संकुल, बड़ी स्टाइलशीट की प्रतिरूपकता में सुधार करने के लिए। | ||
** उदाहरण के लिए, xsl:try निर्देश के साथ गतिशील त्रुटियों का बेहतर प्रबंधन। | ** उदाहरण के लिए, xsl:try निर्देश के साथ गतिशील त्रुटियों का बेहतर प्रबंधन। | ||
** नक्शे और सरणियों के लिए समर्थन, एक्सएसएलटी को JSON के साथ-साथ एक्सएमएल को संभालने में सक्षम बनाता है। | ** नक्शे और सरणियों के लिए समर्थन, एक्सएसएलटी को JSON के साथ-साथ एक्सएमएल को संभालने में सक्षम बनाता है। | ||
** कार्य अब अन्य (उच्च-क्रम) कार्यों के लिए तर्क हो सकते | ** कार्य अब अन्य (उच्च-क्रम) कार्यों के लिए तर्क हो सकते है। | ||
== डिजाइन और प्रसंस्करण मॉडल == | == डिजाइन और प्रसंस्करण मॉडल == | ||
[[Image:XSLT en.svg|right|thumb|एक्स्टेंसिबल स्टाइलशीट लैंग्वेज ट्रांसफॉर्मेशन के मूल तत्वों और प्रक्रिया प्रवाह का आरेख।]]एक्सएसएलटी प्रोसेसर एक या अधिक एक्सएमएल स्रोत दस्तावेज़ों के साथ-साथ एक या अधिक एक्सएसएलटी स्टाइलशीट लेता है, और उन्हें एक या एकाधिक आउटपुट दस्तावेज़ बनाने के लिए संसाधित करता है।<ref>{{Citation |last1=Flatt |first1=Amelie |title=Phase III: Generating Artifacts from the Model |date=2022 |url=https://link.springer.com/10.1007/978-3-031-14132-4_5 |work=Model-Driven Development of Akoma Ntoso Application Profiles |pages=31–37 |place=Cham |publisher=Springer International Publishing |language=en |doi=10.1007/978-3-031-14132-4_5 |isbn=978-3-031-14131-7 |access-date=2023-01-07 |last2=Langner |first2=Arne |last3=Leps |first3=Olof}}</ref><ref>{{Cite web |title=XSL Transformations (XSLT) Version 2.0 (Second Edition) |url=https://www.w3.org/TR/xslt20/#creating-result-trees |access-date=2023-02-07 |website=www.w3.org |quote=Example: Multiple Result Documents}}</ref> [[सी (प्रोग्रामिंग भाषा)]], एक्सएसएलटी जैसी व्यापक रूप से लागू [[अनिवार्य प्रोग्रामिंग]] भाषाओं के विपरीत [[घोषणात्मक प्रोग्रामिंग|घोषणात्मक]] है।<ref>{{cite web |title=Discover the Wonders of XSLT: XSLT Quirks |url=http://www.developer.com/xml/article.php/3357231#Coding%20styles |quote=XSLT is a very specialized language with a distinct declarative flavor. |access-date=2011-02-11 |archive-date=2011-07-09 |archive-url=https://web.archive.org/web/20110709015528/http://www.developer.com/xml/article.php/3357231#Coding%20styles |url-status=dead }}</ref> मूल प्रसंस्करण प्रतिमान पैटर्न मिलान है।<ref name="IBM">{{cite web|last=Kay|first=Michael|title=What kind of language is XSLT?|url=http://www.ibm.com/developerworks/library/x-xslt/|publisher=IBM|access-date=13 November 2013}}</ref> स्टेटफुल वातावरण में प्रदर्शन करने के लिए क्रियाओं के एक अनिवार्य अनुक्रम को सूचीबद्ध करने के | [[Image:XSLT en.svg|right|thumb|एक्स्टेंसिबल स्टाइलशीट लैंग्वेज ट्रांसफॉर्मेशन के मूल तत्वों और प्रक्रिया प्रवाह का आरेख।]]एक्सएसएलटी प्रोसेसर एक या अधिक एक्सएमएल स्रोत दस्तावेज़ों के साथ-साथ एक या अधिक एक्सएसएलटी स्टाइलशीट लेता है, और उन्हें एक या एकाधिक आउटपुट दस्तावेज़ बनाने के लिए संसाधित करता है।<ref>{{Citation |last1=Flatt |first1=Amelie |title=Phase III: Generating Artifacts from the Model |date=2022 |url=https://link.springer.com/10.1007/978-3-031-14132-4_5 |work=Model-Driven Development of Akoma Ntoso Application Profiles |pages=31–37 |place=Cham |publisher=Springer International Publishing |language=en |doi=10.1007/978-3-031-14132-4_5 |isbn=978-3-031-14131-7 |access-date=2023-01-07 |last2=Langner |first2=Arne |last3=Leps |first3=Olof}}</ref><ref>{{Cite web |title=XSL Transformations (XSLT) Version 2.0 (Second Edition) |url=https://www.w3.org/TR/xslt20/#creating-result-trees |access-date=2023-02-07 |website=www.w3.org |quote=Example: Multiple Result Documents}}</ref> [[सी (प्रोग्रामिंग भाषा)]], एक्सएसएलटी जैसी व्यापक रूप से लागू [[अनिवार्य प्रोग्रामिंग]] भाषाओं के विपरीत [[घोषणात्मक प्रोग्रामिंग|घोषणात्मक]] है।<ref>{{cite web |title=Discover the Wonders of XSLT: XSLT Quirks |url=http://www.developer.com/xml/article.php/3357231#Coding%20styles |quote=XSLT is a very specialized language with a distinct declarative flavor. |access-date=2011-02-11 |archive-date=2011-07-09 |archive-url=https://web.archive.org/web/20110709015528/http://www.developer.com/xml/article.php/3357231#Coding%20styles |url-status=dead }}</ref> मूल प्रसंस्करण प्रतिमान पैटर्न मिलान है।<ref name="IBM">{{cite web|last=Kay|first=Michael|title=What kind of language is XSLT?|url=http://www.ibm.com/developerworks/library/x-xslt/|publisher=IBM|access-date=13 November 2013}}</ref> स्टेटफुल वातावरण में प्रदर्शन करने के लिए क्रियाओं के एक अनिवार्य अनुक्रम को सूचीबद्ध करने के अतिरिक्त, टेम्पलेट नियम केवल यह परिभाषित करते है कि किसी विशेष XPath-जैसे पैटर्न से मेल खाने वाले नोड को कैसे संभालना है, यदि प्रोसेसर को एक का सामना करना चाहिए, और टेम्पलेट की सामग्री प्रभावी रूप से कार्यात्मक होती है [[अभिव्यक्ति (प्रोग्रामिंग)|अभिव्यक्तियाँ]] जो सीधे उनके मूल्यांकित रूप का प्रतिनिधित्व करती है: परिणाम ट्री, जो प्रोसेसर के आउटपुट का आधार है। | ||
एक विशिष्ट प्रोसेसर निम्नानुसार व्यवहार करता है। सबसे पहले, यह मानते हुए कि स्टाइलशीट पहले ही पढ़ी और तैयार की जा चुकी है, प्रोसेसर इनपुट एक्सएमएल दस्तावेज़ से एक स्रोत ट्री बनाता है। इसके बाद यह स्रोत ट्री के रूट नोड को संसाधित करता है, स्टाइलशीट में उस नोड के लिए सबसे अच्छा मेल खाने वाला टेम्पलेट ढूंढता है, और टेम्पलेट की सामग्री का मूल्यांकन करता है। प्रत्येक टेम्प्लेट में निर्देश | एक विशिष्ट प्रोसेसर निम्नानुसार व्यवहार करता है। सबसे पहले, यह मानते हुए कि स्टाइलशीट पहले ही पढ़ी और तैयार की जा चुकी है, प्रोसेसर इनपुट एक्सएमएल दस्तावेज़ से एक स्रोत ट्री बनाता है। इसके बाद यह स्रोत ट्री के रूट नोड को संसाधित करता है, स्टाइलशीट में उस नोड के लिए सबसे अच्छा मेल खाने वाला टेम्पलेट ढूंढता है, और टेम्पलेट की सामग्री का मूल्यांकन करता है। प्रत्येक टेम्प्लेट में निर्देश सामान्यतः प्रोसेसर को या तो परिणाम ट्री में नोड्स बनाने के लिए निर्देशित करते है, या रूट नोड के समान ही स्रोत ट्री में अधिक नोड्स को प्रोसेस करने के लिए निर्देशित करते है। अंत में परिणाम ट्री को एक्सएमएल या एचटीएमएल टेक्स्ट के रूप में क्रमबद्ध किया जाता है। | ||
==एक्सपाथ== | ==एक्सपाथ== | ||
Line 66: | Line 66: | ||
एक्सएसएलटी स्रोत दस्तावेज़ ट्री के सबसेट की पहचान करने और गणना करने के लिए एक्सपाथ का उपयोग करता है। एक्सपाथ कई प्रकार के फ़ंक्शन भी प्रदान करता है, जिसे एक्सएसएलटी स्वयं और बढ़ाता है। | एक्सएसएलटी स्रोत दस्तावेज़ ट्री के सबसेट की पहचान करने और गणना करने के लिए एक्सपाथ का उपयोग करता है। एक्सपाथ कई प्रकार के फ़ंक्शन भी प्रदान करता है, जिसे एक्सएसएलटी स्वयं और बढ़ाता है। | ||
एक्सएसएलटी 1.0 एक्सपाथ 1.0 का उपयोग करता है, जबकि एक्सएसएलटी 2.0 एक्सपाथ 2.0 का उपयोग करता है। एक्सएसएलटी 3.0 या तो एक्सपाथ 3.0 या 3.1 के साथ काम करेगा। 1.0 और 2.0 के | एक्सएसएलटी 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 में आया। | ||
==एक्सक्वेरी तुलना == | ==एक्सक्वेरी तुलना == | ||
Line 72: | Line 72: | ||
एक्स क्वेरी एक्स क्वेरी और एक्सएसएलटी की तुलना}} | एक्स क्वेरी एक्स क्वेरी और एक्सएसएलटी की तुलना}} | ||
एक्सएसएलटी प्रकार्यात्मकताएँ एक्सक्वेरी के साथ ओवरलैप करती | एक्सएसएलटी प्रकार्यात्मकताएँ एक्सक्वेरी के साथ ओवरलैप करती है, जिसे प्रारंभ में एक्सएमएल दस्तावेज़ों के बड़े संग्रह के लिए एक क्वेरी भाषा के रूप में माना गया था। | ||
XSLT 2.0 और XQuery 1.0 मानकों को [[W3C]] के भीतर अलग-अलग कार्य समूहों द्वारा विकसित किया गया था, जहां उपयुक्त हो, एक सामान्य दृष्टिकोण सुनिश्चित करने के लिए मिलकर काम करना। वे समान डेटा मॉडल, टाइप सिस्टम और फ़ंक्शन लाइब्रेरी साझा करते | XSLT 2.0 और XQuery 1.0 मानकों को [[W3C]] के भीतर अलग-अलग कार्य समूहों द्वारा विकसित किया गया था, जहां उपयुक्त हो, एक सामान्य दृष्टिकोण सुनिश्चित करने के लिए मिलकर काम करना। वे समान डेटा मॉडल, टाइप सिस्टम और फ़ंक्शन लाइब्रेरी साझा करते है, और दोनों में XPath 2.0 को एक उपभाषा के रूप में सम्मलित किया गया है। | ||
चूँकि, दो भाषाएँ विभिन्न परंपराओं में निहित है और विभिन्न समुदायों की आवश्यकताओं को पूरा करती है। XSLT को मुख्य रूप से एक स्टाइलशीट भाषा के रूप में माना गया था जिसका प्राथमिक लक्ष्य वेब पर (एक [[वेब टेम्पलेट]] भाषा के रूप में), या कागज पर मानव पाठक के लिए XML को प्रस्तुत करना था। XQuery को मुख्य रूप से [[SQL]] की परंपरा में [[डेटाबेस क्वेरी भाषा]] के रूप में माना गया था। | |||
क्योंकि दो भाषाओं की उत्पत्ति विभिन्न समुदायों में हुई है, एक्सएसएलटी अधिक लचीली संरचना के साथ वर्णनात्मक दस्तावेज़ों को संभालने में अधिक मजबूत है, जबकि एक्सक्वेरी अपने डेटा प्रबंधन में अधिक मजबूत है, उदाहरण के लिए संबंधपरक जुड़ाव करते समय।<ref>{{Cite web |title=Saxonica: XSLT and XQuery |url=https://www.saxonica.com/technology/xslt-and-xquery.xml |access-date=2022-06-29 |website=www.saxonica.com}}</ref> | क्योंकि दो भाषाओं की उत्पत्ति विभिन्न समुदायों में हुई है, एक्सएसएलटी अधिक लचीली संरचना के साथ वर्णनात्मक दस्तावेज़ों को संभालने में अधिक मजबूत है, जबकि एक्सक्वेरी अपने डेटा प्रबंधन में अधिक मजबूत है, उदाहरण के लिए संबंधपरक जुड़ाव करते समय।<ref>{{Cite web |title=Saxonica: XSLT and XQuery |url=https://www.saxonica.com/technology/xslt-and-xquery.xml |access-date=2022-06-29 |website=www.saxonica.com}}</ref> | ||
Line 85: | Line 85: | ||
एक्सएसएलटी 2.0 की रिलीज़ के साथ, W3C ने MIME मीडिया प्रकार के पंजीकरण की सिफारिश की <code>application/एक्सएसएलटी+एक्सएमएल</code><ref>{{cite web|title=XSL Transformations (XSLT) Version 2.0|url=http://www.w3.org/TR/2007/REC-xslt20-20070123/#media-type-registration|publisher=W3C|access-date=19 October 2012}}</ref> और इसे बाद में [[इंटरनेट निरुपित नंबर प्राधिकरण]] के साथ पंजीकृत किया गया।<ref>{{cite web|title=Application Media Types|url=https://www.iana.org/assignments/media-types/application/index.html|publisher=IANA|access-date=19 October 2012}}</ref> | एक्सएसएलटी 2.0 की रिलीज़ के साथ, W3C ने MIME मीडिया प्रकार के पंजीकरण की सिफारिश की <code>application/एक्सएसएलटी+एक्सएमएल</code><ref>{{cite web|title=XSL Transformations (XSLT) Version 2.0|url=http://www.w3.org/TR/2007/REC-xslt20-20070123/#media-type-registration|publisher=W3C|access-date=19 October 2012}}</ref> और इसे बाद में [[इंटरनेट निरुपित नंबर प्राधिकरण]] के साथ पंजीकृत किया गया।<ref>{{cite web|title=Application Media Types|url=https://www.iana.org/assignments/media-types/application/index.html|publisher=IANA|access-date=19 October 2012}}</ref> | ||
एक्सएसएलटी के प्री-1.0 वर्किंग ड्राफ्ट का उपयोग किया गया <code>text/xsl</code> उनके एम्बेडिंग उदाहरणों में, और इस प्रकार को लागू किया गया था और Microsoft द्वारा Internet Explorer में प्रचारित किया जाना जारी है<ref>{{cite web|title=XSLT Requirements for Viewing XML in a Browser|url=http://msdn.microsoft.com/en-us/library/windows/desktop/ms757857(v=vs.85).aspx|publisher=Microsoft|access-date=19 October 2012}}</ref> और एमएसएक्सएमएल। में भी व्यापक रूप से मान्यता प्राप्त है <code>एक्सएमएल-stylesheet</code> अन्य ब्राउज़रों द्वारा प्रसंस्करण निर्देश। व्यवहार में, इसलिए, इस प्रसंस्करण निर्देश का उपयोग करके ब्राउज़र में परिवर्तन को नियंत्रित करने के इच्छुक उपयोगकर्ता इस अपंजीकृत मीडिया प्रकार का उपयोग करने के लिए बाध्य | एक्सएसएलटी के प्री-1.0 वर्किंग ड्राफ्ट का उपयोग किया गया <code>text/xsl</code> उनके एम्बेडिंग उदाहरणों में, और इस प्रकार को लागू किया गया था और Microsoft द्वारा Internet Explorer में प्रचारित किया जाना जारी है<ref>{{cite web|title=XSLT Requirements for Viewing XML in a Browser|url=http://msdn.microsoft.com/en-us/library/windows/desktop/ms757857(v=vs.85).aspx|publisher=Microsoft|access-date=19 October 2012}}</ref> और एमएसएक्सएमएल। में भी व्यापक रूप से मान्यता प्राप्त है <code>एक्सएमएल-stylesheet</code> अन्य ब्राउज़रों द्वारा प्रसंस्करण निर्देश। व्यवहार में, इसलिए, इस प्रसंस्करण निर्देश का उपयोग करके ब्राउज़र में परिवर्तन को नियंत्रित करने के इच्छुक उपयोगकर्ता इस अपंजीकृत मीडिया प्रकार का उपयोग करने के लिए बाध्य है।<ref>{{cite book | last=Kay | first=Michael | title=XSLT 2.0 and XPath 2.0 Programmer's Reference | url=https://archive.org/details/xsltxpathprogram00kaym_646 | url-access=limited | year=2008 | publisher=Wiley | isbn=978-0-470-19274-0 | page=[https://archive.org/details/xsltxpathprogram00kaym_646/page/n151 100]}}</ref> | ||
== उदाहरण == | == उदाहरण == | ||
ये उदाहरण निम्न आवक XML दस्तावेज़ का उपयोग करते | ये उदाहरण निम्न आवक XML दस्तावेज़ का उपयोग करते है | ||
<?एक्सएमएल संस्करण = 1.0 ?><व्यक्ति> | <?एक्सएमएल संस्करण = 1.0 ?><व्यक्ति> | ||
Line 184: | Line 184: | ||
वेब ब्राउजर में प्रस्तुत किए जाने पर यह एक्सएचटीएमएल नीचे आउटपुट उत्पन्न करता है। | वेब ब्राउजर में प्रस्तुत किए जाने पर यह एक्सएचटीएमएल नीचे आउटपुट उत्पन्न करता है। | ||
[[Image:xslt ex2.png|thumb|center|एक एक्सएमएल इनपुट फ़ाइल और एक एक्सएसएलटी परिवर्तन से उत्पन्न एक्सएचटीएमएल प्रस्तुत किया गया।]]एक वेब ब्राउज़र के लिए प्रदर्शन पर एक XML दस्तावेज़ में XSL परिवर्तन लागू करने में सक्षम होने के लिए, एक XML स्टाइलशीट प्रसंस्करण निर्देश XML में सम्मिलित किया जा सकता है। इसलिए, उदाहरण के लिए, यदि उपरोक्त उदाहरण 2 में स्टाइलशीट "example2.xsl" के रूप में उपलब्ध थी, तो निम्नलिखित निर्देश मूल इनकमिंग XML में जोड़े जा सकते | [[Image:xslt ex2.png|thumb|center|एक एक्सएमएल इनपुट फ़ाइल और एक एक्सएसएलटी परिवर्तन से उत्पन्न एक्सएचटीएमएल प्रस्तुत किया गया।]]एक वेब ब्राउज़र के लिए प्रदर्शन पर एक XML दस्तावेज़ में XSL परिवर्तन लागू करने में सक्षम होने के लिए, एक XML स्टाइलशीट प्रसंस्करण निर्देश XML में सम्मिलित किया जा सकता है। इसलिए, उदाहरण के लिए, यदि उपरोक्त उदाहरण 2 में स्टाइलशीट "example2.xsl" के रूप में उपलब्ध थी, तो निम्नलिखित निर्देश मूल इनकमिंग XML में जोड़े जा सकते है:<ref name=w3cxslt>{{cite web | url = http://www.w3.org/TR/xslt#section-Embedding-Stylesheets | title = XSL Transformations (XSLT) Version 1.0: W3C Recommendation – Embedding Stylesheets | date = 16 November 1999 | publisher = W3C | access-date = 20 September 2016}}</ref> | ||
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | <वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | ||
Line 191: | Line 191: | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
इस उदाहरण में, <code>text/xsl</code> W3C विनिर्देशों के अनुसार तकनीकी रूप से गलत है<ref name="w3cxslt" /> (जो कहते | इस उदाहरण में, <code>text/xsl</code> W3C विनिर्देशों के अनुसार तकनीकी रूप से गलत है<ref name="w3cxslt" /> (जो कहते है कि प्रकार होना चाहिए <code>application/एक्सएसएलटी+एक्सएमएल</code>), लेकिन यह एकमात्र मीडिया प्रकार है जो 2009 तक सभी ब्राउज़रों में व्यापक रूप से समर्थित है, और 2021 में स्थिति अपरिवर्तित है। | ||
== प्रोसेसर कार्यान्वयन == | == प्रोसेसर कार्यान्वयन == | ||
*[[अल्टोवा]] से रैप्टरएक्सएमएल एक [[एक्सएसएलटी]] 3.0 प्रोसेसर है जो एक्सएमएलस्पाई डेवलपमेंट टूलकिट में उपलब्ध है और एक फ्री-स्टैंडिंग सर्वर कार्यान्वयन के रूप में, एक रेस्ट इंटरफेस का उपयोग करके लागू किया गया है। | *[[अल्टोवा]] से रैप्टरएक्सएमएल एक [[एक्सएसएलटी]] 3.0 प्रोसेसर है जो एक्सएमएलस्पाई डेवलपमेंट टूलकिट में उपलब्ध है और एक फ्री-स्टैंडिंग सर्वर कार्यान्वयन के रूप में, एक रेस्ट इंटरफेस का उपयोग करके लागू किया गया है। | ||
*[[IBM|आईबीएम]] [[IBM WebSphere DataPower SOA उपकरण|डेटापॉवर ब्रांड]] के | *[[IBM|आईबीएम]] [[IBM WebSphere DataPower SOA उपकरण|डेटापॉवर ब्रांड]] के अनुसार एक विशेष प्रयोजन के हार्डवेयर उपकरण में एम्बेडेड एक्सएसएलटी प्रसंस्करण प्रदान करता है। | ||
*[[libxml|लिबएक्सएमएल]] एमआईटी लाइसेंस के | *[[libxml|लिबएक्सएमएल]] एमआईटी लाइसेंस के अनुसार जारी की गई एक मुफ्त लाइब्रेरी है जिसे व्यावसायिक अनुप्रयोगों में पुन: उपयोग किया जा सकता है। यह [[libxml|लिबएक्सए]]<nowiki/>[[libxml|मएल]]<nowiki/>l पर आधारित है और गति और सुवाह्यता के लिए C (प्रोग्रामिंग भाषा) में लागू किया गया है। यह XSLT 1.0 और EXSLT एक्सटेंशन को सपोर्ट करता है।<ref>{{cite web|title=The XSLT C library for GNOME: libxslt|url=http://xmlsoft.org/XSLT/index.html|access-date=23 November 2012}}</ref> | ||
**इसका उपयोग कमांड लाइन पर एक्सएसएलटीproc<ref>{{cite web|title=The XSLT C library for GNOME: The xsltproc tool|url=http://xmlsoft.org/XSLT/xsltproc2.html|access-date=23 November 2012}}</ref> के माध्यम से किया जा सकता है जो [[macOS]]<ref>{{cite web|title=xsltproc man page|url=https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/xsltproc.1.html|access-date=23 November 2012}}</ref> और कई [[लिनक्स वितरण|लिनक्स वितरणों]] में | **इसका उपयोग कमांड लाइन पर एक्सएसएलटीproc<ref>{{cite web|title=The XSLT C library for GNOME: The xsltproc tool|url=http://xmlsoft.org/XSLT/xsltproc2.html|access-date=23 November 2012}}</ref> के माध्यम से किया जा सकता है जो [[macOS]]<ref>{{cite web|title=xsltproc man page|url=https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/xsltproc.1.html|access-date=23 November 2012}}</ref> और कई [[लिनक्स वितरण|लिनक्स वितरणों]] में सम्मलित है, और साइगविन के माध्यम से [[माइक्रोसॉफ़्ट विंडोज़]] पर उपयोग किया जा सकता है।<ref>{{cite web|title=New package: libxslt|url=http://www.cygwin.com/ml/cygwin-announce/2002/msg00018.html|access-date=23 November 2012}}</ref> | ||
**[[वेबकिट]] और [[ब्लिंक (लेआउट इंजन)]], उदाहरण के लिए क्रमशः [[एप्पल सफारी]] और गूगल क्रोम वेब ब्राउज़र में उपयोग किए जाते | **[[वेबकिट]] और [[ब्लिंक (लेआउट इंजन)]], उदाहरण के लिए क्रमशः [[एप्पल सफारी]] और गूगल क्रोम वेब ब्राउज़र में उपयोग किए जाते है, एक्सएसएल ट्रांसफॉर्मेशन करने के लिए लिबएक्सएसएलटी लाइब्रेरी का उपयोग करते है।<ref>{{cite web | url=http://webkit.org/projects/xslt/index.html | title=The WebKit Open Source Project - XSLT | access-date=2009-10-25}}</ref> | ||
**[[पायथन (प्रोग्रामिंग भाषा)]],<ref>{{cite web|title=The XML C parser and toolkit of Gnome: Python and bindings|url=http://xmlsoft.org/python.html|access-date=23 November 2012}}</ref> [[पर्ल]],<ref>{{cite web|title=XML::LibXSLT - Interface to the GNOME libxslt library|url=https://metacpan.org/module/XML::LibXSLT|publisher=CPAN|access-date=23 November 2012}}</ref> [[रूबी (प्रोग्रामिंग भाषा)]],<ref>{{cite web|title=libxslt-ruby|url=http://rubygems.org/gems/libxslt-ruby|access-date=23 November 2012}}</ref> [[पीएचपी]],<ref>{{cite web|title=libxml|url=http://www.php.net/manual/en/book.libxml.php|access-date=23 November 2012}}</ref> [[सामान्य लिस्प]],<ref>{{cite web|title=cl-libxml2 High-level wrapper around libxml2 and libxslt libraries |url=https://code.google.com/p/cl-libxml2/}}</ref> [[टीसीएल]],<ref>{{cite web|title=टीसीएलएक्सएमएल|url=http://tclxml.sourceforge.net/|access-date=21 May 2013}}</ref> और [[सी ++]] के लिए बाइंडिंग | **[[पायथन (प्रोग्रामिंग भाषा)]],<ref>{{cite web|title=The XML C parser and toolkit of Gnome: Python and bindings|url=http://xmlsoft.org/python.html|access-date=23 November 2012}}</ref> [[पर्ल]],<ref>{{cite web|title=XML::LibXSLT - Interface to the GNOME libxslt library|url=https://metacpan.org/module/XML::LibXSLT|publisher=CPAN|access-date=23 November 2012}}</ref> [[रूबी (प्रोग्रामिंग भाषा)]],<ref>{{cite web|title=libxslt-ruby|url=http://rubygems.org/gems/libxslt-ruby|access-date=23 November 2012}}</ref> [[पीएचपी]],<ref>{{cite web|title=libxml|url=http://www.php.net/manual/en/book.libxml.php|access-date=23 November 2012}}</ref> [[सामान्य लिस्प]],<ref>{{cite web|title=cl-libxml2 High-level wrapper around libxml2 and libxslt libraries |url=https://code.google.com/p/cl-libxml2/}}</ref> [[टीसीएल]],<ref>{{cite web|title=टीसीएलएक्सएमएल|url=http://tclxml.sourceforge.net/|access-date=21 May 2013}}</ref> और [[सी ++]] के लिए बाइंडिंग उपस्तिथ है।<ref>{{cite web|title=libxml++|url=http://libxmlplusplus.sourceforge.net/|publisher=sourceforge.net|access-date=23 November 2012}}</ref> | ||
*[[Microsoft]] दो XSLT प्रोसेसर प्रदान करता है (दोनों XSLT 1.0 केवल)। पहले का प्रोसेसर [[MSXML|MSएक्सएमएल]] COM इंटरफेस प्रदान करता है, एमएसएक्सएमएल 4.0 से इसमें कमांड लाइन उपयोगिता <code>msxsl.exe</code> भी | *[[Microsoft]] दो XSLT प्रोसेसर प्रदान करता है (दोनों XSLT 1.0 केवल)। पहले का प्रोसेसर [[MSXML|MSएक्सएमएल]] COM इंटरफेस प्रदान करता है, एमएसएक्सएमएल 4.0 से इसमें कमांड लाइन उपयोगिता <code>msxsl.exe</code> भी सम्मलित है।<ref>{{cite web|title=Command Line Transformation Utility (msxsl.exe)|url=http://www.microsoft.com/en-us/download/details.aspx?id=21714|publisher=Microsoft|access-date=22 October 2012}}</ref> .NET रनटाइम में इसके <code>System.एक्सएमएल.Xsl</code> लाइब्रेरी में एक अलग बिल्ट-इन XSLT प्रोसेसर सम्मलित है। | ||
*[[Saxon XSLT|Saxon]] एक एक्सएसएलटी 3.0 और एक्सक्वेरी 3.1 प्रोसेसर है जिसमें स्टैंड-अलोन ऑपरेशन और Java, JavaScript और .NET के लिए ओपन-सोर्स और मालिकाना संस्करण है। एक अलग उत्पाद सैक्सन-जेएस<ref>{{cite web|title=Saxon-JS|url=http://www.saxonica.com/saxon-js/index.xml|publisher=Saxonica|access-date=6 September 2018}}</ref> Node.js और ब्राउज़र में एक्सएसएलटी 3.0 प्रसंस्करण प्रदान करता है। | *[[Saxon XSLT|Saxon]] एक एक्सएसएलटी 3.0 और एक्सक्वेरी 3.1 प्रोसेसर है जिसमें स्टैंड-अलोन ऑपरेशन और Java, JavaScript और .NET के लिए ओपन-सोर्स और मालिकाना संस्करण है। एक अलग उत्पाद सैक्सन-जेएस<ref>{{cite web|title=Saxon-JS|url=http://www.saxonica.com/saxon-js/index.xml|publisher=Saxonica|access-date=6 September 2018}}</ref> Node.js और ब्राउज़र में एक्सएसएलटी 3.0 प्रसंस्करण प्रदान करता है। | ||
*[[Xalan]] जावा और C++ के लिए उपलब्ध [[Apache Software Foundation]] का एक ओपन सोर्स XSLT 1.0 प्रोसेसर है। ओरेकल से मानक जावा वितरण में Xalan प्रोसेसर का एक संस्करण डिफ़ॉल्ट XSLT प्रोसेसर के रूप में | *[[Xalan]] जावा और C++ के लिए उपलब्ध [[Apache Software Foundation]] का एक ओपन सोर्स XSLT 1.0 प्रोसेसर है। ओरेकल से मानक जावा वितरण में Xalan प्रोसेसर का एक संस्करण डिफ़ॉल्ट XSLT प्रोसेसर के रूप में सम्मलित है। | ||
*वेब ब्राउज़र: सफारी, क्रोम, फ़ायरफ़ॉक्स, ओपेरा और इंटरनेट एक्सप्लोरर सभी एक्सएसएलटी 1.0 (केवल) का समर्थन करते | *वेब ब्राउज़र: सफारी, क्रोम, फ़ायरफ़ॉक्स, ओपेरा और इंटरनेट एक्सप्लोरर सभी एक्सएसएलटी 1.0 (केवल) का समर्थन करते है। ब्राउज़र XML फ़ाइलों का ऑन-द-फ्लाई ट्रांसफ़ॉर्मेशन कर सकते है और ब्राउज़र विंडो में ट्रांसफ़ॉर्मेशन आउटपुट प्रदर्शित कर सकते है। यह या तो XML दस्तावेज़ में XSL एम्बेड करके या XML दस्तावेज़ से XSL निर्देशों वाली फ़ाइल को संदर्भित करके किया जाता है। बाद वाला अपने सुरक्षा मॉडल के कारण स्थानीय फ़ाइल सिस्टम से फ़ाइलों पर क्रोम के साथ काम नहीं कर सकता है।<ref>{{cite web |url= https://bugs.chromium.org/p/chromium/issues/detail?id=58151 |title=Issue 58151: Fails to load xml file on local file system using XMLHttpRequest }}</ref> | ||
*Adobe AXSLE इंजन, एक मालिकाना पुस्तकालय | *Adobe AXSLE इंजन, एक मालिकाना पुस्तकालय | ||
=== प्रदर्शन === | === प्रदर्शन === | ||
अधिकांश | अधिकांश प्रारंभिक XSLT प्रोसेसर दुभाषिए थे। हाल ही में, लक्ष्य के रूप में पोर्टेबल इंटरमीडिएट भाषाओं (जैसे [[जावा बाइटकोड]] या .NET [[सामान्य मध्यवर्ती भाषा]]) का उपयोग करते हुए, कोड जेनरेशन तेजी से सामान्य हो रहा है। चूंकि, यहां तक कि व्याख्यात्मक उत्पाद सामान्यतः अलग-अलग विश्लेषण और निष्पादन चरणों की प्रस्तुत करते है, जिससे एक अनुकूलित अभिव्यक्ति ट्री को स्मृति में बनाया जा सकता है और कई परिवर्तन करने के लिए पुन: उपयोग किया जा सकता है। यह ऑनलाइन प्रकाशन अनुप्रयोगों में पर्याप्त प्रदर्शन लाभ देता है, जहां एक ही परिवर्तन प्रति सेकंड कई बार विभिन्न स्रोत दस्तावेजों पर लागू होता है।<ref>[http://www-128.ibm.com/developerworks/xml/library/x-xslt2/ Saxon: Anatomy of an XSLT processor] - Article describing implementation & optimization details of a popular XSLT processor.</ref> यह पृथक्करण एक्सएसएलटी प्रोसेसिंग API (जैसे एक्सएमएल प्रोसेसिंग के लिए Java API) के डिज़ाइन में परिलक्षित होता है। | ||
प्रारंभिक XSLT प्रोसेसर में बहुत कम अनुकूलन थे। स्टाइलशीट दस्तावेज़ों को दस्तावेज़ ऑब्जेक्ट मॉडल में पढ़ा गया और प्रोसेसर सीधे उन पर कार्य करेगा। XPath इंजन भी अनुकूलित नहीं थे। चूँकि, XSLT प्रोसेसर कार्यात्मक प्रोग्रामिंग भाषाओं और डेटाबेस क्वेरी भाषाओं में पाई जाने वाली अनुकूलन तकनीकों का उपयोग करते है, जैसे कि एक अभिव्यक्ति ट्री की स्थिर पुनर्लेखन (जैसे, गणनाओं को लूप से बाहर ले जाने के लिए), और मध्यवर्ती परिणामों की मेमोरी फ़ुटप्रिंट को कम करने के लिए आलसी पाइपलाइन मूल्यांकन (और "जल्दी बाहर निकलने" की अनुमति दें जब प्रोसेसर सभी उप-अभिव्यक्तियों के पूर्ण मूल्यांकन के बिना <code>following-sibling::*[1]</code> जैसे अभिव्यक्ति का मूल्यांकन कर सकता है)। कई प्रोसेसर ट्री अभ्यावेदन का भी उपयोग करते है जो सामान्य-उद्देश्य वाले DOM कार्यान्वयन की तुलना में अधिक कुशल (स्थान और समय दोनों में)<ref>{{Cite journal|title=Improving Pattern Matching Performance in XSLT|first1=John|last1=Lumley|first2=Michael|last2=Kay|date=June 2015|journal=XML London 2015|doi=10.14337/XMLLondon15.Lumley01|url=http://xmllondon.com/2015/presentations/lumley|pages=9–25|isbn=978-0-9926471-2-4|doi-access=free}}</ref> है। | |||
जून 2014 में, डेबी लॉकेट और माइकल के ने एक्सएसएलटी प्रोसेसर के लिए एक्सटी-स्पीडो नामक एक ओपन-सोर्स बेंचमार्किंग फ्रेमवर्क | जून 2014 में, डेबी लॉकेट और माइकल के ने एक्सएसएलटी प्रोसेसर के लिए एक्सटी-स्पीडो नामक एक ओपन-सोर्स बेंचमार्किंग फ्रेमवर्क प्रस्तुत किया।<ref>{{Cite journal|title=Benchmarking XSLT Performance|first1=Michael|last1=Kay|first2=Debbie|last2=Lockett|date=June 2014|journal=XML London 2014|doi=10.14337/XMLLondon14.Kay01|url=http://xmllondon.com/2014/presentations/kay|pages=10–23|isbn=978-0-9926471-1-7|doi-access=free}}</ref> | ||
== यह भी देखें == | == यह भी देखें == | ||
* एक्सएसएलटी तत्व - कुछ सामान्य रूप से प्रयुक्त एक्सएसएलटी संरचनाओं की एक सूची। | * एक्सएसएलटी तत्व - कुछ सामान्य रूप से प्रयुक्त एक्सएसएलटी संरचनाओं की एक सूची। | ||
Line 217: | Line 217: | ||
* एक्स्टेंसिबल स्टाइलशीट लैंग्वेज - भाषाओं का एक परिवार जिसका एक्सएसएलटी एक सदस्य है | * एक्स्टेंसिबल स्टाइलशीट लैंग्वेज - भाषाओं का एक परिवार जिसका एक्सएसएलटी एक सदस्य है | ||
* एक्सक्वेरी# एक्सक्वेरी और एक्सएसएलटी की तुलना | * एक्सक्वेरी# एक्सक्वेरी और एक्सएसएलटी की तुलना | ||
* एक्सएसएल फॉर्मेटिंग ऑब्जेक्ट्स या एक्सएसएल-एफओ - दस्तावेज़ों के लिए एक एक्सएमएल-आधारित भाषा, | * एक्सएसएल फॉर्मेटिंग ऑब्जेक्ट्स या एक्सएसएल-एफओ - दस्तावेज़ों के लिए एक एक्सएमएल-आधारित भाषा, सामान्यतः एक्सएसएलटी के साथ स्रोत दस्तावेज़ों को बदलने से उत्पन्न होती है, जिसमें स्वरूपित आउटपुट बनाने के लिए उपयोग की जाने वाली वस्तुएं सम्मलित होती है। | ||
* [[पहचान परिवर्तन]] - फिल्टर चेन के लिए एक | * [[पहचान परिवर्तन]] - फिल्टर चेन के लिए एक प्रारंभिक बिंदु जो एक ट्रांसफॉर्मेशन पाइपलाइन में एक्सएमएल ट्री से डेटा एलिमेंट्स को जोड़ता या हटाता है | ||
* [[अपाचे कोकून]] - एक्सएसएलटी और अन्य ट्रांसफार्मर के साथ डेटा प्रोसेसिंग के लिए एक जावा (प्रोग्रामिंग भाषा) आधारित ढांचा। | * [[अपाचे कोकून]] - एक्सएसएलटी और अन्य ट्रांसफार्मर के साथ डेटा प्रोसेसिंग के लिए एक जावा (प्रोग्रामिंग भाषा) आधारित ढांचा। | ||
Revision as of 00:56, 26 February 2023
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.