एक्सएमएल परिवर्तन भाषा

एक्सएमएल (XML) रूपांतरण भाषा एक प्रोग्रामिंग भाषा है जिसे विशेष रूप से इनपुट एक्सएमएल दस्तावेज़ को आउटपुट दस्तावेज़ में बदलने के लिए डिज़ाइन किया गया है जो कुछ विशिष्ट लक्ष्य को पूरा करता है।

परिवर्तन की दो विशेष परिस्थितियाँ हैं-
 * एक्सएमएल से एक्सएमएल- आउटपुट दस्तावेज एक एक्सएमएल दस्तावेज है।
 * एक्सएमएल से डेटा- आउटपुट दस्तावेज़ एक बाइट स्ट्रीम है।

एक्सएमएल से एक्सएमएल
जैसे कि एक्सएमएल से एक्सएमएल रूपांतरण एक एक्सएमएल दस्तावेज़ को आउटपुट करता है, एक्सएमएल से एक्सएमएल रूपांतरण श्रृंखलाएँ रूपांतरण पाइपलाइन बनाती हैं।

एक्सएमएल से डेटा
एक्सएमएल (एक्स्टेंसिबल मार्कअप लैंग्वेज) से डेटा रूपांतरण में कुछ महत्वपूर्ण स्थितियाँ सम्मिलित हैं। सबसे उल्लेखनीय है एक्सएमएल से एचटीएमएल (HTML) (हाइपरटेक्स्ट मार्कअप लैंग्वेज), क्योंकि एचटीएमएल दस्तावेज़ एक्सएमएल दस्तावेज़ नहीं है।

एसजीएमएल (SGML) उत्पत्ति
प्रारंभिक रूपांतरण भाषाएं एसजीएमएल प्रोफ़ाइल के रूप में एक्सएमएल के आगमन से पहले की हैं, और इस प्रकार विशेष रूप से एक्सएमएल के स्थान पर मनमाने ढंग से एसजीएमएल में इनपुट स्वीकार करती हैं। इनमें एसजीएमएल-से-एसजीएमएल लिंक प्रक्रिया परिभाषा (एलपीडी) प्रारूप सम्मिलित है, जिसे एसजीएमएल मानक के भाग के रूप में परिभाषित किया गया है एसजीएमएल (लेकिन एक्सएमएल नहीं) में, एलपीडी (LPD) फ़ाइल को LINKTYPE घोषणा द्वारा दस्तावेज़ से ही संदर्भित किया जा सकता है, डीटीडी (DTD) के लिए उपयोग की जाने वाली DOCTYPE घोषणा के समान। एलपीडी की कुछ कमियों को दूर करने वाली ऐसी अन्य रूपांतरण भाषाओं में दस्तावेज़ शैली शब्दार्थ और विशिष्टता भाषा (डीएसएसएसएल) और ओमनीमार्क सम्मिलित हैं। नई रूपांतरण भाषाएँ विशेष रूप से एक्सएमएल को लक्षित करती हैं, और इस प्रकार केवल एक्सएमएल को स्वीकार करती हैं, मनमाने ढंग से एसजीएमएल को नहीं।

