siteuri.ro logo

www.siteuri.ro - articole si tutoriale pentru webdeveloperi

Aceasta este traducerea in romana a documentului original in engleza realizat de Steven Pemberton. Aceasta traducere poate contine erori. In caz de neclaritati, versiunea in engleza este cea autoritativa.

Traducere de Andrei Stanescu, Mai 2005.

W3C

Intrebari frecvente despre HTML si XHTML

Editor: Steven Pemberton, W3C/CWI

Data versiunii originale: 21 Iulie 2004

Intrebari frecvente despre alte tehnologii:

To comment on this document, or to send suggestions for questions, please email www-html-editor@w3.org, including the word FAQ in the subject.

Continut

  1. De ce e nevoie de XHTML? Nu e HTML destul de bun?
  2. Care sunt avantajele folosirii XHTML in loc de HTML?
  3. Pot doar sa adaug declaratia XML la documente HTML existente? Pot sa folosesc si HTML 4.01 si XHTML in documente?
  4. Care e cea mai usoara modalitate de convertire a documentelor HTML in documente XHTML?
  5. De ce sunt browserele asa de pretentioase cand e vorba de XML? Cu HTML era altfel.
  6. De ce ar trebui sa-mi pese daca documentul meu HTML corect? Apare destul de bine in browserul meu.
  7. Unde pot verifica daca documentul meu foloseste markup corect?
  8. De ce se foloseste "agent utilizator" peste tot, in loc de "browser"?
  9. De ce trebuie sa folosesc declaratii namespace in XHTML?
  10. De ce e permis sa trimiti documente XHTML 1.0 ca text/html?
  11. Ce browsere accepta tipul application/xhtml+xml?
  12. Accepta Microsoft Internet Explorer application/xhtml+xml?
  13. CSS are multe reguli speciale care se aplica doar la HTML. Sunt acestea valabile si pentru XHTML?
  14. Merge document.write in XHTML?
  15. De ce nu am voie sa trimit documentele XHTML 1.1 ca text/html?
  16. De ce a fost atributul target scos din XHTML 1.1?
  17. La ce foloseste modularizarea XHTML?
  18. De ce e nevoie de XHTML2? Nu e XHTML 1 destul de bun?
  19. Este tagul <img> inlocuit cu <object> in XHTML2?
  20. De ce nu foloseste XHTML2 XLink?
  21. De ce nu e XHTML2 compatibil cu versiunile anterioare?
  22. De ce e xml:space setat la 'preserve' in toate elementele XHTML? Eu nu vreau sa vad spatii extra in output.

De ce e nevoie de XHTML? Nu e HTML destul de bun?

HTML este probabil cel mai de success limbaj de creare al documentelor din lume. Dar cand a aparut XML, o intalnire care a durat doua zile a fost organizata pentra a evalua necesitatea crearii unei noi versiuni a HTML pentru a asigura compatibilitate cu XML. Opinia generala a fost un 'Da' cat se poate de clar: cu un HTML bazat pe XML, alte limbaje XML pot include parti scrise in XHTML, si documentele XHTML pot include parti din orice document XML. De asemenea, am profitat de ocazia oferita de acest re-design pentru a elimina anumite elemente nedorite care se strecurasera in HTML si a adauga mai multa functionalitate, spre exemplu formulare mai bune.

Care sunt avantajele folosirii XHTML in loc de HTML?

Daca documentul este XHTML 1.0 pur (fara sa includa alte limbaje de markup) atunci nu vei observa o diferenta prea mare, cel putin nu deocamdata. Totusi, cum din ce in ce mai multe unelte XML devin disponibile, spre exemplu transformarile XSLT, vei incepe sa observi avantajele XHTML. XForms, ca un alt exemplu, iti va permite sa editezi documentele XHTML (sau orice alt document XML) foarte usor, si intr-un mod controlabil. De asemenea, aplicatiile semantic web vor beneficia de avantajele documentelor XHTML.

Daca documentul tau e mai mult decat XHTML 1.0, spre exemplu daca include MathML, SMIL, sau SVG, atunci avantajele sunt imediate: nu poti folosi acestea folosind HTML.

