एक्सएसएलटी: Difference between revisions
No edit summary |
No edit summary |
||
Line 27: | Line 27: | ||
| wikibooks = | | wikibooks = | ||
}} | }} | ||
एक्सएसएलटी ( | एक्सएसएलटी (विस्तारणीय शैली पत्रक भाषा परिवर्तन) मूल रूप से [[एक्सएमएल]] दस्तावेजों को अन्य एक्सएमएल दस्तावेजों,<ref name="परिवर्तन">{{cite web|url=http://www.w3.org/standards/xml/transformation |title=परिवर्तन|date=2012-09-19}}</ref> या वेब पेजों के लिए [[HTML|एचटीएमएल]] जैसे अन्य प्रारूपों, सादे पाठ या एक्सएसएल फॉर्मेटिंग वस्तुओं में बदलने के लिए डिज़ाइन की गई भाषा है, जिसे बाद में अन्य प्रारूपों में परिवर्तित किया जा सकता है। जैसे पीडीएफ, पोस्टस्क्रिप्ट और पीएनजी।<ref>{{cite web|url=http://www.w3.org/TR/xslt#output |title=XML Output Method|date=2012-09-19}}</ref> एक्सएसएलटी 1.0 विनिर्देशन के बाद के अपडेट में जेएसओएन और सादा-पाठ परिवर्तन के लिए समर्थन जोड़ा गया था। | ||
अगस्त 2022 तक, भाषा का सबसे हालिया स्थिर संस्करण एक्सएसएलटी 3.0 है, जिसने जून 2017 में सिफारिश की स्थिति हासिल की। | अगस्त 2022 तक, भाषा का सबसे हालिया स्थिर संस्करण एक्सएसएलटी 3.0 है, जिसने जून 2017 में सिफारिश की स्थिति हासिल की। | ||
एक्सएसएलटी 3.0 कार्यान्वयन | एक्सएसएलटी 3.0 कार्यान्वयन जावा, .नेट, सी/सी++, पायथन, पीएचपी और नोडजेएस को सहायता करता है। एक एक्सएसएलटी 3.0 जावास्क्रिप्ट लाइब्रेरी को वेब ब्राउज़र में भी होस्ट किया जा सकता है। आधुनिक वेब ब्राउज़र में एक्सएसएलटी 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 डेटा मॉडल|एक्सक्वेरी और एक्सपाथ डेटा मॉडल]] का निर्माण कर सकता है, का उपयोग किया जा सकता है, जैसे [[संबंध का डेटाबेस]] टेबल या [[भौगोलिक सूचना प्रणाली]]।<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]] और | एक्सएसएलटी [[कार्यात्मक प्रोग्रामिंग|कार्यात्मक]] भाषाओं,<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|स्नोबोल]] और एडब्ल्यूके जैसी पाठ-आधारित पैटर्न मिलान भाषाओं से प्रभावित है। इसका सबसे प्रत्यक्ष पूर्ववर्ती [[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: एक्सएसएलटी [[विश्वव्यापी वेब संकाय]] ( | * एक्सएसएलटी 1.0: एक्सएसएलटी [[विश्वव्यापी वेब संकाय]] (डब्ल्यू3सी) के [[एक्स्टेंसिबल स्टाइलशीट लैंग्वेज|विस्तारणीय शैली पत्रक भाषा]] (एक्सएसएल) के 1998-1999 के विकास प्रयास का हिस्सा था, एक ऐसी परियोजना जिसने [[XSL-FO|एक्सएसएल-FO]] और [[XPath|एक्सपाथ]] का भी उत्पादन किया। एक्सएसएलटी को विकसित करने वाली मानक समिति के कुछ सदस्य, जिनमें संपादक जेम्स क्लार्क भी सम्मलित है, ने पहले डीएसएसएसएल पर काम किया था। एक्सएसएलटी 1.0 को नवंबर 1999 में डब्ल्यू3सी अनुशंसा के रूप में प्रकाशित किया गया था।<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 तक), क्योंकि बाद के संस्करण [[वेब ब्राउज़र]] या एलएएमपी जैसे वातावरण के लिए मूल रूप से समर्थित नहीं है। | ||
*एक्सएसएलटी 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> | *एक्सएसएलटी 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> एक्सएसएल कार्यकारी समूह ने एक्सपाथ 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 को | * एक्सएसएलटी 3.0: 8 जून 2017 को डब्ल्यू3सी अनुशंसा बन गया। मुख्य नई विशेषताएं है:<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 एक्सएमएल स्ट्रीमिंग की अनुमति देता है जो स्मृति में फ़िट होने के लिए बहुत बड़े दस्तावेज़ों को प्रोसेस करने के लिए उपयोगी है या जब एक्सएमएल पाइपलाइनों में परिवर्तन जंजीर है। | ||
** संकुल, बड़ी | ** संकुल, बड़ी शैली पत्रक की प्रतिरूपकता में सुधार करने के लिए। | ||
** उदाहरण के लिए, | ** उदाहरण के लिए, एक्सएसएल:try निर्देश के साथ गतिशील त्रुटियों का बेहतर प्रबंधन। | ||
** नक्शे और सरणियों के लिए समर्थन, एक्सएसएलटी को | ** नक्शे और सरणियों के लिए समर्थन, एक्सएसएलटी को जेएसओएन के साथ-साथ एक्सएमएल को संभालने में सक्षम बनाता है। | ||
** कार्य अब अन्य (उच्च-क्रम) कार्यों के लिए तर्क हो सकते है। | ** कार्य अब अन्य (उच्च-क्रम) कार्यों के लिए तर्क हो सकते है। | ||
== डिजाइन और प्रसंस्करण मॉडल == | == डिजाइन और प्रसंस्करण मॉडल == | ||
[[Image:XSLT en.svg|right|thumb| | [[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> स्टेटफुल वातावरण में प्रदर्शन करने के लिए क्रियाओं के एक अनिवार्य अनुक्रम को सूचीबद्ध करने के अतिरिक्त, टेम्पलेट नियम केवल यह परिभाषित करते है कि किसी विशेष एक्सपाथ-जैसे पैटर्न से मेल खाने वाले नोड को कैसे संभालना है, यदि प्रोसेसर को एक का सामना करना चाहिए, और टेम्पलेट की सामग्री प्रभावी रूप से कार्यात्मक होती है [[अभिव्यक्ति (प्रोग्रामिंग)|अभिव्यक्तियाँ]] जो सीधे उनके मूल्यांकित रूप का प्रतिनिधित्व करती है: परिणाम ट्री, जो प्रोसेसर के आउटपुट का आधार है। | ||
एक विशिष्ट प्रोसेसर निम्नानुसार व्यवहार करता है। सबसे पहले, यह मानते हुए कि | एक विशिष्ट प्रोसेसर निम्नानुसार व्यवहार करता है। सबसे पहले, यह मानते हुए कि शैली पत्रक पहले ही पढ़ी और तैयार की जा चुकी है, प्रोसेसर इनपुट एक्सएमएल दस्तावेज़ से एक स्रोत ट्री बनाता है। इसके बाद यह स्रोत ट्री के रूट नोड को संसाधित करता है, शैली पत्रक में उस नोड के लिए सबसे अच्छा मेल खाने वाला टेम्पलेट ढूंढता है, और टेम्पलेट की सामग्री का मूल्यांकन करता है। प्रत्येक टेम्प्लेट में निर्देश सामान्यतः प्रोसेसर को या तो परिणाम ट्री में नोड्स बनाने के लिए निर्देशित करते है, या रूट नोड के समान ही स्रोत ट्री में अधिक नोड्स को प्रोसेस करने के लिए निर्देशित करते है। अंत में परिणाम ट्री को एक्सएमएल या एचटीएमएल टेक्स्ट के रूप में क्रमबद्ध किया जाता है। | ||
==एक्सपाथ== | ==एक्सपाथ== | ||
Line 74: | Line 74: | ||
एक्सएसएलटी प्रकार्यात्मकताएँ एक्सक्वेरी के साथ ओवरलैप करती है, जिसे प्रारंभ में एक्सएमएल दस्तावेज़ों के बड़े संग्रह के लिए एक क्वेरी भाषा के रूप में माना गया था। | एक्सएसएलटी प्रकार्यात्मकताएँ एक्सक्वेरी के साथ ओवरलैप करती है, जिसे प्रारंभ में एक्सएमएल दस्तावेज़ों के बड़े संग्रह के लिए एक क्वेरी भाषा के रूप में माना गया था। | ||
एक्सएसएलटी 2.0 और XQuery 1.0 मानकों को [[W3C|डब्ल्यू3सी]] के भीतर अलग-अलग कार्य समूहों द्वारा विकसित किया गया था, जहां उपयुक्त हो, एक सामान्य दृष्टिकोण सुनिश्चित करने के लिए मिलकर काम करना। वे समान डेटा मॉडल, टाइप सिस्टम और फ़ंक्शन लाइब्रेरी साझा करते है, और दोनों में एक्सपाथ 2.0 को एक उपभाषा के रूप में सम्मलित किया गया है। | |||
चूँकि, दो भाषाएँ विभिन्न परंपराओं में निहित है और विभिन्न समुदायों की आवश्यकताओं को पूरा करती है। | चूँकि, दो भाषाएँ विभिन्न परंपराओं में निहित है और विभिन्न समुदायों की आवश्यकताओं को पूरा करती है। एक्सएसएलटी को मुख्य रूप से एक शैली पत्रक भाषा के रूप में माना गया था जिसका प्राथमिक लक्ष्य वेब पर (एक [[वेब टेम्पलेट]] भाषा के रूप में), या कागज पर मानव पाठक के लिए एक्सएमएल को प्रस्तुत करना था। 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> | ||
== मीडिया प्रकार == | == मीडिया प्रकार == | ||
<code><आउटपुट></code> ई> तत्व वैकल्पिक रूप से विशेषता ले सकता है <code>मीडिया प्रकार</code>, जो किसी को परिणामी आउटपुट के लिए [[इंटरनेट मीडिया प्रकार]] (या | <code><आउटपुट></code> ई> तत्व वैकल्पिक रूप से विशेषता ले सकता है <code>मीडिया प्रकार</code>, जो किसी को परिणामी आउटपुट के लिए [[इंटरनेट मीडिया प्रकार]] (या एमआईएमई प्रकार) सेट करने की अनुमति देता है, उदाहरण के लिए: <code><एक्सएसएल:आउटपुट आउटपुट="एक्सएमएल" मीडिया-प्रकार="एप्लीकेशन/एक्सएमएल"/></code> एक्सएसएलटी 1.0 अनुशंसा अधिक सामान्य विशेषता प्रकारों की अनुशंसा करती है <code>टेक्स्ट/एक्सएमएल</code> और <code>एप्लीकेशन/एक्सएमएल</code> चूंकि लंबे समय से एक्सएसएलटी के लिए कोई पंजीकृत मीडिया प्रकार नहीं था। इस समय के दौरान <code>टेक्स्ट/एक्सएसएल</code> वास्तविक मानक बन गया। एक्सएसएलटी 1.0 में यह निर्दिष्ट नहीं किया गया था कि कैसे <code>मीडिया-प्रकार</code> मूल्यों का प्रयोग करना चाहिए। | ||
एक्सएसएलटी 2.0 की रिलीज़ के साथ, | एक्सएसएलटी 2.0 की रिलीज़ के साथ, डब्ल्यू3सी ने एमआईएमई मीडिया प्रकार के पंजीकरण की सिफारिश की <code>एप्लीकेशन/एक्सएसएलटी+एक्सएमएल</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 | एक्सएसएलटी के प्री-1.0 कार्यरत ड्राफ्ट का उपयोग किया गया <code>टेक्स्ट/एक्सएसएल</code> उनके एम्बेडिंग उदाहरणों में, और इस प्रकार को लागू किया गया था और माइक्रोसॉफ्ट द्वारा इंटरनेट एक्सप्लोरर में प्रचारित किया जाना जारी है<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>एक्सएमएल-स्टाइलशीट</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> | ||
== उदाहरण == | == उदाहरण == | ||
ये उदाहरण निम्न आवक | ये उदाहरण निम्न आवक एक्सएमएल दस्तावेज़ का उपयोग करते है | ||
<?एक्सएमएल संस्करण = 1.0 ?><व्यक्ति> | <?एक्सएमएल संस्करण = 1.0 ?><व्यक्ति> | ||
Line 99: | Line 99: | ||
<परिवार-नाम>इस्मिन्शियस</परिवार-नाम> | <परिवार-नाम>इस्मिन्शियस</परिवार-नाम> | ||
</व्यक्ति> | </व्यक्ति> | ||
</व्यक्ति> | </व्यक्ति></वाक्यविन्यास हाइलाइट> | ||
</वाक्यविन्यास हाइलाइट> | |||
=== उदाहरण 1 (एक्सएमएल को एक्सएमएल में बदलना) === | === उदाहरण 1 (एक्सएमएल को एक्सएमएल में बदलना) === | ||
यह | यह एक्सएसएलटी शैली पत्रक एक्सएमएल दस्तावेज़ को रूपांतरित करने के लिए टेम्पलेट प्रदान करती है: | ||
< | <एक्सएसएल: आउटपुट मेथड = एक्सएमएल इंडेंट = हाँ /> | ||
< | <एक्सएसएल: साँचा मिलान = /व्यक्तियों > | ||
<जड़> | <जड़> | ||
< | <एक्सएसएल:apply-templates seleसीt= person /> | ||
</ जड़> | </ जड़> | ||
</ | </एक्सएसएल: साँचा> | ||
< | <एक्सएसएल: टेम्पलेट मैच = व्यक्ति> | ||
<नाम उपयोगकर्ता नाम = {@उपयोगकर्ता नाम}> | <नाम उपयोगकर्ता नाम = {@उपयोगकर्ता नाम}> | ||
< | <एक्सएसएल: चयन का मूल्य = नाम /> | ||
</ नाम> | </ नाम> | ||
</ | </एक्सएसएल: साँचा> | ||
</ | </एक्सएसएल: शैली पत्रक></वाक्यविन्यास हाइलाइट> | ||
इसका मूल्यांकन एक नए | इसका मूल्यांकन एक नए एक्सएमएल दस्तावेज़ में होता है, जिसमें एक और संरचना होती है: | ||
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल><?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?><जड़> | <वाक्यविन्यास प्रकाश लैंग = एक्सएमएल><?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?><जड़> | ||
Line 128: | Line 127: | ||
=== उदाहरण 2 (एक्सएमएल को [[एक्सएचटीएमएल]] में बदलना) === | === उदाहरण 2 (एक्सएमएल को [[एक्सएचटीएमएल]] में बदलना) === | ||
निम्न उदाहरण | निम्न उदाहरण एक्सएसएलटी फ़ाइल संसाधित कर रहा है | ||
<?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?> | <?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?> | ||
< | <एक्सएसएल: शैली पत्रक | ||
संस्करण = 1.0 | संस्करण = 1.0 | ||
एक्सएमएलns: | एक्सएमएलns:एक्सएसएल= [http://www.w3.org/1999/XSL/Transform http://डब्ल्यूडब्ल्यूडब्ल्यू.डब्ल्यू3.org/1999/एक्सएसएल/Transform] | ||
एक्सएमएलns= [http://www.w3.org/1999/xhtml http:// | एक्सएमएलns= [http://www.w3.org/1999/xhtml http://डब्ल्यूडब्ल्यूडब्ल्यू.डब्ल्यू3.org/1999/xएचटीएमएल] > | ||
< | <एक्सएसएल: आउटपुट विधि = एक्सएमएल इंडेंट = हाँ एन्कोडिंग = UTF-8 /> | ||
< | <एक्सएसएल: साँचा मिलान = /व्यक्तियों > | ||
<एचटीएमएल> | <एचटीएमएल> | ||
<head> <title>एक्सएमएल का परीक्षण उदाहरण</title> </head> | <head> <title>एक्सएमएल का परीक्षण उदाहरण</title> </head> | ||
Line 145: | Line 144: | ||
<उल> | <उल> | ||
< | <एक्सएसएल:apply-templates seleसीt= person > | ||
< | <एक्सएसएल: सॉर्ट सेलेक्ट = फैमिली-नेम /> | ||
</ | </एक्सएसएल:apply-templates> | ||
</शरीर> | </शरीर> | ||
</एचटीएमएल> | </एचटीएमएल> | ||
</ | </एक्सएसएल: साँचा> | ||
< | <एक्सएसएल: टेम्पलेट मैच = व्यक्ति> | ||
<ली> | <ली> | ||
< | <एक्सएसएल: value-of seleसीt= family-name /><एक्सएसएल:टेक्स्ट>, </एक्सएसएल:टेक्स्ट><एक्सएसएल:value-of seleसीt= name /> | ||
</ली> | </ली> | ||
</ | </एक्सएसएल: साँचा> | ||
</ | </एक्सएसएल: शैली पत्रक> | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
Line 169: | Line 168: | ||
<?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?> | <?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?> | ||
<एचटीएमएल एक्सएमएलns= <nowiki>http:// | <एचटीएमएल एक्सएमएलns= <nowiki>http://डब्ल्यूडब्ल्यूडब्ल्यू.डब्ल्यू3.org/1999/xएचटीएमएल</nowiki> > | ||
<head> <title>एक्सएमएल का परीक्षण उदाहरण</title> </head> | <head> <title>एक्सएमएल का परीक्षण उदाहरण</title> </head> | ||
<शरीर> | <शरीर> | ||
Line 177: | Line 176: | ||
<li>स्मिथ, जॉन</li> | <li>स्मिथ, जॉन</li> | ||
</शरीर> | </शरीर> | ||
</एचटीएमएल> | </एचटीएमएल> | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
वेब ब्राउजर में प्रस्तुत किए जाने पर यह एक्सएचटीएमएल नीचे आउटपुट उत्पन्न करता है। | वेब ब्राउजर में प्रस्तुत किए जाने पर यह एक्सएचटीएमएल नीचे आउटपुट उत्पन्न करता है। | ||
[[Image:xslt ex2.png|thumb|center|एक एक्सएमएल इनपुट फ़ाइल और एक एक्सएसएलटी परिवर्तन से उत्पन्न एक्सएचटीएमएल प्रस्तुत किया गया।]]एक वेब ब्राउज़र के लिए प्रदर्शन पर एक | [[Image:xslt ex2.png|thumb|center|एक एक्सएमएल इनपुट फ़ाइल और एक एक्सएसएलटी परिवर्तन से उत्पन्न एक्सएचटीएमएल प्रस्तुत किया गया।]]एक वेब ब्राउज़र के लिए प्रदर्शन पर एक एक्सएमएल दस्तावेज़ में एक्सएसएल परिवर्तन लागू करने में सक्षम होने के लिए, एक एक्सएमएल शैली पत्रक प्रसंस्करण निर्देश एक्सएमएल में सम्मिलित किया जा सकता है। इसलिए, उदाहरण के लिए, यदि उपरोक्त उदाहरण 2 में शैली पत्रक "example2.एक्सएसएल" के रूप में उपलब्ध थी, तो निम्नलिखित निर्देश मूल इनकमिंग एक्सएमएल में जोड़े जा सकते है:<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> | ||
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | <वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | ||
<?एक्सएमएल- | <?एक्सएमएल-स्टाइलशीट href= example2.एक्सएसएल type= टेक्स्ट/एक्सएसएल ?> | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
इस उदाहरण में, <code> | इस उदाहरण में, <code>टेक्स्ट/एक्सएसएल</code> डब्ल्यू3सी विनिर्देशों के अनुसार तकनीकी रूप से गलत है<ref name="w3cxslt" /> (जो कहते है कि प्रकार होना चाहिए <code>एप्लीकेशन/एक्सएसएलटी+एक्सएमएल</code>), लेकिन यह एकमात्र मीडिया प्रकार है जो 2009 तक सभी ब्राउज़रों में व्यापक रूप से समर्थित है, और 2021 में स्थिति अपरिवर्तित है। | ||
== प्रोसेसर कार्यान्वयन == | == प्रोसेसर कार्यान्वयन == | ||
*[[अल्टोवा]] से रैप्टरएक्सएमएल एक [[एक्सएसएलटी]] 3.0 प्रोसेसर है जो एक्सएमएलस्पाई डेवलपमेंट टूलकिट में उपलब्ध है और एक फ्री-स्टैंडिंग सर्वर कार्यान्वयन के रूप में, एक रेस्ट इंटरफेस का उपयोग करके लागू किया गया है। | *[[अल्टोवा]] से रैप्टरएक्सएमएल एक [[एक्सएसएलटी]] 3.0 प्रोसेसर है जो एक्सएमएलस्पाई डेवलपमेंट टूलकिट में उपलब्ध है और एक फ्री-स्टैंडिंग सर्वर कार्यान्वयन के रूप में, एक रेस्ट इंटरफेस का उपयोग करके लागू किया गया है। | ||
*[[IBM|आईबीएम]] [[IBM WebSphere DataPower SOA उपकरण|डेटापॉवर ब्रांड]] के अनुसार एक विशेष प्रयोजन के हार्डवेयर उपकरण में एम्बेडेड एक्सएसएलटी प्रसंस्करण प्रदान करता है। | *[[IBM|आईबीएम]] [[IBM WebSphere DataPower SOA उपकरण|डेटापॉवर ब्रांड]] के अनुसार एक विशेष प्रयोजन के हार्डवेयर उपकरण में एम्बेडेड एक्सएसएलटी प्रसंस्करण प्रदान करता है। | ||
*[[libxml|लिबएक्सएमएल]] एमआईटी लाइसेंस के अनुसार जारी की गई एक मुफ्त लाइब्रेरी है जिसे व्यावसायिक अनुप्रयोगों में पुन: उपयोग किया जा सकता है। यह [[libxml|लिबएक्सए]]<nowiki/>[[libxml|मएल]]<nowiki/>l पर आधारित है और गति और सुवाह्यता के लिए | *[[libxml|लिबएक्सएमएल]] एमआईटी लाइसेंस के अनुसार जारी की गई एक मुफ्त लाइब्रेरी है जिसे व्यावसायिक अनुप्रयोगों में पुन: उपयोग किया जा सकता है। यह [[libxml|लिबएक्सए]]<nowiki/>[[libxml|मएल]]<nowiki/>l पर आधारित है और गति और सुवाह्यता के लिए सी (प्रोग्रामिंग भाषा) में लागू किया गया है। यह एक्सएसएलटी 1.0 और Eएक्सएसएलटी विस्तार को सहायता करता है।<ref>{{cite web|title=The XSLT C library for GNOME: libxslt|url=http://xmlsoft.org/XSLT/index.html|access-date=23 November 2012}}</ref> | ||
**इसका उपयोग कमांड लाइन पर | **इसका उपयोग कमांड लाइन पर एक्सएसएलटी प्रो सी<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|maसीOS]]<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=libxml++|url=http://libxmlplusplus.sourceforge.net/|publisher=sourceforge.net|access-date=23 November 2012}}</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]] दो | *[[Microsoft|माइक्रोसॉफ्ट]] दो एक्सएसएलटी प्रोसेसर प्रदान करता है (दोनों एक्सएसएलटी 1.0 केवल)। पहले का प्रोसेसर [[MSXML|MSएक्सएमएल]] सीओएम इंटरफेस प्रदान करता है, एमएसएक्सएमएल 4.0 से इसमें कमांड लाइन उपयोगिता <code>msएक्सएसएल.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> .नेट रनटाइम में इसके <code>System.एक्सएमएल.एक्सएसएल</code> लाइब्रेरी में एक अलग बिल्ट-इन एक्सएसएलटी प्रोसेसर सम्मलित है। | ||
*[[Saxon XSLT|Saxon]] एक एक्सएसएलटी 3.0 और एक्सक्वेरी 3.1 प्रोसेसर है जिसमें स्टैंड-अलोन ऑपरेशन और | *[[Saxon XSLT|Saxon]] एक एक्सएसएलटी 3.0 और एक्सक्वेरी 3.1 प्रोसेसर है जिसमें स्टैंड-अलोन ऑपरेशन और जावा, जावाSसीript और .नेट के लिए ओपन-सोर्स और मालिकाना संस्करण है। एक अलग उत्पाद सैक्सन-जेएस<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]] जावा और | *[[Xalan]] जावा और सी++ के लिए उपलब्ध [[Apache Software Foundation|Apaसीhe Softडब्ल्यूare Foundation]] का एक ओपन सोर्स एक्सएसएलटी 1.0 प्रोसेसर है। ओरेकल से मानक जावा वितरण में Xalan प्रोसेसर का एक संस्करण डिफ़ॉल्ट एक्सएसएलटी प्रोसेसर के रूप में सम्मलित है। | ||
*वेब ब्राउज़र: सफारी, क्रोम, फ़ायरफ़ॉक्स, ओपेरा और इंटरनेट एक्सप्लोरर सभी एक्सएसएलटी 1.0 (केवल) का समर्थन करते है। ब्राउज़र | *वेब ब्राउज़र: सफारी, क्रोम, फ़ायरफ़ॉक्स, ओपेरा और इंटरनेट एक्सप्लोरर सभी एक्सएसएलटी 1.0 (केवल) का समर्थन करते है। ब्राउज़र एक्सएमएल फ़ाइलों का ऑन-द-फ्लाई परिवर्तन कर सकते है और ब्राउज़र विंडो में परिवर्तन आउटपुट प्रदर्शित कर सकते है। यह या तो एक्सएमएल दस्तावेज़ में एक्सएसएल एम्बेड करके या एक्सएमएल दस्तावेज़ से एक्सएसएल निर्देशों वाली फ़ाइल को संदर्भित करके किया जाता है। बाद वाला अपने सुरक्षा मॉडल के कारण स्थानीय फ़ाइल सिस्टम से फ़ाइलों पर क्रोम के साथ काम नहीं कर सकता है।<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 | *Adobe Aएक्सएसएलE इंजन, एक मालिकाना पुस्तकालय | ||
=== प्रदर्शन === | === प्रदर्शन === | ||
अधिकांश प्रारंभिक | अधिकांश प्रारंभिक एक्सएसएलटी प्रोसेसर दुभाषिए थे। हाल ही में, लक्ष्य के रूप में पोर्टेबल इंटरमीडिएट भाषाओं (जैसे [[जावा बाइटकोड]] या .नेट [[सामान्य मध्यवर्ती भाषा]]) का उपयोग करते हुए, कोड जेनरेशन तेजी से सामान्य हो रहा है। चूंकि, यहां तक कि व्याख्यात्मक उत्पाद सामान्यतः अलग-अलग विश्लेषण और निष्पादन चरणों की प्रस्तुत करते है, जिससे एक अनुकूलित अभिव्यक्ति ट्री को स्मृति में बनाया जा सकता है और कई परिवर्तन करने के लिए पुन: उपयोग किया जा सकता है। यह ऑनलाइन प्रकाशन अनुप्रयोगों में पर्याप्त प्रदर्शन लाभ देता है, जहां एक ही परिवर्तन प्रति सेकंड कई बार विभिन्न स्रोत दस्तावेजों पर लागू होता है।<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 (जैसे एक्सएमएल प्रोसेसिंग के लिए जावा API) के डिज़ाइन में परिलक्षित होता है। | ||
प्रारंभिक | प्रारंभिक एक्सएसएलटी प्रोसेसर में बहुत कम अनुकूलन थे। शैली पत्रक दस्तावेज़ों को दस्तावेज़ ऑब्जेक्ट मॉडल में पढ़ा गया और प्रोसेसर सीधे उन पर कार्य करेगा। एक्सपाथ इंजन भी अनुकूलित नहीं थे। चूँकि, एक्सएसएलटी प्रोसेसर कार्यात्मक प्रोग्रामिंग भाषाओं और डेटाबेस क्वेरी भाषाओं में पाई जाने वाली अनुकूलन तकनीकों का उपयोग करते है, जैसे कि एक अभिव्यक्ति ट्री की स्थिर पुनर्लेखन (जैसे, गणनाओं को लूप से बाहर ले जाने के लिए), और मध्यवर्ती परिणामों की मेमोरी फ़ुटप्रिंट को कम करने के लिए आलसी पाइपलाइन मूल्यांकन (और "जल्दी बाहर निकलने" की अनुमति दें जब प्रोसेसर सभी उप-अभिव्यक्तियों के पूर्ण मूल्यांकन के बिना <code>folloडब्ल्यूing-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 में, डेबी लॉकेट और माइकल के ने एक्सएसएलटी प्रोसेसर के लिए एक्सटी-स्पीडो नामक एक ओपन-सोर्स बेंचमार्किंग फ्रेमवर्क प्रस्तुत किया।<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> | जून 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> | ||
== यह भी देखें == | == यह भी देखें == | ||
* एक्सएसएलटी तत्व - कुछ सामान्य रूप से प्रयुक्त एक्सएसएलटी संरचनाओं की एक सूची। | * एक्सएसएलटी तत्व - कुछ सामान्य रूप से प्रयुक्त एक्सएसएलटी संरचनाओं की एक सूची। | ||
* एक्सएसएलटी/ | * एक्सएसएलटी/Muenसीhian समूहीकरण - एक्सएसएलटी1 और एक्सएसएलटी2+ के बीच बोली का अंतर। | ||
* | * विस्तारणीय शैली पत्रक भाषा - भाषाओं का एक परिवार जिसका एक्सएसएलटी एक सदस्य है | ||
* एक्सक्वेरी# एक्सक्वेरी और एक्सएसएलटी की तुलना | * एक्सक्वेरी# एक्सक्वेरी और एक्सएसएलटी की तुलना | ||
* एक्सएसएल फॉर्मेटिंग | * एक्सएसएल फॉर्मेटिंग वस्तुओं या एक्सएसएल-एफओ - दस्तावेज़ों के लिए एक एक्सएमएल-आधारित भाषा, सामान्यतः एक्सएसएलटी के साथ स्रोत दस्तावेज़ों को बदलने से उत्पन्न होती है, जिसमें स्वरूपित आउटपुट बनाने के लिए उपयोग की जाने वाली वस्तुएं सम्मलित होती है। | ||
* [[पहचान परिवर्तन]] - फिल्टर चेन के लिए एक प्रारंभिक बिंदु जो एक | * [[पहचान परिवर्तन]] - फिल्टर चेन के लिए एक प्रारंभिक बिंदु जो एक परिवर्तन पाइपलाइन में एक्सएमएल ट्री से डेटा एलिमेंट्स को जोड़ता या हटाता है | ||
* [[अपाचे कोकून]] - एक्सएसएलटी और अन्य ट्रांसफार्मर के साथ डेटा प्रोसेसिंग के लिए एक जावा (प्रोग्रामिंग भाषा) आधारित ढांचा। | * [[अपाचे कोकून]] - एक्सएसएलटी और अन्य ट्रांसफार्मर के साथ डेटा प्रोसेसिंग के लिए एक जावा (प्रोग्रामिंग भाषा) आधारित ढांचा। | ||
Line 226: | Line 225: | ||
==अग्रिम पठन== | ==अग्रिम पठन== | ||
* ''एक्सएसएलटी'' by Doug | * ''एक्सएसएलटी'' by Doug Tidडब्ल्यूell, published by O’Reilly ({{ISBN|0-596-00053-7}}) | ||
* ''एक्सएसएलटी | * ''एक्सएसएलटी सीookbook'' by Sal Mangano, published by O’Reilly ({{ISBN|0-596-00974-7}}) | ||
* ''एक्सएसएलटी 2.0 | * ''एक्सएसएलटी 2.0 प्रोgrammer's Referenसीe'' by [[Michael Howard Kay|Miसीhael Kay]] ({{ISBN|0-764-56909-0}}) | ||
* ''एक्सएसएलटी 2.0 and | * ''एक्सएसएलटी 2.0 and एक्सपाथ 2.0 प्रोgrammer's Referenसीe'' by Miसीhael Kay ({{ISBN|978-0-470-19274-0}}) | ||
* ''एक्सएसएलटी 2.0 | * ''एक्सएसएलटी 2.0 डब्ल्यूeb Development'' by Dmitry Kirsanov ({{ISBN|0-13-140635-3}}) | ||
* '' | * ''एक्सएसएल सीओएमpanion, 2nd Edition'' by Neil Bradley, published by Addison-डब्ल्यूesley ({{ISBN|0-201-77083-0}}) | ||
* ''एक्सएसएलटी and | * ''एक्सएसएलटी and एक्सपाथ on the Edge (Unlimited Edition)'' by [[Jeni Tennison]], published by Hungry Minds Inसी, U.S. ({{ISBN|0-7645-4776-3}}) | ||
* ''एक्सएसएलटी & | * ''एक्सएसएलटी & एक्सपाथ, A Guide to एक्सएमएल Transformations'' by John Robert Gardner and Zarella Rendon, published by Prentiसीe-Hall ({{ISBN|0-13-040446-2}}) | ||
* '' | * ''एक्सएसएल-FO'' by Dave Paडब्ल्यूson, published by O'Reilly ({{ISBN|978-0-596-00355-5}}) | ||
Line 240: | Line 239: | ||
{{Wikibooks|XML - Managing Data Exchange/XSLT and Style Sheets}} | {{Wikibooks|XML - Managing Data Exchange/XSLT and Style Sheets}} | ||
{{Commons category|Extensible Stylesheet Language Transformations}} | {{Commons category|Extensible Stylesheet Language Transformations}} | ||
; | ; Doसीumentation | ||
* [https://www.w3.org/TR/xslt-10/ एक्सएसएलटी 1.0 | * [https://www.w3.org/TR/xslt-10/ एक्सएसएलटी 1.0 डब्ल्यू3सी Reसीओएमmendation] | ||
* [http://www.w3.org/TR/xslt20/ एक्सएसएलटी 2.0 | * [http://www.w3.org/TR/xslt20/ एक्सएसएलटी 2.0 डब्ल्यू3सी Reसीओएमmendation] | ||
* [http://www.w3.org/TR/xslt-30/ एक्सएसएलटी 3.0 | * [http://www.w3.org/TR/xslt-30/ एक्सएसएलटी 3.0 डब्ल्यू3सी Reसीओएमmendation] | ||
* [https://developer.mozilla.org/en/XSLT एक्सएसएलटी - | * [https://developer.mozilla.org/en/XSLT एक्सएसएलटी - MDसी Doसीs] {{Webarchive|url=https://web.archive.org/web/20111226235131/https://developer.mozilla.org/en/XSLT |date=2011-12-26 }} by [https://developer.mozilla.org Mozilla Developer Netडब्ल्यूork] | ||
* [http://msdn.microsoft.com/en-us/library/ms256069.aspx एक्सएसएलटी | * [http://msdn.microsoft.com/en-us/library/ms256069.aspx एक्सएसएलटी Referenसीe (MSDN)] | ||
* [http://saxon.sourceforge.net/saxon7.5/xsl-elements.html एक्सएसएलटी Elements (Saxon)] | * [http://saxon.sourceforge.net/saxon7.5/xsl-elements.html एक्सएसएलटी Elements (Saxon)] | ||
* [http://data2type.de/en/xml-xslt-xslfo/xslt/ एक्सएसएलटी | * [http://data2type.de/en/xml-xslt-xslfo/xslt/ एक्सएसएलटी introduसीtion and referenसीe] | ||
; एक्सएसएलटी | ; एक्सएसएलटी सीode लिबraries | ||
* [http://www.exslt.org/ Eएक्सएसएलटी] is a | * [http://www.exslt.org/ Eएक्सएसएलटी] is a डब्ल्यूidespread सीओएमmunity initiative to प्रोvide extensions to एक्सएसएलटी. | ||
* [http://fxsl.sf.net/ | * [http://fxsl.sf.net/ Fएक्सएसएल] is a लिबrary implementing support for [[Higher-order function|Higher-order funसीtion]]s in एक्सएसएलटी. Fएक्सएसएल is डब्ल्यूritten in एक्सएसएलटी itself. | ||
* [http://xsltsl.sourceforge.net/ The एक्सएसएलटी Standard लिबrary] एक्सएसएलटीsl, | * [http://xsltsl.sourceforge.net/ The एक्सएसएलटी Standard लिबrary] एक्सएसएलटीsl, प्रोvides the एक्सएसएलटी developer डब्ल्यूith a set of एक्सएसएलटी templates for सीओएमmonly used funसीtions. These are implemented purely in एक्सएसएलटी, that is they do not use any extensions. एक्सएसएलटीsl is a SourसीeForge प्रोjeसीt. | ||
* [http://kernowforsaxon.sf.net/ | * [http://kernowforsaxon.sf.net/ Kernoडब्ल्यू] A GUI for Saxon that प्रोvides a point and सीliसीk interfaसीe for running transforms. | ||
* [http://johannburkard.de/software/xsltjs/ एक्सएसएलटी.js – Transform एक्सएमएल | * [http://johannburkard.de/software/xsltjs/ एक्सएसएलटी.js – Transform एक्सएमएल डब्ल्यूith एक्सएसएलटी] जावाSसीript लिबrary that transforms एक्सएमएल डब्ल्यूith एक्सएसएलटी in the broडब्ल्यूser. | ||
{{XSL}} | {{XSL}} |
Revision as of 02:16, 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 विनिर्देशन के बाद के अपडेट में जेएसओएन और सादा-पाठ परिवर्तन के लिए समर्थन जोड़ा गया था।
अगस्त 2022 तक, भाषा का सबसे हालिया स्थिर संस्करण एक्सएसएलटी 3.0 है, जिसने जून 2017 में सिफारिश की स्थिति हासिल की।
एक्सएसएलटी 3.0 कार्यान्वयन जावा, .नेट, सी/सी++, पायथन, पीएचपी और नोडजेएस को सहायता करता है। एक एक्सएसएलटी 3.0 जावास्क्रिप्ट लाइब्रेरी को वेब ब्राउज़र में भी होस्ट किया जा सकता है। आधुनिक वेब ब्राउज़र में एक्सएसएलटी 1.0 के लिए मूल समर्थन भी सम्मलित है।[3]
एक एक्सएसएलटी दस्तावेज़ परिवर्तन के लिए, मूल दस्तावेज़ नहीं बदला गया है, जबकि, उपस्थित दस्तावेज़ की सामग्री के आधार पर एक नया दस्तावेज़ बनाया जाता है।[4] विशिष्ट रूप से, इनपुट दस्तावेज़ एक्सएमएल फ़ाइलें होते है, लेकिन कोई भी चीज़ जिससे प्रोसेसर एक्सक्वेरी और एक्सपाथ डेटा मॉडल का निर्माण कर सकता है, का उपयोग किया जा सकता है, जैसे संबंध का डेटाबेस टेबल या भौगोलिक सूचना प्रणाली।[5]
जबकि एक्सएसएलटी को मूल रूप से एक्सएमएल परिवर्तन के लिए एक विशेष-उद्देश्य वाली भाषा के रूप में डिजाइन किया गया था, यह भाषा ट्यूरिंग-पूर्ण है, जो इसे सैद्धांतिक रूप से मनमाना संगणना करने में सक्षम बनाती है।[6]
इतिहास
एक्सएसएलटी कार्यात्मक भाषाओं,[7] और स्नोबोल और एडब्ल्यूके जैसी पाठ-आधारित पैटर्न मिलान भाषाओं से प्रभावित है। इसका सबसे प्रत्यक्ष पूर्ववर्ती डीएसएसएसएल है, जिसने एसजीएमएल के लिए वही किया जो एक्सएसएलटी एक्सएमएल के लिए करता है।[8]
- एक्सएसएलटी 1.0: एक्सएसएलटी विश्वव्यापी वेब संकाय (डब्ल्यू3सी) के विस्तारणीय शैली पत्रक भाषा (एक्सएसएल) के 1998-1999 के विकास प्रयास का हिस्सा था, एक ऐसी परियोजना जिसने एक्सएसएल-FO और एक्सपाथ का भी उत्पादन किया। एक्सएसएलटी को विकसित करने वाली मानक समिति के कुछ सदस्य, जिनमें संपादक जेम्स क्लार्क भी सम्मलित है, ने पहले डीएसएसएसएल पर काम किया था। एक्सएसएलटी 1.0 को नवंबर 1999 में डब्ल्यू3सी अनुशंसा के रूप में प्रकाशित किया गया था।[9] इसकी उम्र के बावजूद, एक्सएसएलटी 1.0[10] अभी भी व्यापक रूप से उपयोग किया जाता है (2018 तक), क्योंकि बाद के संस्करण वेब ब्राउज़र या एलएएमपी जैसे वातावरण के लिए मूल रूप से समर्थित नहीं है।
- एक्सएसएलटी 2.0: 2001 में एक संस्करण 1.1 बनाने के असफल प्रयास के बाद,[11] एक्सएसएल कार्यकारी समूह ने एक्सपाथ 2.0 बनाने के लिए एक्सक्वेरी कार्यकारी समूह के साथ सेना में सम्मलित हो गए,[12] एक्सएमएल स्कीमा पर आधारित एक समृद्ध डेटा मॉडल और प्रकार प्रणाली के साथ। इस पर निर्माण एक्सएसएलटी 2.0 है,[13] माइकल हॉवर्ड के संपादन के अनुसार विकसित किया गया, जो जनवरी 2007 में सिफारिश की स्थिति तक पहुंच गया।[14] एक्सएसएलटी 2.0 में सबसे महत्वपूर्ण नवप्रवर्तनों में सम्मलित है:
- नियमित अभिव्यक्ति का उपयोग करते हुए स्ट्रिंग हेरफेर
- दिनांक, समय और अवधि में हेरफेर करने के लिए कार्य और ऑपरेटर
- एकाधिक आउटपुट दस्तावेज़
- ग्रुपिंग (फ्लैट इनपुट अनुक्रमों से पदानुक्रमित संरचना बनाना)
- एक समृद्ध प्रकार की प्रणाली और मजबूत प्रकार की जाँच
- एक्सएसएलटी 3.0: 8 जून 2017 को डब्ल्यू3सी अनुशंसा बन गया। मुख्य नई विशेषताएं है:[15]
- स्ट्रीमिंग परिवर्तन: पिछले संस्करणों में पूरे इनपुट दस्तावेज़ को संसाधित करने से पहले मेमोरी में पढ़ना पड़ता था,[16] और प्रसंस्करण समाप्त होने तक आउटपुट नहीं लिखा जा सकता था। एक्सएसएलटी 3.0 एक्सएमएल स्ट्रीमिंग की अनुमति देता है जो स्मृति में फ़िट होने के लिए बहुत बड़े दस्तावेज़ों को प्रोसेस करने के लिए उपयोगी है या जब एक्सएमएल पाइपलाइनों में परिवर्तन जंजीर है।
- संकुल, बड़ी शैली पत्रक की प्रतिरूपकता में सुधार करने के लिए।
- उदाहरण के लिए, एक्सएसएल:try निर्देश के साथ गतिशील त्रुटियों का बेहतर प्रबंधन।
- नक्शे और सरणियों के लिए समर्थन, एक्सएसएलटी को जेएसओएन के साथ-साथ एक्सएमएल को संभालने में सक्षम बनाता है।
- कार्य अब अन्य (उच्च-क्रम) कार्यों के लिए तर्क हो सकते है।
डिजाइन और प्रसंस्करण मॉडल
एक्सएसएलटी प्रोसेसर एक या अधिक एक्सएमएल स्रोत दस्तावेज़ों के साथ-साथ एक या अधिक एक्सएसएलटी शैली पत्रक लेता है, और उन्हें एक या एकाधिक आउटपुट दस्तावेज़ बनाने के लिए संसाधित करता है।[17][18] सी (प्रोग्रामिंग भाषा), एक्सएसएलटी जैसी व्यापक रूप से लागू अनिवार्य प्रोग्रामिंग भाषाओं के विपरीत घोषणात्मक है।[19] मूल प्रसंस्करण प्रतिमान पैटर्न मिलान है।[20] स्टेटफुल वातावरण में प्रदर्शन करने के लिए क्रियाओं के एक अनिवार्य अनुक्रम को सूचीबद्ध करने के अतिरिक्त, टेम्पलेट नियम केवल यह परिभाषित करते है कि किसी विशेष एक्सपाथ-जैसे पैटर्न से मेल खाने वाले नोड को कैसे संभालना है, यदि प्रोसेसर को एक का सामना करना चाहिए, और टेम्पलेट की सामग्री प्रभावी रूप से कार्यात्मक होती है अभिव्यक्तियाँ जो सीधे उनके मूल्यांकित रूप का प्रतिनिधित्व करती है: परिणाम ट्री, जो प्रोसेसर के आउटपुट का आधार है।
एक विशिष्ट प्रोसेसर निम्नानुसार व्यवहार करता है। सबसे पहले, यह मानते हुए कि शैली पत्रक पहले ही पढ़ी और तैयार की जा चुकी है, प्रोसेसर इनपुट एक्सएमएल दस्तावेज़ से एक स्रोत ट्री बनाता है। इसके बाद यह स्रोत ट्री के रूट नोड को संसाधित करता है, शैली पत्रक में उस नोड के लिए सबसे अच्छा मेल खाने वाला टेम्पलेट ढूंढता है, और टेम्पलेट की सामग्री का मूल्यांकन करता है। प्रत्येक टेम्प्लेट में निर्देश सामान्यतः प्रोसेसर को या तो परिणाम ट्री में नोड्स बनाने के लिए निर्देशित करते है, या रूट नोड के समान ही स्रोत ट्री में अधिक नोड्स को प्रोसेस करने के लिए निर्देशित करते है। अंत में परिणाम ट्री को एक्सएमएल या एचटीएमएल टेक्स्ट के रूप में क्रमबद्ध किया जाता है।
एक्सपाथ
एक्सएसएलटी स्रोत दस्तावेज़ ट्री के सबसेट की पहचान करने और गणना करने के लिए एक्सपाथ का उपयोग करता है। एक्सपाथ कई प्रकार के फ़ंक्शन भी प्रदान करता है, जिसे एक्सएसएलटी स्वयं और बढ़ाता है।
एक्सएसएलटी 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 में आया।
एक्सक्वेरी तुलना
एक्सएसएलटी प्रकार्यात्मकताएँ एक्सक्वेरी के साथ ओवरलैप करती है, जिसे प्रारंभ में एक्सएमएल दस्तावेज़ों के बड़े संग्रह के लिए एक क्वेरी भाषा के रूप में माना गया था।
एक्सएसएलटी 2.0 और XQuery 1.0 मानकों को डब्ल्यू3सी के भीतर अलग-अलग कार्य समूहों द्वारा विकसित किया गया था, जहां उपयुक्त हो, एक सामान्य दृष्टिकोण सुनिश्चित करने के लिए मिलकर काम करना। वे समान डेटा मॉडल, टाइप सिस्टम और फ़ंक्शन लाइब्रेरी साझा करते है, और दोनों में एक्सपाथ 2.0 को एक उपभाषा के रूप में सम्मलित किया गया है।
चूँकि, दो भाषाएँ विभिन्न परंपराओं में निहित है और विभिन्न समुदायों की आवश्यकताओं को पूरा करती है। एक्सएसएलटी को मुख्य रूप से एक शैली पत्रक भाषा के रूप में माना गया था जिसका प्राथमिक लक्ष्य वेब पर (एक वेब टेम्पलेट भाषा के रूप में), या कागज पर मानव पाठक के लिए एक्सएमएल को प्रस्तुत करना था। XQuery को मुख्य रूप से SQL की परंपरा में डेटाबेस क्वेरी भाषा के रूप में माना गया था।
क्योंकि दो भाषाओं की उत्पत्ति विभिन्न समुदायों में हुई है, एक्सएसएलटी अधिक लचीली संरचना के साथ वर्णनात्मक दस्तावेज़ों को संभालने में अधिक मजबूत है, जबकि एक्सक्वेरी अपने डेटा प्रबंधन में अधिक मजबूत है, उदाहरण के लिए संबंधपरक जुड़ाव करते समय।[21]
मीडिया प्रकार
<आउटपुट>
ई> तत्व वैकल्पिक रूप से विशेषता ले सकता है मीडिया प्रकार
, जो किसी को परिणामी आउटपुट के लिए इंटरनेट मीडिया प्रकार (या एमआईएमई प्रकार) सेट करने की अनुमति देता है, उदाहरण के लिए: <एक्सएसएल:आउटपुट आउटपुट="एक्सएमएल" मीडिया-प्रकार="एप्लीकेशन/एक्सएमएल"/>
एक्सएसएलटी 1.0 अनुशंसा अधिक सामान्य विशेषता प्रकारों की अनुशंसा करती है टेक्स्ट/एक्सएमएल
और एप्लीकेशन/एक्सएमएल
चूंकि लंबे समय से एक्सएसएलटी के लिए कोई पंजीकृत मीडिया प्रकार नहीं था। इस समय के दौरान टेक्स्ट/एक्सएसएल
वास्तविक मानक बन गया। एक्सएसएलटी 1.0 में यह निर्दिष्ट नहीं किया गया था कि कैसे मीडिया-प्रकार
मूल्यों का प्रयोग करना चाहिए।
एक्सएसएलटी 2.0 की रिलीज़ के साथ, डब्ल्यू3सी ने एमआईएमई मीडिया प्रकार के पंजीकरण की सिफारिश की एप्लीकेशन/एक्सएसएलटी+एक्सएमएल
[22] और इसे बाद में इंटरनेट निरुपित नंबर प्राधिकरण के साथ पंजीकृत किया गया।[23]
एक्सएसएलटी के प्री-1.0 कार्यरत ड्राफ्ट का उपयोग किया गया टेक्स्ट/एक्सएसएल
उनके एम्बेडिंग उदाहरणों में, और इस प्रकार को लागू किया गया था और माइक्रोसॉफ्ट द्वारा इंटरनेट एक्सप्लोरर में प्रचारित किया जाना जारी है[24] और एमएसएक्सएमएल। में भी व्यापक रूप से मान्यता प्राप्त है एक्सएमएल-स्टाइलशीट
अन्य ब्राउज़रों द्वारा प्रसंस्करण निर्देश। व्यवहार में, इसलिए, इस प्रसंस्करण निर्देश का उपयोग करके ब्राउज़र में परिवर्तन को नियंत्रित करने के इच्छुक उपयोगकर्ता इस अपंजीकृत मीडिया प्रकार का उपयोग करने के लिए बाध्य है।[25]
उदाहरण
ये उदाहरण निम्न आवक एक्सएमएल दस्तावेज़ का उपयोग करते है
<?एक्सएमएल संस्करण = 1.0 ?><व्यक्ति>
<व्यक्ति उपयोगकर्ता नाम = JS1> <नाम>जॉन</name> <परिवार-नाम>स्मिथ</परिवार-नाम> </व्यक्ति> <व्यक्ति उपयोगकर्ता नाम = MI1> <नाम>मोरका</name> <परिवार-नाम>इस्मिन्शियस</परिवार-नाम> </व्यक्ति>
</व्यक्ति></वाक्यविन्यास हाइलाइट>
उदाहरण 1 (एक्सएमएल को एक्सएमएल में बदलना)
यह एक्सएसएलटी शैली पत्रक एक्सएमएल दस्तावेज़ को रूपांतरित करने के लिए टेम्पलेट प्रदान करती है:
<एक्सएसएल: आउटपुट मेथड = एक्सएमएल इंडेंट = हाँ />
<एक्सएसएल: साँचा मिलान = /व्यक्तियों > <जड़> <एक्सएसएल:apply-templates seleसीt= person /> </ जड़> </एक्सएसएल: साँचा>
<एक्सएसएल: टेम्पलेट मैच = व्यक्ति> <नाम उपयोगकर्ता नाम = {@उपयोगकर्ता नाम}> <एक्सएसएल: चयन का मूल्य = नाम /> </ नाम> </एक्सएसएल: साँचा>
</एक्सएसएल: शैली पत्रक></वाक्यविन्यास हाइलाइट>
इसका मूल्यांकन एक नए एक्सएमएल दस्तावेज़ में होता है, जिसमें एक और संरचना होती है:
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल><?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?><जड़>
<नाम उपयोगकर्ता नाम = JS1> जॉन </ नाम> <नाम उपयोगकर्ता नाम = MI1> मोरका </ नाम>
</ जड़></वाक्यविन्यास हाइलाइट>
उदाहरण 2 (एक्सएमएल को एक्सएचटीएमएल में बदलना)
निम्न उदाहरण एक्सएसएलटी फ़ाइल संसाधित कर रहा है
<?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?>
<एक्सएसएल: शैली पत्रक
संस्करण = 1.0 एक्सएमएलns:एक्सएसएल= http://डब्ल्यूडब्ल्यूडब्ल्यू.डब्ल्यू3.org/1999/एक्सएसएल/Transform एक्सएमएलns= http://डब्ल्यूडब्ल्यूडब्ल्यू.डब्ल्यू3.org/1999/xएचटीएमएल >
<एक्सएसएल: आउटपुट विधि = एक्सएमएल इंडेंट = हाँ एन्कोडिंग = UTF-8 />
<एक्सएसएल: साँचा मिलान = /व्यक्तियों > <एचटीएमएल> <head> <title>एक्सएमएल का परीक्षण उदाहरण</title> </head> <शरीर>
<उल> <एक्सएसएल:apply-templates seleसीt= person > <एक्सएसएल: सॉर्ट सेलेक्ट = फैमिली-नेम /> </एक्सएसएल:apply-templates> </शरीर> </एचटीएमएल> </एक्सएसएल: साँचा>
<एक्सएसएल: टेम्पलेट मैच = व्यक्ति> <ली> <एक्सएसएल: value-of seleसीt= family-name /><एक्सएसएल:टेक्स्ट>, </एक्सएसएल:टेक्स्ट><एक्सएसएल:value-of seleसीt= name /> </ली> </एक्सएसएल: साँचा>
</एक्सएसएल: शैली पत्रक>
</वाक्यविन्यास हाइलाइट>
उपरोक्त दिखाए गए एक्सएमएल इनपुट फ़ाइल के साथ निम्नलिखित एक्सएचटीएमएल में परिणाम (व्हाट्सएप (कंप्यूटर साइंस) को स्पष्टता के लिए यहां समायोजित किया गया है):
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल>
<?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?>
<एचटीएमएल एक्सएमएलns= http://डब्ल्यूडब्ल्यूडब्ल्यू.डब्ल्यू3.org/1999/xएचटीएमएल >
<head> <title>एक्सएमएल का परीक्षण उदाहरण</title> </head> <शरीर>
<उल>
</शरीर> </एचटीएमएल> </वाक्यविन्यास हाइलाइट> वेब ब्राउजर में प्रस्तुत किए जाने पर यह एक्सएचटीएमएल नीचे आउटपुट उत्पन्न करता है।
एक वेब ब्राउज़र के लिए प्रदर्शन पर एक एक्सएमएल दस्तावेज़ में एक्सएसएल परिवर्तन लागू करने में सक्षम होने के लिए, एक एक्सएमएल शैली पत्रक प्रसंस्करण निर्देश एक्सएमएल में सम्मिलित किया जा सकता है। इसलिए, उदाहरण के लिए, यदि उपरोक्त उदाहरण 2 में शैली पत्रक "example2.एक्सएसएल" के रूप में उपलब्ध थी, तो निम्नलिखित निर्देश मूल इनकमिंग एक्सएमएल में जोड़े जा सकते है:[26]
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल>
<?एक्सएमएल-स्टाइलशीट href= example2.एक्सएसएल type= टेक्स्ट/एक्सएसएल ?>
</वाक्यविन्यास हाइलाइट>
इस उदाहरण में, टेक्स्ट/एक्सएसएल
डब्ल्यू3सी विनिर्देशों के अनुसार तकनीकी रूप से गलत है[26] (जो कहते है कि प्रकार होना चाहिए एप्लीकेशन/एक्सएसएलटी+एक्सएमएल
), लेकिन यह एकमात्र मीडिया प्रकार है जो 2009 तक सभी ब्राउज़रों में व्यापक रूप से समर्थित है, और 2021 में स्थिति अपरिवर्तित है।
प्रोसेसर कार्यान्वयन
- अल्टोवा से रैप्टरएक्सएमएल एक एक्सएसएलटी 3.0 प्रोसेसर है जो एक्सएमएलस्पाई डेवलपमेंट टूलकिट में उपलब्ध है और एक फ्री-स्टैंडिंग सर्वर कार्यान्वयन के रूप में, एक रेस्ट इंटरफेस का उपयोग करके लागू किया गया है।
- आईबीएम डेटापॉवर ब्रांड के अनुसार एक विशेष प्रयोजन के हार्डवेयर उपकरण में एम्बेडेड एक्सएसएलटी प्रसंस्करण प्रदान करता है।
- लिबएक्सएमएल एमआईटी लाइसेंस के अनुसार जारी की गई एक मुफ्त लाइब्रेरी है जिसे व्यावसायिक अनुप्रयोगों में पुन: उपयोग किया जा सकता है। यह लिबएक्सएमएलl पर आधारित है और गति और सुवाह्यता के लिए सी (प्रोग्रामिंग भाषा) में लागू किया गया है। यह एक्सएसएलटी 1.0 और Eएक्सएसएलटी विस्तार को सहायता करता है।[27]
- इसका उपयोग कमांड लाइन पर एक्सएसएलटी प्रो सी[28] के माध्यम से किया जा सकता है जो maसीOS[29] और कई लिनक्स वितरणों में सम्मलित है, और साइगविन के माध्यम से माइक्रोसॉफ़्ट विंडोज़ पर उपयोग किया जा सकता है।[30]
- वेबकिट और ब्लिंक (लेआउट इंजन), उदाहरण के लिए क्रमशः एप्पल सफारी और गूगल क्रोम वेब ब्राउज़र में उपयोग किए जाते है, एक्सएसएल परिवर्तन करने के लिए लिबएक्सएसएलटी लाइब्रेरी का उपयोग करते है।[31]
- पायथन (प्रोग्रामिंग भाषा),[32] पर्ल,[33] रूबी (प्रोग्रामिंग भाषा),[34] पीएचपी,[35] सामान्य लिस्प,[36] टीसीएल,[37] और सी ++ के लिए बाइंडिंग उपस्तिथ है।[38]
- माइक्रोसॉफ्ट दो एक्सएसएलटी प्रोसेसर प्रदान करता है (दोनों एक्सएसएलटी 1.0 केवल)। पहले का प्रोसेसर MSएक्सएमएल सीओएम इंटरफेस प्रदान करता है, एमएसएक्सएमएल 4.0 से इसमें कमांड लाइन उपयोगिता
msएक्सएसएल.exe
भी सम्मलित है।[39] .नेट रनटाइम में इसकेSystem.एक्सएमएल.एक्सएसएल
लाइब्रेरी में एक अलग बिल्ट-इन एक्सएसएलटी प्रोसेसर सम्मलित है। - Saxon एक एक्सएसएलटी 3.0 और एक्सक्वेरी 3.1 प्रोसेसर है जिसमें स्टैंड-अलोन ऑपरेशन और जावा, जावाSसीript और .नेट के लिए ओपन-सोर्स और मालिकाना संस्करण है। एक अलग उत्पाद सैक्सन-जेएस[40] Node.js और ब्राउज़र में एक्सएसएलटी 3.0 प्रसंस्करण प्रदान करता है।
- Xalan जावा और सी++ के लिए उपलब्ध Apaसीhe Softडब्ल्यूare Foundation का एक ओपन सोर्स एक्सएसएलटी 1.0 प्रोसेसर है। ओरेकल से मानक जावा वितरण में Xalan प्रोसेसर का एक संस्करण डिफ़ॉल्ट एक्सएसएलटी प्रोसेसर के रूप में सम्मलित है।
- वेब ब्राउज़र: सफारी, क्रोम, फ़ायरफ़ॉक्स, ओपेरा और इंटरनेट एक्सप्लोरर सभी एक्सएसएलटी 1.0 (केवल) का समर्थन करते है। ब्राउज़र एक्सएमएल फ़ाइलों का ऑन-द-फ्लाई परिवर्तन कर सकते है और ब्राउज़र विंडो में परिवर्तन आउटपुट प्रदर्शित कर सकते है। यह या तो एक्सएमएल दस्तावेज़ में एक्सएसएल एम्बेड करके या एक्सएमएल दस्तावेज़ से एक्सएसएल निर्देशों वाली फ़ाइल को संदर्भित करके किया जाता है। बाद वाला अपने सुरक्षा मॉडल के कारण स्थानीय फ़ाइल सिस्टम से फ़ाइलों पर क्रोम के साथ काम नहीं कर सकता है।[41]
- Adobe Aएक्सएसएलE इंजन, एक मालिकाना पुस्तकालय
प्रदर्शन
अधिकांश प्रारंभिक एक्सएसएलटी प्रोसेसर दुभाषिए थे। हाल ही में, लक्ष्य के रूप में पोर्टेबल इंटरमीडिएट भाषाओं (जैसे जावा बाइटकोड या .नेट सामान्य मध्यवर्ती भाषा) का उपयोग करते हुए, कोड जेनरेशन तेजी से सामान्य हो रहा है। चूंकि, यहां तक कि व्याख्यात्मक उत्पाद सामान्यतः अलग-अलग विश्लेषण और निष्पादन चरणों की प्रस्तुत करते है, जिससे एक अनुकूलित अभिव्यक्ति ट्री को स्मृति में बनाया जा सकता है और कई परिवर्तन करने के लिए पुन: उपयोग किया जा सकता है। यह ऑनलाइन प्रकाशन अनुप्रयोगों में पर्याप्त प्रदर्शन लाभ देता है, जहां एक ही परिवर्तन प्रति सेकंड कई बार विभिन्न स्रोत दस्तावेजों पर लागू होता है।[42] यह पृथक्करण एक्सएसएलटी प्रोसेसिंग API (जैसे एक्सएमएल प्रोसेसिंग के लिए जावा API) के डिज़ाइन में परिलक्षित होता है।
प्रारंभिक एक्सएसएलटी प्रोसेसर में बहुत कम अनुकूलन थे। शैली पत्रक दस्तावेज़ों को दस्तावेज़ ऑब्जेक्ट मॉडल में पढ़ा गया और प्रोसेसर सीधे उन पर कार्य करेगा। एक्सपाथ इंजन भी अनुकूलित नहीं थे। चूँकि, एक्सएसएलटी प्रोसेसर कार्यात्मक प्रोग्रामिंग भाषाओं और डेटाबेस क्वेरी भाषाओं में पाई जाने वाली अनुकूलन तकनीकों का उपयोग करते है, जैसे कि एक अभिव्यक्ति ट्री की स्थिर पुनर्लेखन (जैसे, गणनाओं को लूप से बाहर ले जाने के लिए), और मध्यवर्ती परिणामों की मेमोरी फ़ुटप्रिंट को कम करने के लिए आलसी पाइपलाइन मूल्यांकन (और "जल्दी बाहर निकलने" की अनुमति दें जब प्रोसेसर सभी उप-अभिव्यक्तियों के पूर्ण मूल्यांकन के बिना folloडब्ल्यूing-sibling::*[1]
जैसे अभिव्यक्ति का मूल्यांकन कर सकता है)। कई प्रोसेसर ट्री अभ्यावेदन का भी उपयोग करते है जो सामान्य-उद्देश्य वाले DOM कार्यान्वयन की तुलना में अधिक कुशल (स्थान और समय दोनों में)[43] है।
जून 2014 में, डेबी लॉकेट और माइकल के ने एक्सएसएलटी प्रोसेसर के लिए एक्सटी-स्पीडो नामक एक ओपन-सोर्स बेंचमार्किंग फ्रेमवर्क प्रस्तुत किया।[44]
यह भी देखें
- एक्सएसएलटी तत्व - कुछ सामान्य रूप से प्रयुक्त एक्सएसएलटी संरचनाओं की एक सूची।
- एक्सएसएलटी/Muenसीhian समूहीकरण - एक्सएसएलटी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 Tidडब्ल्यूell, published by O’Reilly (ISBN 0-596-00053-7)
- एक्सएसएलटी सीookbook by Sal Mangano, published by O’Reilly (ISBN 0-596-00974-7)
- एक्सएसएलटी 2.0 प्रोgrammer's Referenसीe by Miसीhael Kay (ISBN 0-764-56909-0)
- एक्सएसएलटी 2.0 and एक्सपाथ 2.0 प्रोgrammer's Referenसीe by Miसीhael Kay (ISBN 978-0-470-19274-0)
- एक्सएसएलटी 2.0 डब्ल्यूeb Development by Dmitry Kirsanov (ISBN 0-13-140635-3)
- एक्सएसएल सीओएमpanion, 2nd Edition by Neil Bradley, published by Addison-डब्ल्यूesley (ISBN 0-201-77083-0)
- एक्सएसएलटी and एक्सपाथ on the Edge (Unlimited Edition) by Jeni Tennison, published by Hungry Minds Inसी, U.S. (ISBN 0-7645-4776-3)
- एक्सएसएलटी & एक्सपाथ, A Guide to एक्सएमएल Transformations by John Robert Gardner and Zarella Rendon, published by Prentiसीe-Hall (ISBN 0-13-040446-2)
- एक्सएसएल-FO by Dave Paडब्ल्यूson, published by O'Reilly (ISBN 978-0-596-00355-5)
बाहरी संबंध
- Doसीumentation
- एक्सएसएलटी 1.0 डब्ल्यू3सी Reसीओएमmendation
- एक्सएसएलटी 2.0 डब्ल्यू3सी Reसीओएमmendation
- एक्सएसएलटी 3.0 डब्ल्यू3सी Reसीओएमmendation
- एक्सएसएलटी - MDसी Doसीs Archived 2011-12-26 at the Wayback Machine by Mozilla Developer Netडब्ल्यूork
- एक्सएसएलटी Referenसीe (MSDN)
- एक्सएसएलटी Elements (Saxon)
- एक्सएसएलटी introduसीtion and referenसीe
- एक्सएसएलटी सीode लिबraries
- Eएक्सएसएलटी is a डब्ल्यूidespread सीओएमmunity initiative to प्रोvide extensions to एक्सएसएलटी.
- Fएक्सएसएल is a लिबrary implementing support for Higher-order funसीtions in एक्सएसएलटी. Fएक्सएसएल is डब्ल्यूritten in एक्सएसएलटी itself.
- The एक्सएसएलटी Standard लिबrary एक्सएसएलटीsl, प्रोvides the एक्सएसएलटी developer डब्ल्यूith a set of एक्सएसएलटी templates for सीओएमmonly used funसीtions. These are implemented purely in एक्सएसएलटी, that is they do not use any extensions. एक्सएसएलटीsl is a SourसीeForge प्रोjeसीt.
- Kernoडब्ल्यू A GUI for Saxon that प्रोvides a point and सीliसीk interfaसीe for running transforms.
- एक्सएसएलटी.js – Transform एक्सएमएल डब्ल्यूith एक्सएसएलटी जावाSसीript लिबrary that transforms एक्सएमएल डब्ल्यूith एक्सएसएलटी in the broडब्ल्यूser.