XHTML में सभी वैध स्व-समापन तत्व क्या हैं (प्रमुख ब्राउज़रों द्वारा कार्यान्वित)?


188

XHTML में सभी वैध स्व-समापन तत्व (जैसे <br/>) (जैसा कि प्रमुख ब्राउज़रों द्वारा लागू किया गया है) क्या हैं?

मुझे पता है कि एक्सएचटीएमएल तकनीकी रूप से किसी भी तत्व को स्व-बंद होने की अनुमति देता है, लेकिन मैं उन तत्वों की सूची की तलाश कर रहा हूं जो सभी प्रमुख ब्राउज़रों द्वारा समर्थित हैं। Http://dusan.fora.si/blog/self-closing-tags कुछ समस्याओं के उदाहरणों के लिए देखें, जो स्वयं-समापन तत्वों जैसे <div /> के कारण होती हैं।


7
क्या यह XHTML के उद्देश्यों में से एक नहीं है? मैंने सोचा कि एक्सएचटीएमएल का एक फायदा यह था कि आप HTML उत्पन्न करने के लिए एक XML जनरेटर का उपयोग कर सकते थे। किसी भी XML जनरेटर को इस बात की जानकारी नहीं होगी कि टैग को स्व-समापन होने की क्या अनुमति है? बहुत ही अजीब।
एलिय्याह

6
कारण यह है कि "लंगड़ा", "गलत" उत्तर को स्वीकार कर लिया गया था क्योंकि यह उस सवाल का जवाब देता था जो स्पष्ट रूप से पूछ रहा था। वह जानना चाहता था कि ब्राउज़रों में मुद्दों को प्रस्तुत किए बिना XHTML को टेक्स्ट / html के रूप में प्रस्तुत करते समय कौन से तत्व स्व-बंद हो सकते हैं। XHTML में बहुत सारे पृष्ठ लिखे गए हैं और तकनीकी रूप से गलत होने पर भी इसे टेक्स्ट / html के रूप में प्रस्तुत किया गया है। इस स्पष्टीकरण के साथ प्रश्न को बेहतर बनाया जा सकता है, लेकिन एक अलग प्रश्न का उत्तर देते हुए (क्या होता है जब आप एप्लिकेशन / xml के रूप में सेवा करते हैं, या क्या पाठ / html में विलक्षण टैग का समापन होना चाहिए) इस उदाहरण में सहायक नहीं है।
निक लॉकवुड

जवाबों:


180

हर ब्राउज़र है कि समर्थन करता है एक्सएचटीएमएल (फ़ायरफ़ॉक्स, ओपेरा, सफारी, IE9 ) का समर्थन करता है स्वतः बंद होने पर वाक्य रचना हर तत्व

<div/>, <script/>, <br></br>सब ठीक काम करना चाहिए। यदि वे नहीं करते हैं, तो आपके पास अनुचित रूप से जोड़े गए XHTML DOCTYPE के साथ HTML है

DOCTYPE यह नहीं बदलता है कि दस्तावेज़ की व्याख्या कैसे की जाती है। केवल MIME प्रकार करता है

DOCTYPE की अनदेखी के बारे में W3C का निर्णय :

HTML WG ने इस मुद्दे पर चर्चा की है: इरादा पुराने (HTML-only) ब्राउज़रों को दिशानिर्देशों का पालन करके XHTML 1.0 दस्तावेज़ों को स्वीकार करने और उन्हें पाठ / HTML के रूप में सेवा देने की अनुमति देने का था। इसलिए, टेक्स्ट / HTML के रूप में दिए गए दस्तावेज़ों को HTML के रूप में माना जाना चाहिए न कि XHTML के रूप में।

यह एक बहुत ही सामान्य नुकसान है, क्योंकि W3C Validator काफी हद तक उस नियम की अनदेखी करता है, लेकिन ब्राउज़र धार्मिक रूप से इसका पालन करते हैं। पढ़ें समझौता HTML, XML और XHTML वेबकिट ब्लॉग से:

वास्तव में, इंटरनेट पर कथित तौर पर एक्सएचटीएमएल दस्तावेजों के विशाल बहुमत के रूप में कार्य किया जाता है text/html। जिसका अर्थ है कि वे XHTML बिल्कुल नहीं हैं, लेकिन वास्तव में अमान्य HTML है जो HTML पार्सरों की त्रुटि से निपटने पर हो रहा है। उन सभी "वैध XHTML 1.0!" वेब पर लिंक वास्तव में "अमान्य HTML 4.01!" कह रहे हैं।


यह जांचने के लिए कि आपके पास XHTML के DOCTYPE के साथ वास्तविक XHTML या अमान्य HTML है, इसे अपने दस्तावेज़ में रखें:

