On Thu, Oct 14, 2004 at 08:31:02AM +0200, Marcin Sochacki wrote:
On Thu, Oct 14, 2004 at 01:11:35AM +0200, Tomasz Wegrzanowski wrote:
Nie mozemy pisac <foo> </foo> to piszemy <div class="foo"> </div> (ideowo znacza one to samo).
Ależ nie. Np. dla przeglądarki tekstowej, dla syntezatora dla niewidomych, dla wyszukiwarki (która nie ma kontaktu z autorem strony jak i nie rozumie ewentualnych wyjaśnień wypisanych na stronie)
<div class="foo"> NIC NIE ZNACZY (dokładniej: tekst objęty tym znacznikiem nie wyróżnia się znaczeniowo od reszty tekstu).
W CSS mozna okreslic znaczenie dla przegladarki tekstowej czy syntezatora dla niewidomych.
http://www.w3.org/TR/CSS21/media.html http://www.w3.org/TR/CSS21/aural.html
Te klasy sa wlasnie semantyczne, a znaczniki HTMLa trzymamy tylko dla kompatybilnosci ze starymi przegladarkami.
Po cóż w takim razie figurują w najnowszych standardach, typu XHTML, które są przecież dalekie od kompatybilności ze starymi przeglądarkami?
No co ty mówisz, cała idea XHTML polega przecież na kompatybilności wstecz.
http://www.w3.org/TR/xhtml1/: This specification defines the Second Edition of XHTML 1.0, a reformulation of HTML 4 as an XML 1.0 application, and three DTDs corresponding to the ones defined by HTML 4. The semantics of the elements and their attributes are defined in the W3C Recommendation for HTML 4. These semantics provide the foundation for future extensibility of XHTML. Compatibility with existing HTML user agents is possible by following a small set of guidelines.
XHTML wyswietli sie poprawnie w wiekszosci bardzo archaicznych przegladarek, w kazdym razie nie mniej poprawnie niz "zwykly" HTML.
W przeciwieństwie do <foo>, które można zgodnie z odpowiednim standardem W3C interpretować jako treść o specjalnym znaczeniu i zmienić zachowanie przeglądarki, wyszukiwarki czy innego narzędzia, którym "oglądasz" stronę. Np. syntezator może czytać kawałki kodu innym głosem, a Twój własny robot wyszukujący może np. automatycznie wyciągnąć wszystkie kawałki <code> z jakiejś grupy stron. Mając tekst otagowany wyłącznie divami i stylami CSS nie byłbyś w stanie tego zrobić (każdy autor inaczej przecież może nazwać styl, inaczej formatować tekst).
Jesli webmaster uzyl <div class="foo"> to prawie na pewno foo jest informacja semantyczna, jesli uzyl <b> czy <h1>, prawie na pewno jedynie ze wzgledu na wyglad.
<b> tak -- to jest tag o znaczeniu wyłącznie wizualnym. <strong> nie -- strong oznacza semantycznie tekst wyróżniony (a w jaki sposób będzie pokazany to już zależy od przeglądarki i CSS).
Otworz 10 przypadkowo wybranych stron, i zobacz jak zostaly uzyte tagi html - semantycznie czy layoutowo, oraz jak zostaly uzyte klasy - semantycznie czy layoutowo.
Zobaczysz, ze klasy sa uzywane semantycznie o wiele czesciej niz znaczniki.
Los robotow w swiecie otwartych klas moze i jest nieprzyjemny, ale nikt nie napisal przeciez "na powaznie" takiego robota w swiecie html4. Ten zamkniety zestaw znacznikow byl tak "naduzywany", ze kod rzadko byl w <code> (częściej <pre>, <tt>, <font> lub nawet bezpośrednio w tekście), emfazę kodowano <b>, <i> lub <font> (<em> i <strong> były przecież prawie w ogóle nie używane), nagłówki często przez <center>+<font> itd.
Pewnie powiesz, ze takie uzycie jest "niepoprawne" czy "niestandardowe". Ale standard moze cos narzucic jedynie komputerom, nie ma ani praktycznej mozliwosci ani teoretycznego zamiaru narzucac takiego lub innego sposobu myslenia ludziom.
Zobacz na html generowany przez software Wikipedii - tresc artykulu (0 semantyki, czyste manipulacje layoutem) uzywa znacznikow html (i zeby bylo smieszniej glownie tych "semantycznych", jak <em> czy <strong> do kursywy i pogrubienia), za to interface (potagowany semantycznie) uzywa klas.
Bo <em> i <strong> SĄ semantyczne (a <i> i <b> nie). Z tagów strukturalnych, Wikipedia używa np. <h1 class=foo>, czyli mówimy że coś jest nagłówkiem i że mamy to sformatować według reguł zawartych w CSS przy klasie foo.
Czy naprawdę nie widzisz różnicy semantycznej między powyższym zapisem a np. <div class=foo>?
Szukanie metafizyki w htmlu jest oszukiwaniem samego siebie sie. "<em>", "<i>", "<h1>" czy "<div class=foo>" to tylko znaczki. Dla komputera kontroluja one jedynie layout, i jesli maja jakies "znaczenie" to tylko dla czlowieka - przez przyjecie takich czy innych konwencji. Konwencja, ze "<foo>" cos znaczy jest rownie poprawna jak to, ze "<div class=foo>" cos znaczy, i zeby wypowiadac sie sensownie o semantyce musimy zobaczyc jak te znaczki sa rzeczywiscie uzywane. Ja twierdze, i mam na poparcie tej tezy sporo stron internetowych, ze klasy sa uzywane semantycznie o wiele czesciej niz znaczniki.