एक्सएसएलटी: Difference between revisions
(Created page with "{{short description|Language for transforming XML documents}} {{Infobox programming language | name = XSLT | logo = | logo caption = | screenshot = | screenshot caption =...") |
No edit summary |
||
Line 26: | Line 26: | ||
| website = {{URL|https://www.w3.org/TR/xslt-30/}} | | website = {{URL|https://www.w3.org/TR/xslt-30/}} | ||
| wikibooks = | | wikibooks = | ||
}}एक्सएसएलटी (एक्सटेंसिबल स्टाइलशीट लैंग्वेज ट्रांसफॉर्मेशन) मूल रूप से [[[[एक्सएमएल]] परिवर्तन भाषा]] एक्सएमएल दस्तावेजों के लिए अन्य एक्सएमएल दस्तावेजों में डिजाइन की गई भाषा है,<ref name="परिवर्तन">{{cite web|url=http://www.w3.org/standards/xml/transformation |title=परिवर्तन|date=2012-09-19}}</ref> या अन्य प्रारूप जैसे [[वेब पृष्ठ]]ों के लिए [[HTML]], सादा पाठ या XSL स्वरूपण ऑब्जेक्ट, जिन्हें बाद में पोर्टेबल दस्तावेज़ स्वरूप, [[परिशिष्ट भाग]] और [[पोर्टेबल नेटवर्क ग्राफ़िक्स]] जैसे अन्य स्वरूपों में परिवर्तित किया जा सकता है।<ref>{{cite web|url=http://www.w3.org/TR/xslt#output |title=XML Output Method|date=2012-09-19}}</ref> | }}एक्सएसएलटी (एक्सटेंसिबल स्टाइलशीट लैंग्वेज ट्रांसफॉर्मेशन) मूल रूप से [[[[एक्सएमएल]] परिवर्तन भाषा]] एक्सएमएल दस्तावेजों के लिए अन्य एक्सएमएल दस्तावेजों में डिजाइन की गई भाषा है,<ref name="परिवर्तन">{{cite web|url=http://www.w3.org/standards/xml/transformation |title=परिवर्तन|date=2012-09-19}}</ref> या अन्य प्रारूप जैसे [[वेब पृष्ठ]]ों के लिए [[HTML|एचटीएमएल]], सादा पाठ या XSL स्वरूपण ऑब्जेक्ट, जिन्हें बाद में पोर्टेबल दस्तावेज़ स्वरूप, [[परिशिष्ट भाग]] और [[पोर्टेबल नेटवर्क ग्राफ़िक्स]] जैसे अन्य स्वरूपों में परिवर्तित किया जा सकता है।<ref>{{cite web|url=http://www.w3.org/TR/xslt#output |title=XML Output Method|date=2012-09-19}}</ref> एक्सएसएलटी 1.0 विनिर्देशन के बाद के अपडेट में JSON और प्लेन-टेक्स्ट ट्रांसफ़ॉर्मेशन के लिए समर्थन जोड़ा गया था। | ||
अगस्त 2022 तक, भाषा का सबसे हालिया स्थिर संस्करण | अगस्त 2022 तक, भाषा का सबसे हालिया स्थिर संस्करण एक्सएसएलटी 3.0 है, जिसने जून 2017 में सिफारिश की स्थिति हासिल की। | ||
एक्सएसएलटी 3.0 कार्यान्वयन Java, .NET, C/C++, Python, 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>{{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]] का भी उत्पादन किया। एक्सएसएलटी को विकसित करने वाली मानक समिति के कुछ सदस्य, जिनमें जेम्स क्लार्क (एक्सएमएल विशेषज्ञ), संपादक शामिल हैं, ने पहले 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> अभी भी व्यापक रूप से उपयोग किया जाता है ({{as of|2018|lc=y}}), चूंकि बाद के संस्करण मूल रूप से [[वेब ब्राउज़र]] में या 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|एक्सक्वेरी]] वर्किंग ग्रुप के साथ हाथ मिलाया,<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)|एक्सएमएल स्कीमा (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 47: | Line 45: | ||
** एक समृद्ध प्रकार की प्रणाली और मजबूत प्रकार की जाँच | ** एक समृद्ध प्रकार की प्रणाली और मजबूत प्रकार की जाँच | ||
* | * एक्सएसएलटी 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> ** [[स्ट्रीमिंग एक्सएमएल]]: पिछले संस्करणों में पूरे इनपुट दस्तावेज़ को संसाधित करने से पहले मेमोरी में पढ़ना पड़ता था,<ref> | |url=http://www.w3.org/TR/xslt-30/#whats-new-in-xslt3|publisher=w3|access-date=6 January 2014}}</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> और प्रोसेसिंग समाप्त होने तक आउटपुट नहीं लिखा जा सकता था। | {{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 के साथ-साथ एक्सएमएल को संभालने में सक्षम बनाता है। | ||
** कार्य अब अन्य (उच्च-क्रम) कार्यों के लिए तर्क हो सकते हैं। | ** कार्य अब अन्य (उच्च-क्रम) कार्यों के लिए तर्क हो सकते हैं। | ||
== डिजाइन और प्रसंस्करण मॉडल == | == डिजाइन और प्रसंस्करण मॉडल == | ||
[[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> स्टेटफुल वातावरण में प्रदर्शन करने के लिए क्रियाओं के एक अनिवार्य अनुक्रम को सूचीबद्ध करने के बजाय, टेम्पलेट नियम केवल यह परिभाषित करते हैं कि किसी विशेष XPath-जैसे पैटर्न से मेल खाने वाले नोड को कैसे संभालना है, यदि प्रोसेसर को एक का सामना करना चाहिए, और टेम्पलेट की सामग्री प्रभावी रूप से कार्यात्मक होती है प्रोग्रामिंग [[अभिव्यक्ति (प्रोग्रामिंग)]] जो सीधे उनके मूल्यांकित रूप का प्रतिनिधित्व करते हैं: परिणाम वृक्ष, जो प्रोसेसर के आउटपुट का आधार है। | ||
एक विशिष्ट प्रोसेसर निम्नानुसार व्यवहार करता है। सबसे पहले, यह मानते हुए कि स्टाइलशीट पहले ही पढ़ी और तैयार की जा चुकी है, प्रोसेसर इनपुट | एक विशिष्ट प्रोसेसर निम्नानुसार व्यवहार करता है। सबसे पहले, यह मानते हुए कि स्टाइलशीट पहले ही पढ़ी और तैयार की जा चुकी है, प्रोसेसर इनपुट एक्सएमएल दस्तावेज़ से एक स्रोत ट्री डेटा संरचना बनाता है। इसके बाद यह स्रोत ट्री के रूट नोड को संसाधित करता है, स्टाइलशीट में उस नोड के लिए सबसे अच्छा मेल खाने वाला टेम्पलेट ढूंढता है, और टेम्पलेट की सामग्री का मूल्यांकन करता है। प्रत्येक टेम्प्लेट में निर्देश आम तौर पर प्रोसेसर को या तो परिणाम ट्री में नोड्स बनाने के लिए निर्देशित करते हैं, या रूट नोड के समान ही स्रोत ट्री में अधिक नोड्स को प्रोसेस करने के लिए निर्देशित करते हैं। अंत में परिणाम ट्री को एक्सएमएल या एचटीएमएल टेक्स्ट के रूप में क्रमबद्ध किया जाता है। | ||
==एक्सपाथ== | ==एक्सपाथ== | ||
{{details| | {{details| | ||
एक्सपथ}} | |||
एक्सएसएलटी स्रोत दस्तावेज़ ट्री के सबसेट की पहचान करने और गणना करने के लिए XPath का उपयोग करता है। XPath उपनेमका की एक श्रृंखला भी प्रदान करता है, जिसे एक्सएसएलटी स्वयं आगे बढ़ाता है। | |||
एक्सएसएलटी 1.0 XPath 1.0 का उपयोग करता है, जबकि एक्सएसएलटी 2.0 XPath 2.0 का उपयोग करता है। एक्सएसएलटी 3.0 या तो XPath 3.0 या 3.1 के साथ काम करेगा। 1.0 और 2.0 के मामले में, एक्सएसएलटी और XPath विनिर्देशों को एक ही तिथि पर प्रकाशित किया गया था। 3.0 के साथ, हालांकि, वे अब सिंक्रनाइज़ नहीं थे; XPath 3.0 अप्रैल 2014 में एक सिफारिश बन गया, उसके बाद फरवरी 2017 में XPath 3.1; एक्सएसएलटी 3.0 जून 2017 में आया। | |||
== | ==एक्सक्वेरी तुलना == | ||
{{details| | {{details| | ||
एक्स क्वेरी एक्स क्वेरी और एक्सएसएलटी की तुलना}} | |||
एक्सएसएलटी प्रकार्यात्मकताएँ एक्सक्वेरी के साथ ओवरलैप करती हैं, जिसे शुरू में एक्सएमएल दस्तावेज़ों के बड़े संग्रह के लिए एक क्वेरी भाषा के रूप में माना गया था। | |||
एक्सएसएलटी 2.0 और एक्सक्वेरी 1.0 मानकों को [[W3C]] के भीतर अलग-अलग कार्य समूहों द्वारा विकसित किया गया था, जहां उपयुक्त हो, एक सामान्य दृष्टिकोण सुनिश्चित करने के लिए मिलकर काम करना। वे समान डेटा मॉडल, टाइप सिस्टम और फ़ंक्शन लाइब्रेरी साझा करते हैं, और दोनों में XPath 2.0 को एक उपभाषा के रूप में शामिल किया गया है। | |||
हालाँकि, दो भाषाएँ विभिन्न परंपराओं में निहित हैं और विभिन्न समुदायों की आवश्यकताओं को पूरा करती हैं। एक्सएसएलटी को मुख्य रूप से एक स्टाइलशीट भाषा के रूप में माना गया था जिसका प्राथमिक लक्ष्य मानव पाठक के लिए स्क्रीन पर, वेब पर (एक [[वेब टेम्पलेट]] के रूप में), या कागज पर एक्सएमएल को प्रस्तुत करना था। एक्सक्वेरी को मुख्य रूप से [[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> | |||
== मीडिया प्रकार == <code><output></code> ई> तत्व वैकल्पिक रूप से विशेषता ले सकता है <code>media-type</code>, जो किसी को परिणामी आउटपुट के लिए [[इंटरनेट मीडिया प्रकार]] (या MIME प्रकार) सेट करने की अनुमति देता है, उदाहरण के लिए: <code><xsl:output output="एक्सएमएल" media-type="application/एक्सएमएल"/></code>. एक्सएसएलटी 1.0 अनुशंसा अधिक सामान्य विशेषता प्रकारों की अनुशंसा करती है <code>text/एक्सएमएल</code> और <code>application/एक्सएमएल</code> चूंकि लंबे समय से एक्सएसएलटी के लिए कोई पंजीकृत मीडिया प्रकार नहीं था। इस समय के दौरान <code>text/xsl</code> वास्तविक मानक बन गया। एक्सएसएलटी 1.0 में यह निर्दिष्ट नहीं किया गया था कि कैसे <code>media-type</code> मूल्यों का प्रयोग करना चाहिए। | |||
एक्सएसएलटी 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> अन्य ब्राउज़रों द्वारा प्रसंस्करण निर्देश। व्यवहार में, इसलिए, इस प्रसंस्करण निर्देश का उपयोग करके ब्राउज़र में परिवर्तन को नियंत्रित करने के इच्छुक उपयोगकर्ता इस अपंजीकृत मीडिया प्रकार का उपयोग करने के लिए बाध्य हैं।<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> | |||
== उदाहरण == | == उदाहरण == | ||
ये उदाहरण निम्नलिखित इनकमिंग | ये उदाहरण निम्नलिखित इनकमिंग एक्सएमएल दस्तावेज़<nowiki><syntaxhighlight lang= एक्सएमएल > का उपयोग करते हैं</nowiki> | ||
<? | <?एक्सएमएल संस्करण = 1.0 ?> | ||
<व्यक्ति> | <व्यक्ति> | ||
<व्यक्ति उपयोगकर्ता नाम = JS1> | <व्यक्ति उपयोगकर्ता नाम = JS1> | ||
Line 100: | Line 101: | ||
=== उदाहरण 1 (एक्सएमएल को एक्सएमएल में बदलना) === | === उदाहरण 1 (एक्सएमएल को एक्सएमएल में बदलना) === | ||
यह | यह एक्सएसएलटी स्टाइलशीट एक्सएमएल दस्तावेज़ को रूपांतरित करने के लिए टेम्प्लेट प्रदान करता है: <nowiki><syntaxhighlight lang= एक्सएमएल ></nowiki> | ||
<? | <?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?> | ||
<xsl:stylesheet | <xsl:stylesheet एक्सएमएलns:xsl= http://www.w3.org/1999/XSL/Transform version= 1.0 > | ||
<xsl: आउटपुट मेथड = | <xsl: आउटपुट मेथड = एक्सएमएल इंडेंट = हाँ /> | ||
<xsl: साँचा मिलान = /व्यक्तियों > | <xsl: साँचा मिलान = /व्यक्तियों > | ||
Line 120: | Line 121: | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
इसका मूल्यांकन एक नए | इसका मूल्यांकन एक नए एक्सएमएल दस्तावेज़ में होता है, जिसमें एक और संरचना होती है: | ||
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | <वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | ||
<? | <?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?> | ||
<जड़> | <जड़> | ||
<नाम उपयोगकर्ता नाम = JS1> जॉन </ नाम> | <नाम उपयोगकर्ता नाम = JS1> जॉन </ नाम> | ||
Line 131: | Line 132: | ||
=== उदाहरण 2 (एक्सएमएल को [[एक्सएचटीएमएल]] में बदलना) === | === उदाहरण 2 (एक्सएमएल को [[एक्सएचटीएमएल]] में बदलना) === | ||
निम्न उदाहरण | निम्न उदाहरण एक्सएसएलटी फ़ाइल संसाधित कर रहा है | ||
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | <वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | ||
<? | <?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?> | ||
<xsl: स्टाइलशीट | <xsl: स्टाइलशीट | ||
संस्करण = 1.0 | संस्करण = 1.0 | ||
एक्सएमएलns:xsl= http://www.w3.org/1999/XSL/Transform | |||
एक्सएमएलns= [http://www.w3.org/1999/xhtml http://www.w3.org/1999/xएचटीएमएल] > | |||
<xsl: आउटपुट विधि = | <xsl: आउटपुट विधि = एक्सएमएल इंडेंट = हाँ एन्कोडिंग = UTF-8 /> | ||
<xsl: साँचा मिलान = /व्यक्तियों > | <xsl: साँचा मिलान = /व्यक्तियों > | ||
<एचटीएमएल> | <एचटीएमएल> | ||
<head> <title> | <head> <title>एक्सएमएल का परीक्षण उदाहरण</title> </head> | ||
<शरीर> | <शरीर> | ||
<h1>व्यक्ति</h1> | <h1>व्यक्ति</h1> | ||
Line 150: | Line 151: | ||
<xsl: सॉर्ट सेलेक्ट = फैमिली-नेम /> | <xsl: सॉर्ट सेलेक्ट = फैमिली-नेम /> | ||
</xsl:apply-templates> | </xsl:apply-templates> | ||
</शरीर> | </शरीर> | ||
</ | </एचटीएमएल> | ||
</xsl: साँचा> | </xsl: साँचा> | ||
Line 165: | Line 166: | ||
उपरोक्त दिखाए गए एक्सएमएल इनपुट फ़ाइल के साथ निम्नलिखित एक्सएचटीएमएल में परिणाम (व्हाट्सएप (कंप्यूटर साइंस) को स्पष्टता के लिए यहां समायोजित किया गया है): | उपरोक्त दिखाए गए एक्सएमएल इनपुट फ़ाइल के साथ निम्नलिखित एक्सएचटीएमएल में परिणाम (व्हाट्सएप (कंप्यूटर साइंस) को स्पष्टता के लिए यहां समायोजित किया गया है): | ||
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | <वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | ||
<? | <?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?> | ||
< | <एचटीएमएल एक्सएमएलns= <nowiki>http://www.w3.org/1999/xएचटीएमएल</nowiki> > | ||
<head> <title> | <head> <title>एक्सएमएल का परीक्षण उदाहरण</title> </head> | ||
<शरीर> | <शरीर> | ||
<h1>व्यक्ति</h1> | <h1>व्यक्ति</h1> | ||
Line 173: | Line 174: | ||
<li>इस्मिन्शियस, मोरका</li> | <li>इस्मिन्शियस, मोरका</li> | ||
<li>स्मिथ, जॉन</li> | <li>स्मिथ, जॉन</li> | ||
</शरीर> | </शरीर> | ||
</ | </एचटीएमएल> | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
वेब ब्राउजर में प्रस्तुत किए जाने पर यह एक्सएचटीएमएल नीचे आउटपुट उत्पन्न करता है। | वेब ब्राउजर में प्रस्तुत किए जाने पर यह एक्सएचटीएमएल नीचे आउटपुट उत्पन्न करता है। | ||
[[Image:xslt ex2.png|thumb|center|एक एक्सएमएल इनपुट फ़ाइल और एक एक्सएसएलटी परिवर्तन से उत्पन्न एक्सएचटीएमएल प्रस्तुत किया गया।]]एक वेब ब्राउज़र के लिए प्रदर्शन पर एक | [[Image:xslt ex2.png|thumb|center|एक एक्सएमएल इनपुट फ़ाइल और एक एक्सएसएलटी परिवर्तन से उत्पन्न एक्सएचटीएमएल प्रस्तुत किया गया।]]एक वेब ब्राउज़र के लिए प्रदर्शन पर एक एक्सएमएल दस्तावेज़ में XSL परिवर्तन लागू करने में सक्षम होने के लिए, एक एक्सएमएल स्टाइलशीट प्रसंस्करण निर्देश एक्सएमएल में सम्मिलित किया जा सकता है। इसलिए, उदाहरण के लिए, यदि उपरोक्त उदाहरण 2 में स्टाइलशीट example2.xsl के रूप में उपलब्ध थी, तो निम्नलिखित निर्देश मूल इनकमिंग एक्सएमएल में जोड़े जा सकते हैं:<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> | ||
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | <वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> | ||
<? | <?एक्सएमएल-stylesheet href= example2.xsl type= text/xsl ?> | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
इस उदाहरण में, <code>text/xsl</code> W3C विनिर्देशों के अनुसार तकनीकी रूप से गलत है<ref name=w3cxslt />(जो कहते हैं कि प्रकार होना चाहिए <code>application/ | इस उदाहरण में, <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 उपकरण|आईबीएम WebSphere DataPower SOA उपकरण]] ब्रांड के तहत एक विशेष-उद्देश्य वाले हार्डवेयर उपकरण में एम्बेड किए गए एक्सएसएलटी प्रसंस्करण की पेशकश करता है। | ||
*[[libxslt]] [[मेरा लाइसेंस]] के तहत जारी एक [[मुफ्त सॉफ्टवेयर]] [[पुस्तकालय (कम्प्यूटिंग)]] है जिसे व्यावसायिक अनुप्रयोगों में पुन: उपयोग किया जा सकता है। यह [[libxml]] पर आधारित है और गति और सुवाह्यता के लिए C (प्रोग्रामिंग भाषा) में लागू किया गया है। यह | *[[libxslt|libएक्सएसएलटी]] [[मेरा लाइसेंस]] के तहत जारी एक [[मुफ्त सॉफ्टवेयर]] [[पुस्तकालय (कम्प्यूटिंग)]] है जिसे व्यावसायिक अनुप्रयोगों में पुन: उपयोग किया जा सकता है। यह [[libxml|libएक्सएमएल]] पर आधारित है और गति और सुवाह्यता के लिए C (प्रोग्रामिंग भाषा) में लागू किया गया है। यह एक्सएसएलटी 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> | ||
** इसे | ** इसे एक्सएसएलटी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> | ||
**[[वेबकिट]] और [[ब्लिंक (लेआउट इंजन)]] लेआउट इंजन, उदाहरण के लिए क्रमशः [[एप्पल सफारी]] और Google क्रोम वेब ब्राउज़र में उपयोग किए जाते हैं, एक्सएसएल ट्रांसफॉर्मेशन करने के लिए | **[[वेबकिट]] और [[ब्लिंक (लेआउट इंजन)]] लेआउट इंजन, उदाहरण के लिए क्रमशः [[एप्पल सफारी]] और Google क्रोम वेब ब्राउज़र में उपयोग किए जाते हैं, एक्सएसएल ट्रांसफॉर्मेशन करने के लिए libएक्सएसएलटी लाइब्रेरी का उपयोग करते हैं।<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एक्सएमएल]] COM इंटरफेस प्रदान करता है; MSएक्सएमएल 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> पुस्तकालय। | ||
*[[Saxon 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 प्रोसेसिंग की पेशकश करता है। | ||
*[[Xalan]] जावा और C++ के लिए उपलब्ध [[Apache Software Foundation]] का एक ओपन सोर्स | *[[Xalan]] जावा और C++ के लिए उपलब्ध [[Apache Software Foundation]] का एक ओपन सोर्स एक्सएसएलटी 1.0 प्रोसेसर है। ओरेकल से मानक जावा वितरण में Xalan प्रोसेसर का एक संस्करण डिफ़ॉल्ट एक्सएसएलटी प्रोसेसर के रूप में शामिल है। | ||
*वेब ब्राउज़र: सफारी, क्रोम, फायरफॉक्स, ओपेरा और इंटरनेट एक्सप्लोरर सभी | *वेब ब्राउज़र: सफारी, क्रोम, फायरफॉक्स, ओपेरा और इंटरनेट एक्सप्लोरर सभी एक्सएसएलटी 1.0 (केवल) को सपोर्ट करते हैं। ब्राउज़र एक्सएमएल फ़ाइलों का ऑन-द-फ्लाई ट्रांसफ़ॉर्मेशन कर सकते हैं और ब्राउज़र विंडो में ट्रांसफ़ॉर्मेशन आउटपुट प्रदर्शित कर सकते हैं। यह या तो एक्सएमएल दस्तावेज़ में XSL एम्बेड करके या एक्सएमएल दस्तावेज़ से XSL निर्देशों वाली फ़ाइल को संदर्भित करके किया जाता है। बाद वाला अपने सुरक्षा मॉडल के कारण स्थानीय फ़ाइल सिस्टम की फ़ाइलों पर Chrome के साथ काम नहीं कर सकता है।<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 इंजन, एक मालिकाना पुस्तकालय | ||
=== प्रदर्शन === | === प्रदर्शन === | ||
अधिकांश शुरुआती | अधिकांश शुरुआती एक्सएसएलटी प्रोसेसर दुभाषिए थे। हाल ही में, लक्ष्य के रूप में पोर्टेबल इंटरमीडिएट भाषाओं (जैसे [[जावा बाइटकोड]] या .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) के डिज़ाइन में परिलक्षित होता है। | ||
शुरुआती | शुरुआती एक्सएसएलटी प्रोसेसर में बहुत कम अनुकूलन थे। स्टाइलशीट दस्तावेज़ों को दस्तावेज़ ऑब्जेक्ट मॉडल में पढ़ा गया और प्रोसेसर सीधे उन पर कार्य करेगा। XPath इंजन भी अनुकूलित नहीं थे। हालाँकि, एक्सएसएलटी प्रोसेसर कार्यात्मक प्रोग्रामिंग भाषाओं और डेटाबेस क्वेरी भाषाओं में पाई जाने वाली अनुकूलन तकनीकों का उपयोग करते हैं, जैसे कि एक अभिव्यक्ति ट्री की स्थिर पुनर्लेखन (जैसे, गणनाओं को लूप से बाहर ले जाने के लिए), और मध्यवर्ती परिणामों की मेमोरी फ़ुटप्रिंट को कम करने के लिए आलसी पाइपलाइन मूल्यांकन (और जल्दी बाहर निकलने की अनुमति दें जब प्रोसेसर एक अभिव्यक्ति का मूल्यांकन कर सकता है जैसे <code>following-sibling::*[1]</code> सभी उप-अभिव्यक्तियों के पूर्ण मूल्यांकन के बिना)। कई प्रोसेसर पेड़ के प्रतिनिधित्व का भी उपयोग करते हैं जो काफी अधिक कुशल होते हैं (अंतरिक्ष और समय दोनों में)<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> सामान्य-उद्देश्य वाले DOM कार्यान्वयनों की तुलना में। | ||
जून 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> | ||
Line 207: | Line 208: | ||
== यह भी देखें == | == यह भी देखें == | ||
* | * एक्सएसएलटी तत्व - कुछ सामान्य रूप से प्रयुक्त एक्सएसएलटी संरचनाओं की एक सूची। | ||
* | * एक्सएसएलटी/Muenchian समूहीकरण - एक्सएसएलटी1 और एक्सएसएलटी2+ के बीच बोली का अंतर। | ||
* एक्स्टेंसिबल स्टाइलशीट लैंग्वेज - भाषाओं का एक परिवार जिसका | * एक्स्टेंसिबल स्टाइलशीट लैंग्वेज - भाषाओं का एक परिवार जिसका एक्सएसएलटी एक सदस्य है | ||
* | * एक्सक्वेरी# एक्सक्वेरी और एक्सएसएलटी की तुलना | ||
* एक्सएसएल फॉर्मेटिंग ऑब्जेक्ट्स या एक्सएसएल-एफओ - दस्तावेज़ों के लिए एक एक्सएमएल-आधारित भाषा, आमतौर पर एक्सएसएलटी के साथ स्रोत दस्तावेज़ों को बदलने से उत्पन्न होती है, जिसमें स्वरूपित आउटपुट बनाने के लिए उपयोग की जाने वाली वस्तुएं शामिल होती हैं। | * एक्सएसएल फॉर्मेटिंग ऑब्जेक्ट्स या एक्सएसएल-एफओ - दस्तावेज़ों के लिए एक एक्सएमएल-आधारित भाषा, आमतौर पर एक्सएसएलटी के साथ स्रोत दस्तावेज़ों को बदलने से उत्पन्न होती है, जिसमें स्वरूपित आउटपुट बनाने के लिए उपयोग की जाने वाली वस्तुएं शामिल होती हैं। | ||
* [[पहचान परिवर्तन]] - फिल्टर चेन के लिए एक शुरुआती बिंदु जो एक ट्रांसफॉर्मेशन पाइपलाइन में | * [[पहचान परिवर्तन]] - फिल्टर चेन के लिए एक शुरुआती बिंदु जो एक ट्रांसफॉर्मेशन पाइपलाइन में एक्सएमएल ट्री से डेटा एलिमेंट्स को जोड़ता या हटाता है | ||
* [[अपाचे कोकून]] - एक्सएसएलटी और अन्य ट्रांसफार्मर के साथ डेटा प्रोसेसिंग के लिए एक जावा (प्रोग्रामिंग भाषा) आधारित ढांचा। | * [[अपाचे कोकून]] - एक्सएसएलटी और अन्य ट्रांसफार्मर के साथ डेटा प्रोसेसिंग के लिए एक जावा (प्रोग्रामिंग भाषा) आधारित ढांचा। | ||
Line 220: | Line 221: | ||
==अग्रिम पठन== | ==अग्रिम पठन== | ||
* '' | * ''एक्सएसएलटी'' 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 Howard Kay|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}}) | * ''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}}) | * ''XSL-FO'' by Dave Pawson, published by O'Reilly ({{ISBN|978-0-596-00355-5}}) | ||
Line 235: | Line 236: | ||
{{Commons category|Extensible Stylesheet Language Transformations}} | {{Commons category|Extensible Stylesheet Language Transformations}} | ||
; Documentation | ; Documentation | ||
* [https://www.w3.org/TR/xslt-10/ | * [https://www.w3.org/TR/xslt-10/ एक्सएसएलटी 1.0 W3C Recommendation] | ||
* [http://www.w3.org/TR/xslt20/ | * [http://www.w3.org/TR/xslt20/ एक्सएसएलटी 2.0 W3C Recommendation] | ||
* [http://www.w3.org/TR/xslt-30/ | * [http://www.w3.org/TR/xslt-30/ एक्सएसएलटी 3.0 W3C Recommendation] | ||
* [https://developer.mozilla.org/en/XSLT | * [https://developer.mozilla.org/en/XSLT एक्सएसएलटी - MDC Docs] {{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 Network] | ||
* [http://msdn.microsoft.com/en-us/library/ms256069.aspx | * [http://msdn.microsoft.com/en-us/library/ms256069.aspx एक्सएसएलटी Reference (MSDN)] | ||
* [http://saxon.sourceforge.net/saxon7.5/xsl-elements.html | * [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/ एक्सएसएलटी introduction and reference] | ||
; | ; एक्सएसएलटी code libraries | ||
* [http://www.exslt.org/ | * [http://www.exslt.org/ Eएक्सएसएलटी] is a widespread community initiative to provide extensions to एक्सएसएलटी. | ||
* [http://fxsl.sf.net/ FXSL] is a library implementing support for [[Higher-order function]]s in | * [http://fxsl.sf.net/ FXSL] is a library implementing support for [[Higher-order function]]s in एक्सएसएलटी. FXSL is written in एक्सएसएलटी itself. | ||
* [http://xsltsl.sourceforge.net/ The | * [http://xsltsl.sourceforge.net/ The एक्सएसएलटी Standard Library] एक्सएसएलटी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. | ||
* [http://kernowforsaxon.sf.net/ Kernow] A GUI for Saxon that provides a point and click interface for running transforms. | * [http://kernowforsaxon.sf.net/ Kernow] A GUI for Saxon that provides a point and click interface for running transforms. | ||
* [http://johannburkard.de/software/xsltjs/ | * [http://johannburkard.de/software/xsltjs/ एक्सएसएलटी.js – Transform एक्सएमएल with एक्सएसएलटी] JavaScript library that transforms एक्सएमएल with एक्सएसएलटी in the browser. | ||
{{XSL}} | {{XSL}} |
Revision as of 17:57, 24 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] या अन्य प्रारूप जैसे वेब पृष्ठों के लिए एचटीएमएल, सादा पाठ या XSL स्वरूपण ऑब्जेक्ट, जिन्हें बाद में पोर्टेबल दस्तावेज़ स्वरूप, परिशिष्ट भाग और पोर्टेबल नेटवर्क ग्राफ़िक्स जैसे अन्य स्वरूपों में परिवर्तित किया जा सकता है।[2] एक्सएसएलटी 1.0 विनिर्देशन के बाद के अपडेट में JSON और प्लेन-टेक्स्ट ट्रांसफ़ॉर्मेशन के लिए समर्थन जोड़ा गया था।
अगस्त 2022 तक, भाषा का सबसे हालिया स्थिर संस्करण एक्सएसएलटी 3.0 है, जिसने जून 2017 में सिफारिश की स्थिति हासिल की।
एक्सएसएलटी 3.0 कार्यान्वयन Java, .NET, C/C++, Python, 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] अभी भी व्यापक रूप से उपयोग किया जाता है (as of 2018[update]), चूंकि बाद के संस्करण मूल रूप से वेब ब्राउज़र में या LAMP (सॉफ़्टवेयर बंडल) जैसे परिवेशों के लिए समर्थित नहीं हैं।
- एक्सएसएलटी 2.0: 2001 में संस्करण 1.1 बनाने के विफल प्रयास के बाद,[11] XSL वर्किंग ग्रुप ने XPath 2.0 बनाने के लिए एक्सक्वेरी वर्किंग ग्रुप के साथ हाथ मिलाया,[12] एक्सएमएल स्कीमा (W3C) पर आधारित एक समृद्ध डेटा मॉडल और टाइप सिस्टम के साथ। इस पर निर्माण एक्सएसएलटी 2.0 है,[13] माइकल हॉवर्ड के के संपादन के तहत विकसित, जो जनवरी 2007 में सिफारिश की स्थिति में पहुंच गया।[14] एक्सएसएलटी 2.0 में सबसे महत्वपूर्ण नवप्रवर्तनों में शामिल हैं:
- नियमित अभिव्यक्ति का उपयोग करते हुए स्ट्रिंग हेरफेर
- दिनांक, समय और अवधि में हेरफेर करने के लिए कार्य और ऑपरेटर
- एकाधिक आउटपुट दस्तावेज़
- ग्रुपिंग (फ्लैट इनपुट अनुक्रमों से पदानुक्रमित संरचना बनाना)
- एक समृद्ध प्रकार की प्रणाली और मजबूत प्रकार की जाँच
- एक्सएसएलटी 3.0: 8 जून 2017 को W3C अनुशंसा बन गया। मुख्य नई विशेषताएं हैं:[15] ** स्ट्रीमिंग एक्सएमएल: पिछले संस्करणों में पूरे इनपुट दस्तावेज़ को संसाधित करने से पहले मेमोरी में पढ़ना पड़ता था,[16] और प्रोसेसिंग समाप्त होने तक आउटपुट नहीं लिखा जा सकता था। एक्सएसएलटी 3.0 स्ट्रीमिंग एक्सएमएल की अनुमति देता है जो स्मृति में फ़िट होने के लिए बहुत बड़े दस्तावेज़ों को प्रोसेस करने के लिए उपयोगी है या जब एक्सएमएल पाइपलाइनों में परिवर्तन जंजीर हैं।
- संकुल, बड़ी स्टाइलशीट की प्रतिरूपकता में सुधार करने के लिए।
- उदाहरण के लिए, xsl:try निर्देश के साथ गतिशील त्रुटियों से निपटने में सुधार।
- नक्शे और सरणियों के लिए समर्थन, एक्सएसएलटी को JSON के साथ-साथ एक्सएमएल को संभालने में सक्षम बनाता है।
- कार्य अब अन्य (उच्च-क्रम) कार्यों के लिए तर्क हो सकते हैं।
डिजाइन और प्रसंस्करण मॉडल
एक्सएसएलटी प्रोसेसर एक या अधिक एक्सएमएल स्रोत दस्तावेज़, प्लस एक या अधिक एक्सएसएलटी स्टाइलशीट लेता है, और उन्हें एक या एकाधिक आउटपुट दस्तावेज़ बनाने के लिए संसाधित करता है।[17][18] सी (प्रोग्रामिंग भाषा) जैसी व्यापक रूप से कार्यान्वित अनिवार्य प्रोग्रामिंग भाषाओं के विपरीत, एक्सएसएलटी घोषणात्मक प्रोग्रामिंग है।[19] मूल प्रसंस्करण प्रतिमान पैटर्न मिलान है।[20] स्टेटफुल वातावरण में प्रदर्शन करने के लिए क्रियाओं के एक अनिवार्य अनुक्रम को सूचीबद्ध करने के बजाय, टेम्पलेट नियम केवल यह परिभाषित करते हैं कि किसी विशेष XPath-जैसे पैटर्न से मेल खाने वाले नोड को कैसे संभालना है, यदि प्रोसेसर को एक का सामना करना चाहिए, और टेम्पलेट की सामग्री प्रभावी रूप से कार्यात्मक होती है प्रोग्रामिंग अभिव्यक्ति (प्रोग्रामिंग) जो सीधे उनके मूल्यांकित रूप का प्रतिनिधित्व करते हैं: परिणाम वृक्ष, जो प्रोसेसर के आउटपुट का आधार है।
एक विशिष्ट प्रोसेसर निम्नानुसार व्यवहार करता है। सबसे पहले, यह मानते हुए कि स्टाइलशीट पहले ही पढ़ी और तैयार की जा चुकी है, प्रोसेसर इनपुट एक्सएमएल दस्तावेज़ से एक स्रोत ट्री डेटा संरचना बनाता है। इसके बाद यह स्रोत ट्री के रूट नोड को संसाधित करता है, स्टाइलशीट में उस नोड के लिए सबसे अच्छा मेल खाने वाला टेम्पलेट ढूंढता है, और टेम्पलेट की सामग्री का मूल्यांकन करता है। प्रत्येक टेम्प्लेट में निर्देश आम तौर पर प्रोसेसर को या तो परिणाम ट्री में नोड्स बनाने के लिए निर्देशित करते हैं, या रूट नोड के समान ही स्रोत ट्री में अधिक नोड्स को प्रोसेस करने के लिए निर्देशित करते हैं। अंत में परिणाम ट्री को एक्सएमएल या एचटीएमएल टेक्स्ट के रूप में क्रमबद्ध किया जाता है।
एक्सपाथ
एक्सएसएलटी स्रोत दस्तावेज़ ट्री के सबसेट की पहचान करने और गणना करने के लिए XPath का उपयोग करता है। XPath उपनेमका की एक श्रृंखला भी प्रदान करता है, जिसे एक्सएसएलटी स्वयं आगे बढ़ाता है।
एक्सएसएलटी 1.0 XPath 1.0 का उपयोग करता है, जबकि एक्सएसएलटी 2.0 XPath 2.0 का उपयोग करता है। एक्सएसएलटी 3.0 या तो XPath 3.0 या 3.1 के साथ काम करेगा। 1.0 और 2.0 के मामले में, एक्सएसएलटी और XPath विनिर्देशों को एक ही तिथि पर प्रकाशित किया गया था। 3.0 के साथ, हालांकि, वे अब सिंक्रनाइज़ नहीं थे; XPath 3.0 अप्रैल 2014 में एक सिफारिश बन गया, उसके बाद फरवरी 2017 में XPath 3.1; एक्सएसएलटी 3.0 जून 2017 में आया।
एक्सक्वेरी तुलना
एक्सएसएलटी प्रकार्यात्मकताएँ एक्सक्वेरी के साथ ओवरलैप करती हैं, जिसे शुरू में एक्सएमएल दस्तावेज़ों के बड़े संग्रह के लिए एक क्वेरी भाषा के रूप में माना गया था।
एक्सएसएलटी 2.0 और एक्सक्वेरी 1.0 मानकों को W3C के भीतर अलग-अलग कार्य समूहों द्वारा विकसित किया गया था, जहां उपयुक्त हो, एक सामान्य दृष्टिकोण सुनिश्चित करने के लिए मिलकर काम करना। वे समान डेटा मॉडल, टाइप सिस्टम और फ़ंक्शन लाइब्रेरी साझा करते हैं, और दोनों में XPath 2.0 को एक उपभाषा के रूप में शामिल किया गया है।
हालाँकि, दो भाषाएँ विभिन्न परंपराओं में निहित हैं और विभिन्न समुदायों की आवश्यकताओं को पूरा करती हैं। एक्सएसएलटी को मुख्य रूप से एक स्टाइलशीट भाषा के रूप में माना गया था जिसका प्राथमिक लक्ष्य मानव पाठक के लिए स्क्रीन पर, वेब पर (एक वेब टेम्पलेट के रूप में), या कागज पर एक्सएमएल को प्रस्तुत करना था। एक्सक्वेरी को मुख्य रूप से SQL की परंपरा में डेटाबेस क्वेरी भाषा के रूप में माना गया था।
क्योंकि दो भाषाएँ विभिन्न समुदायों में उत्पन्न होती हैं, एक्सएसएलटी इसकी हैंडलिंग में अधिक मजबूत है अधिक लचीली संरचना के साथ वर्णनात्मक दस्तावेज़ों की, जबकि एक्सक्वेरी अपने डेटा हैंडलिंग में अधिक मजबूत है, उदाहरण के लिए जब रिलेशनल जॉइन करते हैं।[21]
== मीडिया प्रकार == <output>
ई> तत्व वैकल्पिक रूप से विशेषता ले सकता है media-type
, जो किसी को परिणामी आउटपुट के लिए इंटरनेट मीडिया प्रकार (या 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]
उदाहरण
ये उदाहरण निम्नलिखित इनकमिंग एक्सएमएल दस्तावेज़<syntaxhighlight lang= एक्सएमएल > का उपयोग करते हैं <?एक्सएमएल संस्करण = 1.0 ?> <व्यक्ति>
<व्यक्ति उपयोगकर्ता नाम = JS1> <नाम>जॉन</name> <परिवार-नाम>स्मिथ</परिवार-नाम> </व्यक्ति> <व्यक्ति उपयोगकर्ता नाम = MI1> <नाम>मोरका</name> <परिवार-नाम>इस्मिन्शियस</परिवार-नाम> </व्यक्ति>
</व्यक्ति> </वाक्यविन्यास हाइलाइट>
उदाहरण 1 (एक्सएमएल को एक्सएमएल में बदलना)
यह एक्सएसएलटी स्टाइलशीट एक्सएमएल दस्तावेज़ को रूपांतरित करने के लिए टेम्प्लेट प्रदान करता है: <syntaxhighlight lang= एक्सएमएल > <?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?> <xsl:stylesheet एक्सएमएलns:xsl= http://www.w3.org/1999/XSL/Transform version= 1.0 >
<xsl: आउटपुट मेथड = एक्सएमएल इंडेंट = हाँ />
<xsl: साँचा मिलान = /व्यक्तियों > <जड़> <xsl:apply-templates select= person /> </ जड़> </xsl: साँचा>
<xsl: टेम्पलेट मैच = व्यक्ति> <नाम उपयोगकर्ता नाम = {@उपयोगकर्ता नाम}> <xsl: चयन का मूल्य = नाम /> </ नाम> </xsl: साँचा>
</xsl: स्टाइलशीट> </वाक्यविन्यास हाइलाइट>
इसका मूल्यांकन एक नए एक्सएमएल दस्तावेज़ में होता है, जिसमें एक और संरचना होती है:
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> <?एक्सएमएल संस्करण = 1.0 एन्कोडिंग = UTF-8 ?> <जड़>
<नाम उपयोगकर्ता नाम = JS1> जॉन </ नाम> <नाम उपयोगकर्ता नाम = MI1> मोरका </ नाम>
</ जड़> </वाक्यविन्यास हाइलाइट>
उदाहरण 2 (एक्सएमएल को एक्सएचटीएमएल में बदलना)
निम्न उदाहरण एक्सएसएलटी फ़ाइल संसाधित कर रहा है <वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> <?एक्सएमएल संस्करण = 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> <शरीर>
व्यक्ति
<उल>
</शरीर> </एचटीएमएल> </वाक्यविन्यास हाइलाइट> वेब ब्राउजर में प्रस्तुत किए जाने पर यह एक्सएचटीएमएल नीचे आउटपुट उत्पन्न करता है।
एक वेब ब्राउज़र के लिए प्रदर्शन पर एक एक्सएमएल दस्तावेज़ में XSL परिवर्तन लागू करने में सक्षम होने के लिए, एक एक्सएमएल स्टाइलशीट प्रसंस्करण निर्देश एक्सएमएल में सम्मिलित किया जा सकता है। इसलिए, उदाहरण के लिए, यदि उपरोक्त उदाहरण 2 में स्टाइलशीट example2.xsl के रूप में उपलब्ध थी, तो निम्नलिखित निर्देश मूल इनकमिंग एक्सएमएल में जोड़े जा सकते हैं:[26]
<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> <?एक्सएमएल-stylesheet href= example2.xsl type= text/xsl ?> </वाक्यविन्यास हाइलाइट>
इस उदाहरण में, text/xsl
W3C विनिर्देशों के अनुसार तकनीकी रूप से गलत है[26](जो कहते हैं कि प्रकार होना चाहिए application/एक्सएसएलटी+एक्सएमएल
), लेकिन यह एकमात्र मीडिया प्रकार है जो 2009 तक सभी ब्राउज़रों में व्यापक रूप से समर्थित है, और 2021 में स्थिति अपरिवर्तित है।
प्रोसेसर कार्यान्वयन
- अल्टोवा से रैप्टरएक्सएमएल एक एक्सएसएलटी 3.0 प्रोसेसर है जो एक्सएमएलस्पाई डेवलपमेंट टूलकिट में उपलब्ध है और एक फ्री-स्टैंडिंग सर्वर कार्यान्वयन के रूप में, एक रेस्ट इंटरफेस का उपयोग करके लागू किया गया है।
- आईबीएम, आईबीएम WebSphere DataPower SOA उपकरण ब्रांड के तहत एक विशेष-उद्देश्य वाले हार्डवेयर उपकरण में एम्बेड किए गए एक्सएसएलटी प्रसंस्करण की पेशकश करता है।
- libएक्सएसएलटी मेरा लाइसेंस के तहत जारी एक मुफ्त सॉफ्टवेयर पुस्तकालय (कम्प्यूटिंग) है जिसे व्यावसायिक अनुप्रयोगों में पुन: उपयोग किया जा सकता है। यह libएक्सएमएल पर आधारित है और गति और सुवाह्यता के लिए C (प्रोग्रामिंग भाषा) में लागू किया गया है। यह एक्सएसएलटी 1.0 और Eएक्सएसएलटी एक्सटेंशन को सपोर्ट करता है।[27]
- इसे एक्सएसएलटीproc के माध्यम से कमांड लाइन पर इस्तेमाल किया जा सकता है[28] जो macOS में शामिल है[29] और कई लिनक्स वितरण, और साइगविन के माध्यम से माइक्रोसॉफ़्ट विंडोज़ पर इस्तेमाल किया जा सकता है।[30]
- वेबकिट और ब्लिंक (लेआउट इंजन) लेआउट इंजन, उदाहरण के लिए क्रमशः एप्पल सफारी और Google क्रोम वेब ब्राउज़र में उपयोग किए जाते हैं, एक्सएसएल ट्रांसफॉर्मेशन करने के लिए libएक्सएसएलटी लाइब्रेरी का उपयोग करते हैं।[31]
- भाषा बाध्यकारी पायथन (प्रोग्रामिंग भाषा) के लिए मौजूद है,[32] पर्ल,[33] रूबी (प्रोग्रामिंग भाषा),[34] पीएचपी,[35] सामान्य लिस्प,[36] टीसीएल,[37] और सी ++।[38]
- Microsoft दो एक्सएसएलटी प्रोसेसर प्रदान करता है (दोनों एक्सएसएलटी 1.0 केवल)। पहले का प्रोसेसर MSएक्सएमएल COM इंटरफेस प्रदान करता है; MSएक्सएमएल 4.0 से इसमें कमांड लाइन उपयोगिता भी शामिल है
msxsl.exe
.[39] .NET रनटाइम में एक अलग बिल्ट-इन एक्सएसएलटी प्रोसेसर शामिल हैSystem.एक्सएमएल.Xsl
पुस्तकालय। - Saxon एक्सएसएलटी एक एक्सएसएलटी 3.0 और एक्सक्वेरी 3.1 प्रोसेसर है जिसमें खुला स्रोत सॉफ्टवेयर है। स्टैंड-अलोन ऑपरेशन के लिए ओपन-सोर्स और मालिकाना सॉफ़्टवेयर संस्करण और Java (प्रोग्रामिंग लैंग्वेज), JavaScript और .NET के लिए। एक अलग उत्पाद सैक्सन-जेएस[40] Node.js और ब्राउज़र में एक्सएसएलटी 3.0 प्रोसेसिंग की पेशकश करता है।
- Xalan जावा और C++ के लिए उपलब्ध Apache Software Foundation का एक ओपन सोर्स एक्सएसएलटी 1.0 प्रोसेसर है। ओरेकल से मानक जावा वितरण में Xalan प्रोसेसर का एक संस्करण डिफ़ॉल्ट एक्सएसएलटी प्रोसेसर के रूप में शामिल है।
- वेब ब्राउज़र: सफारी, क्रोम, फायरफॉक्स, ओपेरा और इंटरनेट एक्सप्लोरर सभी एक्सएसएलटी 1.0 (केवल) को सपोर्ट करते हैं। ब्राउज़र एक्सएमएल फ़ाइलों का ऑन-द-फ्लाई ट्रांसफ़ॉर्मेशन कर सकते हैं और ब्राउज़र विंडो में ट्रांसफ़ॉर्मेशन आउटपुट प्रदर्शित कर सकते हैं। यह या तो एक्सएमएल दस्तावेज़ में XSL एम्बेड करके या एक्सएमएल दस्तावेज़ से XSL निर्देशों वाली फ़ाइल को संदर्भित करके किया जाता है। बाद वाला अपने सुरक्षा मॉडल के कारण स्थानीय फ़ाइल सिस्टम की फ़ाइलों पर Chrome के साथ काम नहीं कर सकता है।[41]
- Adobe AXSLE इंजन, एक मालिकाना पुस्तकालय
प्रदर्शन
अधिकांश शुरुआती एक्सएसएलटी प्रोसेसर दुभाषिए थे। हाल ही में, लक्ष्य के रूप में पोर्टेबल इंटरमीडिएट भाषाओं (जैसे जावा बाइटकोड या .NET सामान्य मध्यवर्ती भाषा) का उपयोग करते हुए, कोड जेनरेशन तेजी से सामान्य हो रहा है। हालांकि, यहां तक कि व्याख्यात्मक उत्पाद आम तौर पर अलग-अलग विश्लेषण और निष्पादन चरणों की पेशकश करते हैं, जिससे एक अनुकूलित अभिव्यक्ति ट्री को स्मृति में बनाया जा सकता है और कई परिवर्तन करने के लिए पुन: उपयोग किया जा सकता है। यह ऑनलाइन प्रकाशन अनुप्रयोगों में पर्याप्त प्रदर्शन लाभ देता है, जहां एक ही परिवर्तन प्रति सेकंड कई बार विभिन्न स्रोत दस्तावेजों पर लागू होता है।[42] यह पृथक्करण एक्सएसएलटी प्रोसेसिंग API (जैसे एक्सएमएल प्रोसेसिंग के लिए Java API) के डिज़ाइन में परिलक्षित होता है।
शुरुआती एक्सएसएलटी प्रोसेसर में बहुत कम अनुकूलन थे। स्टाइलशीट दस्तावेज़ों को दस्तावेज़ ऑब्जेक्ट मॉडल में पढ़ा गया और प्रोसेसर सीधे उन पर कार्य करेगा। XPath इंजन भी अनुकूलित नहीं थे। हालाँकि, एक्सएसएलटी प्रोसेसर कार्यात्मक प्रोग्रामिंग भाषाओं और डेटाबेस क्वेरी भाषाओं में पाई जाने वाली अनुकूलन तकनीकों का उपयोग करते हैं, जैसे कि एक अभिव्यक्ति ट्री की स्थिर पुनर्लेखन (जैसे, गणनाओं को लूप से बाहर ले जाने के लिए), और मध्यवर्ती परिणामों की मेमोरी फ़ुटप्रिंट को कम करने के लिए आलसी पाइपलाइन मूल्यांकन (और जल्दी बाहर निकलने की अनुमति दें जब प्रोसेसर एक अभिव्यक्ति का मूल्यांकन कर सकता है जैसे following-sibling::*[1]
सभी उप-अभिव्यक्तियों के पूर्ण मूल्यांकन के बिना)। कई प्रोसेसर पेड़ के प्रतिनिधित्व का भी उपयोग करते हैं जो काफी अधिक कुशल होते हैं (अंतरिक्ष और समय दोनों में)[43] सामान्य-उद्देश्य वाले DOM कार्यान्वयनों की तुलना में।
जून 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 libraries
- Eएक्सएसएलटी is a widespread community initiative to provide extensions to एक्सएसएलटी.
- FXSL is a library implementing support for Higher-order functions in एक्सएसएलटी. FXSL is written in एक्सएसएलटी itself.
- The एक्सएसएलटी Standard Library एक्सएसएलटी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 library that transforms एक्सएमएल with एक्सएसएलटी in the browser.