अपरकेस या लोअरकेस सिद्धांत?


182

एचटीएमएल 5 सिद्धांत लिखते समय सही विधि क्या है?

<!DOCTYPE html>

या

<!doctype html>

<! DOCTYPE html> यह पहली बार एक आम तौर पर हालांकि किसी भी इस्तेमाल किया जा सकता हो जाएगा
छाया

अपने खुद के सवाल का जवाब देने में कामयाब रहा, लेकिन मुझे लगा कि मैं इसे छोड़ दूंगा अगर दूसरों के साथ भी ऐसा ही सोचा जाए। मैं व्यक्तिगत रूप से लोअरकेस पसंद करता हूं; HTML5 में और कुछ नहीं अपरकेस है।
जोशना

11
Google.com एक <!doctype html>
निचले हिस्से

3
@ हेलोवर्ल्ड: ऐसा इसलिए है क्योंकि निचले मामले के अक्षर बेहतर संकुचित होते हैं क्योंकि वे अधिक सामान्य होते हैं। एक दिन में लाखों हिट पाने वाली साइटों के लिए, यह एक अंतर बना सकता है।
ज़ाज़

एसवीजी फाइलों के बारे में क्या?
विलियम एंट्रीकेन

जवाबों:


183

HTML में, DOCTYPE असंवेदनशील है। निम्नलिखित DOCTYPEs सभी मान्य हैं:

<!doctype html>
<!DOCTYPE html>
<!DOCTYPE HTML>
<!DoCtYpE hTmL>

XML क्रमांकन (अर्थात XHTML) में DOCTYPE की आवश्यकता नहीं है, लेकिन यदि आप इसका उपयोग करते हैं, तो इसे DOCTYPEअपरकेस होना चाहिए:

<!DOCTYPE html>

HTML5 का एक्सएमएल क्रमांकन देखें , उर्फ ​​'एक्सएचटीएमएल 5' :

ध्यान दें कि यदि आप DOCTYPEXHTML दस्तावेज़ में अपरकेस नहीं रखते हैं , तो XML पार्सर एक सिंटैक्स त्रुटि देगा।

दूसरे भाग को लोअरकेस ( html), अपरकेस ( HTML) या यहां तक ​​कि मिश्रित मामले ( hTmL) में लिखा जा सकता है - यह अभी भी काम करेगा। हालाँकि, HTML- संगत XHTML दस्तावेज़ों के लिए पॉलीग्लॉट मार्कअप दिशानिर्देशों के अनुरूप , इसे लोअरकेस में लिखा जाना चाहिए।


9
नहीं, यह गलत है। SGML में दस्तावेज़ प्रकार की घोषणा उत्पादन 110 है, XML में यह उत्पादन 28 है। दोनों ही मामलों में इसे निश्चित स्ट्रिंग "DOCTYPE" के रूप में घोषित किया जाता है (जो कि एक टैग नहीं है , यह एक कीवर्ड है )। तो संबंधित एसजीएमएल और एक्सएमएल मानकों में विहित परिभाषाओं में यह हमेशा बड़ा होता है । यदि आपको ऐसा सॉफ़्टवेयर मिलता है, जो "सिद्धांत" के निचले हिस्से को अनुमति देता है, तो वह सॉफ़्टवेयर मानकों के अनुपालन में नहीं है। ब्राउज़रों को "जो वे स्वीकार करते हैं उसमें उदार" होने के लिए डिज़ाइन किया गया है, लेकिन एक अनुरूप XML प्रोसेसर को इसे सत्यापन त्रुटि के रूप में चिह्नित करना चाहिए।
इचिरो फुरुसैटो

5
... और मुझे यह इंगित करना चाहिए कि एक्स / एचटीएमएल 5 इस पर भी गलत है। जैसा कि निर्दिष्ट किया गया है, एक्सएचटीएमएल 5 केवल एक्सएमएल मार्कअप मान्य नहीं है, न ही यह हो सकता है। एक्स / एचटीएमएल 5 विनिर्देश में कई त्रुटियां हैं। मैं इसे बहुत गंभीरता से नहीं लेता। तथ्य यह है कि उन्हें एक " पॉलीग्लॉट मार्कअप " (एक पूरी तरह से नई अवधारणा) बनाना था, जो स्पष्ट रूप से कहते हैं कि उन्होंने पग किया है।
इचिरो फ्यूरसैटो

