HTML: वैकल्पिक समापन टैग शामिल करें, या बाहर करें?


149

कुछ HTML 1 समापन टैग वैकल्पिक हैं , अर्थात:

</HTML>
</HEAD>
</BODY>
</P>
</DT>
</DD>
</LI>
</OPTION>
</THEAD>
</TH>
</TBODY>
</TR>
</TD>
</TFOOT>
</COLGROUP>

नोट: बंद किए गए टैगों के साथ भ्रमित न होना, जिन्हें शामिल करने से मना किया गया है, अर्थात:

</IMG>
</INPUT>
</BR>
</HR>
</FRAME>
</AREA>
</BASE>
</BASEFONT>
</COL>
</ISINDEX>
</LINK>
</META>
</PARAM>

नोट: xhtml HTML से अलग है। xhtml xml का एक रूप है, जिसके लिए हर तत्व को एक समापन टैग की आवश्यकता होती है । एक समापन टैग को html में निषिद्ध किया जा सकता है , फिर भी अनिवार्य है xhtml

वैकल्पिक समापन टैग हैं

  • आदर्श रूप से शामिल है , लेकिन अगर आप उन्हें भूल गए, या हम उन्हें स्वीकार करेंगे
  • आदर्श रूप से शामिल नहीं है , लेकिन यदि आप उन्हें डालते हैं तो हम उन्हें स्वीकार करेंगे

दूसरे शब्दों में, क्या मुझे उन्हें शामिल करना चाहिए, या क्या मुझे उन्हें शामिल नहीं करना चाहिए ?

एचटीएमएल 4.01 बंद करने एलिमेंट टैग्स वैकल्पिक होने के बारे में कल्पना की वार्ता , लेकिन अगर यह उन्हें, या बेहतर उन्हें शामिल नहीं करने के लिए शामिल करने के लिए प्राथमिकता दी जाती है कहना नहीं है।

दूसरी ओर, देवगुरु पर एक यादृच्छिक लेख कहता है :

समाप्त होने वाला टैग वैकल्पिक है। हालांकि, यह अनुशंसा की जाती है कि इसे शामिल किया जाए।

मेरे द्वारा पूछे जाने का कारण यह है क्योंकि आप जानते हैं कि यह संगतता कारणों के लिए वैकल्पिक है; और अगर उन्हें हो सकता था तो उन्होंने उन्हें ( अनिवार्य | निषिद्ध ) बना दिया था ।

इसे दूसरे तरीके से रखें: HTML 1, 2, 3 ने इन के संबंध में क्या किया, अब वैकल्पिक, समापन टैग। HTML 5 क्या करता है? और मुझे क्या करना चाहिए ?

ध्यान दें

HTML में कुछ तत्वों को बंद टैग होने से मना किया गया है। आप इससे असहमत हो सकते हैं, लेकिन यह विनिर्देश है, और यह बहस के लिए नहीं है। मैं वैकल्पिक समापन टैग के बारे में पूछ रहा हूं , और इरादा क्या था।

फुटनोट

1 एचटीएमएल 4.01


4
कठिन सवाल ... कुछ w3c सिफारिशों में ऐसे उदाहरण भी शामिल हैं जो दोनों करते हैं: w3.org/TR/html401/struct/global.html#id-and-class पहला उदाहरण समापन </p>टैग है और दूसरा उन्हें छोड़ देता है!
रिचर्ड जेपी ले गुएन

बस स्पष्ट करने के लिए - एचटीएमएल 5 में मना टैग के मामले में, "स्पष्ट" / XML मान्य समाधान के लिए उन्हें एक साथ बंद करने के लिए है />, इस तरह के रूप <meta charset="utf-8" />भले ही <meta charset="utf-8">मान्य एचटीएमएल 5 है?
कबटिग

@ कॉबिगेट हां। <meta charset="utf-8" />है अवैध एचटीएमएल, यह चाहिए हो <meta charset="utf-8">। पर दूसरी ओर <meta charset="tuf-8">है अवैध एक्सएचटीएमएल, यह चाहिए हो<meta charset="utf-8" />
इयान बॉयड

@ इयानबॉय वास्तव में? HTML5 में? बहुभाषी HTML / XHTML के लिए मसौदा W3C मैनुअल उपयोग करने के लिए कहते हैं <meta charset="UTF-8"/>बंद टैग के साथ। अन्यथा पॉलीग्लॉट या एक्सएचटीएमएल कभी भी एचटीएमएल 5 और एक्सएमएल के रूप में कैसे मान्य हो सकता है?
cboettig

