रिलैक्स एनजी

कम्प्यूटिंग में, RELAX NG (XML अगली पीढ़ी के लिए नियमित भाषा) XML के लिए एक XML स्कीमा भाषा है- एक RELAX NG स्कीमा XML दस्तावेज़ की संरचना और सामग्री के लिए एक पैटर्न निर्दिष्ट करती है। एक RELAX NG स्कीमा स्वयं एक XML दस्तावेज़ है, लेकिन RELAX NG एक लोकप्रिय कॉम्पैक्ट, गैर-XML सिंटैक्स भी प्रदान करता है। अन्य XML स्कीमा की तुलना में #XML स्कीमा भाषाएँ RELAX NG को अपेक्षाकृत सरल माना जाता है।

यह 2001 और 2002 में OASIS (संगठन) RELAX NG तकनीकी समिति के एक समिति विनिर्देश द्वारा परिभाषित किया गया था, जो मकोतो मुराता के RELAX और जेम्स क्लार्क (XML विशेषज्ञ) के XML के लिए नियमित भाषा विवरण पर आधारित था,  और मानकीकरण/अंतर्राष्ट्रीय इंटरनेशनल इलेक्ट्रोटेक्नीकल कमीशन के लिए अंतर्राष्ट्रीय मानक अंतर्राष्ट्रीय संगठन के भाग दो द्वारा भी: दस्तावेज़ स्कीमा परिभाषा भाषाएँ (DSDL)।  ISO/IEC 19757-2 को ISO/IEC JTC 1/SC 34 द्वारा विकसित किया गया था और 2003 में इसके पहले संस्करण में प्रकाशित किया गया था।

स्कीमा उदाहरण
मान लीजिए कि हम किसी पुस्तक के लिए अत्यंत सरल XML मार्कअप योजना को परिभाषित करना चाहते हैं: एक पुस्तक को एक या अधिक पृष्ठों के अनुक्रम के रूप में परिभाषित किया जाता है; प्रत्येक पृष्ठ में केवल पाठ होता है। एक नमूना XML दस्तावेज़ उदाहरण हो सकता है:

<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल>  यह पहला पेज है। यह पेज दो है।  

एक्सएमएल सिंटैक्स
एक रिलैक्स एनजी स्कीमा एक नेस्टेड संरचना में एक मूल तत्व को परिभाषित करके लिखा जा सकता है जिसमें आगे की तत्व परिभाषाएं होती हैं, जिसमें स्वयं एम्बेडेड परिभाषाएं हो सकती हैं। इस शैली में हमारी पुस्तक के लिए एक स्कीमा, पूर्ण XML सिंटैक्स का उपयोग करते हुए लिखा जाएगा:

<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> <तत्व का नाम = पुस्तक xmlns = http://relaxng.org/ns/structure/1.0>  <तत्व का नाम = पृष्ठ> <पाठ/>    

नेस्टेड संरचना कई उपस्तरों के साथ बोझिल हो जाती है और पुनरावर्ती तत्वों को परिभाषित नहीं कर सकती है, इसलिए अधिकांश जटिल RELAX NG स्कीमा स्कीमा में अलग से स्थित नामित पैटर्न परिभाषाओं के संदर्भों का उपयोग करते हैं। यहाँ, एक चपटा स्कीमा ठीक उसी पुस्तक मार्कअप को पिछले उदाहरण के रूप में परिभाषित करता है:

<वाक्यविन्यास प्रकाश लैंग = एक्सएमएल> <व्याकरण xmlns= http://relaxng.org/ns/structure/1.0 >  <तत्व का नाम = पुस्तक>     <नाम परिभाषित करें = पेज> <तत्व का नाम = पृष्ठ> <पाठ/>    </वाक्यविन्यास हाइलाइट>

कॉम्पैक्ट सिंटैक्स
RELAX NG कॉम्पैक्ट सिंटैक्स एक गैर-XML प्रारूप है जो विस्तारित बैकस-नौर फॉर्म और नियमित अभिव्यक्ति से प्रेरित है, जिसे डिज़ाइन किया गया है ताकि इसे स्पष्ट रूप से इसके XML समकक्ष में अनुवादित किया जा सके, और फिर से, संरचना और अर्थ में एक-से-एक पत्राचार के साथ, ठीक उसी तरह जैसे Simple Outline XML (SOX) XML से संबंधित है। यह दस्तावेज़ प्रकार की परिभाषाओं के सिंटैक्स के साथ कई सुविधाएँ साझा करता है। यहाँ उपरोक्त स्कीमा का कॉम्पैक्ट रूप है:

