XHTML

bolek92
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.

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</code></code>
     1.9 Atrybut name elementu a</code></code>
     1.10 Mieszanie z innymi aplikacjami XML</code></code>
     1.11 Ruby</code></code>
2 Zobacz też</code></code>
3 Przypisy</code></code>

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łędzie[#]_.

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

</body>


XHTML:
```xml
<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 [[(X)HTML/Doctype|!DOCTYPE]] który musi być zapisany wielkimi literami.

Ponadto wartości takich atrybutów jak [[(X)HTML/Atrybuty/dir]], [[(X)HTML/Atrybuty/method]] czy [[(X)HTML/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>
główna
</body>

 - działa
a w XHTML nie - należy napisać:
```xml
<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="readonly">

</body>

Zamiast tego należy użyć
```xml
<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: „]]>]]><![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ę [[(X)HTML/a|kotwicy]]. Wartość tego atrybutu była wykorzystywana w adresach URI[#]_. 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 <wiki href="Ruby_(znaki)">Ruby</wiki>, 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</li> HTML i XHTML - najczęściej zadawane pytania (FAQ)</li> </ul>

Przypisy

.. [#] Przeglądarki nie wyświetlą błędu, jeśli XHTML wysyłasz jako HTML.
.. [#] 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

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.

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...

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.

" 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

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

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

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...

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

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.

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

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

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