डाक्यूमेंट टाइप डिक्लेरेशन

एक डॉक्यूमेंट प्रकार की घोषणा, या DOCTYPE, निर्देश है जो विशेष XML या SGML डॉक्यूमेंट (उदाहरण के लिए, वेब पृष्ठ ) को डॉक्यूमेंट प्रकार की परिभाषा (DTD) के साथ जोड़ता है (उदाहरण के लिए, HTML के विशेष संस्करण की औपचारिक परिभाषा। HTML) 2.0 - 4.0)। डॉक्यूमेंट के क्रमबद्ध रूप में, यह मार्कअप भाषा की छोटी स्ट्रिंग के रूप में प्रकट होता है जो विशेष सिंटैक्स के अनुरूप होता है।

आधुनिक वेब ब्राउज़र में HTML ब्राउज़र इंजन DOCTYPE स्नीफिंग या स्विचिंग करते हैं, जिसमें डॉक्यूमेंट में DOCTYPE के रूप में कार्य किया जाता है  लेआउट मोड निर्धारित करता है, जैसे विचित्र मोड या मानक मोड।   e> HTML5 का क्रमांकन, जो SGML-आधारित नहीं है, केवल मोड चयन के लिए DOCTYPE का उपयोग करता है। चूंकि वेब ब्राउज़र सामान्य-उद्देश्य वाले DTD-आधारित पार्सर्स के अतिरिक्त विशेष-उद्देश्य वाले HTML पार्सर्स के साथ कार्यान्वित किए जाते हैं, इसलिए वे DTDs का उपयोग नहीं करते हैं और URL प्रदान किए जाने पर भी उन तक कभी भी पहुंच नहीं पाते हैं। DOCTYPE को HTML5 में अधिकांशतः अपितु आवश्यक हेडर के रूप में बनाए रखा जाता है, जो सामान्य ब्राउज़रों में मानक मोड को ट्रिगर करने के लिए होता है।

सिंटेक्स
डॉक्यूमेंट प्रकार की घोषणा के लिए सामान्य सिंटैक्स है:

या

डॉक्यूमेंट प्रकार का नाम
द ओपनिंग <!DOCTYPE सिंटैक्स के बाद सिंटैक्स को अलग किया जाता है (जैसे रिक्त स्थान,  या (XML को छोड़कर) टिप्पणियों को दोगुने हाइफन-ऋण द्वारा खोला और बंद किया गया),  उसके बाद डॉक्यूमेंट प्रकार का नाम  (अर्थात मूल एलिमेंट का नाम जो डीटीडी से उतरने वाले पेड़ों पर लागू होता है)। XML में, मूल एलिमेंट जो डॉक्यूमेंट का प्रतिनिधित्व करता है, डॉक्यूमेंट में पहला एलिमेंट है। उदाहरण के लिए, एक्सएचटीएमएल में, मूल एलिमेंट है, पहला एलिमेंट खोला गया है (डॉकटाइप घोषणा के बाद) और आखिरी बंद।

चूंकि बाहरी पहचानकर्ता और आंतरिक उपसमुच्चय दोनों वैकल्पिक हैं, डॉक्यूमेंट प्रकार का नाम ही एकमात्र सूचना है जिसे DOCTYPE घोषणा में देना अनिवार्य है।