20
@Ichiro मैं HTML के बारे में बात कर रहा हूं, एसजीएमएल नहीं। किसी भी ब्राउज़र ने एसजीएमएल को कभी लागू नहीं किया। अगर उन्होंने किया, <title/foo/तो इसके बराबर होगा <title>foo</title>। केवल कुछ HTML सत्यापनकर्ता SGML का उपयोग करते हैं। HTML5 कल्पना यह स्पष्ट करने वाला पहला है: whatwg.org/specs/web-apps/current-work/multipage/…
Mathias Bynens

2
@ TestSubject528491 यह पैराग्राफ DOCTYPE ( html) के दूसरे भाग के बारे में है । यहाँ पूर्ण वाक्य है: “दूसरा भाग लोअरकेस ( html), अपरकेस ( HTML) या यहां तक ​​कि मिश्रित मामले ( hTmL) में लिखा जा सकता है - यह अभी भी काम करेगा। हालांकि, HTML- संगत XHTML दस्तावेज़ों के लिए पॉलीग्लॉट मार्कअप दिशानिर्देशों के अनुरूप, इसे लोअरकेस में लिखा जाना चाहिए। ”
मथियास बिएनेंस

15
@IchiroFurusato आप HTML5 पर पढ़ना चाहते हैं । उद्धरण: “हालांकि, HTML के पिछले संस्करणों के विपरीत, HTML [5] क्रमांकन को एसजीएमएल के एक अनुप्रयोग के रूप में नहीं माना जाता है, बल्कि इसके स्वयं के सिंटैक्स को परिभाषित करता है। जबकि सिंटैक्स SGML से प्रेरित है, इसे इस तरह से परिभाषित किया जा रहा है कि ब्राउज़र वास्तविक रूप से HTML को वास्तव में हैंडल करने के तरीके से अधिक निकटता करते हैं, विशेष रूप से त्रुटि से निपटने के संबंध में। "
मथियास बीनेंस ने

40

अगर कोई अभी भी 2014 में सोच रहा है, तो कृपया इस पर परामर्श करें:

एचटीएमएल 5

डब्लू 3 एचटीएमएल 5 स्पेस - डॉक्टाइप

इस क्रम में एक DOCTYPE में निम्नलिखित घटक शामिल होने चाहिए:

1. A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".
...

नोट: सभी कैप्स में प्रदर्शित होने के बावजूद, यह बताता है कि यह असंवेदनशील है

-------------------------------------------------- --------------------

XHTML5

W3 HTML5 - XHTML

This specification does not define any syntax-level requirements 
beyond those defined for XML proper.

XML documents may contain a DOCTYPE if desired, but this is not required 
to conform to this specification. This specification does not define 
a public or system identifier, nor provide a formal DTD.

XML युक्ति को देखते हुए, यह कैप्स में DOCTYPE को सूचीबद्ध करता है, लेकिन मुझे ऐसा कुछ भी नहीं मिला है जिसमें कहा गया हो कि 'सभी कैप्स' की आवश्यकता है (तुलना के लिए, ऊपर सूचीबद्ध HTML5 कल्पना में, यह सभी कैप्स में उदाहरण में प्रदर्शित किया गया है, लेकिन युक्ति स्पष्ट रूप से बताती है कि मामला असंवेदनशील है )।

-------------------------------------------------- --------------------

पॉलीग्लॉट मार्कअप

डब्ल्यू 3 पॉलीग्लॉट मार्कअप - इंट्रो

यह कभी-कभी HTML5 दस्तावेजों की सेवा करने में सक्षम होने के लिए मूल्यवान है जो अच्छी तरह से XML दस्तावेज भी बनते हैं।