@ कॉबिगेट आप सही कह रहे हैं। Polyglot Markup (यानी HTML- संगत XHTML दस्तावेज़ ) मान्य HTML 4.01 नहीं हो सकता। HTML5 (अभी भी एक कार्य प्रगति पर है) में शून्य तत्वों की धारणा है - ऐसे तत्व जिनमें अंतिम टैग नहीं हो सकता है । संभवतः अधिकांश ब्राउज़र कोमल हैं, और आपकी मार्कअप त्रुटियों को क्षमा कर देंगे।
इयान बॉयड

जवाबों:


49

वैकल्पिक वाले वे सभी हैं जो अंत टैग की आवश्यकता के बिना, जहां वे समाप्त होते हैं, शब्दार्थ से स्पष्ट होना चाहिए। ईजी का <li>तात्पर्य है </li>कि यदि कोई इसके ठीक पहले एक नहीं है।

निषिद्ध अंत टैग सभी को तुरंत उनके अंत टैग के बाद किया जाएगा ताकि यह <img src="blah" alt="blah"></img>हर बार टाइप करने के लिए बेमानी हो ।

मैं लगभग हमेशा वैकल्पिक टैग का उपयोग करता हूं (जब तक कि मेरे पास एक बहुत अच्छा कारण न हो) क्योंकि यह अधिक पठनीय और अद्यतन करने योग्य कोड को उधार देता है।


18
मुझे अब दिख रहा है। <LI>गोली की तरह है। कोई भी पूरे बुलेटेड पॉइंट को लपेटना नहीं चाहेगा <LI>...</LI>। तो इस तरह से LIमैच जो लोग स्वाभाविक रूप से मार्कअप के दौरान लिखते हैं। <P>शब्द पैराग्राफ मार्क के लिए जाते हैं ( ), वर्ड प्रोसेसिंग में आप पैराग्राफ की शुरुआत में पैराग्राफ मार्क जोड़ते हैं ; और हर एक के अंत में भी नहीं। तो इस व्याख्या में समापन टैग वैकल्पिक हैं क्योंकि कोई भी सामान्य व्यक्ति उन्हें करने के लिए नहीं सोचता। साथ ही, तत्व में ही कोई सामग्री नहीं है - तत्व है सामग्री।
इयान बॉयड

8
मेरा क्या मतलब है मैं लगभग हमेशा वैकल्पिक टैग का उपयोग करता हूं - क्या आपका मतलब यह है कि आप अंतिम टैग को शामिल करते हैं, या आप इसे छोड़ देते हैं ? (मुझे आभास हुआ कि आप इसे शामिल करते हैं, जब मैं आपका उत्तर पढ़ता हूं - लेकिन इयान बॉयड द्वारा ऊपर की टिप्पणी मुझे यह आभास देती है कि आपने इसे बाहर कर दिया है।)
काजमगनस

3
@IanBoyd और अंतिम पैराग्राफ के लिए?
पेसरियर

22
@Pacerier लोग सैकड़ों वर्षों से पाठ के पैराग्राफ लिख रहे हैं। एक पैराग्राफ समाप्त होने पर किसी को कभी भ्रमित नहीं किया गया है।
इयान बॉयड

4
HTML5 के लिए प्रासंगिक लिंक, उन लोगों के लिए जिन्होंने वास्तविक संदर्भ दस्तावेज़ीकरण खोजने की कोशिश करते हुए यह उत्तर पाया: w3.org/TR/html5/syntax.html#optional-tags
माइक 'पोमैक्स' कमरमन्स

59

ऐसे मामले हैं जहां स्पष्ट टैग मदद करते हैं, लेकिन कभी-कभी यह अनावश्यक पांडित्य है।

ध्यान दें कि HTML कल्पना स्पष्ट रूप से निर्दिष्ट करती है जब यह टैग को छोड़ना मान्य होता है, इसलिए यह हमेशा एक त्रुटि नहीं होती है।

उदाहरण के लिए आपको कभी आवश्यकता नहीं है </body></html>। कोई भी कभी भी <tbody>स्पष्ट रूप से (उस बिंदु के लिए जिसे एक्सएचटीएमएल ने इसके लिए अपवाद बनाया है) रखना याद नहीं है ।

आपको </head><body>तब तक ज़रूरत नहीं है जब तक आपके पास DOM-मैनिपुलेटिंग स्क्रिप्ट्स नहीं हैं जो वास्तव में खोजते हैं <head>(फिर इसे स्पष्ट रूप से बंद करना बेहतर है, क्योंकि निहित अंत के नियम <head>आपको आश्चर्यचकित कर सकते हैं)।

नेस्टेड लिस्ट वास्तव में बिना बेहतर होती हैं </li>, क्योंकि तब गलत ul > ulपेड़ बनाने में मुश्किल होती है ।