बाहरी पहचानकर्ता
DOCTYPE घोषणा में वैकल्पिक रूप से SGML में औपचारिक सार्वजनिक पहचानकर्ता सार्वजनिक पहचानकर्ता और सिस्टम पहचानकर्ता सम्मिलित हो सकते हैं, मूल एलिमेंट नाम (और रिक्त स्थान जैसे सिंटैक्स को अलग करना) के बाद, अपितु किसी भी आंतरिक उपसमुच्चय से पहले। यह या तो कीवर्ड से शुरू होता है SYSTEM या कीवर्ड PUBLIC,  यह निर्दिष्ट करना कि क्या डीटीडी को सार्वजनिक पहचानकर्ता का उपयोग करके निर्दिष्ट किया गया है जो इसे सार्वजनिक पाठ के रूप में पहचानता है, अर्थात कई कंप्यूटर सिस्टम के बीच साझा किया गया है (भले ही यह आम जनता के लिए उपलब्ध उपलब्ध सार्वजनिक पाठ है, या अनुपलब्ध सार्वजनिक पाठ केवल के भीतर साझा किया गया है) संगठन)।  यदि सार्वजनिक कीवर्ड का उपयोग किया जाता है, तो उसके बाद दोहरे या एकल ASCII उद्धरण चिह्नों में संलग्न सार्वजनिक पहचानकर्ता होता है। सार्वजनिक पहचानकर्ता भंडारण स्थान की ओर इशारा नहीं करता है, बल्कि विशिष्ट निश्चित स्ट्रिंग है जिसे तालिका में देखा जा सकता है (जैसे एसजीएमएल कैटलॉग);  चूंकि, कुछ (अपितु सभी नहीं) एसजीएमएल प्रोफाइल में, सार्वजनिक पहचानकर्ता को औपचारिक सार्वजनिक पहचानकर्ता (एफपीआई) नामक विशेष सिंटैक्स का उपयोग करके बनाया जाना चाहिए, जो मालिक को निर्दिष्ट करता है और यह भी बताता है कि यह आम जनता के लिए उपलब्ध है या नहीं।

सार्वजनिक पहचानकर्ता (यदि सम्मिलित है) या SYSTEM कीवर्ड (अन्यथा) हो सकता है (और, XML में, अवश्य) सिस्टम आइडेंटिफ़ायर द्वारा पीछा किया जाना चाहिए जो इसी तरह उद्धरण चिह्नों में संलग्न है। चूंकि सामान्य एसजीएमएल में सिस्टम पहचानकर्ताओं की व्याख्या पूरी तरह से सिस्टम पर निर्भर है (और फ़ाइल नाम, डेटाबेस कुंजी, ऑफ़सेट, या कुछ और हो सकती है), XML के लिए आवश्यक है कि वे URI हों. उदाहरण के लिए, XHTML 1.1 के लिए FPI है "-//W3C//DTD XHTML 1.1//EN" और, आवश्यकताओं के आधार पर XHTML 1.1 के लिए 3 संभावित सिस्टम पहचानकर्ता उपलब्ध हैं। उनमें से URL संदर्भ है "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd". इसका अर्थ यह है कि एक्सएमएल पार्सर को डीटीडी को सिस्टम विशिष्ट फैशन में ढूंढना चाहिए, इस मामले में, डबल कोट चिह्नों में संलग्न डीटीडी के यूआरएल संदर्भ के माध्यम से।

XHTML डॉक्यूमेंटों में, doctype घोषणा को हमेशा सिस्टम पहचानकर्ता को स्पष्ट रूप से निर्दिष्ट करना चाहिए। दूसरी ओर HTML जैसे SGML-आधारित डॉक्यूमेंटों में, दिए गए सार्वजनिक पहचानकर्ता से स्वचालित रूप से उपयुक्त सिस्टम पहचानकर्ता का अनुमान लगाया जा सकता है। यह संघ उदा। FPI को सिस्टम आइडेंटिफ़ायर में हल करने वाली कैटलॉग फ़ाइल के माध्यम से किया जाना चाहिए। {{code|SYSTEM}EM}} कीवर्ड (XML को छोड़कर) का उपयोग सिस्टम पहचानकर्ता के बिना भी किया जा सकता है, यह दर्शाता है कि DTD सम्मिलित है अपितु डॉक्यूमेंट प्रकार के नाम से अनुमान लगाया जाना चाहिए।

आंतरिक सबसेट
DOCTYPE घोषणा का अंतिम, वैकल्पिक, भाग शाब्दिक वर्ग कोष्ठकों से घिरा हुआ है ([]), और आंतरिक उपसमुच्चय कहा जाता है। इसका उपयोग Document_type_definition#Markup घोषणाओं को जोड़ने/संपादित करने या सार्वजनिक कीवर्ड व्यवहारों को जोड़ने/संपादित करने के लिए किया जा सकता है। यह संभव है, अपितु असामान्य है, पूरे डीटीडी इन-लाइन को डॉक्यूमेंट में, आंतरिक उपसमुच्चय के भीतर, बाहरी फ़ाइल से संदर्भित करने के अतिरिक्त सम्मिलित करना। इसके विपरीत, आंतरिक उपसमुच्चय को कभी-कभी साधारण एसजीएमएल प्रोफाइलों में वर्जित किया जाता है, विशेष रूप से बुनियादी एचटीएमएल पार्सर्स के लिए जो पूर्ण एसजीएमएल पार्सर को लागू नहीं करते हैं।

