Кіріспе
Синтаксистік немесе құрылымдық жағынан дұрыс емес веб-беттің кодтамасы. Веб-дамытуда "тег шұбы" – бұл синтаксистік немесе құрылымдық жағынан дұрыс емес веб-бет үшін жазылған HTML-ге берілген теріс сипаттама. Веб-браузерлер HTML-дегі құрылымдық немесе синтаксистік қателерге тарихи түрде кеңшілікпен қарағандықтан, веб-дамытушыларға жарияланған стандарттарды сақтауға аз қысым болды. Сондықтан, барлық браузерлерде "тег шұбын" қабылдау және мүмкін болған жағдайда жарамсыз синтаксис пен құрылымды түзетуге мүмкіндік беретін механизмдер болуы қажет. HTML-парсер (веб-браузердің бір бөлігі), жарамсыз синтаксис немесе құрылымды қамтыса да, HTML-ді таңбалау сияқты түсіндіре алатын болса, оны "тег шұбы" парсері деп атауға болады. Қазіргі уақытта барлық ірі веб-браузерлерде бұрыс HTML-ді түсіндіруге арналған "тег шұбы" парсері бар, және көптеген қателерді өңдеу элементтері стандартталған. "Тег шұбы" көптеген жалпы авторлық қателерді қамтиды, мысалы, бұрыс HTML тегтері, дұрыс емес ұяластырылған HTML элементтері және қашпаған символдар (әсіресе амперсандтар (&) және кішкентай белгілер (<)). Кодтаманы тексеру қызметі – веб-бет авторларына "тег шұбын" жасаудан сақтануға көмектесетін ресурс.
In web development, "tag soup" is a pejorative for HTML written for a web page that is syntactically or structurally incorrect. Web browsers have historically treated structural or syntax errors in HTML leniently, so there has been little pressure for web developers to follow published standards. Therefore there is a need for all browser implementations to provide mechanisms to cope with the appearance of "tag soup", accepting and correcting for invalid syntax and structure where possible. An HTML parser (part of a web browser) that is capable of interpreting HTML like markup even if it contains invalid syntax or structure may be called a tag soup parser. All major web browsers currently have a tag soup parser for interpreting malformed HTML, with most error handling elements standardized. "Tag soup" encompasses many common authoring mistakes, such as malformed HTML tags, improperly nested HTML elements, and unescaped character entities (especially ampersands (&) and less than signs (<)). The Markup Validation Service is a resource for web page authors to avoid creating tag soup.
Шолу
"Тэг шұбыры" – веб-беттерді жасаудағы әртүрлі тәжірибелерді кемсіту үшін қолданылатын термин. Олардың кейбіреулері (ауырлығы бойынша, ең ауырдан ең жеңіліне қарай) мыналарды қамтиды:
Тегтердің бұрыс орналасуы немесе дұрыс жабылмауы салдарынан қате таңбалау. Мысалы, төмендегідей:<p>Бұл <em>HTML</em> фрагментінің қателігі.</p>
Құжаттың DTD талаптарына сәйкес келмейтін, элементтердің бұрыс тіркесуінен туындаған жарамсыз құрылым. Мысалы, HTML 4.01 немесе XHTML DTD-ның кез келген нұсқасында "ul" элементін тікелей басқа "ul" элементінің ішіне орналастыру. Дэн Коннолли "head" бөлігінен тыс жерде "title" элементін қолдануды мысалға келтіреді. W3C ұсыныстарында анықталғандардың орнына, меншік немесе анықталмаған элементтер мен атрибуттарды пайдалану. Мысалы, бастапқыда тек Netscape және Internet Explorer браузерлері қолдаған, стандартты емес Blink немесе Marquee элементтерін пайдалану.
Invalid structure where elements are improperly nested according to the DTD for the document. Examples of this include nesting a "ul" element directly inside another "ul" element for any of the HTML 4.01 or XHTML DTDs. Dan Connolly cites the use of title element outside the head section. Use of proprietary or undefined elements and attributes instead of those defined in W3C recommendations. For example the use of the Blink element or the Marquee element which were non standard elements originally only supported by Netscape and Internet Explorer browsers respectively.
Жарамсыз таңбалау
Бұрмаланған таңбалау веб-беттерді жасаудағы ең қауіпті мәселелердің бірі болып саналады. Дегенмен, білім мен ақпараттың артуының және, мүмкін, XHTML-дің көмегімен, бұрмаланған таңбалау мәселесі азайып келеді. Браузерлер бұрмаланған таңбалаумен кездескенде, автордың ниетін болжауға тырысады. Олар күткен жерлерде жабылатын тегтерді қосып, содан кейін басқа жабылатын тегтерге сәйкес келетін ашылатын тегтерді анықтауы керек. Түсіндіру браузерден браузерге айқын түрде өзгеруі мүмкін. Көптеген графикалық веб-редакторлар дұрыс құрылған таңбалауды жасаса да, автор мәтіндік редакторда кодты қолмен жазып, оны тек бір браузерде сынаса, мұндай қателерді оңай жіберіп алуы мүмкін. Осылайша, көрініс браузерден браузерге күрт өзгеруі мүмкін, себебі әрқайсысы автордың ниетін әртүрлі жолдармен "түзетуге" тырысып, содан кейін осы "түзетулерге" стиль қосады.
Құжаттың дұрыс емес құрылымы
Бұл жерде жарамсыз құжат құрылымы атрибуттар мен элементтердің оларға тиіс емес жерлерде қолданылуын білдіреді. Мысалы, "cite" элементіне "cite" атрибутын қою жарамсыз, себебі HTML және XHTML DTD-лары осы атрибутқа сол элемент үшін ешқандай мағына бермейді. Сол сияқты, "em" элементінің ішкі мазмұнына "p" элементін енгізу де жарамсыз. Бұрыс құрылымдалған белгілеуден жарамсыз белгілеуді ажыратуға жасалған қадамдармен, жарамсыз белгілеудегі мәселелер көбінесе азырақ күрделі болып көрінеді. Кейбір мамандар HTML құжаттарын (HTML немесе XHTML форматында) жасауда көбірек икемділік беретін кеңейтілген мазмұн модельдерін қолдауды ұсынады. Дегенмен, жарамсыз белгілеуді пайдалану автордың ниет еткен мағынасын бұрмалауы мүмкін, бірақ бұрыс белгілеудей емес. Көптеген графикалық веб-редакторлар әлі де жарамсыз белгілеуді жасап шығарады. Сонымен қатар, көптеген кәсіби веб-дизайнерлер мен авторлар жарамдылық мәселелеріне көңіл бөлмейді. Әлемдік желідегі көптеген сайттарда жарамсыз белгілеуге жиі кездесесіз.
Құпиялы/тұтынудан шығарылған элементтерді пайдалану
Вебтің алғашқы кезеңінде (1990-шы жылдардың көп бөлігінде) ресми HTML спецификациясының дизайны, дизайнерлердің көрнекті дизайндар жасаудағы икемділікке деген қажеттілігімен салыстырғанда, күрделене түсті. Осы қысымға жауап ретінде браузер жасаушылар HTML-ге сол кездегі стандарттардан тыс, жаңа, эксклюзивті мүмкіндіктерді біржақты түрде қосты. Бұл HTML-де кейбір браузерлерде жұмыс істейтін, бірақ басқаларында жұмыс істемейтін эксклюзивті элементтердің пайда болуына әкелді. Бұл мәселені W3C-нің 1998 жылы CSS сияқты жаңа стандарттарды енгізуі біршама баяулатты, бұл веб-беттердің көрсетілуі мен құрылымында үлкен икемділікті, көптеген қосымша HTML элементтері мен атрибуттарынсыз қамтамасыз етуге көмектесті. Сонымен қатар, HTML 4 және XHTML 1-де көптеген элементтер бір семантикалық құрылыммен алмастырылды (мысалы, меншік апплеттер мен embed элементтерін алмастыру) немесе олардың көрсетуге бағытталғандығына байланысты (мысалы, "s", "strike" және "u" элементтері) ескірген деп жарияланды. Дегенмен, браузерлерді жасаушылар қажет болған кезде HTML-ге жаңа элементтерді енгізуді жалғастырды. Кейбір браузерлер кез келген элементке tabindex атрибутын қосты. Apple WebKit-тің әзірлеушілері canvas элементін енгізді, оның кейбір нұсқаларын Mozilla қабылдады. 2004 жылы Apple, Mozilla және Opera браузерлердің барлық мінез-құлқына сәйкес келетін HTML спецификациясының жаңа нұсқасын жасау мақсатымен WHATWG құрылмын құрды. Бұл әртүрлі браузерлер арасындағы қолданыстағы келісімге сәйкес келу үшін, қажет болған жағдайда спецификацияны өзгертуді де қамтыды. Canvas және embed элементтері кейіннен WHATWG тарапынан стандартталды. Бұрын көрсетуге бағытталған және ескірген деп саналған кейбір элементтер (оның ішінде b, i және small) енгізілді, бірақ визуальды емес, медиадан тәуелсіз түрде анықталды. WHATWG спецификациясының нұсқалары W3C тарапынан HTML5 ретінде жарияланды. Microsoft Internet Explorer-дің 9-дан бұрынғы нұсқалары application/xhtml+xml ретінде берілген XHTML құжаттарын көрсетпейді. IE9 және одан кейінгі нұсқалары сәйкес келеді. Бұл мәселенің талқылауын XHTML мақаласында қараңыз.
HTML5 тілдесі
HTML5 тегтердің шатасуын шешудегі ең толыққанды шешім болуға тырысады, сонымен қатар мүмкіндігінше бұрынғы және болашақ нұсқалармен үйлесімділік сақтайды. XHTML-ден айырмашылығы, ол кері үйлесімділіктен бас тартып, талдаушылардың (парсерлердің) нашар пішінделген белгілеуге төзімділігі азайту керек деген көзқарас ұстанады, HTML5 нашар пішінделген HTML кодтың көп көлемде бар екенін және оның қолданылуы жалғаса беретінін мойындайды. Сондықтан, спецификацияны осындай кодпен максималды үйлесімділікті қамтамасыз ету үшін кеңейту қажет деп санайды. Осылайша, HTML 5 спецификациясы HTML синтаксисінің анықтамасын бүгінгі күні қолданылып жүрген жалпы синтаксиске бейімдеу және «нашар пішінделген кодты» талдаушы қалай өңдеуі керек екенін нақты сипаттау үшін өзгертті. Нашар пішінделген кодты өңдеу енді спецификацияның өзінде қарастырылады, бұл болашақта HTML талдаушыларының қосымша, спецификациядан тыс шараларды енгізу қажеттілігін азайтуға көмектеседі.
XHTML-тен жарамды ауытқулар
Қатаң XHTML-ден өзгеше, HTML және оның алдыңғысы SGML адамдармен жазу үшін жасалған, ал қалыпты кодты азайту үшін синтаксис бойынша айтарлықтай икемділікке ие. Бұл айырмашылықтар құжатты жарамсыз етпейді, демек, олар "тегтердің қайнатылған сорпасы" емес. Келесілер HTML 4 және HTML5 үшін де қолданылады, ал мысалдар HTML-дің пайда болған алғашқы күндерінен басталады. сияқты тегтерді мүлдем жіберуге болады. Тегтерді жабуды жиі жіберуге болады, себебі спецификация кейбір элементтердің өзіне-өзі ішкі жиналуын қабылдамайды. Мысалы, бірнеше элементін жабусыз жазуға болады. Жарамдылығына қарамастан, мұндай жіберулер HTML білімі бар арнайы анализаторды қажет етеді (қатаң XML-ден өзгеше). Сонымен қатар, құралдар мұндай құрылымдарды "түзетуге" тырысады. Мысалы, HTML Tidy міндетті емес тегтерді жіберуге рұқсат береді, бірақ әдепкі бойынша олай істемейді.