मान्य:

<ul>
  <li>item
  <ul>
    <li>item
  </ul>
</ul>

अमान्य:

<ul>
  <li>item</li>
  <ul>
    <li>item</li>
  </ul>
</ul>

और ध्यान रखें कि अंत टैग निहित हैं कि क्या आप सभी तत्वों को बंद करने का प्रयास करते हैं या नहीं। अंतिम टैग लगाने से स्वचालित रूप से पार्सिंग अधिक मजबूत नहीं होगी:

<p>foo <p>bar</p> baz</p>

के रूप में पार्स करेंगे:

<p>foo</p><p>bar</p> baz

यह केवल तभी मदद कर सकता है जब आप दस्तावेजों को मान्य करते हैं।


4
रुको, <p>foo <p>bar</p> baz</p>दो नेस्टेड pटैग के रूप में पार्स क्यों नहीं किया जाता है ?
एरिक

19
क्योंकि एक <P>तत्व में ब्लॉक-स्तरीय तत्व नहीं हो सकते हैं, और <P>ब्लॉक स्तर का तत्व है। से ( w3.org/TR/REC-html40/struct/text.html#edef-P ) "पी एक पैराग्राफ का प्रतिनिधित्व करता है। इसमें ब्लॉक-स्तरीय तत्व (पी खुद सहित) नहीं हो सकते।"
इयान बॉयड

1
@IanBoyd क्या आपका मतलब है कि सीएसएस नियमों की परवाह किए बिना ब्लॉक स्तर के तत्व शामिल नहीं हो सकते हैं?
पचेरियर

6
@ स्पेसर सीएसएस किसी भी तरह से डोम को प्रभावित नहीं कर सकता है। DOM को पहले पार्स किया जाता है, और फिर CSS इसे प्रदर्शित करता है। CSS blockडिस्प्ले HTML के ब्लॉक-लेवल कंटेंट से बिलकुल अलग चीज है (यह सिर्फ ऐसा होता है कि अधिकांश HTML ब्लॉक-लेवल तत्व डिफ़ॉल्ट रूप से CSS ब्लॉक के रूप में प्रदर्शित होते हैं)।
कोर्नेल

2
@ anton1980 नहीं, यह समान नहीं है। छोड़े गए वैकल्पिक समापन टैग को संभालना स्पष्ट रूप से निर्दिष्ट है और सभी अनुरूप ब्राउज़रों में मज़बूती से काम करता है। OTOH एक बना हुआ <t>काम नहीं करेगा <title>
कोर्नेल

18

HTML के इतिहास में आपकी सहायता करने के लिए, कुछ विरोधाभासों को समझने के लिए मैं यहां कुछ लिंक जोड़ रहा हूं। यह आपके प्रश्न का उत्तर नहीं है, लेकिन आप इन विभिन्न डिग्रियों को पढ़ने के बाद अधिक जान पाएंगे।

HTML5 में गोता लगाने के कुछ अंश :

[T] उन्होंने कहा कि "टूटा हुआ" HTML मार्कअप अभी भी वेब ब्राउज़र में काम करता है जिससे लेखक टूटे हुए HTML पेज बना सकते हैं। बहुत सारे टूटे हुए पृष्ठ। कुछ अनुमानों के अनुसार, वेब पर 99% से अधिक HTML पृष्ठ आज उनमें से कम से कम एक त्रुटि है। लेकिन क्योंकि ये त्रुटियां ब्राउज़रों को दिखाई देने वाले त्रुटि संदेशों को प्रदर्शित करने का कारण नहीं बनती हैं, कोई भी उन्हें कभी भी ठीक नहीं करता है।

W3C ने इसे वेब के साथ एक मूलभूत समस्या के रूप में देखा, और उन्होंने इसे सही करने के लिए सेट किया। XML, 1997 में प्रकाशित, ग्राहकों को माफ करने की परंपरा से टूट गया और उसने कहा कि XML का उपभोग करने वाले सभी कार्यक्रमों को तथाकथित "अच्छी तरह से गठित" त्रुटियों को घातक माना जाना चाहिए। पहली गलती पर असफल होने की इस अवधारणा को "ड्रेकोनियन त्रुटि से निपटने" के रूप में जाना जाता है, ग्रीक नेता ड्रेको के बाद जिन्होंने अपने कानूनों के अपेक्षाकृत मामूली उल्लंघन के लिए मौत की सजा को लागू किया। जब डब्ल्यू 3 सी ने एक्सएमएल शब्दावली के रूप में HTML में सुधार किया, तो उन्होंने कहा कि नए application/xhtml+xmlMIME प्रकार के साथ दिए गए सभी दस्तावेज़ ड्रैकनियन त्रुटि से निपटने के अधीन होंगे। यदि आपके XHTML पृष्ठ […] में एक भी अच्छी तरह से निर्मित त्रुटि थी, तो वेब ब्राउज़र के पास अंतिम उपयोगकर्ता के लिए त्रुटि संदेश को संसाधित करने और प्रदर्शित करने से रोकने के अलावा कोई विकल्प नहीं होगा।

यह विचार सार्वभौमिक रूप से लोकप्रिय नहीं था। मौजूदा पृष्ठों पर 99% की अनुमानित त्रुटि दर के साथ, अंतिम उपयोगकर्ता के लिए त्रुटियों को प्रदर्शित करने की कभी-वर्तमान संभावना, और लागत को सही ठहराने के लिए XHTML 1.0 और 1.1 में नई सुविधाओं की कमी, वेब लेखकों ने मूल रूप से अनदेखा कर दिया application/xhtml+xml। लेकिन इसका मतलब यह नहीं है कि उन्होंने एक्सएचटीएमएल को पूरी तरह से नजरअंदाज कर दिया। ओह, निश्चित रूप से नहीं। XHTML 1.0 विनिर्देश के परिशिष्ट C ने दुनिया के वेब लेखकों को एक कमज़ोरी दी: “ऐसी चीज़ का उपयोग करें जो XHTML सिंटैक्स की तरह दिखती है, लेकिन इसके साथ सेवा करते रहेंtext/html MIME प्रकार के परोसें।" और ठीक वैसा ही हजारों वेब डेवलपर्स ने किया: उन्होंने एक्सएचटीएमएल सिंटैक्स में "अपग्रेड" किया, लेकिन इसे टेक्स्ट / एचटीएमएल माइम प्रकार के साथ सेवा देते रहे।

आज भी, लाखों वेब पेज XHTML होने का दावा करते हैं। वे पहली पंक्ति, उपयोग लोअरकेस टैग नाम, विशेषता मान के आसपास उपयोग उद्धरण पर एक्सएचटीएमएल doctype के साथ शुरू, और की तरह खाली तत्वों के बाद ट्रेलिंग स्लैश <br />और <hr />। लेकिन इन पृष्ठों का केवल एक छोटा सा अंश application/xhtml+xmlMIME प्रकार के साथ परोसा जाता है जो XML की ड्रैकोनियन त्रुटि हैंडलिंग को ट्रिगर करेगा। MIME प्रकार के साथ परोसा गया कोई भी पृष्ठ text/html- चाहे सिद्धांत, वाक्यविन्यास, या कोडिंग शैली की परवाह किए बिना - "क्षमा" HTML पार्सर का उपयोग करके पार्स किया जाएगा, चुपचाप किसी भी मार्कअप त्रुटियों को अनदेखा करेगा, और कभी भी अंतिम उपयोगकर्ताओं (या किसी और) को सतर्क नहीं करेगा भले ही पृष्ठ तकनीकी रूप से टूट गए हैं।

XHTML 1.0 में यह खामी शामिल थी, लेकिन XHTML 1.1 ने इसे बंद कर दिया, और कभी भी अंतिम XHTML 2.0 ने ड्रेकोनियन त्रुटि से निपटने की आवश्यकता की परंपरा को जारी नहीं रखा। और इसीलिए अरबों पेज हैं जो XHTML 1.0 होने का दावा करते हैं, और केवल एक मुट्ठी भर है जो XHTML 1.1 (या XHTML 2.0) होने का दावा करते हैं। तो क्या आप वास्तव में एक्सएचटीएमएल का उपयोग कर रहे हैं? अपने MIME प्रकार की जाँच करें। (वास्तव में, यदि आप नहीं जानते कि आप किस MIME प्रकार का उपयोग कर रहे हैं, तो मैं इस बात की बहुत गारंटी दे सकता हूं कि आप अभी भी उपयोग कर रहे हैं text/html।) जब तक आप MIME प्रकार के application/xhtml+xml, अपने तथाकथित "XHTML" के साथ अपने पृष्ठों की सेवा नहीं दे रहे हैं XML नाम में ही है।

[टी] वह लोग जो एचटीएमएल और एचटीएमएल रूपों को विकसित करने का प्रस्ताव रखते थे, उन्हें दो विकल्पों के साथ सामना करना पड़ा: W3C के बाहर अपना काम जारी रखें या जारी रखें। उन्होंने बाद वाले को चुना, whatwg.orgडोमेन पंजीकृत किया और जून 2004 में WHAT वर्किंग ग्रुप का जन्म हुआ

[T] वह काम कर रहा समूह कुछ अन्य चीजों पर भी चुपचाप काम कर रहा था। उनमें से एक एक विनिर्देशन था, शुरू में वेब फॉर्म 2.0 को डब किया गया था , जिसमें एचटीएमएल रूपों में नए प्रकार के नियंत्रण शामिल थे। (आप ए फॉर्म ऑफ मैडनेस में वेब रूपों के बारे में अधिक जानेंगे ।) एक और मसौदा प्रारूप था, जिसे "वेब एप्लिकेशन 1.0" कहा जाता था, जिसमें डायरेक्ट-मोड ड्राइंग कैनवास और प्लग इन के बिना ऑडियो और वीडियो के लिए देशी समर्थन जैसी प्रमुख नई विशेषताएं शामिल थीं ।

अक्टूबर 2009 में, W3C ने XHTML 2 वर्किंग ग्रुप को बंद कर दिया और अपना निर्णय समझाने के लिए यह बयान जारी किया :

जब W3C ने मार्च 2007 में HTML और XHTML 2 कार्य समूहों की घोषणा की, तो हमने संकेत दिया कि हम XHTML 2 के लिए बाज़ार की निगरानी करना जारी रखेंगे। W3C HTML के भविष्य के बारे में समुदाय को स्पष्ट संकेत के महत्व को पहचानता है।

जबकि हम वर्षों से XHTML 2 वर्किंग ग्रुप के योगदान के मूल्य को पहचानते हैं, प्रतिभागियों के साथ चर्चा करने के बाद, W3C प्रबंधन ने 2009 के अंत में वर्किंग ग्रुप के चार्टर को समाप्त करने और इसे नवीनीकृत नहीं करने की अनुमति देने का निर्णय लिया है।

जो जीतते हैं वही जहाज होते हैं।


12

कारण मैं पूछ रहा हूँ क्योंकि आप जानते हैं कि यह अनुकूलता कारणों के लिए वैकल्पिक है; और अगर उन्हें हो सकता था तो उन्होंने उन्हें (अनिवार्य | निषिद्ध) बना दिया था।

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

HTML 1, 2, 3 ने इन के संबंध में क्या किया है, अब वैकल्पिक, समापन टैग।

HTML 2 के लिए DTD RFC में अंतर्निहित है, जो मूल HTML DTD के साथ है , सभी जगह वैकल्पिक आरंभ और समाप्ति टैग है।

HTML 3 को छोड़ दिया गया (ब्राउज़र युद्धों के लिए धन्यवाद) और HTML 3.2 के साथ प्रतिस्थापित किया गया (जिसे वेब की तत्कालीन स्थिति का वर्णन करने के लिए डिज़ाइन किया गया था)।

HTML 5 क्या करता है?

एचटीएमएल 5 को शुरू से ही "कापथ्य को रोकने" की दिशा में तैयार किया गया था।

और मुझे क्या करना चाहिये?

आह, अब यह व्यक्तिपरक और तर्कपूर्ण है :)