यदि आंतरिक DTD सबसेट और बाहरी पहचानकर्ता दोनों को DOCTYPE घोषणा में सम्मिलित किया जाता है, तो आंतरिक सबसेट को पहले संसाधित किया जाता है, और बाहरी DTD सबसेट को इस तरह माना जाता है जैसे कि इसे आंतरिक सबसेट के अंत में सम्मिलित किया गया हो। चूँकि पहले की परिभाषाएँ DTD में बाद की परिभाषाओं पर वरीयता लेती हैं, यह आंतरिक सबसेट को बाहरी सबसेट में परिभाषाओं को ओवरराइड करने की अनुमति देती है।

उदाहरण
वर्ल्ड वाइड वेब पेज की पहली पंक्ति निम्नानुसार पढ़ी जा सकती है:

एक्सएचटीएमएल के लिए इस डॉक्यूमेंट प्रकार की घोषणा में डीटीडी का संदर्भ सम्मिलित है, जिसका सार्वजनिक पहचानकर्ता है  और जिसका सिस्टम आइडेंटिफायर है. संदर्भित बाहरी इकाई का पता लगाने के लिए इकाई रिज़ॉल्वर या तो पहचानकर्ता का उपयोग कर सकता है। इस उदाहरण या अगले उदाहरण में कोई आंतरिक उपसमुच्चय नहीं दर्शाया गया है। मूल एलिमेंट घोषित किया गया है  और, इसलिए, यह इस उदाहरण में और अगले वाले भी doctype घोषणा के अंत के बाद खोला जाने वाला पहला टैग है। HTML टैग doctype घोषणा का हिस्सा नहीं है, अपितु अभिविन्यास उद्देश्यों के लिए उदाहरणों में सम्मिलित किया गया है।

सामान्य डीटीडी
कुछ सामान्य डीटीडी को सूचियों में डाल दिया गया है। W3C ने वेब में सामान्यतः उपयोग किए जाने वाले DTDs की सूची तैयार की है, जिसमें नंगे HTML5 DTD, पुराने XHTML/HTML DTDs, सामान्य एम्बेडेड XML-आधारित स्वरूपों के DTDs जैसे MathML और स्केलेबल वेक्टर ग्राफिक्स के साथ-साथ मिश्रित डॉक्यूमेंट सम्मिलित हैं जो उन स्वरूपों को जोड़ते हैं। W3C HTML5 और इसके संबंधित WHATWG संस्करण दोनों ही ब्राउज़रों को केवल कुछ FPI के XHTML DTDs को स्वीकार करने और बाहरी DTD फ़ाइलों को लाने पर आंतरिक तर्क का उपयोग करने को प्राथमिकता देने की सलाह देते हैं। यह आगे एक्सएचटीएमएल के लिए आंतरिक डीटीडी निर्दिष्ट करता है जो केवल एचटीएमएल इकाई नामों की सूची है।

एचटीएमएल 4.01 डीटीडी
सख्त डीटीडी प्रस्तुतिकरण मार्कअप को इस तर्क के साथ अनुमति नहीं देता है कि इसके अतिरिक्त कैस्केडिंग स्टाइल शीट्स का उपयोग किया जाना चाहिए। सख्त डीटीडी इस प्रकार दिखता है:

<वाक्यविन्यास लैंग = html4सख्त> <!DOCTYPE HTML पब्लिक -//W3C//DTD HTML 4.01//EN http://www.w3.org/TR/html4/strict.dtd > <एचटीएमएल> 

संक्रमणकालीन DTD कुछ पुराने PUBLIC और विशेषताओं को अनुमति देता है जिन्हें बहिष्कृत कर दिया गया है:

<वाक्यविन्यास लैंग = html4सख्त> <!DOCTYPE HTML Public -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd > <एचटीएमएल> 

यदि फ़्रेमिंग (वर्ल्ड वाइड वेब) का उपयोग किया जाता है, तो इसके अतिरिक्त फ़्रेमसेट DTD का उपयोग किया जाना चाहिए, जैसे:

<वाक्यविन्यास लैंग = html4सख्त> <!DOCTYPE HTML पब्लिक -//W3C//DTD HTML 4.01 फ़्रेमसेट//EN http://www.w3.org/TR/html4/frameset.dtd > <एचटीएमएल> 

