टैग सूप

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

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

टैग सूप में कई सामान्य संलेखन गलतियाँ शामिल हैं, जैसे कि अच्छी तरह से निर्मित तत्व, अनुचित रूप से नेस्टेड HTML तत्व, और HTML में पलायनवादी चरित्र  कैरेक्टर एन्कोडिंग (विशेष रूप से एम्परसेंड (&) और कम-से-संकेत (<))।

"I have used this term in my instruction for years to characterize the jumble of angle brackets acting like tags in HTML in pages that are accepted by browsers. Improper minimization, overlapping constructs ... stuff that looks like SGML markup but the creator didn't know or respect SGML rules for the HTML vocabulary. In effect a soupy collection of text and markup. [...] I've never seen the term defined anywhere."

- G. Ken Holman

W3C मार्कअप सत्यापन सेवा वेब पेज लेखकों के लिए टैग सूप बनाने से बचने के लिए एक संसाधन है।

सिंहावलोकन
टैग सूप एक ऐसा शब्द है जिसका उपयोग वेब संलेखन में विभिन्न प्रथाओं को बदनाम करने के लिए किया जाता है। इनमें से कुछ (मोटे तौर पर सबसे गंभीर से कम गंभीर के क्रम में) में शामिल हैं:


 * 1) विकृत मार्कअप जहां टैग अनुचित तरीके से नेस्ट किए गए हैं या गलत तरीके से बंद किए गए हैं। उदाहरण के लिए, निम्नलिखित:
 * 2) अमान्य संरचना जहां दस्तावेज़ के लिए दस्तावेज़ प्रकार की परिभाषा के अनुसार तत्वों को अनुचित तरीके से नेस्ट किया जाता है। इसके उदाहरणों में HTML 4.01 या XHTML DTDs में से किसी के लिए एक ul तत्व को सीधे दूसरे ul तत्व के अंदर नेस्ट करना शामिल है। डैन कोनोली (कंप्यूटर वैज्ञानिक) हेड सेक्शन के बाहर शीर्षक तत्व के उपयोग का हवाला देते हैं।
 * 3) W3C अनुशंसाओं में परिभाषित के बजाय मालिकाना या अपरिभाषित तत्वों और विशेषताओं का उपयोग। उदाहरण के लिए ब्लिंक तत्व या मार्की तत्व का उपयोग जो गैर-मानक तत्व थे जो मूल रूप से क्रमशः केवल नेटस्केप और इंटरनेट एक्सप्लोरर ब्राउज़रों द्वारा समर्थित थे।

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

अवैध दस्तावेज़ संरचना
यहां अमान्य दस्तावेज़ संरचना का अर्थ केवल उन विशेषताओं और तत्वों का उपयोग है जहाँ वे संबंधित नहीं हैं। उदाहरण के लिए, एक उद्धरण तत्व पर एक उद्धरण विशेषता रखना अमान्य है क्योंकि HTML और XHTML DTDs उस तत्व पर उस विशेषता का कोई अर्थ नहीं बताते हैं। इसी तरह, एम तत्व की सामग्री के भीतर एक पी तत्व भी अमान्य है। विकृत मार्कअप को अमान्य मार्कअप से अलग करने की दिशा में कदम उठाने के साथ, अमान्य मार्कअप की समस्याओं को उत्तरोत्तर कम गंभीर के रूप में देखा जा रहा है। कुछ लोगों ने शिथिल सामग्री मॉडल की वकालत करना शुरू कर दिया है जो HTML दस्तावेज़ों (चाहे HTML या XHTML में) को संलेखित करने में अधिक लचीलेपन की अनुमति देता है। हालांकि, अमान्य मार्कअप का उपयोग लेखक के इच्छित अर्थ को धुंधला कर सकता है, हालांकि विकृत मार्कअप जितना गंभीर नहीं है।

कई ग्राफ़िक वेब संपादक अभी भी अमान्य मार्कअप प्रस्तुत करते हैं। इसके अलावा, कई पेशेवर वेब डिज़ाइनर और लेखक वैधता के मुद्दों पर बहुत कम ध्यान देते हैं। वर्ल्ड वाइड वेब में कई साइटों में अमान्य मार्कअप देखना आम बात है।

स्वामित्व/बंद तत्वों का उपयोग
वेब के शुरुआती दौर में (1990 के दशक में), आधिकारिक HTML विनिर्देशन का डिज़ाइन विज़ुअली जीवंत डिज़ाइन बनाने में लचीलेपन के लिए डिजाइनरों की इच्छा की तुलना में तेजी से तनावपूर्ण हो गया। इस दबाव के प्रत्युत्तर में, ब्राउज़र निर्माताओं ने एकपक्षीय रूप से HTML में नई मालिकाना सुविधाएँ जोड़ीं जो उस समय के मानकों से बाहर थीं। इसका मतलब था कि HTML में मालिकाना तत्व थे जो कुछ ब्राउज़रों में काम करते थे, लेकिन दूसरों में नहीं।

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