विद्यमान भाषाएँ

 * एक्सएसएलटी- एक्सएसएलटी (XSLT) सबसे प्रसिद्ध एक्सएमएल रूपांतरण भाषा है। एक्सएसएलटी 1.0 W3C अनुशंसा को XPath 1.0 के साथ 1999 में प्रकाशित किया गया था, और तब से इसे व्यापक रूप से लागू किया गया है। एक्सएसएलटी 2.0 जनवरी 2007 से W3C अनुशंसा बन गयी है और सैक्सन 8 जैसे विनिर्देश के कार्यान्वयन पहले से ही उपलब्ध हैं।
 * एक्सक्वेरी (XQuery)- नाम में "क्वेरी" होने के बावजूद, एक्सक्वेरी एक पूर्ण कार्यात्मक भाषा है। यह माइक्रोसॉफ्ट, ओरेकल, डीबी 2 (DB2), मार्कलॉजिक इत्यादि द्वारा उपयोग किया जाने वाला एक वास्तविक मानक है, यह एक्सआरएक्स (XRX) वेब प्रोग्रामिंग मॉडल की नींव है, और इसमें संस्करण 1.0 के लिए W3C अनुशंसा है। एक्सक्वेरी को एक्सएसएलटी की तरह एक्सएमएल में नहीं लिखा गया है, इसलिए इसका सिंटैक्स बहुत हल्का है। यह भाषा XPath 2.0 पर आधारित है। एक्सक्वेरी प्रोग्राम में एक्सएसएलटी की तरह दुष्प्रभाव नहीं हो सकते हैं और यह लगभग समान क्षमताएं (उदाहरण के लिए- चर और फ़ंक्शन घोषित करना, अनुक्रमों पर पुनरावृत्ति करना, W3C स्कीमा प्रकारों का उपयोग करना), प्रदान करता है भले ही प्रोग्राम सिंटैक्स काफी भिन्न हो। एक्सक्वेरी तर्क आधारित है, फॉर (FOR), वेयर (WHERE) और फ़ंक्शन संरचना (उदाहरण के लिए fn:concat(" ", generate-body, " ")) का उपयोग करते हुए। इसके विपरीत, एक्सएसएलटी डेटा-संचालित (पुश प्रोसेसिंग मॉडल) है जहां इनपुट दस्तावेज़ की कुछ शर्तें कोड को उस क्रम में निष्पादित करने के स्थान पर टेम्पलेट्स के निष्पादन को ट्रिगर करती हैं जिसमें इसे लिखा गया है।
 * एक्सप्रोक (XProc) - एक्सप्रोक एक एक्सएमएल पाइपलाइन भाषा है। XProc 1.0 W3C अनुशंसा मई 2010 में प्रकाशित की गई थी।
 * एक्सएमएल दस्तावेज़ रूपांतरण- एक्सएमएल दस्तावेज़ों पर सरल रूपांतरण करने के लिए एक माइक्रोसॉफ्ट मानक है। मुख्य रूप से IIS Web.config फ़ाइलें (कॉन्फिग रूपांतरण) बनाने के लिए, अन्य कार्यान्वयन इसे जेनेरिक कॉन्फ़िग फ़ाइलों के लिए निर्माण समय (स्लो चीता) या कमांड लाइन (CTT) से उपयोग करने की अनुमति देते हैं।
 * एसटीएक्स- एसटीएक्स (एक्सएमएल के लिए स्ट्रीमिंग रूपांतरण) एक्सएसएलटी से प्रेरित है लेकिन इसे वन-पास रूपांंतरण प्रक्रिया की अनुमति देने के लिए डिज़ाइन किया गया है जो स्ट्रीमिंग को कभी नहीं रोकता है। कार्यान्वयन जावा (जूस्ट) और पर्ल (एक्सएमएल::एसटीएक्स) में उपलब्ध हैं।
 * एक्सएमएल स्क्रिप्ट- एक्सएमएल स्क्रिप्ट पर्ल से प्रेरित एक अनिवार्य स्क्रिप्टिंग भाषा है जो एक्सएमएल सिंटैक्स का उपयोग करती है। एक्सएमएल स्क्रिप्ट इनपुट ट्री से नोड्स का चयन करने के लिए XPath और उसके स्वामित्व वाले DSLPath का समर्थन करती है।
 * एफएक्सटी- एफएक्सटी एक कार्यात्मक एक्सएमएल रूपांतरण उपकरण है, जिसे मानक एमएल (ML) में कार्यान्वित किया गया है।
 * एक्सड्यूस (XDuce)- एक्सएसएलटी की तुलना में एक्सड्यूस हल्के सिंटैक्स वाली एक टाइप की गई भाषा है। यह एमएल (ML) में लिखा गया है
 * सीड्यूस(CDuce)- सीड्यूस एक्सड्यूस को एक सामान्य-उद्देश्यीय कार्यात्मक प्रोग्रामिंग भाषा तक विस्तारित करता है, सीड्यूस होमपेज देखें।
 * एक्सएसीटी (XACT)- एक्सएसीटी एक्सएमएल रूपांतरण प्रोग्रामिंग के लिए एक जावा-आधारित प्रणाली है। उल्लेखनीय विशेषताओं में एक्सएमएल टेम्पलेट्स को अपरिवर्तनीय मानों के रूप में और एक्सएमएल स्कीमा प्रकारों (एक्सएसीटी होम पेज) का उपयोग करके प्रकार की सुरक्षा सुनिश्चित करने के लिए एक स्थिर विश्लेषण सम्मिलित है।
 * एक्स-फन (XFun)- एक्स-फन एक कार्यात्मक भाषा है एक्स-फन, जो श्रेडिंग निर्देश प्रदान करते हुए एक्सएमएल डेटा ट्री के बीच रूपांतरणों को परिभाषित करता है। एक्स-फन को आउटपुट श्रेडिंग के साथ फ्रिस्क की एक्सस्ट्रीम भाषा के विस्तार के रूप में समझा जा सकता है, जबकि पैटर्न मिलान को XPath अभिव्यक्तियों के साथ ट्री नेविगेशन द्वारा प्रतिस्थापित किया जाता है।
 * एक्सस्ट्रीम (XStream)- एक्सस्ट्रीम सीएएमएल (CAML) पर आधारित एक्सएमएल दस्तावेजों के लिए एक सरल कार्यात्मक रूपांतरण भाषा है। एक्सस्ट्रीम में लिखे गए एक्सएमएल रूपांतरणों का मूल्यांकन स्ट्रीमिंग में किया जाता है- जब संभव हो, आउटपुट के कुछ भागों की गणना और उत्पादन किया जाता है जबकि इनपुट दस्तावेज़ अभी भी पार्स किया जा रहा है। इस प्रकार कुछ रूपांतरणों को बड़े एक्सएमएल दस्तावेज़ों पर लागू किया जा सकता है जो मेमोरी में भी फिट नहीं होंगे। एक्सस्ट्रीम कंपाइलर को सीईसीआईएलएल (CeCILL) मुफ्त सॉफ्टवेयर लाइसेंस की शर्तों के तहत वितरित किया जाता है।
 * एक्सटैटिक (Xtatic)- एक्सटैटिक एक्सड्यूस से C# तक विधियों को लागू करता है, एक्सटैटिक होमपेज देखें।
 * एचएएक्सएमएल (HaXml)- एचएएक्सएमएल हास्केल में एक्सएमएल रूपांतरण लिखने के लिए एक लाइब्रेरी और उपकरण का संग्रह है। 1999 में प्रकाशित एचएएक्सएमएल के बारे में यह पेपर और यह आईबीएम (IBM) डेवलपरवर्क्स लेख भी देखें। आधुनिक एचएक्सएमएल (HXML) और हास्केल एक्सएमएल टूलबॉक्स (एचएक्सटी (HXT)) भी देखें, जो एचएएक्सएमएल और एचएक्सएमएल के विचारों पर आधारित है लेकिन एक्सएमएल प्रोसेसिंग के लिए अधिक सामान्य दृष्टिकोण अपनाता है।
 * एक्सएमलैम्ब्डा- एक्सएमलैम्ब्डा (एक्सएमλ) का वर्णन एरिक मीजर और मार्क शील्ड्स द्वारा 1999 के पेपर में किया गया है। कोई कार्यान्वयन उपलब्ध नहीं है। एक्सएमलैम्ब्डा होम पेज देखें।
 * फ्लेएक्सएमएल (FleXML)- फ्लेएक्सएमएल एक एक्सएमएल प्रोसेसिंग भाषा है जिसे सबसे पहले क्रिस्टोफर रोज़ द्वारा कार्यान्वित किया गया था। इसका दृष्टिकोण डीटीडी (DTD) के नियमों के किसी भी उपसमूह के लिए प्रसंस्करण निर्देशों को निर्दिष्ट करते हुए एक्सएमएल डीटीडी में क्रियाएं जोड़ना है।
 * स्काला- स्काला एक सामान्य-उद्देश्य वाली कार्यात्मक और ऑब्जेक्ट-ओरिएंटेड भाषा है जो मानक एक्सएमएल लाइब्रेरीज़ के साथ-साथ एक्सएमएल पैटर्न मिलान, शाब्दिक और अभिव्यक्तियों के रूप में एक्सएमएल रूपांतरण के लिए विशिष्ट समर्थन प्रदान करती है।
 * एलआईएनक्यू (LINQ) से एक्सएमएल (XML)- एलआईएनक्यू से एक्सएमएल एक .NET 3.5 सिंटैक्स और प्रोग्रामिंग एपीआई (API) है जो C#, वीबी (VB) और कुछ अन्य .NET भाषाओं में उपलब्ध है। एलआईएनक्यू को मुख्य रूप से क्वेरी भाषा के रूप में डिज़ाइन किया गया है, लेकिन यह एक्सएमएल रूपांतरणों का भी समर्थन करता है।

यह भी देखें

 * फ़िल्टर (सॉफ़्टवेयर)
 * फ़िल्टर (यूनिक्स)
 * वेब टेम्पलेट
 * वेब टेम्पलेट सिस्टम
 * टेम्पलेट इंजन (वेब)
 * ट्राइटियम (प्रोग्रामिंग भाषा)