कुछ लोगों को लगता है कि पाठकों की आंखों के सामने होने के कारण स्पष्ट टैग पठनीयता और स्थिरता के लिए बेहतर हैं।

कुछ लोगों को लगता है कि संपादक को न छेडने के गुण से पठनीयता और बनाए रखने के लिए अनुमानित टैग बेहतर हैं।


1
+1 मैंने "मज़बूती से अनुमान लगाया" की धारणा के बारे में नहीं सोचा था। तो यह इस विचार की वकालत करता है कि वास्तव में कोई एक रास्ता या दूसरा इरादा नहीं था। मैंने यह माना कि विनिर्देश मौजूदा HTML सामग्री और HTML विशिष्टताओं के साथ यथासंभव संगत होने का प्रयास कर रहा था।
इयान बॉयड

क्षमा करें, डेव, मैंने इसे aslum को दिया; उसे प्रतिनिधि की आवश्यकता है :) लेकिन आपके पास एक ही विचार है, अधिक लिंक और उद्धृत सामग्री के साथ। लेकिन अच्छा जवाब।
इयान बॉयड

8

HTML 5 क्या करता है?

इस प्रश्न का उत्तर W3C वर्किंग ड्राफ्ट में है: http://www.w3.org/TR/html5/syntax.html#syntax-tag-omission

