Сайттағы барлық жобалар тегін қолданысқа берілген, жоба авторы Естен Ербол |
XHTML туралы білгеніңіздің бәрі дұрыс емес
Неге MIME-типтер соншалықты маңызды? Неге қайта-қайта соларға орала берем? Браузерлер HTML-ге әрқашан «түсіністік» танытып отырды. Егер сіз HTML парақша жасап, бірақ тег </head>-ті ұмытып кетсеңіз, браузер бәрібір парақшаны көрсете береді. (кейбір тегтер <head>-тің аяқталуы мен <body>-дың басталуына нақты емес бұйрық етеді). Сіз тегтердің иерархиялық кіріктірілуін есте ұстаңыз – олар кері тәртіппен жабылады – алайда егер сіз <b><i></b></i> сияқты код жасасаңыз, браузерлер оны (қалай болғанда да) өңдеп, ары қарай қате болды деген ескертпесіз жылжи береді.
HTML-дің «сынған» белгісі браузерде жұмыс істеуі авторларға сынған HTML-парақша жасауға жол ашты. Өте көп сынған парақшалар. Кейбір бағалау бойынша бүгінгі таңдағы вебтегі HTML-парақшаның 99% кем дегенде бір қателігі бар. Бірақ бұл қателіктер браузерлерде сол қатені анықтамай, ескертпестен аша беретіндіктен, оларды ешкім түземейді.
W3C мұны вебтің түп-тамырына зияны тиетін қате деп таныды. Оны түзеуге тырысты. 1997 жылы жарияланған XML клиенттерді кешіру дәстүрін бұзып-жарып, XML-ды тұтынатын барлық бағдарлама «синтаксистік» қателіктерді фаталды деп тануға тиіс болды. Құрдымға кетудің осынау концепциясы бірінші қателігінен-ақ «қатені айдаһарлық өңдеу» деген атпен белгілі болды. Бұнысы грекиялық көшбасшы Драконттың шығарған заңына титтей болса да қисық келген адамды бірден өлім жазасына кескені секілді. W3C HTML-ді XML-дің сөздігі ретінде өзгерткенде жаңа MIME-типпен application/xhtml+xml берілетін құжаттың бәрі сол «қатені айдаһарлық өңдеуге» тәуелді боп тұрады. XHTML-парақшада синтаксистік бір қате болса да – ұмыт қалған </head> сияқты тег немесе дұрыс кіріктірілмеген бастапқы яки соңғы тегтер – браузерлерде өңдеуді тоқтатқаннан басқа шара қалдырмайды. Олар дереу қатені ең соңғы қолданушыға көрсетеді.
Бұл идея барлық жерде танымал. Жұмыс істеп тұрған парақшалардағы қатенің 99% мөлшерінде соңғы қолданушыға қатенің болғанын көрсететін мүмкіндігі болғандықтан және XHTML 1.0 мен 1.1 жаңа мүмкіндіктердің жетіспеушілігінен, автордың шығынын ақтау үшін негізінен application/xhtml+xml жоққа шығарады. Бірақ бұл XHTML-ды тұтастай жоққа шығару емес. Мүлде олай емес. XHTML 1.0 спецификациясындағы С қосымшасы авторларға бір жол берді: «XHTML синтаксисіне ұқсайтын бірдеңе жасаңыз, бірақ оны MIME-типті text/html-мен беруді жолға қойыңыз». Мыңдаған веб-жасаушылар дәл осы ақылды пайдаланды. Олар XHTML синтаксисіне дейін «жаңарды». Бірақ бар ақпарды MIME-типпен text/html беріп отырды.
Бүгінгі таңда да миллиондаған веб-парақшалар XHTML-ден дәмелі. Олар алғашқы жолын XHTML доктайптан бастайды. Тег атауларын төменгі регистрде қолданады. Атрибуттар айналасын тырнақшаға алып жазады. <br /> и <hr /> секілді бос элементтерден кейін слэш қосады. Алайда бұл парақшалардың азғантай бөлігі ғана XML-дің «қатені айдаһарлық өңдеуі» қосылған MIME типпен application/xhtml+xml беріледі. MIME-типті text/html – мен берілген кез келген парақша – доктайптан, синтаксистен, кодтау стилінен тыс – HTML-дің «кішіпейіл» анализаторының көмегімен өңделеді, ол үнсіз белгілеу қателерін жоққа шығарады, ешқашан соңғы қолданушыға хабар бермейді, тіпті парақша техникалық тұрғыда бұзылып тұрса да.
XHTML 1.0 осы амалды қосты, бірақ XHTML 1.1 оны жапты. Ал бітпеген XHTML 2.0 «қатені айдаһарлық өңдеу» талаптарының дәстүрін жалғады. Сол себепті миллиардтаған парақша өздерін XHTML 1.0 деп есептейді. Тек қана азғантайы XHTML 1.1 дейді. НемесеXHTML 2.0. Сонымен, сіз шын мәнінде XHTML-ды қолданасыз ба? Өз MIME-типіңізді (егер қандай МІМЕ-тип қолданатыныңызды білмесеңіз, онда сіздің text/html-ті қолданатыныңызға кепілдік бере аламын) тексеріңіз. Парақшаңызды MIME-типпен application/xhtml+xml бермесеңіз, онда сіздің «XHTML» аты бойынша XML болып қалады.
Естен Ербол
Esten Tech: XHTML туралы білгеніңіздің бәрі дұрыс емес