Pot doar sa adaug declaratia XML la documente HTML existente? Pot sa folosesc si HTML 4.01 si XHTML in documente?

Nu. HTML nu este in format XML. Trebuie sa faci schimbarile necesare pentru a face documentul compatibil cu XML inainte sa il poti declara ca XML.

Care e cea mai usoara modalitate de convertire a documentelor HTML in documente XHTML?

HTML Tidy iti permite sa transformi orice document HTML intr-un document XHTML. Amaya este un browser/editor care poate salva documentele HTML ca XHTML.

De ce sunt browserele asa de pretentioase cand e vorba de XML? Cu HTML era altfel.

Acest lucru este intentionat. Browserele HTML accepta orice input, corect sau incorect, si incearca sa il interpreteze cum pot mai bine. Aceast mecanism de reparare a erorilor face browserele greu de construit, in special ca toate browserele ar trebui sa repare erorile in modalitati asemanatoare. Aceasta a insemnat si ca un numar foarte mare de documente HTML au fost facute incorect, deoarece ele apar bine in browser si autorul nu-si da seama ca exista erori. Aceasta foarte slaba calitate a majoritatii paginilor web inseamna ca e foarte greu sa creezi un nou browser.

De ce ar trebui sa-mi pese daca documentul meu e HTML corect? Apare destul de bine in browserul meu.

Toate browserele stiu ce sa faca cu HTML corect. Totusi, daca este incorect, atunci browserul va incerca sa repare documentul. Din moment ce nu toate browserele repara documentul in exact acelasi mod, aceasta inseamna ca documentul va arata diferit in browsere diferite. Din moment ce exista sute de browsere diferite (si numarul e in rapida crestere) nu doar pe calculatoare, dar si pe PDA-uri, telefoane mobile, televizoare, imprimante, si chiar frigidere, este imposibil sa testezi un site in toate browserele. Daca folosesti HTML incorect iar documentul nu merge intr-un anumit browser, e numai vina ta; daca folosesti HTML corect si documentul nu merge intr-un anumit browser, atunci este vorba de un bug in browser.

Unde pot verifica daca documentul meu foloseste markup corect?

W3C ofera acest serviciu la http://validator.w3.org/. De asemenea, browserul/editorul Amaya te asigura daca markup-ul este corect.

De ce se foloseste "agent utilizator" peste tot, in loc de "browser"?

Desi browserele sunt foarte importante pentru citirea HTML si XHTML, exista si alte programe si sisteme care citesc aceste documente. Motoarele de cautare citesc HTML si XHTML, dar nu sunt browsere. Folosind termenul "agent utilizator", tinem cont de aceste diferente.

Spre exemplu, cand cauti pe Google vei vedea uneori mesajul "This web page uses frames, but your browser doesn't support them" ("Aceasta pagina foloseste frame-uri, dar browserul tau nu le suporta") Acest mesaj in mod sigur inseamna ca putini vizitatori vor apasa pe acel link. Autorul site-ului nu a luat in considerare ca exista si alti vizitatori in afara de browsere, si ca ar trebui sa puna un text mai bun in sectiunea <noframes>, pentru ca pagina sa nu arate ridicol in rezultatele unei cautari.

De ce trebuie sa folosesc declaratii namespace in XHTML?

La inceputul dezvoltarii HTML, diferite grupuri si companii au adaugat noi elemente si atribute in HTML dupa cum au vrut. Aceasta creaza un dezastru, mai multe versiuni necompatibile de HTML. XML (X-ul vine de la extensibil) permite oricui sa foloseasca elemente si atribute din limbaje diferite, dar pentru ca browserul sau alt agent utilizator sa stie ce element apartine carui limbaj, trebuie sa-i spui acest lucru. Declaratia namespace face exact acest lucru.

De ce e permis sa trimiti documente XHTML 1.0 ca text/html?