और मुझे क्या करना चाहिये?

यह स्टाइल की बात है। मैं अंत टैग को कभी भी छोड़ने की कोशिश नहीं करता क्योंकि यह मुझे कठोर होने में मदद करता है और आवश्यक नहीं है कि टैग को छोड़ देना चाहिए।


HTML 5 ड्राफ्ट और उचित अनुभाग के ड्राफ्ट के लिंक के लिए +1। लेकिन html 5 एक तरह से या दूसरे को नहीं कहता है।
इयान बॉयड

6

यदि यह अतिश्योक्तिपूर्ण है, तो इसे छोड़ दें।

यदि यह एक उद्देश्य (यहां तक ​​कि प्रतीत होता है कि तुच्छ उद्देश्य, जैसे कि आपका आईडीई जारी करना या आपकी आंखों को खुश करना) परोसता है, तो इसे अंदर छोड़ दें।

यह वैकल्पिक वस्तुओं को देखने के लिए एक अच्छी तरह से परिभाषित कल्पना में दुर्लभ है जो व्यवहार को प्रभावित नहीं करता है। "टिप्पणियों" के अपवाद के साथ, बिल्कुल। लेकिन HTML कल्पना एक डिजाइन कल्पना से कम है, और वर्तमान प्रमुख कार्यान्वयन की स्थिति का एक दस्तावेज का अधिक है। इसलिए जब कोई आइटम HTML में वैकल्पिक होता है और यह बिना किसी उद्देश्य के काम करता है, तो हम अनुमान लगा सकते हैं कि वैकल्पिक प्रकृति विशिष्ट ब्राउज़र में एक quirk का दस्तावेज है।

