Ако се занимавате професионално с уеб дизайн и пишете HTML/CSS код for living, може да ви е интересен фактът, че Dave Shea превключи от XHTML 1.0 към HTML 4.01.

[ This article is also available in English ]

Факт е, че:

1) Напоследък HTML 5 стандартът набира скорост.

2) XHTML 2.0 е вероятно никога да не се реализира като наследник на XHTML 1.0. Всъщност, най-вероятно е XHTML 2.0 да не се появи изобщо.

3) Немалко професионални дизайнери и CSS/HTML кодъри се отказват от XHTML 1.0 и се връщат обратно към HTML 4.01 (а някои от тях дори експериментират сериозно с HTML 5).

Ако сте уеб дизайнер и/или обичате да създавате HTML/XHTML код на ръка, съм любопитен, кой стандарт за HTML документи предпочитате в момента (изберете един от отговорите в анкетата по-долу):



Анкетата е непредставителна, несериозна, и резултите от нея вероятно няма да послужат за нищо друго, освен да се осведомя, дали в момента само аз си оставам (временно) привърженик на XHTML 1.0, или все още има и други като мен:)

Ако имате сериозни предпочитания към един или друг стандарт — XHTML 1.0 или HTML 4.01 (или може би дори към новия HTML 5?), ще се радвам и да разбера за аргументите ви “за” или “против” — може да оставите кратък коментар. При Дейв дискусията е изключително интересна, успях да прочета почти всички коментари вчера.

Лично на мен са ми малко неясни идеите на W3C. Как се развиват стандартите, в каква посока, и защо:

HTML 3.2 беше заместен от HTML 4.01, след това беше приет стандартът XHTML 1.0, а сега се разработва усилено… HTML 5? Никаква логика в номерирането, да не говорим пък за това, че първо имаме езика HTML (чийто корен се крие в SGML), след това W3C решават, че е добре да се опитат да обединят XML + HTML (“ражда” се XHTML 1.0), а накрая (поне привидно) се връщат към идеята за “чист” HTML и в новия стандарт (HTML 5) ‘X’-ът липсва…

Какво ли следва? Не знам. Лично аз се удивлявам малко от факта, че първите стандарти, които научих, когато започнах да се занимавам с уебдизайн, бяха HTML 3.2 и HTML 4.01, после дойде на ред XHTML 1.0 (“The Next Best Thing Since SLiced Bread” след HTML 4.01) — тогава ми се наложи да се науча да затварям тагове, които дори не трябва да се затварят (като img и br, например)… А сега, след XHTML 1.0, на ред отново е HTML?

За момента не планирам да променям стила си на кодиране. XHTML 1.0 Transitional & Strict вършат чудесна работа.

Освен това, използването на HTML 4.01 си има известни недостатъци (спрямо XHTML 1.0):

Например, при HTML 4.01 затварянето на някои тагове не е задължително. <p>, <li> могат да бъдат отворени, но не е задължително да се затворят след това, така че са валидни и двата следващи примера:

пример 1:

<ul>
<li><a href="#">Lorem</a></li>
<li><a href="#">Ipsum</a></li>
<li><a href="#">Dolor Sit</a></li>
</ul>

<p>Lorem ipsum...</p>

<p>Lorem ipsum!</p>

пример 2:

<ul>
<li><a href="#">Lorem</a>
<li><a href="#">Ipsum</a>
<li><a href="#">Dolor Sit</a>
</ul>

<p>Lorem ipsum...

<p>Lorem ipsum!

Това обаче може да доведе и до ситуацията, когато и следният пример ще е съвсем валиден за W3C валидатора:

пример 3:

<ul>
<li><a href="#">Lorem</a>
<li><a href="#">Ipsum</a></li>
<li><a href="#">Dolor Sit</a></li>
</ul>

<p>Lorem ipsum...

<p>Lorem ipsum!</p>

...но няма да изглежда толкова добре (като код).

При XHTML 1.0 такъв проблем няма. Ще е се валидира единствено пример 1, където всички отворени тагове са затворени коректно. Такъв код и по-лесно ще се проверява за грешки, и също и по-успешно може да бъде разчетен от машина.

Трябва да се отбележи още, че при HTML 4.01 не е задължително да поставяте кавички в определени случаи.

пример 4:

<div class=container>
<p>Lorem Ipsum...</p>
<p class="blue">Dolor sit...</p>
</div>

Код като този ще е валиден при HTML 4.01, но невалиден при XHTML 1.0. При XHTML 1.0 ще се валидира само следният пример:

пример 5:

<div class="container">
<p>Lorem Ipsum...</p>
<p class="blue">Dolor sit...</p>
</div>

При HTML 4.01 има и още разлики. Знаци като '&', " (кавички), и други, не е задължително да се кодират (при XHTML 1.0 знакът за амперсанд трябва да се кодира като &amp;, например).