इसके अलावा, एचटीएमएल 4 और एक्सएचटीएमएल 1 में, कई तत्वों को या तो एक सिमेंटिक निर्माण (जैसे मालिकाना एप्लेट और एम्बेड तत्वों की जगह वस्तु तत्व) द्वारा हटा दिया गया था या प्रस्तुतिकरण (जैसे एस, स्ट्राइक और यू तत्व) के कारण पदावनत किया गया था।

फिर भी, ब्राउज़र डेवलपर्स ने आवश्यकता महसूस होने पर HTML में नए तत्वों को पेश करना जारी रखा। कुछ ब्राउज़रों में किसी भी तत्व पर Tabindex विशेषताएँ शामिल हैं। Apple के WebKit के डेवलपर्स ने HTML कैनवास तत्व पेश किया, जिसका एक संस्करण बाद में mozilla द्वारा अपनाया गया।

2004 में, Apple, मोज़िला और ओपेरा सॉफ्टवेयर ने HTML विनिर्देशन का एक नया संस्करण बनाने के इरादे से WHATWG की स्थापना की, जो सभी ब्राउज़र व्यवहार से मेल खाएगा। इसमें विभिन्न ब्राउज़रों के बीच मौजूदा आम सहमति से मिलान करने के लिए यदि आवश्यक हो तो विनिर्देश बदलना शामिल है। कैनवास और एम्बेड करें तत्वों को बाद में WHATWG द्वारा मानकीकृत किया गया। कुछ तत्व (बी, आई और छोटे सहित) जिन्हें पहले प्रस्तुतिकरण और बहिष्कृत माना जाता था, लेकिन दृश्य तरीके के बजाय मीडिया-स्वतंत्र में परिभाषित किया गया था। WHATWG विनिर्देशन के संस्करणों को W3C द्वारा HTML5 के रूप में प्रकाशित किया गया था।

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

व्यापक शैली पत्रक (सीएसएस)
कैस्केडिंग स्टाइल शीट्स (सीएसएस) दस्तावेज़ की मार्कअप संरचना में बदलाव किए बिना दस्तावेज़ में तत्वों की प्रस्तुति को निर्दिष्ट करने के लिए एक तंत्र प्रदान करती है। सीएसएस के सामान्य होने से पहले, वेब डेवलपर्स कुछ प्रस्तुतिकरण लक्ष्यों को प्राप्त करने के लिए कुछ संरचनात्मक रूप से अमान्य मार्कअप का सहारा ले सकते थे - उदाहरण के लिए, एक विशेष प्रभाव प्राप्त करने के लिए इनलाइन तत्वों के भीतर ब्लॉक स्तर के तत्वों को शामिल करना, या कभी-कभी बड़ी संख्या में उपयोग करना  और अन्य प्रदर्शन-विशिष्ट HTML टैग। CSS इन कार्यों को पूरा करने के लिए शैली नियमों का उपयोग करता है जबकि मार्कअप को अधिक स्वच्छ और सरल बनाता है।

एक्सएमएल और एक्सएचटीएमएल
XHTML, XML पर आधारित HTML भाषा का पुनर्संरचना है। XHTML को टैग सूप से जुड़ी कई समस्याओं के समाधान के लिए विकसित किया गया था।

एक्सएमएल पार्सर्स को दस्तावेज़ सिंटैक्स और इसकी संरचना की व्याख्या करने की प्रक्रिया को अलग करने की अनुमति देता है। HTML और SGML में, एक पार्सर को पार्सिंग के दौरान तत्वों के बारे में कुछ नियमों को जानने की आवश्यकता होती है, जैसे कि कौन से तत्व अन्य तत्वों के भीतर समाहित हो सकते हैं और कौन से तत्व पिछले तत्व को पूरी तरह से बंद कर देते हैं। ऐसा इसलिए है क्योंकि HTML और SGML में, कुछ तत्वों पर क्लोजिंग टैग और यहां तक ​​कि ओपनिंग टैग वैकल्पिक थे। सभी तत्वों को स्पष्ट उद्घाटन और समापन टैग की आवश्यकता के द्वारा, XML पार्सर दस्तावेज़ को पार्स कर सकते हैं और दस्तावेज़ प्रकार के किसी भी ज्ञान के बिना एक दस्तावेज़ ट्री का उत्पादन कर सकते हैं। यह पारसर्स को सार्वभौमिक और बहुत हल्का वजन होने की अनुमति देता है, और दस्तावेज़ को मान्य करने या व्याख्या करने की प्रक्रिया से अलग होने की अनुमति देता है।

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

