एक्सएसएलटी: Difference between revisions
From Vigyanwiki
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 तक, | अगस्त 2022 तक, लैंग्वेज का सबसे हाल ही का स्थिर संस्करण एक्सएसएलटी 3.0 है, जिसने जून 2017 में सिफारिश की स्थिति प्राप्त की थी। | ||
एक्सएसएलटी 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> | एक्सएसएलटी 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> | ||
| Line 35: | Line 35: | ||
एक एक्सएसएलटी दस्तावेज़ के परिवर्तन के लिए, मूल दस्तावेज़ को नहीं बदला जाता है, जबकि, उपस्थित दस्तावेज़ की सामग्री के आधार पर एक नया दस्तावेज़ बनाया जाता है।<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>{{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>{{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: एक्सएसएलटी [[विश्वव्यापी वेब संकाय]] (डब्ल्यू3सी) के [[एक्स्टेंसिबल स्टाइलशीट लैंग्वेज|विस्तारणीय शैली पत्रक | * एक्सएसएलटी 1.0: एक्सएसएलटी [[विश्वव्यापी वेब संकाय]] (डब्ल्यू3सी) के [[एक्स्टेंसिबल स्टाइलशीट लैंग्वेज|विस्तारणीय शैली पत्रक लैंग्वेज]] (एक्सएसएल) के 1998-1999 के विकास प्रयास का हिस्सा था, एक ऐसी परियोजना जिसने [[XSL-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 बनाने के लिए [[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 में सबसे महत्वपूर्ण नवप्रवर्तनों में सम्मलित है: | *एक्सएसएलटी 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 56: | Line 56: | ||
== डिजाइन और प्रसंस्करण मॉडल == | == डिजाइन और प्रसंस्करण मॉडल == | ||
[[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 72: | Line 72: | ||
एक्स क्वेरी एक्स क्वेरी और एक्सएसएलटी की तुलना}} | एक्स क्वेरी एक्स क्वेरी और एक्सएसएलटी की तुलना}} | ||
एक्सएसएलटी प्रकार्यात्मकताएँ एक्सक्वेरी के साथ अतिव्याप्त करती है, जिसे प्रारंभ में एक्सएमएल दस्तावेज़ों के बड़े संग्रह के लिए एक क्वेरी | एक्सएसएलटी प्रकार्यात्मकताएँ एक्सक्वेरी के साथ अतिव्याप्त करती है, जिसे प्रारंभ में एक्सएमएल दस्तावेज़ों के बड़े संग्रह के लिए एक क्वेरी लैंग्वेज के रूप में माना गया था। | ||
एक्सएसएलटी 2.0 और एक्सक्वेरी 1.0 मानकों को [[W3C|डब्ल्यू3सी]] के भीतर अलग-अलग कार्य समूहों द्वारा विकसित किया गया था, जहां उपयुक्त में, एक सामान्य दृष्टिकोण सुनिश्चित करने के लिए मिलकर काम करते थे। वे समान डेटा मॉडल, टाइप प्रणाली और फ़ंक्शन लाइब्रेरी साझा करते थे, और दोनों में एक्सपाथ 2.0 को एक | एक्सएसएलटी 2.0 और एक्सक्वेरी 1.0 मानकों को [[W3C|डब्ल्यू3सी]] के भीतर अलग-अलग कार्य समूहों द्वारा विकसित किया गया था, जहां उपयुक्त में, एक सामान्य दृष्टिकोण सुनिश्चित करने के लिए मिलकर काम करते थे। वे समान डेटा मॉडल, टाइप प्रणाली और फ़ंक्शन लाइब्रेरी साझा करते थे, और दोनों में एक्सपाथ 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> | ||
== मीडिया प्रकार == | == मीडिया प्रकार == | ||
| Line 91: | Line 91: | ||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | ||
<persons> | <persons> | ||
<person username="JS1"> | |||
<name>John</name> | |||
<family-name>Smith</family-name> | |||
</person> | |||
<person username="MI1"> | |||
<name>Morka</name> | |||
<family-name>Ismincius</family-name> | |||
</person> | |||
</persons> | </persons> | ||
=== उदाहरण 1 (एक्सएमएल को एक्सएमएल में बदलना) === | === उदाहरण 1 (एक्सएमएल को एक्सएमएल में बदलना) === | ||
| Line 104: | Line 104: | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
<xsl:stylesheet xmlns:xsl="<nowiki>http://www.w3.org/1999/XSL/Transform</nowiki>" version="1.0"> | <xsl:stylesheet xmlns:xsl="<nowiki>http://www.w3.org/1999/XSL/Transform</nowiki>" version="1.0"> | ||
<xsl:output method="xml" indent="yes"/> | |||
<xsl:template match="/persons"> | |||
<root> | |||
<xsl:apply-templates select="person"/> | |||
</root> | |||
</xsl:template> | |||
<xsl:template match="person"> | |||
<name username="{@username}"> | |||
<xsl:value-of select="name" /> | |||
</name> | |||
</xsl:template> | |||
</xsl:stylesheet> | </xsl:stylesheet> | ||
| Line 123: | Line 123: | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
<root> | <root> | ||
<name username="JS1">John</name> | |||
<name username="MI1">Morka</name> | |||
</root> | </root> | ||
| Line 132: | Line 132: | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
<xsl:stylesheet | <xsl:stylesheet | ||
version="1.0" | |||
xmlns:xsl=http://www.w3.org/1999/XSL/Transform | |||
xmlns=[http://www.w3.org/1999/xhtml http://www.w3.org/1999/xhtml>] > | |||
<xsl:output method="xml" indent="yes" encoding="UTF-8"/> | |||
<xsl:template match="/persons"> | |||
<html> | |||
<head> <title>Testing XML Example</title> </head> | |||