एक्सएचटीएमएल 1.0 डीटीडी
एक्सएचटीएमएल के डीटीडी भी सख्त, संक्रमणकालीन और फ्रेमसेट हैं।

एक्सएचटीएमएल सख्त डीटीडी। कोई बहिष्कृत टैग समर्थित नहीं हैं और कोड को XML विशिष्टता के अनुसार सही ढंग से लिखा जाना चाहिए।

<वाक्यविन्यास लैंग = html4सख्त>  <!DOCTYPE html पब्लिक -//W3C//DTD XHTML 1.0 स्ट्रिक्ट//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd >  

एक्सएचटीएमएल ट्रांजिशनल डीटीडी एक्सएचटीएमएल डीटीडी की तरह है, अपितु पदावनत टैग की अनुमति है।

<वाक्यविन्यास लैंग = html4सख्त>  <!DOCTYPE html पब्लिक - // W3C // DTD XHTML 1.0 ट्रांजिशनल // EN  http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd >  

एक्सएचटीएमएल फ्रेमसेट डीटीडी एकमात्र एक्सएचटीएमएल डीटीडी है जो फ्रेमसेट का समर्थन करता है। डीटीडी नीचे है।

<वाक्यविन्यास लैंग = html4सख्त>  <!DOCTYPE html पब्लिक -//W3C//DTD XHTML 1.0 फ्रेमसेट//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd >  

एक्सएचटीएमएल 1.1 डीटीडी
एक्सएचटीएमएल 1.1 एक्सएचटीएमएल का सबसे वर्तमान अंतिम संशोधन है, जो एक्सएचटीएमएल मॉड्यूलरीकरण के लिए समर्थन प्रस्तुत करता है। XHTML 1.1 में XHTML 1.0 स्ट्रिक्ट की कठोरता है।

एक्सएचटीएमएल बेसिक डीटीडी
एक्सएचटीएमएल बेसिक 1.0

यूआरएल या एफपीआई के रूप में डीटीडी के संदर्भ में इसकी कमी के कारण घोषणा बहुत कम है। इसमें केवल डॉक्यूमेंट के मूल एलिमेंट का टैग नाम है,. विनिर्देश के शब्दों में ही:

<!DOCTYPE html>, केस-असंवेदनशील रूप से।

यूआरआई या एफपीआई स्ट्रिंग की कमी के अपवाद के साथ (एफपीआई स्ट्रिंग को वैधकर्ताओं द्वारा संवेदनशील रूप से केस माना जाता है), यह प्रारूप (स्ट्रिंग का केस-असंवेदनशील मिलान) ) वही है जो SGML आधारित HTML 4.01 के सिंटैक्स में पाया जाता है  . HTML4 और HTML5 दोनों में, औपचारिक सिंटैक्स को अपर केस लेटर्स में परिभाषित किया गया है, भले ही लोअर केस और लोअर केस अपर केस के मिश्रण को भी वैध माना जाता है।

एक्सएचटीएमएल5 5 में  स्ट्रिंग का केस-संवेदी मिलान होना चाहिए<!DOCTYPE html>. ऐसा इसलिए है क्योंकि एक्सएचटीएमएल सिंटैक्स में सभी एचटीएमएल एलिमेंट नामों को निचले मामले में होना आवश्यक है, जिसमें एचटीएमएल 5 के अंदर संदर्भित मूल एलिमेंट भी सम्मिलित है।. e> XHTML5 में वैकल्पिक है और बस छोड़ा जा सकता है। चूंकि, यदि मार्कअप को बहुभाषाविद मार्कअप होना है, तो DOCTYPE का उपयोग किया जाना चाहिए।

यह भी देखें

 * डॉक्यूमेंट प्रकार की परिभाषा में डॉक्यूमेंट प्रकार की परिभाषा # उदाहरण सम्मिलित हैं
 * आरडीएफए
 * एक्सएमएल स्कीमा

बाहरी संबंध

 * HTML Doctype overview
 * Recommended DTDs to use in your Web document - an informative (not normative) W3C Quality Assurance publication
 * DOCTYPE grid - another overview table [Last modified 27 November 2006]
 * Quirks mode and transitional mode
 * Box model tweaking