डब्ल्यू 3 पॉलीग्लॉट मार्कअप - डॉक्टाइप

Polyglot मार्कअप एक दस्तावेज़ प्रकार की घोषणा (DOCTYPE) का उपयोग करता है जो कि [HTML5] की धारा 8.1.1 द्वारा निर्दिष्ट है। इसके अलावा, DOCTYPE निम्नलिखित नियमों के अनुरूप है:

* The string DOCTYPE is in uppercase letters.

तो, ध्यान दें कि Ployglot Markup एक नियमित HTML5 सिद्धांत का उपयोग करता है, लेकिन परिवर्धन / परिवर्तन के साथ। हमारी चर्चा के लिए, सबसे खास बात यह है कि DOCTYPE को सभी कैप्स में घोषित किया गया है

-------------------------------------------------- --------------------

योग

W3 का HTML बनाम XHTML अनुभाग देखें

[राय] मैं XML अनुपालन को संतुष्ट करने के बारे में बहुत अधिक चिंता नहीं करूंगा जब तक कि आप विशेष रूप से इसके लिए विचार करने की कोशिश नहीं कर रहे हैं। अधिकांश क्लाइंट और JS- आधारित सर्वर विकास के लिए, JSON ने XML को बदल दिया है।

इसलिए, मैं केवल इसे वास्तव में लागू होते हुए देख सकता हूं यदि आप नए, एचटीएमएल 5 कार्यक्षमता के साथ सह-अस्तित्व के लिए एक मौजूदा, एक्सएचटीएमएल / एक्सएमएल-आधारित विरासत प्रणाली को अपडेट करने की कोशिश कर रहे हैं। यदि ऐसा है तो पॉलीग्लॉट मार्कअप स्पेक में देखें।


18

नवीनतम युक्ति के अनुसार , आपको ऐसी किसी चीज़ का उपयोग करना चाहिए जो कि केस-असंवेदनशील मैच है <!DOCTYPE html>। इसलिए जब भी आप जिस भी मामले को पसंद करते हैं, उसका समर्थन करने के लिए ब्राउज़रों की आवश्यकता होती है, तो यह अनुमान लगाना उचित है कि <!DOCTYPE html>यह विहित मामला है।


3
विनिर्देश स्पष्ट रूप से बताता है कि सिद्धांत में एक स्ट्रिंग शामिल होनी चाहिए जो '<! DOCTYPE' के मामले-असंवेदनशील समतुल्य है, इसलिए इसका अर्थ है कि '<! DOcTyPe' केवल सही है।
joshnh

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

9
कल्पना लगातार इसे लिखती है <!DOCTYPE html>, इसलिए यह अनुमान लगाना उचित होगा कि उस लेखक का उस विशेष पूंजीकरण के लिए थोड़ी सी वरीयता है। मैं कल्पना के रूप में उसी पूंजीकरण का उपयोग करने जा रहा हूं, क्योंकि यह इन चीजों के सुसंगत होने के लिए अच्छा है, लेकिन अगर आप पसंद करते हैं <!dOcTyPeतो मेरे मेहमान बनो :)
जॉन मेलर

3
@ जोशने मैं आपकी उलझन को नहीं समझता। 1) DOCTYPE घोषणा केस-असंवेदनशील होना आवश्यक है। 2) एचटीएमएल 5 कल्पना अपने उदाहरणों में पूंजीकरण "DOCTYPE html" का उपयोग करती है। यह सब उत्तर यह कह रहा है कि एक पूंजीकरण साहित्य के अनुरूप है, भले ही सभी वैध हों। इतना अपमानजनक क्यों है?

2
मुझे लगता है कि @joshnh ने गलत समझा कि जॉन क्या कहना चाह रहा था। एफडब्ल्यूआईडब्ल्यू, मैं जॉन की भावना से सहमत हूं कि किसी विशेष कारण के अभाव में एक निश्चित तरीके से प्रारूपित करने के लिए, विनिर्देश क्या पूछता है कि ब्राउज़रों के खिलाफ जांच बेहतर है। जॉन कभी भी यह साबित करने की कोशिश नहीं कर रहे थे कि यह अधिक सही है, केवल यह कि यह आपकी पसंद को आधार बनाने के लिए कुछ है - अन्यथा यह पूरी तरह से मनमाना विकल्प है, है ना?
रायन विलियम्स