ऊपर दिए गए HTML-5 कल्पना RFC अनुभाग को देखते हुए, आप देखते हैं कि वैकल्पिक टैग अजीब तरह से टिप्पणियों की उपस्थिति से जुड़े हैं! आपको यह बताना चाहिए कि लेखक डिजाइन टोपी नहीं पहन रहे हैं। वे इसके बजाय प्रमुख कार्यान्वयन में "दस्तावेज़ द क्वर्की" का खेल खेल रहे हैं। इसलिए हम इस संबंध में युक्ति को गंभीरता से नहीं ले सकते।

तो, समाधान है: इसे पसीना मत करो। उस चीज़ पर जाएँ जो वास्तव में मायने रखती है। :)


5

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


2
रिचर्ड: जब आपके पास गहरी नेस्टेड संरचनाएं हैं, तो आपके लिए त्रुटियों को ढूंढना बहुत आसान है क्योंकि समापन टैग इरादे के बारे में अधिक जानकारी देते हैं।
गाबिन

1
मुझे लगता है कि "समापन टैग इरादे के बारे में अधिक जानकारी देते हैं" इस सवाल पर सबसे अच्छा संक्षिप्त जवाब है। एक अच्छा स्पष्ट कारण एक रास्ता या दूसरा तर्क देता है।
चौकोर कैंडी

4

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

लेकिन जब यह मायने रखता है तो उस पर कार्रवाई करें। मेरे कुछ हालिया काम पर मैं खुले टैग के लिए उत्पन्न उत्पन्न अंत और निरर्थक मूल्य विशेषताओं को समाप्त करके अपने रेंडर किए गए HTML के आकार को 1.5 एमबी से 800 केबी तक कम करने में सक्षम था, जहां तत्व का पाठ समान था। मूल्य। मेरे पास लगभग 200 टैग हैं। मैं इसे किसी अन्य तरीके से पूरी तरह से लागू कर सकता हूं, लेकिन यह अधिक काम ($ $ $) होगा, इसलिए यह मुझे पृष्ठ को अधिक संवेदनशील बनाने की अनुमति देता है।

जिज्ञासा से बाहर मैंने पाया कि अगर मैंने उन विशेषताओं के आसपास के उद्धरणों को हटा दिया, जिनकी उन्हें आवश्यकता नहीं थी तो मैं 20 केबी बचा सकता था, लेकिन मेरा आईडीई (विजुअल स्टूडियो) इसे पसंद नहीं करता है। मुझे यह जानकर भी आश्चर्य हुआ कि ASP.NET वास्तव में लंबी आईडी है जो मेरी फाइल का 20% हिस्सा है।

यह विचार कि हम कभी भी HTML के किसी भी प्रासंगिक अंश को प्राप्त कर सकते हैं सख्ती से मान्य पहले स्थान पर गुमराह किया गया था, इसलिए जो कुछ भी आपके और आपके ग्राहकों के लिए सबसे अच्छा काम करता है। अधिकांश उपकरण जो मैंने कभी देखे या इस्तेमाल किए हैं, वे कहेंगे कि वे एक्सएचटीएमएल उत्पन्न करते हैं, लेकिन वे वास्तव में 100% काम नहीं करते हैं, और वैसे भी सख्त पालन का कोई लाभ नहीं है।