एक्सएमएल और एक्सएचटीएमएल नेमस्पेस की अवधारणा का परिचय देते हैं। नामस्थानों के साथ, लेखक या लेखकों के समुदाय नए शब्दार्थों के साथ नए तत्वों और विशेषताओं को परिभाषित कर सकते हैं, और उन्हें अपने XHTML दस्तावेज़ों में मिला सकते हैं। नामस्थान यह सुनिश्चित करते हैं कि विभिन्न नामस्थानों से तत्वों के नाम मिश्रित नहीं होंगे। उदाहरण के लिए, एक तालिका तत्व को एक नए नामस्थान में परिभाषित किया जा सकता है जिसमें नए शब्दार्थ HTML तालिका तत्व से भिन्न होते हैं और ब्राउज़र दोनों के बीच अंतर करने में सक्षम होगा। नामस्थान प्रदान करने में, CSS के साथ मिलकर XHTML संलेखन समुदायों को दस्तावेज़ों की शब्दार्थ शब्दावली को आसानी से विस्तारित करने की अनुमति देता है। यह मालिकाना तत्वों के उपयोग को तब तक समायोजित करता है जब तक कि उन तत्वों को पूर्ण स्टाइल शीट परिभाषाओं (श्रवण/भाषण और स्पर्श शैलियों सहित) के माध्यम से लक्षित दर्शकों को प्रस्तुत किया जा सके।

इंटरनेट मीडिया प्रकार का उपयोग करके वेब पर XHTML दस्तावेज़ प्रस्तुत किए जा सकते हैं  या  वर्तमान Microsoft इंटरनेट एक्सप्लोरर संस्करण (6, 7 और 8) के रूप में प्रदर्शित XHTML दस्तावेज़ प्रदर्शित नहीं करते हैं. आईई9 बीटा रिलीज अनुपालन प्रतीत होता है। एक्सएचटीएमएल#अडॉप्शन भी देखें।

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

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

टैग सूप को ठीक करने के लिए उपकरण

 * HTML Tidy एक सॉफ्टवेयर टूल है जो कई प्लेटफॉर्म के लिए उपलब्ध है जो अमान्य सिंटैक्स को ठीक कर सकता है, और सबसे अमान्य दस्तावेज़ संरचना, HTML जैसे कोड को HTML या XHTML में परिवर्तित कर सकता है।
 * Aggiorno एक विज़ुअल स्टूडियो ऐड-इन है जो वेबसाइटों को मानकों के अनुरूप बनाने पर केंद्रित है
 * TagSoup एक जावा लाइब्रेरी है जो HTML को पार्स करती है, इसे साफ करती है, और अच्छी तरह से गठित XML का प्रतिनिधित्व करने वाली XML घटनाओं के लिए सरल API की एक धारा प्रदान करती है। (आवश्यक रूप से वैध एक्सएचटीएमएल नहीं)। इस उपकरण का उपयोग IcedTea#IcedTea-Web|IcedTea-Web, IcedTea की एक उप-परियोजना, OpenJDK के निर्माण और एकीकरण परियोजना में उपलब्ध JNLP प्रोटोकॉल के ओपन सोर्स कार्यान्वयन में JNLP फ़ाइलों को संसाधित करने के लिए किया जाता है।
 * ब्यूटीफुल सूप सूपी HTML/XML के लिए Python दस्तावेज़ वस्तु मॉडल जैसा पार्सर है।
 * टैगसौप: हास्केल भाषा के लिए एक पुस्तकालय।

एक्सएचटीएमएल से मान्य विचलन
सख्त XHTML के विपरीत, HTML और इसके पूर्ववर्ती SGML को मनुष्यों द्वारा लिखे जाने के लिए डिज़ाइन किया गया है, और बॉयलरप्लेट को कम करने के लिए सिंटैक्स में पहले से ही लचीलेपन की एक महत्वपूर्ण डिग्री है। ये अंतर दस्तावेज़ को अमान्य नहीं बनाते हैं और इसलिए टैग सूप नहीं हैं। निम्नलिखित HTML 4 और HTML5 दोनों पर लागू होता है, और उदाहरण HTML के शुरुआती दिनों के हैं। रेफरी> क्लोजिंग ली को हटाने के लिए HTML 2 विनिर्देश § दस्तावेज़ संरचना का स्रोत देखें, और [http://info.cern. ch/hypertext/WWW/MarkUp/Tags.html मूल HTML टैग दस्तावेज़] p और हेड को बंद करने के लिए।


 * टैग पसंद है  को अक्सर पूरी तरह से छोड़ा जा सकता है।
 * टैग को बंद करने को अक्सर छोड़ा जा सकता है क्योंकि विनिर्देश कुछ तत्वों को अपने आप में नेस्ट करने को अस्वीकार करता है। उदाहरण के लिए, बहु  तत्वों को बंद किए बिना लिखा जा सकता है।

उनकी वैधता के बावजूद, इन चूकों को अभी भी पार्स करने के लिए HTML (अधिक कठोर XML के विपरीत) के ज्ञान के साथ एक विशेष पार्सर की आवश्यकता होती है। इसके अलावा, उपकरण के लिए इन संरचनाओं को भी ठीक करना आम बात है। उदाहरण के लिए, HTML Tidy वैकल्पिक टैग को छोड़ने की अनुमति देता है, लेकिन डिफ़ॉल्ट रूप से ऐसा नहीं करता है।

यह भी देखें

 * ओवरलैपिंग मार्कअप
 * विचित्र मोड

टिप्पणियाँ

 * G. Ken Holman. Re: [xml-dev] What is Tag Soup?, XML development mailing list, 11 Oct 2002. Archived message available online.
 * "tag soup." Definitions.net. STANDS4 LLC, 2013. Web. 19 Nov. 2013. soup.