7

या तो ऊपरी या निचला मामला "सही" है। हालाँकि यदि आप वेब फोंट का उपयोग करते हैं और IE7 के बारे में परवाह करते हैं, तो मैं <!DOCTYPE html>IE7 में बग के कारण उपयोग करने की सलाह दूंगा जहां वेब फोंट कभी-कभी उपयोग करने में विफल होते हैं <!doctype html>(उदाहरण के लिए इस उत्तर में) )।

यही कारण है कि मैं हमेशा ऊपरी-सिद्धांत को उपकृत करता हूं।


6

HTML5 के लिए मानक यह है कि टैग केस असंवेदनशील हैं।

http://www.w3schools.com/html5/tag_doctype.asp

अधिक तकनीकी रूप से: ( http://www.w3.org/TR/html5/syntax.html )

इस क्रम में एक DOCTYPE में निम्नलिखित घटक शामिल होने चाहिए:

  1. एक स्ट्रिंग जो स्ट्रिंग के लिए एक ASCII केस-असंवेदनशील मैच है <!DOCTYPE

35
मुझे विश्वास नहीं है कि W3Schools 100% वे W3C से संबद्ध नहीं हैं और यद्यपि उनकी अधिकांश जानकारी अच्छी है, लेकिन इसमें से कुछ नहीं है।
जोशना

यह बहुत व्यापक रूप से ज्ञात है - यहाँ w3.org लिंक है: w3.org/TR/html5/syntax.html
Stephen

4
अन्य वेबसाइटों की तुलना में W3Schools में कम या ज्यादा त्रुटियां नहीं हैं। ( पूरी तरह से यादृच्छिक उदाहरण ) नमक के एक दाने के साथ जानकारी लें, संदेह होने पर w3.org पृष्ठों से परामर्श करें, और आप ठीक हो जाएंगे। असली मूर्ख वे हैं जो मानते हैं कि W3Schools एक आधिकारिक निकाय है या उनके प्रमाण पत्रों का कोई मतलब है।
श्री लिस्टर

8
@ मित्र: मुझे नहीं लगता कि लोगों को मूर्ख कहना उचित है क्योंकि उन्हें लगता है कि "W3Schools" नाम की किसी चीज़ और "W3C" नाम की किसी चीज़ के बीच एक संबंध है। दोनों नाम और डोमेन में समान हैं, जिससे भ्रम पैदा होता है, और यह धारणा कि पूर्व किसी तरह से, या बाद में संबंधित है। यह वर्तमान में W3Schools का इरादा है, जो उन कारणों में से एक है, जो इस मुद्दे को समझने वाले लोगों को गुस्सा दिलाते हैं। तथ्य यह है कि उनकी जानकारी का एक बहुत कुछ गलत है यौगिक समस्या (यानी यह थोड़ा क्षम्य हो सकता है अगर वे वास्तव में एक उचित सेवा प्रदान की)
बॉबी जैक

लिंक tag_doctype.aspअमान्य है (404) और यह प्रश्न doctypeघोषणा के बारे में है , जो एक टैग नहीं है ... वैसे भी, निष्कर्ष सही है: एचटीएमएल 5 में, कीवर्ड doctypeऊपरी, निचले या मिश्रित मामले में हो सकता है।
हाबिल

3

प्रश्न का अर्थ है कि केवल एक ही सही उत्तर है, दो में से कई विकल्प की आपूर्ति करता है, और हमें एक लेने के लिए कहता है। मैं सुझाव दूंगा कि HTML5 दोनों के लिए <!DOCTYPE html>और <!doctype html>मान्य हैं।

तो एक HTML5- सक्षम ब्राउज़र लोअरकेस को स्वीकार करेगा और HTML को ठीक से प्रोसेस करेगा।

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


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.