मैं शायद ही कभी वैकल्पिक अंत-टैग्स को छोड़ना स्वीकार कर सकता हूं, लेकिन मुझे इसे विशेषताओं पर उद्धरण छोड़ना एक बुरा विचार लगता है। आप अपनी साइट को कुछ ब्राउज़रों में तोड़ने के लिए जोखिम में डाल रहे हैं। यदि आपके पास 800kb html फाइलें हैं तो आप कुछ गंभीर कर रहे हैं।
क्रिस्टोफ

2
@Christoph: HTML विनिर्देश के अनुसार वैकल्पिक अंतिम टैग (जैसे </p>या </li>) को छोड़ना बिल्कुल ठीक है। यदि ब्राउज़र को समझ में नहीं आता है, तो यह ब्राउज़र के साथ समस्या है।
कोनराड बोरोस्की

2

व्यक्तिगत रूप से, मैं एक्सएचटीएमएल का प्रशंसक हूं और जैसे, "मैं आवश्यक नहीं है, क्योंकि यह मुझे कठोर होने में मदद करता है और आवश्यक टैग नहीं छोड़ता है।"

परंतु

यदि आप जानबूझकर HTML 4.n का उपयोग कर रहे हैं, तो कोई यह तर्क नहीं दे सकता है कि उनमें से दस्तावेज़ का उपभोग करना आसान है, क्योंकि वैधता के विपरीत अच्छी तरह से गठित होने की धारणा एक XML अवधारणा है, और आप उस लाभ को खो देते हैं जब आप कुछ करीबी टैग को मना करें। तो एकमात्र मुद्दा वैधता बन जाता है ... और अगर यह अभी भी उनके बिना वैध है ... तो आप बैंडविड्थ भी बचा सकते हैं, नहीं?


2

अंत टैग का उपयोग करना टुकड़ों से निपटना आसान बनाता है क्योंकि उनका व्यवहार भाई-बहनों के तत्वों पर निर्भर नहीं होता है। इस कारण अकेले ही पर्याप्त सम्मोहक होना चाहिए। क्या कोई अब अखंड HTML दस्तावेजों से निपटता है?


1

C # जैसी कुछ घुंघराले ब्रैकेट भाषाओं में, आप कर्ल ब्रेसिज़ को एक स्टेटमेंट के चारों ओर छोड़ सकते हैं यदि इसकी केवल दो लाइनें लंबी हों। उदाहरण के लिए...

अगर ([स्थिति])
    [कोड]

लेकिन आप ऐसा नहीं कर सकते ...

अगर ([स्थिति])
    [कोड]
    [कोड]

तीसरी पंक्ति इफ स्टेटमेंट का हिस्सा नहीं होगी। यह पठनीयता पर चोट करता है, और बग को आसानी से पेश किया जा सकता है, और इसे खोजना मुश्किल है।

उसी कारणों के लिए, मैं सभी टैग बंद करता हूं। img टैग जैसे टैग को अभी भी बंद करने की आवश्यकता है, न कि एक अलग समापन टैग के साथ।


क्या आप HTML का उदाहरण दे सकते हैं जो इतना पेचीदा है? मेरे अनुभव में वैकल्पिक अंत टैग उतना भ्रामक नहीं है।
कोर्नेल

मुझे याद है कि कुछ साल पहले IE7 के साथ एक समस्या थी, जहाँ मुझे टेक्स्ट से अलग लाइन पर एक ओपनिंग ली टैग मिला, जिसमें कोई क्लोज़िंग ली नहीं था, IE7 ने एक बड़ी बुलेट की तरह सभी गोलियों का इलाज किया। टैग और टेक्स्ट को एक लाइन पर रखना, या टैग को बंद करना, समस्या को ठीक करेगा। मैं इसे अब रिप्रो नहीं कर सकता, हालाँकि, इसलिए शायद प्ले में सीएसएस के साथ भी कुछ करना था। लेकिन मैं आपको "मैं पूरी तरह से एक प्रेमिका ... कनाडा में है!" कहानी।
मिगुएलआर

0

यदि आप एक HTML पार्सर लिख रहे थे, तो क्या HTML को पार्स करना आसान होगा जिसमें वैकल्पिक समापन टैग, या HTML शामिल नहीं है? मुझे लगता है कि वैकल्पिक समापन टैग मौजूद होना आसान होगा, क्योंकि मुझे यह अनुमान नहीं लगाना होगा कि समापन टैग कहां होना चाहिए।

इस कारण से, मैं हमेशा वैकल्पिक समापन टैग शामिल करता हूं - इस सिद्धांत पर कि मेरा पृष्ठ तेजी से प्रस्तुत कर सकता है, क्योंकि मैं ब्राउज़र के HTML पार्सर के लिए कम काम पैदा कर रहा हूं।