<span style="color:green"><span style="color:red"/> 
 If it's red, it's HTML. Green is XHTML.
</span>

यह मान्य है, और वास्तविक एक्सएचटीएमएल में यह पूरी तरह से काम करता है (देखें: 1 बनाम 2 )। यदि आप अपनी आँखों पर विश्वास नहीं कर सकते हैं (या MIME प्रकार सेट करना नहीं जानते हैं), तो XHTML प्रॉक्सी के माध्यम से अपना पृष्ठ खोलें ।

जाँच करने का दूसरा तरीका फ़ायरफ़ॉक्स में स्रोत है। यह अमान्य होने पर लाल रंग में स्लैश को उजागर करेगा।

HTML5 / XHTML5 में यह परिवर्तित नहीं हुआ है, और भेद भी स्पष्ट है, क्योंकि आपके पास अतिरिक्त भी नहीं है DOCTYPEContent-Typeराजा है।


रिकॉर्ड के लिए, एक्सएचटीएमएल कल्पना किसी भी तत्व को एक्सएचटीएमएल को एक्सएमएल एप्लिकेशन बनाकर स्व-समापन होने की अनुमति देता है : [जोर मेरा]

किसी भी तत्व के लिए रिक्त-तत्व टैग का उपयोग किया जा सकता है, जिसमें कोई सामग्री नहीं है , चाहे वह कीवर्ड EMPTY का उपयोग करके घोषित किया गया हो या नहीं।

यह XHTML युक्ति में स्पष्ट रूप से दिखाया गया है :

खाली तत्वों के पास या तो एक अंतिम टैग होना चाहिए या प्रारंभ टैग को समाप्त होना चाहिए />। उदाहरण के लिए, <br/>या<hr></hr>


7
नहीं सही afaik, क्योंकि अलग-अलग प्रतिपादन / व्याख्या में <script>या <div>परिणाम के स्वयं-समापन संस्करणों का उपयोग करना ।
जीसस

13
@ZeissS केवल में text/html। असली XHTML में, application/xhtml+xmlयह ठीक काम करता है। कृपया डाउनवॉट करने से पहले मैं (या XHTML युक्ति परिशिष्ट C) से जुड़ा लेख पढ़ें।
कोर्नेल

3
@ चॉनेल क्या आप स्वयं को बंद कर सकते हैं <स्क्रिप्ट /> टैग पुराने ब्राउज़रों में काम करेंगे? मुझे ऐसा नहीं लगता। आप आधिकारिक रूप से ध्वनि करते हैं, और आपकी अधिकांश जानकारी सटीक है, लेकिन अनुभव मुझे बताता है कि स्व समापन स्क्रिप्ट टैग समस्याग्रस्त होंगे और यह सबसे अच्छा है कि केवल खुद को सिरदर्द देने के बजाय उन्हें पूरी तरह से बचें।
पैराग्राफर

6
@Metagrapher यदि पुराने ब्राउज़र वास्तविक XHTML का समर्थन नहीं करते हैं, या आप MIME प्रकार सेट करने में विफल रहते हैं , तो यह काम नहीं करेगा। हालाँकि, MHTML प्रकार के साथ application/xhtml+xmlXHTML- समर्थक ब्राउज़र (इस बिंदु पर सभी प्रमुख) मैं गारंटी दे सकता हूं कि <script/>काम करेगा। MIME प्रकार के साथ। केवल।
कोर्नेल

4
@capdragon: पुराने ब्राउज़र XHTML का समर्थन नहीं करते ('एप्लीकेशन / xHTML + xml' के रूप में सेवा की जाती है)। यदि आप उन्हें 'टेक्स्ट / html' के रूप में एक एक्सएचटीएमएल दस्तावेज़ भेजते हैं, तो एक्सएचटीएमएल को टैग सूप के रूप में प्रदान किया जाता है (यानी ब्राउज़र इसे HTML के रूप में पार्स करता है और स्व-समापन टैग त्रुटियों को मानता है, जिसे वह अनुग्रह से प्राप्त करता है)। आपके विकल्प हैं 1. एचटीएमएल 4 लिखें (बिल्कुल नहीं एक विकल्प यदि ASP.NET का उपयोग करके जो XHTML को प्रदान करता है), 2. अपने एक्सएचटीएमएल को 'एप्लिकेशन / एक्सएचटीएमएल + एक्सएमएल' के रूप में परोसें (इसके लिए IE9 + की आवश्यकता है, और यह MIME प्रकार सभी ब्राउज़रों में स्क्रिप्ट को तोड़ देगा। वैसे भी, इसलिए एक विकल्प नहीं है), 3. HTML 5 लिखें, जो मूल रूप से टैग सूप को मानक बनाता है :)
Triynko

