Ten artykuł wymaga dopracowania!

Jeżeli możesz popraw ten artykuł według zaleceń, które możesz znaleźć na stronie Artykuły do poprawy. Po dopracowaniu tego tekstu można usunąć ten komunikat.


<!-- Należy: * napisać, co to jest XHTML, kiedy został wymyślony, itpp. * napisać coś więcej na temat nieistniejących różnic między XHTML i HTML * napisać coś więcej o mieszaniu XHTML z innymi aplikacjami XML * coś jeszcze, czego nie umiem tego ubrać w słowa... -→
Spis treści

     1 Różnice między HTML i XHTML
          1.1 Czym XHTML od HTML się nie różni
          1.2 Typ MIME
          1.3 Poprawność kodu
          1.4 Zamykanie znaczników
          1.5 Wielkość liter
          1.6 Znaczniki formatujące i style
          1.7 Atrybuty
          1.8 Sekcje CDATA
          1.9 Atrybut name elementu a
          1.10 Mieszanie z innymi aplikacjami XML
          1.11 Ruby
     2 Zobacz też
     3 Przypisy


Różnice między HTML i XHTML


Czym XHTML od HTML się nie różni

XHTML wcale nie jest bardziej semantyczny od HTML. XHTML to tylko HTML przekształcony na dialekt XML-a. Przekształcony wraz z wersją Transitional, która dopuszcza używanie znaczników takich jak font i Frameset, która pozwala na tworzenie ramek.

Zobacz: http://pornel.net/xhtml

Typ MIME

Dokumenty XHTML powinny być wysyłane jako application/xhtml+xml. Aby tak się stało, nadaj plikowi rozszerzenie .xhtml. Dokument XHTML 1.0 możesz wysłać jako text/html, jeśli jego składnia jest kompatybilna wstecz. Wysyłanie XHTML 1.1 jako text/html jest niezalecane.

Wysyłając XHTML możesz również użyć MIME przypisanych dla XML: text/xml lub application/xml.

http://www.w3.org/TR/xhtml-media-types/#h-3.5

Poprawność kodu

Dokumenty w języku XHTML muszą być składniowo poprawne, żeby mogły być wyświetlone. Jeśli w pliku XHTML znajdzie się choć jeden błąd składni, przeglądarka wyświetli informację o błędzie1.

Zamykanie znaczników

O ile HTML jest oparty na SGML, gdzie nie ma obowiązku zamykania każdego znacznika, o tyle w przypadku opartego na XML-u XHTML-a jest to wymagane. Te znaczniki, które w HTML zostawiać otwarte można (jak p,  dd, th) lub trzeba (br, img), w XHTML trzeba zawsze zamykać. Można posłużyć się przy tym składnią samozamykających się znaczników (np. <br />).

Jeśli serwujesz XHTML przeglądarkom, które go nie wspierają, znaczniki, które w HTML muszą być otwarte zamykaj za pomocą sekwencji „/>”, przed którą postaw spację, a pozostałe zamykaj jak w HTML.

HTML:
<body>
To jest przykład<br>
</body>


XHTML:
<body>
To jest przykład<br />
</body>


Każdy znacznik w XHTML-u musi posiadać zamknięcie!

Wielkość liter

HTML nie rozróżniał wielkości liter - znaczniki można było pisać zarówno małymi jak i wielkimi literami. XML — a więc i XHTML — rozróżnia, toteż nazwy tagów i atrybutów należy pisać zawsze małymi literami. Wyjątek stanowi tag !DOCTYPE który musi być zapisany wielkimi literami.

Ponadto wartości takich atrybutów jak dir, method czy shape w XHTML muszą być pisane małymi literami.

Znaczniki formatujące i style


Załączanie stylów zgodne z językiem XML powinno wyglądać następująco:
Styl zewnętrzny:
 
<?xml-stylesheet href="styl.css" type="text/css"?>
 

Styl wewnętrzny:
 