1
मैं असहमत हूं; वैधता के विपरीत अच्छी तरह से गठित होने की धारणा एक एक्सएमएल-केवल अवधारणा है और जब आप ऐसे तत्व होते हैं जिनके करीबी टैग निषिद्ध हैं
रिचर्ड जेपी ले गुएन

1
मैं समझता हूं कि, लेकिन प्रदान किए गए DOM तत्व की शुरुआत और अंत दोनों हैं, भले ही आपका HTML टैग न हो। यदि आप एक <li>टैग को बंद करने वाले टैग के साथ शामिल करते हैं , तो कुछ बिंदु पर ब्राउज़र को यह तय करना होगा कि तत्व कहां समाप्त होता है, और कार्य करें जैसे कि आपने उस बिंदु पर एक अंतिम टैग लगाया था। यह तर्क की अपेक्षाकृत तुच्छ राशि हो सकती है, लेकिन "कुछ" अभी भी "कोई नहीं" से अधिक है और मुझे नहीं लगता कि यह मानना ​​अनुचित है कि वैकल्पिक अंत टैग को छोड़ना उनके लिए ब्राउज़र की तुलना में अधिक काम करता है।
जोएल मुलर

यह एक दिलचस्प बिंदु है लेकिन मैं अभी भी असहमत हूं; करीब टैग के रूप में वे की आवश्यकता होगी वैकल्पिक है और इस तरह मान्यता नियमों के अनुसार निहित हैं इसलिए जब पार्सर एक बिंदु है जहां वहाँ तक पहुँच जाता है ... है , मान्यता के अनुसार एक बंद टैग होने के लिए यह तर्क दिया नहीं किया जा सका है कि लेने का कार्य एक समापन टैग (वर्तमान में) क्या यह धीमा होगा?
रिचर्ड जेपी ले गुएन

@ रीचर्ड - मुझे लगता है कि यह किसी विशेष ब्राउज़र में वास्तविक कार्यान्वयन पर निर्भर करता है, लेकिन मेरे पास एक कठिन समय है कि आप इस विचार को स्पष्ट करें कि जहाँ आप एक तत्व को समाप्त करना चाहते हैं उसके बारे में स्पष्ट होना प्रदर्शन के लिए ब्राउज़र को बताने के बजाय प्रदर्शन के लिए बदतर होगा। आप।
जोएल म्यूलर

@RichardJPLeGuen मुझे लगता है, यह सब इस बात पर निर्भर करता है कि नियम बिल्कुल कैसे दिखते हैं। जब आप एक को बंद कर रहे हैं </table>और आपका स्टैक शामिल है <table><tbody><tr><td>, तो आप बस सब कुछ बंद कर सकते हैं जब तक आप मैच नहीं करते <table>। इसी तरह <p>गैर-घड़ी के संदर्भ में खोलने के लिए । लेकिन बहुत कठिन मामले हो सकते हैं, मुझे नहीं पता।
माआर्टिनस

-1

आपको जो कुछ भी लगता है वह कोड को अधिक पठनीय और बनाए रखने योग्य बनाता है।

व्यक्तिगत रूप से मैं हमेशा बंद करने के लिए इच्छुक हूं <td>और <tr>, लेकिन मैं कभी परेशान नहीं करूंगा <li>


1
मैं मूल डिजाइन निर्णय पर कुछ मार्गदर्शन की उम्मीद कर रहा था, और अगर वे कर सकते थे तो उन्होंने एक्स किया होगा ।
इयान बॉयड

क्या अंतर है <td>और <li>इससे आप परेशान नहीं हैं <li>? मेरे लिए, थोड़ा अंतर है।
गप्पे

कोई तकनीकी अंतर नहीं है, यह विशुद्ध रूप से व्यक्तिपरक है। मुझे लगता है कि अगर मैं td और tr को बंद कर दूं तो मैं HTML को बेहतर ढंग से पढ़ सकता हूं। लेकिन मुझे ली के साथ की जरूरत महसूस नहीं हुई।
मैथ्यू विल्सन

-2

मना समापन प्रकारों के लिए की तरह सिंटैक्स का उपयोग करें: <img />के साथ />टैग जो एक्सएमएल में स्वीकार किया जाता है बंद करने के लिए


1
यह HTML4 में काम नहीं करता है (यह अस्पष्ट SGML सिंटैक्स से मेल खाता है जो कुछ अलग करता है)। HTML5 में इसकी अनुमति है, लेकिन अर्थहीन है।
कोर्नेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.