Кіріспе

Синтаксистік немесе құрылымдық жағынан дұрыс емес веб-беттің кодтамасы. Веб-дамытуда "тег шұбы" – бұл синтаксистік немесе құрылымдық жағынан дұрыс емес веб-бет үшін жазылған HTML-ге берілген теріс сипаттама. Веб-браузерлер HTML-дегі құрылымдық немесе синтаксистік қателерге тарихи түрде кеңшілікпен қарағандықтан, веб-дамытушыларға жарияланған стандарттарды сақтауға аз қысым болды. Сондықтан, барлық браузерлерде "тег шұбын" қабылдау және мүмкін болған жағдайда жарамсыз синтаксис пен құрылымды түзетуге мүмкіндік беретін механизмдер болуы қажет. HTML-парсер (веб-браузердің бір бөлігі), жарамсыз синтаксис немесе құрылымды қамтыса да, HTML-ді таңбалау сияқты түсіндіре алатын болса, оны "тег шұбы" парсері деп атауға болады. Қазіргі уақытта барлық ірі веб-браузерлерде бұрыс HTML-ді түсіндіруге арналған "тег шұбы" парсері бар, және көптеген қателерді өңдеу элементтері стандартталған. "Тег шұбы" көптеген жалпы авторлық қателерді қамтиды, мысалы, бұрыс HTML тегтері, дұрыс емес ұяластырылған HTML элементтері және қашпаған символдар (әсіресе амперсандтар (&) және кішкентай белгілер (<)). Кодтаманы тексеру қызметі – веб-бет авторларына "тег шұбын" жасаудан сақтануға көмектесетін ресурс.

Шолу

"Тэг шұбыры" – веб-беттерді жасаудағы әртүрлі тәжірибелерді кемсіту үшін қолданылатын термин. Олардың кейбіреулері (ауырлығы бойынша, ең ауырдан ең жеңіліне қарай) мыналарды қамтиды:

Тегтердің бұрыс орналасуы немесе дұрыс жабылмауы салдарынан қате таңбалау. Мысалы, төмендегідей:<p>Бұл <em>HTML</em> фрагментінің қателігі.</p>
Құжаттың DTD талаптарына сәйкес келмейтін, элементтердің бұрыс тіркесуінен туындаған жарамсыз құрылым. Мысалы, HTML 4.01 немесе XHTML DTD-ның кез келген нұсқасында "ul" элементін тікелей басқа "ul" элементінің ішіне орналастыру. Дэн Коннолли "head" бөлігінен тыс жерде "title" элементін қолдануды мысалға келтіреді. W3C ұсыныстарында анықталғандардың орнына, меншік немесе анықталмаған элементтер мен атрибуттарды пайдалану. Мысалы, бастапқыда тек Netscape және Internet Explorer браузерлері қолдаған, стандартты емес Blink немесе Marquee элементтерін пайдалану.

Жарамсыз таңбалау

Бұрмаланған таңбалау веб-беттерді жасаудағы ең қауіпті мәселелердің бірі болып саналады. Дегенмен, білім мен ақпараттың артуының және, мүмкін, 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 міндетті емес тегтерді жіберуге рұқсат береді, бірақ әдепкі бойынша олай істемейді.