Accesskey n skips to in-page navigation. Skip to the content start.
Acest document e o traducere. In caz ca apare vreo eroare sau discrepanta, ultima versiune in Engleza este cea autoritativa. Copyright-ul original apartine W3C, dupa cum e aratat mai jos..
Traducator: Andrei Stanescu
Acest articol descrie pe scurt cateva aspecte, deseori surprinzatoare, cu privire la felul in care serverele trimit documentele XHTML browser-ului, si cum browserele cele mai populare inteleg acest tip de document. Sunt descrise lucruri concrete legate de implementare, mai degraba decat standardele W3C.
Acest material a fost preluat din tutorialul How to declare the character encoding of an HTML or XHTML document. Acest material explica si diferentele dintre browsere in implementarea CSS.
Cand un server trimite un document unui browser, trimite si informatii despre ce fel de date sunt in document in campul Content-Type din header-ul HTTP. Aceasta informatie este exprimata printr-o eticheta MIME type. Urmatorul este un exemplu de header HTTP pentru un fisier HTML care foloseste MIME type-ul 'text/html'. Alaturi de aceasta informatie este transmis si character encoding-ul documentului.
HTTP/1.1 200 OK
Date: Wed, 05 Nov 2003 10:46:04 GMT
Server: Apache/1.3.28 (Unix) PHP/4.2.3
Content-Location: CSS2-REC.en.html
Vary: negotiate,accept-language,accept-charset
TCN: choice
P3P: policyref=http://www.w3.org/2001/05/P3P/p3p.xml
Cache-Control: max-age=21600
Expires: Wed, 05 Nov 2003 16:46:04 GMT
Last-Modified: Tue, 12 May 1998 22:18:49 GMT
ETag: "3558cac9;36f99e2b"
Accept-Ranges: bytes
Content-Length: 10734
Connection: close
Content-Type: text/html; charset=utf-8
Content-Language: en
Un server trimite in mod normal fisierele HTML 4.01 cu MIME type-ul text/html. HTML este o aplicatie SGML.
Lucrurile nu sunt la fel de simple cand e vorba despre XHTML 1.0, care e bazat pe XML.
Multi oameni prefera sa foloseasca XHTML datorita avantajelor pe care le aduce XML in editarea si procesarea documentelor. Totusi, unele browsere nu au suport pentru fisierele XML, asa ca multe fisiere XHTML 1.0 sunt servite cu MIME type-ul text/html. In acest caz, user agent-ul va trata fisierul ca HTML.
Pentru a asigura ca browserele mai vechi nu se impiedica de micile diferente dintre XML si HTML, trebuie sa urmezi principiile de compatibilitate din Appendix C al specificatiei XHTML cand servesti XHTML ca HTML. Acestea recomanda, printre altele, sa lasi un spatiu inainte de '/>' la sfarsitul unui tag gol (cum ar fi img, hr sau br) si sa folosesti atributele id si name pentru identificatoarele de fragment, etc.
XHTML 1.0 poate fi servit si ca XML, iar XHTML 1.1 este intotdeauna servit ca XML. Pentru a servi XHTML ca XML se foloseste unul din MIME type-urile application/xhtml+xml, application/xml sau text/xml. W3C recomanda sa servesti XHTML ca XML folosind doar primul din aceste MIME type-uri, anume application/xhtml+xml.
Faptul ca XHTML poate fi servit ca HTML sau XML creaza o diferenta in modul in care este declarat encoding-ul.
Browserele obisnuite afiseaza documentele HTML in modul standard sau quirks. Aceasta inseamna ca sunt aplicate diferite reguli, in primul caz regulile standardelor W3C, iar in cel de-al doilea caz reguli care simuleaza modul de afisare (non-standard) al browserelor vechi.
Imaginile de mai jos ilustreaza aceste diferente.
| Un document in modul standard. | Acelasi document in modul quirks. |
|---|---|
![]() |
![]() |
Diferentele ilustrate mai sus includ urmatoarele:
In modul standard latimea in CSS nu cuprinde padding sau border, dar in modul quirks latimea elementului include latimea padding si border - de aceea cutia mare este mai lata in prima poza.
CSS este folosit pentru a seta marimea fontului destul de mare pentru tag-ul body (si toate celelalte elemente prin mostenire), si a o reduce cu 50% pentru elementele p. In modul quirks tabelul nu a mostenit marimea fontului de la elementul body, deci textul este mai mic. (Observa ca textul din cutia mare este de aceeasi marime, deoarece acesta nu este intr-un tabel, ci intr-un element p.)
Cele doua poze arata aceeasi pagina, cu acelasi HTML si acelasi CSS. Singura diferenta dintre cele doua fisiere este ca cea din stanga are o declaratie DOCTYPE la inceput, iar cealalta nu are. Un fisier cu o declaratie DOCTYPE ar trebui sa fie afisat in modul standard de browserele recente. Fara DOCTYPE, este folosit modul quirks.
Aceasta schimbare se numeste si 'doctype switching'.
Iata si sursa cu declaratia DOCTYPE la inceput (in italice rosii).
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>xhtml document</title>
<style type="text/css">
body { background: white; color: black; font-family: arial, sans-serif; font-size: 25px; }
p { font-size: 50%; }
h1 { font-size: 16px; }
div { margin: 20px; width: 170px; padding: 50px; border: 6px solid teal; }
</style>
</head>
<body>
<h1>Test file for Standards Mode</h1>
<div>
<p> Here is some text in a p in a div. </p>
</div>
<table border="1">
<tr><td><p>Text in p tag.</p></td>
<td><p>Text in p tag.</p></td>
</tr>
<tr><td>No p tag.</td>
<td>No p tag.</td>
</tr>
</table>
</body>
</html>
In general este bine sa servesti paginile in modul standard, adica sa incluzi declaratia DOCTYPE.
Deoarece XHTML 1.0 este bazat pe XML, se adauga o declaratie XML la inceputul documentului, chiar daca este servit ca HTML. Astfel, documentul de mai sus arata in felul urmator (declaratia XML apare in italice rosii):
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
...
In browsere ca Firefox, Mozilla, Netscape, Opera, si altele, o pagina cu o declaratie DOCTYPE este afisata in modul standard, cu sau fara declaratia XML.
In Internet Explorer insa, daca ceva apare inaintea declaratiei DOCTYPE pagina este afisata in modul quirks. Pentru ca multi vizitatori folosesc Internet Explorer, acesta este un aspect important. Daca vrei sa te asiguri ca paginile apar la fel in toate browserele care implementeaza standardele, ai urmatoarele optiuni. Evident, daca documentul nu contine nimic care este afectat de diferenta dintre modurile standard si quirks, aceasta nu reprezinta o problema. Daca documentul este afectat, trebuie rezolvate diferentele intr-un fel sau trebuie omisa declaratia XML.
Specificatia XHTML avertizeaza ca instructiunile de procesare sunt
afisate de unii agenti (browsere). De asemenea, unii agenti interpreteaza declaratia XML gresit si documentul e tratat ca XML in loc de HTML, si deci
poate aparea altfel decat ai intentionat.
Ar trebui sa testezi in mai multe browsere pentru a vedea daca
aceasta este o problema pentru paginile tale.
Daca decizi sa omiti declaratia XML trebuie sa folosesti UTF-8 sau UTF-16 ca encoding. (Vezi Character sets & encodings in XHTML, HTML and CSS pentru mai multe informatii despre impactul declaratiilor encoding.)
XHTML 1.0 poate fi servit ca HTML sau XML. Daca il servesti ca XML, foloseste MIME type-ul application/xhtml+xml.
Este o idee buna sa incluzi o declaratie DOCTYPE la inceputul unei pagini HTML sau XHTML pentru ca documentul sa fie afisat in modul standard de browserele mai recente.
Declaratia XML intr-un fisier XHTML 1.0 servit ca HTML va face ca Internet Explorer sa foloseasca modul quirks.
Pentru mai multe detalii despre acest subiect, deschide link-urile de mai jos.
Spune-ne părerea ta (în Engleză).
Tradus din egleza: 4 July, 2005. Ultima modificare a traducerii: 2006-10-24 14:39 GMT
For the history of document changes, search for article-serving-xhtml in the i18n blog.
Copyright © 2004-2006 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Your interactions with this site are in accordance with our public and Member privacy statements.