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

एक दस्तावेज़ प्रकार की घोषणा, या 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