<वाक्यविन्यास लैंग = आरएनसी> तत्व पुस्तक { तत्व पृष्ठ {पाठ} + } </वाक्यविन्यास हाइलाइट>

नामांकित पैटर्न के साथ, इसे चपटा किया जा सकता है:

<वाक्यविन्यास लैंग = आरएनसी> प्रारंभ = तत्व पुस्तक { पृष्ठ + } पृष्ठ = तत्व पृष्ठ {पाठ} </वाक्यविन्यास हाइलाइट>

एक कॉम्पैक्ट रिलैक्स एनजी पार्सर इन दोनों को एक ही पैटर्न के रूप में मानेगा।

W3C XML स्कीमा
के साथ तुलना

हालांकि RELAX NG विनिर्देश लगभग उसी समय W3C XML स्कीमा (W3C) विनिर्देश के रूप में विकसित किया गया था, बाद वाला यकीनन बेहतर ज्ञात था और ओपन-सोर्स और मालिकाना XML पार्सर और संपादकों दोनों में अधिक व्यापक रूप से लागू किया गया था जब यह W3C सिफारिश बन गया था। 2001. तब से, हालांकि, RELAX NG समर्थन ने तेजी से XML सॉफ़्टवेयर में अपना रास्ता खोज लिया है, और इसकी स्वीकृति लोकप्रिय दस्तावेज़-केंद्रित मार्कअप भाषाओं जैसे DocBook, पाठ एन्कोडिंग पहल दिशानिर्देश, OpenDocument के लिए एक प्राथमिक स्कीमा के रूप में अपनाने से सहायता प्राप्त हुई है।, और ईपीयूबी।

RELAX NG, W3C XML स्कीमा के साथ कई विशेषताएं साझा करता है जो पारंपरिक दस्तावेज़ प्रकार परिभाषाओं से अलग करती हैं: डेटा प्रकार, नियमित अभिव्यक्ति समर्थन, नाम स्थान समर्थन, जटिल परिभाषाओं को संदर्भित करने की क्षमता।

फ़ाइल नाम एक्सटेंशन
अनौपचारिक प्रथा के अनुसार, नियमित सिंटैक्स में RELAX NG स्कीमा को आमतौर पर फ़ाइल नाम एक्सटेंशन .rng के साथ नामित किया जाता है। कॉम्पैक्ट सिंटैक्स में स्कीमा के लिए, एक्सटेंशन .rnc का उपयोग किया जाता है।

नियतत्ववाद
आराम से एनजी स्कीमा जरूरी नहीं हैं निर्धारक या स्पष्ट।

आराम से एनजी को डीटीडी में परिवर्तित करना
रिलैक्स एनजी स्कीमा को ट्रांग (सॉफ्टवेयर) लागू करके डीटीडी में परिवर्तित किया जा सकता है जिसे यहां पाया जा सकता है: । ट्रांग के लिए मैनुअल पर स्थित है। ध्यान दें कि Trang OASIS (संगठन) डार्विन सूचना टंकण वास्तुकला 1.3 स्कीमा को DTDs में बदलने में असमर्थ है, जैसे संदेशों के साथ विफल:

क्षमा करें, कंबाइन = पसंद के साथ परिभाषाओं का संयोजन समर्थित नहीं है

यह भी देखें

 * एक्सएमएल स्कीमा
 * दस्तावेज़ प्रकार की परिभाषा (दस्तावेज़ प्रकार की परिभाषा)
 * दस्तावेज़ संरचना विवरण
 * XML स्कीमा (W3C)
 * स्कीमेट्रॉन
 * ओडीडी (एक दस्तावेज़ यह सब करता है)
 * एसएसएक्सएमएल

बाहरी संबंध

 * RELAX NG home page
 * "The Design of RELAX NG" by James Clark
 * RELAX NG tutorial for the XML syntax
 * RELAX NG tutorial for the compact syntax
 * Design patterns for structuring XML documents
 * RELAX NG Book by Eric van der Vlist, released under the GNU Free Documentation License
 * Relax NG Reference by ZVON
 * RELAX NG Java community projects at java.net
 * Sun Multi-Schema Validator (MSV) open-source Java XML toolkit
 * Relax NG Compact Syntax validator open-source C program
 * XSD to Relax NG Converter Web-based converter
 * https://github.com/relaxng/jing-trang