41

इस विषय पर बहुत सावधान रहने वाला एक तत्व है <script> तत्व। यदि आपके पास एक बाहरी स्रोत फ़ाइल है, तो जब आप इसे बंद करेंगे, तो यह समस्याएँ पैदा करेगा। कोशिश करो:

<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />

यह फ़ायरफ़ॉक्स में काम करेगा, लेकिन कम से कम IE6 में टूट जाता है। मुझे पता है, क्योंकि मैं इस पर भाग गया जब अति उत्साह से प्रत्येक तत्व को देखा जो मैंने देखा ;-)


MSIE के सभी संस्करणों को प्रभावित करता है: webbugtrack.blogspot.com/2007/08/…
scunliffe

4
<script> फ़ायरफ़ॉक्स 3 में सेल्फ-क्लोज़ नहीं है।
hsivonen

जब मैं इसका सामना करता था तो यह फ़ायरफ़ॉक्स में काम करता था। ऐसा लगता है जैसे यह अब किसी भी ब्राउज़र में काम नहीं करता है। शायद quirks मोड में भी काम कर सकता है?
एरिक वैन ब्राकेल

1
@ यदि आप अपने MIME प्रकार को सही पाएंगे तो फ़ायरफ़ॉक्स में यह ठीक काम करता है ।
कोर्नेल

WebKit यह कॉम्पिटिटेलिटी कारणों से करना जारी रखता है।
युहोंग बाओ

35

सेल्फ-क्लोजिंग सिंटैक्स एप्लिकेशन / xhtml + xml में सभी तत्वों पर काम करता है। यह पाठ / html में किसी भी तत्व पर समर्थित नहीं है, लेकिन HTML4 में "खाली" या HTML5 में "शून्य" तत्व वैसे भी एक अंतिम टैग नहीं लेते हैं, इसलिए यदि आप उन पर एक स्लैश डालते हैं, हालांकि यह दिखाई देता है स्व-समापन सिंटैक्स का समर्थन किया गया था।


33

से डब्ल्यू 3 स्कूलों संदर्भ साइट :

<area />
<base />
<basefont />
<br />
<hr />
<input />
<img />
<link />
<meta />

7
w3schools.com/tags/default.asp मैं 12 टैग देख रहा हूं जो समाप्त हो रहे हैं />:"area", "base", "basefont", "br", "col", "frame", "hr", "img", "input", "link", "meta", "param"
एमपीएन

94
कृपया ध्यान दें कि W3schools W3C से संबद्ध नहीं है, और यहां तक ​​कि W3C सदस्यों द्वारा भेजे गए सुधारों का जवाब देने में विफल रहता है।
कोर्नेल

2
जैसा कि अक्सर होता है, w3schools लगभग सही होते हैं। खाली तत्वों को खोजने का एक सटीक तरीका grep EMPTY xhtml1-strict.dtd | sortgrep EMPTY xhtml1-transitional.dtd | sort
रनिंग है

1
IMHO, लोग W3Schools को बहुत मुश्किल से काटते हैं। जब आप किसी विषय के बारे में कुछ नहीं जानते हैं, तो यह आपके लिए एक बेहतरीन संसाधन साबित हो रहा है जब आप STARTED () शुरू कर रहे हैं।
प्रियादु नीमरे

28

बेहतर सवाल यह होगा: कोड को प्रभावित किए बिना HTML मोड में भी क्या टैग स्व-बंद हो सकते हैं? उत्तर: केवल वे जिनके पास खाली सामग्री है (शून्य हैं)। HTML के अनुसार चश्मा निम्नलिखित तत्व शून्य हैं:

area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr

विनिर्देशन के पुराने संस्करण भी सूचीबद्ध command। इसके अलावा, विभिन्न स्रोतों के अनुसार निम्नलिखित अप्रचलित या गैर-मानक टैग शून्य हैं:

basefont, bgsound, frame, isindex


10

उम्मीद है कि यह किसी की मदद करता है:

<base />
<basefont />
<frame />
<link />
<meta />

<area />
<br />
<col />
<hr />
<img />
<input />
<param />

5

के बारे में <meta>और क्या <link>? वे उस सूची में क्यों नहीं हैं?

अंगूठे का त्वरित नियम, किसी भी तत्व को स्वयं बंद न करें जिसका उद्देश्य सामग्री है, क्योंकि यह निश्चित रूप से जल्दी या बाद में ब्राउज़र की समस्याओं का कारण होगा।