XHTML este format XML; aceasta inseamna ca ar trebui trimis ca atare (application/xhtml+xml, application/xml, sau text/xml). Totusi, XHTML 1.0 a fost facut astfel incat sa poata functiona in browsere HTML vechi. Daca urmezi cateva reguli de compatibilitate, poti face multe documente XHTML 1.0 sa functioneze in browsere vechi. Totusi, aceste browsere nu inteleg decat media type-ul text/html, deci trebuie sa folosesti acest media type cand le trimiti documentele XHTML 1.0. Dar tine minte, daca trimiti documente XHTML ca text/html browserul iterpreteaza documentul ca fiind HTML si nu XHTML.

Ce browsere accepta tipul application/xhtml+xml?

Browsere bazate pe Mozilla, ca Mozilla, Netscape 5 sau mai nou, Galeon si Firefox, precum si Opera, Amaya, Camino, Chimera, DocZilla, iCab, Safari, toate browserele de pe telefoanele mobile care accepta WAP2, si altele. De fapt, orice browser modern. Majoritatea accepta documente XHTML si cu application/xml. Vezi XHTML Media-type test pentru detalii.

Accepta Microsoft Internet Explorer application/xhtml+xml?

Nu. Totusi, exista un truc care iti permite sa servesti documentele XHTML1.0 in Internet Explorer ca application/xml.

Include linia bolduita de mai jos in documentul tau:

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="copy.xsl"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

unde copy.xsl este un fisier care contine urmatoarele:

<stylesheet version="1.0"
     xmlns="http://www.w3.org/1999/XSL/Transform">

    <template match="/">
        <copy-of select="."/>
    </template>
</stylesheet>

Aceast fisier trebuie sa fie in acelasi site ca documentul la care se refera.

Desi servesti documentul ca XML, si este parcurs ca XML, browserul afiseaza documentul ca si cum ar fi primit text/html, si deci documentul XHTML 1.0 trebuie sa aplice regulile de compatibilitate cu browsele vechi.

Documentul va continua sa functioneze in browserele care accepta XHTML 1.0 ca application/xml.

CSS are reguli speciale care se aplica doar la HTML. Sunt acestea valabile si pentru XHTML?

Nu. Regulile CSS care se aplica la HTML, se aplica doar documentelor servite ca text/html.

Merge document.write in XHTML?

Nu. Datorita felului in care a fost definit XML, nu este posibil sa faci trucuri ca acesta, in care markup-ul este generat de script in timp ce parserul il parcurge.

Poti ajunge la acelasi rezultate folosind DOM pentru a adauga si sterge elemente.

De ce nu am voie sa trimit documentele XHTML 1.1 ca text/html?

XHTML 1.1 este XML pur, si facut sa functioneze doar ca XML. Daca e trimis browserelor vechi, pot aparea rezultate neasteptate. De aceea XHTML 1.1 trebuie trimis cu un media type pentru XHTML, cum este application/xhtml+xml.

De ce a fost atributul target scos din XHTML 1.1?

Nu a fost. XHTML 1.0 are trei versiuni: strict, transitional, si frameset. Toate aceste trei au fost facute in asa fel incat sa fie cat mai aproape de HTML 4.01 si in acelasi timp sa respecte regulile XML. XHTML 1.1 este o versiune mai noua a XHTML 1.0 strict, si nici o versiune HTML strict nu a avut vreodata atributul target. Celelalte versiuni, transitional si frameset, nu au fost reformulate in XHTML 1.1, pentru ca nu era nevoie. Daca vrei sa folosesti atributul target, foloseste XHTML 1.0 transitional.

La ce foloseste modularizarea XHTML?

Modularizarea XHTML nu este facuta pentru utilizatorii obisnuiti, ci pentru cei care creaza noi limbaje bazate pe XHTML. S-a observat ca unele companii si grupuri au dorit sa-si creeze propriile versiuni de HTML si XHTML, care nu erau interoperabile la un nivel de baza. Modularizarea XHTML imparte XHTML in module care pot fi selectate individual la crearea unui nou libaj. Astfel, orice limbaj bazat pe XHTML care foloseste tabele o va face in acelasi mod la un nivel de baza. Modularizarea creaza o limita clara, delimitand unde se pot adauga elemente si unde nu.

De ce e nevoie de XHTML2? Nu e XHTML 1 destul de bun?