<?xml-stylesheet href="#style" type="text/css"?>
...
<style type="text/css" id="style">
 p.normal {font-size: 10pt; font-family: Tahoma; }
</style>
...
 


Atrybuty


Według specyfikacji, w XML każdy atrybut powinien znaleźć się w cudzysłowach, bez wyjątków. W HTML-u przeglądarki akceptowały parametry bez cudzysłowów, o ile nie naruszało to składni dokumentu (co nie oznacza, że taki był standard).

Poniższy kod jest przez przeglądarki akceptowany w HTML:
<body>
<a href="index.html" target=_blank>główna</a>
</body>
- działa
a w XHTML nie - należy napisać:
<body>
<a href="index.html" target="_blank">główna</a>
</body>


Poza tym, w XHTML-u nie istnieje forma skrócona atrybutów bez wartości. Choć taka deklaracja będzie w HTML poprawna, w XHTML-u nie ma prawa działać:
<body>
<input readonly><br>
</body>

Zamiast tego należy użyć
<body>
<input readonly="readonly"><br>
</body>

W cudzysłowach powinna znajdować się nazwa atrybutu. Aby wyłączyć opcję, atrybut wystarczy pominąć.

Sekcje CDATA

Sekcje CDATA w XML pozwalają na zapisywanie <, > i & bez uciekania się do domyślnie zdefiniowanych encji. W plikach XHTML w takich sekcjach umieszcza się zwykle skrypty w języku JavaScript oraz style CSS.
W języku HTML używano do tego komentarzy, lecz ponieważ w XML-u przed rozpoczęciem parsowania parser ma prawo usunąć wszystkie komentarze, skrypty osadzone w znakach komentarza, tak samo jak style osadzone w ten sposób, mogłyby zostać zignorowane.

 
<![CDATA[
function sign(num){
   if (num > 0)
      return +1;
   else if (num < 0)
      return -1;
   else
      return 0;
}
]]>
 