Също и да не забравяме, че повечето от съвременните CMS системи са програмирани с идеята за XHTML 1.0 (а не HTML 4.01), и ако преминете към HTML в такава ситуация, е възможно да се окаже, че имате смесен HTML и XHTML код в рамките на една страница; в такъв случай, ще ви се наложи да промените начина на работа на CMS системата, или кодът ви няма да се валидира съвсем...

* * *

Ако сте добър дизайнер, нямате проблем да използвате HTML 4.01 или XHTML 1.0 еднакво успешно. Но дори да имате много голям опит, използването на HTML 4 крие известни рискове -- много по-лесно е да допуснете някои грешки, които валидаторът няма да открие изобщо (отворени, но незатворени тагове, и други). Оттам до някоя разновидност на tag soup, която може да се получи, е само една крачка... XHTML 1.0 е много по-строг в това отношение, и по-лесно ще ви научи да пишете добре форматиран код.

С любопитство следя развитието на HTML и CSS, но засега не съм чул достатъчно силни аргументи за това стандартът XHTML 1.0 да бъде признат за по-неудобен от HTML 4.01. Колкото до HTML 5, за момента това е само working draft, и има още да се развива доста...

По-приятно ми е да използвам някои нови разработки от CSS3, които най-модерните браузъри вече поддържат (като rounded corners -- Firefox, Safari имат перфектна поддръжка за тях в момента), отколкото да се опитвам да почна да кодирам отново в HTML стил, без "X" отпред:-)

Може и да греша, но засега предпочитам малко по-стриктното кодиране, което налага XHTML 1.0... Може би просто навик?