HTML si XHTML au fost bune, dar sunt multe lucruri care pot fi imbunatatite. In special am imbunatatit: modalitatile de structurare, usabilitatea, accesibilitatea, internationalizarea, formularele, am scos proprietatile care exista si in XML, am redus nevoia de folosire a scripturilor si am facut ca noua versiune sa poata fi folosita mai usor de toate programele.

Este tagul <img> inlocuit cu <object> in XHTML2?

Nu. <img> este inlocuit in XHTML2, dar de altceva (desi poti folosi <object> daca vrei).

Design-ul tag-ului <img> are multe probleme in HTML:

XHTML2 spune ca toate imaginile sunt echivalente cu continutul. De aceea, poti adauga un atribut src in orice element. Browserul afiseaza imaginea daca aceasta este disponibila si o intelege, altfel foloseste continutul elementului. Spre exemplu:

<p src="harta.png">La iesirea din statie, faci la stanga, mergi drept inainte pe <strong>Strada Mare</strong>, si apoi faci la dreapta</p>

Avantajul esta ca daca dintr-un motiv oarecare imaginea nu este disponibila (spre exemplu o cadere a retelei), sau browserul nu o intelege, documentul isi pastreaza functionalitatea. Daca vrei sa pui mai mult de o imagine, o poti face:

<p src="harta.png"><span src="harta.gif">La iesirea din statie ...</span></p>

desi este mai bine sa folosesti negocierea continutului daca serverul iti permite (si majoritatea serverelor iti permit):

<p src="harta">La iesirea din statie ...</p>

Serverul 'negociaza' cu browserul, trimitandu-i ce tip de imagine prefera. Daca tot nu se poate afisa o imagine, atunci continutul elementului este folosit. Aceasta are avantajul ca poti adauga mai tarziu alte tipuri de imagini fara sa schimbi pagina in sine.

XLink si XHTML au diferite cerinte pentru linkuri, care in cele din urma s-au dovedit a fi ireconciliabile.

De ce nu e XHTML2 compatibil cu versiunile anterioare?

Este, dar intr-un fel diferit fata de cum erau celelalte versiuni de pana acum.

In versiunile HTML de pana acum, era necesar sa existe o compatibilitate cu versiunile anterioare, pentru ca noile versiuni sa poata fi folosite in browsere vechi. Spre exemplu, acesta este motivul pentru care elementul <meta> are continutul intr-un atribut in loc de un element; altfel ar aparea ca text in browsere mai vechi.

Totusi, datorita XML si foilor de stil, acest gen de compatibilitate a elementelor nu mai este necesar, deoarece orice browser XML, adica 95% din browserele folosite in momentul in care este scris acest text, pot procesa noi limbaje markup. Mare parte din XHTML 2 deja functioneaza in browserele existente, browsere care nu sunt pre-programate sa accepte XHTML2. Mare parte, dar nu totul; cand formulare si tabele au fost adaugate la HTML, utilizatorii au trebuit sa astepte noi versiuni ale browserelor pentru a le folosi. La fel in XHTML 2, pentru unele lucruri, cum ar fi XForms si XML Events, este nevoie de noi agenti utilizatori care sa inteleaga aceasta noua functionalitate.

De ce e xml:space setat la 'preserve' in toate elementele XHTML? Eu nu vreau sa vad spatii extra in output.

Atributul xml:space se refera la input: adica controleaza spatiile care vor fi prezente in DOM (versiunea documentului pe care o foloseste browserul intern); nu se refera la cum aceste spatii vor aparea pe ecran. Pentru a controla aceasta, este folosita proprietatea CSS 'whitespace'. Seteaz-o la 'pre', si spatiile in DOM vor aparea si in output; seteaz-o la 'normal' si spatiul alb va fi strans (CSS3 va avea mai multe proprietati care permit mai multe posibilitati de control).

Acesta este motivul pentru care toate elementele sunt setate la xml:space="preserve" in XHTML2, altfel proprietatea CSS 'whitespace' nu ar avea nici un efect; spatiile extra ar fi deja eliminate si nu ai mai avea nici un control asupra lor. Stylesheet-ul default va seta 'whitespace' la 'normal' pentru toate elementele in afara de <pre>, dar vei putea sa le schimbi cum vrei tu.