जो स्वाभाविक रूप से आत्म-समापन, जैसे <br>और <img>, स्पष्ट होना चाहिए। जो नहीं कर रहे हैं ... बस उन्हें आत्म-बंद न करें!


4

पिछली बार जब मैंने जाँच की थी, तो HTML5 में सूचीबद्ध खाली / शून्य तत्व थे।

लेखकों के लिए मान्य: क्षेत्र, आधार, br, कर्नल, कमांड, एम्बेड, ईवेंटसोर्स, hr, img, इनपुट, लिंक, मेटा, परम, स्रोत

लेखकों के लिए अमान्य: बेसफोंट, बीगसाउंड, फ्रेम, स्पेसर, मलबे

HTML5 में जो कुछ नए हैं, इसके अलावा, आपको उन लोगों के बारे में भी जानकारी देनी चाहिए जो XHTML को टेक्स्ट / html के रूप में सेवा करते समय समर्थित हो सकते हैं। (बस उत्पादित डोम की जांच करके उन्हें परीक्षण करें।)

जैसा कि XHTML ने एप्लिकेशन / xhtml + xml (जो इसे XML बनाता है) के रूप में कार्य किया है, XML नियम लागू होते हैं और कोई भी तत्व खाली हो सकता है (भले ही XHTML DTD यह व्यक्त नहीं कर सकता)।


4

आपको xHTML DTDs दिखना चाहिए , वे सभी सूचीबद्ध हैं। यहाँ सभी मुख्य की एक त्वरित समीक्षा है:

<br />
<hr />
<img />
<input />

1
फिक्स्ड और क्लीनअप मार्कअप। इस पृष्ठ के लिंक के साथ कैरफ़ुल, वे लोड करने में धीमी हैं।
ई-सतीस

4

उन्हें एचटीएमएल 5 में "शून्य" तत्व कहा जाता है। वे आधिकारिक डब्ल्यू 3 कल्पना में सूचीबद्ध हैं ।

एक शून्य तत्व एक ऐसा तत्व है जिसका सामग्री मॉडल कभी भी किसी भी परिस्थिति में सामग्री रखने की अनुमति नहीं देता है।

अप्रैल 2013 तक, वे हैं:

क्षेत्र, आधार, br, कर्नल, कमांड, एम्बेड, hr, img, इनपुट, keygen, लिंक, मेटा, परम, स्रोत, ट्रैक, wbr

दिसंबर 2018 (HTML 5.2) के अनुसार, वे हैं:

क्षेत्र, आधार, br, कर्नल, एम्बेड, hr, img, इनपुट, लिंक, मेटा, परम, स्रोत, ट्रैक, wbr


2

IE के लिए एक अन्य स्व समापन टैग समस्या शीर्षक तत्व है। जब IE (IE7 में इसे आज़माया जाता है) यह देखता है, तो यह उपयोगकर्ता को एक खाली पृष्ठ प्रस्तुत करता है। हालांकि आप "स्रोत देखें" और सब कुछ है।

<title/>

मैंने मूल रूप से यह देखा जब मेरे एक्सएसएलटी ने स्वयं समापन टैग उत्पन्न किया।


क्रोमियम <title/>टैग को पसंद नहीं करता है ।
uınbɐɥs

2

मैं इस पर अधिक विस्तार करने की कोशिश नहीं करने जा रहा हूं, खासकर जब से मैं लिखता हूं अधिकांश पृष्ठ उत्पन्न होते हैं या टैग में सामग्री होती है। केवल दो जो कभी मुझे परेशान करते हैं जब उन्हें आत्म-बंद कर दिया जाता है:

<title/>

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

<script/>

यह एक बड़ी बात है कि मैं हाल ही में समस्याओं के साथ भाग गया। सालों से मैंने हमेशा सेल्फ-क्लोजिंग <script/>टैग का इस्तेमाल किया था जब स्क्रिप्ट किसी बाहरी स्रोत से आ रही होती है। लेकिन मैंने हाल ही में एक अशक्त रूप के बारे में जावास्क्रिप्ट त्रुटि संदेशों को समझना शुरू किया। कई दिनों के शोध के बाद, मैंने पाया कि समस्या यह थी (माना जाता है) कि ब्राउज़र को <form>टैग के लिए कभी नहीं मिल रहा था क्योंकि यह एहसास नहीं था कि यह टैग का अंत था <script/>। इसलिए जब मैंने इसे अलग-अलग <script></script>टैग में बनाया , तो सब कुछ काम कर गया। मैं एक ही ब्राउज़र पर अलग-अलग पृष्ठों में अलग-अलग क्यों हूं, मुझे नहीं पता, लेकिन इसका हल ढूंढना एक बड़ी राहत थी!


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