टैग सूप

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

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

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

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

- G. Ken Holman

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

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


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

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

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

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

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

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

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

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

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

2004 में, एप्पल, मोज़िला और ओपेरा सॉफ्टवेयर ने एचटीएमएल विनिर्देशन का एक नया संस्करण बनाने के इरादे से WHATWG की स्थापना की, जो सभी ब्राउज़र व्यवहार से मेल खाएगा। इसमें विभिन्न ब्राउज़रों के बीच मौजूदा सामान्य सहमति से मिलान करने के लिए यदि आवश्यक हो तो विनिर्देश बदलना सम्मिलित है।

कैनवास और एम्बेड करें तत्वों को बाद में WHATWG द्वारा मानकीकृत किया गया। कुछ तत्व (बी, आई और छोटे सहित) जिन्हें पहले प्रस्तुतिकरण और बहिष्कृत माना जाता था, लेकिन दृश्य तरीके के अतिरिक्त मीडिया-स्वतंत्र में परिभाषित किया गया था।

WHATWG विनिर्देशन के संस्करणों को W3C द्वारा एचटीएमएल 5 के रूप में प्रकाशित किया गया था।

 टैग सूप को हल करने के लिए विनिर्देशों का विकास 

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

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

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

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

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

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

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

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

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

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

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

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


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

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

यह भी देखें

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

टिप्पणियाँ

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