Należy unikać sytuacji, w której wewnątrz sekcji CDATA miałby się znaleźć ciąg znaków „]]>”. Jeśli z jakiegoś powodu musisz użyć takiego ciągu, zapisz go w inny sposób: "]]\>" albo "]]" + ">". W ostateczności możesz przerwać sekcję CDATA i rozpocząć ją od nowa: „]]>]]&gt;<![CDATA[”

Nie ma potrzeby umieszczać skryptów ani stylów w sekcji CDATA, jeśli nie zawierają one znaków <, > ani &.

Atrybut name elementu a

Atrybut name w HTML 4.01 wyznaczał nazwę kotwicy. Wartość tego atrybutu była wykorzystywana w adresach URI2. W wysyłanym z poprawnym MIME pliku XHTML atrybut name nie może być użyty w ten sposób, ponieważ w dokumentach XML jako identyfikator elementu (tudzież identyfikator fragmentu w adresie URI) może służyć tylko atrybut typu ID, a atrybut name jest typu NMTOKEN.

Mieszanie z innymi aplikacjami XML

W pliku XHTML można osadzić inne aplikacje XML, jak XForms czy MathML i vice versa: XHTML można osadzić na przykład w kanale Atom.

Ruby

W XHTML 1.1 wprowadzono nowość: zestaw znaczników Ruby , który jest używany głównie w dokumentach wschodnioazjatyckich do zaznaczenia wymowy lub wstawienia krótkiej adnotacji. Głównym elementem Ruby jest znacznik <ruby>, który z kolei może zawierać znaczniki <rbc> i <rtc>, które zaś mogą zawierać tagi <rt>, <rb> i <rp>. Więcej informacji można znaleźć w oficjalnej specyfikacji Ruby.

Zobacz też

* Specyfikacja XHTML 1.0


Przypisy

.. [#] Przeglądarki nie wyświetlą błędu, jeśli XHTML wysyłasz jako HTML.
[1] W praktyce poprzez atrybut name można się do każdego elementu odwołać w skryptach, przy użyciu DOM poziomu 0, implementowanego w przeglądarkach ze względu na wsteczną zgodność. W Internet Explorerze da się to zrobić również przy pomocy document.getElementById(), co jest sprzeczne ze standardem.

12 komentarzy

Brak avatara
Napisany 2008-10-26 10:15 przez stempek

Witam
Autorowi jak i wszystkim zainteresowanym polecam lekturę
http://pornel.net/xhtml
http://pornel.net/transitional

i jeżeli chcesz pisać kod w 100% poprawnie, to uwzględniając że 50% ludzi siedzi na IE - albo piszesz w html dla wszystkich albo w xhtml skreślając połowe na starcie.

Avatar: Kooba
Napisany 2006-07-18 12:50 przez Kooba

co za bzdury! w html'u tez atrybuty trzeba było brac w cudzysłowia tylko nie kazdy to stosował, po co wiec uczysz złych nawyków? i co to za pseudo xhtml ?

<a target="_blank"><br>

nie dosc ze atrybut targe - bardzo typowy dla xhtml to jeszcze nie zamkniete br

poza tym co to za tag i czcionka lol ?

i atrybutom bez wartosci nie daje sie "on" "true" czy cos w tym stylu tylko jego nazwe, np

readonly="readonly"

i tego sie trzymaj...

Avatar: Coldpeer
Napisany 2006-07-16 20:41 przez Coldpeer

Ktos... oczywiście, chodziło mi o XHTML. Przynajmniej autor powinien w tym tekście napisać  XHTML, bo w końcu tekst dotyczy różnic między XHTML a HTML.

Avatar: Kooba
Napisany 2006-07-16 19:16 przez Kooba

Mętne to troche, kazdy z podpunktów mozna było "ładniej" napisać

a poza tym wypadało by jeszcze napisac o:

- korzysciach zwiazanych ze stosowaniem xhtml'a i mitach jakie wokół niego narosły
- o wykorzystywaniu xml'a w xhtml'u
- wiecej o CDATA - w sumie nie wiadomo o co chodzi

Avatar: Ktos
Napisany 2006-07-15 22:10 przez Ktos

Bzdura. Ktoś ci broni napisać sobie w XML-u znaczniki <jakisZnacznik /> czy <BLA />? Nie. Ale w XHTML-u znaczniki małe są wymagane i tyle - tak definiuje DTD.

Avatar: Coldpeer
Napisany 2006-07-15 10:56 przez Coldpeer

" W XML-u przyjęto, że nazwy tagów i parametrów należy pisać małymi literami."
przyjęło się? Taki jest wymóg :P

Avatar: Marooned
Napisany 2006-07-15 07:03 przez Marooned

FrontPage buachacahca, kod jaki generuje ten program mozna se w buty wlozyc. Ja bym nie smial nazwac tego HTMLem...

Avatar: ŁF
Napisany 2006-07-14 23:38 przez ŁF

bolek, używaj podglądu, zamiast zapisywać stronę co 5 minut

Brak avatara
Napisany 2006-07-02 10:04 przez gulldarek

bolek92: powtórzę za Marooned - co to za herezje? Uważasz FP i Zajączka za programy wyznaczające standard pisania w HTML? Podpowiem, że istnieje organizacja o nazwie W3 Consortium zajmująca się ustalaniem standardów...

Avatar: Coldpeer
Napisany 2006-07-01 20:07 przez Coldpeer

Pisało się i tak i tak - jak kto lubi tak pisał.
A tak po za tym cienki jakiś ten opis jak na razie :P

Brak avatara
Napisany 2006-06-23 17:33 przez bolek92

To sobie zobacz frontpejdża czy zajączka...

Avatar: Marooned
Napisany 2006-06-22 14:50 przez Marooned

<quote>W HTML-u zwyczajowo przyjmowano, iż tagi należy pisać dużymi literami,</quote> eee, od kiedy? co to za herezje? odkąd pamiętam w HTMLu pisało się małymi literami...

4programmers.net