11 thoughts on “XHTML 1.0 или HTML 4.01 (HTML 5)?

  1. М**ната му на тоя скапан доктайп :)

    Без си е най-добре — има си разни екстри като height:100% и т.н. :) (вярно, че не работи толкова еднакво навсякъде, но е по-добре от ограничителен доктайп)

  2. Ехе Мишел, направо разбиваш с тази статия! Много си задълбал!

    Аз лично слагам DOCTYPE според случая – ако съдържанието на сайта, ще идва от редактори (доста от клиентите ми), които сами си пишат през администрация… слагам по свободен стандарт (HTML 4.01 Transitional), защото не мога да изисквам от тях да не си copy/paste от MS Word :)… а визуалните JS редактори, все още не са толкова добри, че да чистят и поддържат чист XHTML. Когато, сайтът е под по-строг контрол обикновено XHTML 1.1.

    По въпросът, защо си играят от W3C да правят ту XHTML ту HTML по-високи версии, ето те са се опитали да се оправдаят: http://dev.w3.org/html5/spec/Overview.html#html-vs-xhtml

    Според мен не грешиш – трябва да изчакаме, най-вече браузърите… и да си ползваме, това което ни е удобно. Все пак и за това се стараят хората, да не развалят старите неща!

  3. За мен единственият логичен избор е XHTML поради една проста причина – по-лесно е да ограничиш програмиста/дизайнера който УЖ ПО ПРИНЦИП би следвало да е ПРОФЕСИОНАЛИСТ и да може да схване 2 (два) прости принципа (каквото отвориш да си го затвориш и да не преплиташ тагове), получавайки огромното преимущество каквото пишеш да върви на каквато и да било платформа (включително и на тези, които още не са измислени), както и да се използва за маса цели, които може и изобщо да не ти хрумват.

    Другото е мърлявщина и надбягване с вятъра – аз ако напиша еди-какъв-си скапан код, кой браузер по-правилно ще ПРЕДПОЛОЖИ какво точно съм имал предвид?

    @Yabulka: има си чудесни редактори за CMS, които генерират XHTML. Изисква се единствено да научиш хората да си пействат текстовете първо в Notepad (за да се загуби форматирането). В крайна сметка, сайтът си е техен, така че ако не искат грозен резултат, трябва да се научат на някои прости правила.

    Без стандарти, правила и дисциплина няма как да се получи хубав продукт. Който го осъзнава, взема мерки на всички нива – и изисква от дизайнера, и съблюдава какво се въвежда после като съдържание.

  4. Много добра статия. Аз също използвам и предпочитам XHTML, в повечето си проекти съм карал на Transitional, но започвам бавно и сигурно мигриране към Strict.

    Моето разбиране за нещата: HTML ми идва малко “разхайтен”. Липсата на логични правила, елементарна семантика в кода е дразнеща, таговете с големи букви, незатворените br, img, input… липсата на каквато и да е логика с незатварянето дори на p и li. Неизползването на кавички за аргументите…дебилно е.

    Много хора излизат с логиката: “Защо да се мъча, като страницата си ми работи?” Идеята не е да се мъчат, а да се научат да пишат семантично издържан код, мина времето на WYSIWYG и липсата на логика в xhtml кода.

    Все още не съм си играл с html 5, но ако подръжката на <video> се окаже сполучлива, може да се привикне и към него…

  5. Аз по принцип се опитвам да пиша семантичен код, винаги когато мога, но ползвам и HTML 4.01 и XHTML в зависимост от случая. Ако трябва да се напише някоя статична страница и я правя в Notepad минавам с HTML 4.01, но ако правя нещо по-сериозно напр. пиша продукт който е комерсиален се опитвам да спазвам XHTML стандартите. Както казаха хората по-горе, мина времето на Frontpage, Web Creator Pro и другите скапани програми с които всеки можеше да направи някакъв сайт, в който обаче има толкова много грешки, че когато го отвориш и не може въобще да проследиш логиката на кода.
    Спомням си когато започвахме с един приятел да правим сайтове през 2004, пишехме нещо от сорта на:

    <table width="100%" height="100%">
    <tr>
    <td>
    <table>
    <tr>
    <td>
    another nested table...
    </td>
    </tr>
    </td>
    <td>stuff</td>
    </td>
    </tr>
    </table>

    :-)

  6. @Бисер:

    Строго несъгласен с твърдението ти! :-) Но! Ако смяташ, че DOCTYPE изобщо не е необходим, предполагам, тук не е мястото да обсъждаме изобщо уеб стандартите… ;-)

    @Yabulka:

    Повечето редактори (като TinyMCE и други) поддържат XHTML 1.0. А пък си мисля, че клиентът не трябва да има възможността да направи copy-paste от MS Word html… защото по-ужасно нещо от това май не мога да се сетя… освен може би “поддръжката” на CSS от Netscape 4.7x :-P

    И, btw, хич не съм задълбал — just barely scratched the surface! ;-)

    @[vladi]:

    Именно. XHTML ти дава по-малко пространство за грешки и за писане на погрешен код; именно затова го предпочитам (засега).

    А идеята набързо да покажеш на клиента, как да си пусне текста през Notepad първо, преди да го paste-на в редактора на CMS-а е много добра. Не е сложно, а се спестяват много грижи така! :)

    @Кирил Владимиров:

    За HTML 5 е малко рано, освен ако не си експериментатор. Все пак, говорим за нещо, което още не е прието като стандарт, и браузърите не го поддържат все още, или само частично…

    @Djgeorgie:

    Такъв код и аз съм писал (таблици за layout), обаче още в самото начало видях, че този път не води наникъде, и в момента, в който осъзнах, че вече има и алтернатива (CSS layout), набързо преминах на новия стандарт… Оттогава ползвам таблиците само когато имам нужда от таблица в текста… :)

    Иначе, WYSIWYG програмите все още ги има — друг е въпросът, че професионалистите отдавна не ги използват, и пишат HTML/CSS на ръка…

  7. Напоследък и аз много се двоумя над същия въпрос и то най-вече заради набиращия популярност HTML5. На доста места се споменава, най-вече покрай хората съобразяващи се с уеб стандартите, докато за бъдещето на xHTML не се чува почти нищо.
    Но за момента всеки нов проект ми апочва с това да си отворя XHTML Strict шаблона в Notepad++ :-). В този ред на мисли – има ли по-добър редактор на html код, защото в Dreamwaver-а например има някои улеснения като авто затварящ таг, който няма алтернатива в Notepad++, а това си е голям плюс за мързеливите кодери?

  8. @Ангел:

    Ами лично аз предпочитам Dreamweaver, поради няколко причини.

    1) (И както ти вече спомена), в Dw си има вградено автоматично затваряне на тагове, при това доста интелигентно направено, което прави писането на код по-бързо и лесно.

    2) Вграден FTP/sFTP. Въпреки че е доста бъгав, бавен и нестабилен, все пак, да имаш възможността директно да редактираш файлове от сървъра (и да ги връщаш там), да разглеждаш и синхронизираш директории и т.н., си е определено плюс.

    3) Има си и auto-complete, почваш да пишеш определен HTML таг или CSS правило, и Dw допълва. Удобно!

    4) Оцветяване на кода — HTML, XHTML, CSS, PHP, JS… Също доста удобно.

    Проблемът е, че Dw (CS3, CS4) е доста бавен и тромав, на моменти нестабилен, под Windows има сериозни проблеми с превключване между езиците (EN/BG), FTP/sFTP функциите отнемат 100% cpu time в момента на трансфер (което е доста глупаво), и като цяло, проблемите не са малко.

    От друга страна, за MacOS X май има много повече (и по-добри) редактори за код, но те нямат версии за WinXP/Vista… а на мен ми трябва редактор за Windows…

    …така че, за момента ползвам каквото мога, но се надявам някой ден да намеря по-добър редактор за HTML/CSS! :)

    Или, току-виж, Dw CS5 бил по-добър — но не ми се вярва… Най-много да иска 4 GB RAM и Core 2 Duo само за да работи що-годе нормално, LOL! :D

  9. @Atanas:

    Много интересна история, мерси за линкчето… :-)

Leave a Reply

Your email address will not be published. Required fields are marked *