kaxigt.com

Jag skriver om webben för webben

HTML eller XHTML? Robert Nymans funderingar

Postad: 10 oktober 2008 | XHTML-guider | 2 Comments
Lästid: 4 minuter

Det här verkar vara den eviga frågan bland webbutvecklarna:HTML eller XHTML? Vart jag än vänder mig så verkar det finnas poster i olika forum som ställer samma fråga. Webbutvecklare frågar mig, eller andra personer skriver i sina bloggar om vad de anser vara det bästa.

Jag skriver inte detta för att tala om för Dig vilket som är det mest ultimata beslutet i frågan, snarare för att informera dig om konsekvenserna som kan uppstå beroende på vilket val du gör.

Så låt oss ta det från början.

Strict eller Transitional?

Definitivt strict! Doctype Transitional är precis vad namnet uttrycker: ett doctype för gradvisa övergångar, inte menat att användas permanent.

Om du skriver HTML och väljer Transitional så får du det vi kallar Quirks Mode rendering, det vill säga resultatet innebär att webbläsarna bara försöker att efterapa gamla och inkorrekta förhållningssätt, som i sin tur innebär att renderingen kommer att bli väldigt olika från webbläsare till webbläsare.

Om du väljer XHTML Transitional får du en strikt (den mest strikta) stil som är tillgänglig för IE (från och med IE 6). Mozillabaserade webbläsare kommer dock att leverera ”nästan standard mode”.

Väljer Du däremot att använda doctype strict så kommer du att erhålla en korrekt rendering av standarden och den mesta koncista och framåtkompatibla tolkningen av dina sidor.

Vad är XHTML?

Ett XHTML-dokument är ett dokument som måste vara väl utformad enligt de regler som styrs av XML.

Varje tagg måste stängas och vara rätt nästlad, och för taggar till exempelvis img, input, link osv måste en snabb slutslash infogas innan sluttaggen, exempelvis så här: < input type=”text” / >.

OM du skriver koder som också ska vara tillgängliga för de som använder Netscape 4 och några andra webbläsare så måste du dessutom lägga till ett blanksteg före slashen (inte för att det ska se bra ut i Netscape utan för att det ska fungera överhuvudtaget).

Du antas också vara kunnig att spara en sida som är skriven i XHTML och använda det som XML på rätt sätt.

Varför XHTML?

Det är helt beroende på vad du behöver. En del personer tror att det är mycket enkelt och konsekvent att koda XML, där allting bara behöver vara väl utformat och varje element måste stängas.

Vissa personer väljer det för att bygga ut funktionaliteten med namnrymder, för att använda det i förening med MathML och så vidare. Andra personer må arbeta med XHTML, inte för att de har valt det själva, utan för att produkterna som används av dem eller i deras bolag riktar sig mot XHTML.

Jag har hört något om application/xhtml+XML?

Precis, det handlar om vilken MIME-type du använder för din kod.

För HTML används media type text/html. Enligt W3C, organisationen bakom många rekommendationer såsom HTML, XHTML och så vidare (även mest känd som webstandarder), så klarlägger dom i deras XHTML Media Types document följande (obs! Engelska)

”application/xhtml+XML’ SHOULD be used for serving XHTML documents to XHTML user agents. Authors who wish to support both XHTML and HTML user agents MAY utilize content negotiation by serving HTML documents as ‘text/html’ and XHTML documents as ‘application/xhtml+XML’. Also note that it is not necessary for XHTML documents served as ‘application/xhtml+XML’ to follow the HTML Compatibility Guidelines.”

Vad denna översättning säger är att webbläsarna som kan hantera application/xhtml+XML borde få det levererat på detta sätt.

Likväl, IE stöder inte den formen av media type, så till IE krävs det att du sänder koder som är text/html. I grund och botten betyder det att du måste leverera sidor med olika media types till olika webbläsare genom att använda något som kallas för content negotiation.

Vid det här laget kanske du tycker att det är för mycket att krångla med och därför väljer du att bara använda text/html. Jag menar, trots allt, tillägget C (Appendix C) HTML Compatibility Guidelines presenterar validiteten som en fungerande XHTML just som text/html.

Emellertid, sen kanske du läser detta.

”XHTML documents served as ‘text/html’ will not be processed as XML [XML10], e.g. well-formedness errors may not be detected by user agents. Also be aware that HTML rules will be applied for DOM and style sheets…”

Det här innebär att webbläsarna inte vill rendera dina sidor som XHTML, mer som HTML, och faller tillbaka på felaktiga hanteringar och försöker att gissa hur det egentligen är menat att vara. Då är du troligen tillbaka på ruta ett, just för att du inte vill att det ska vara så.

Tilläggas bör, något annat som också är absolut viktigt att veta är att vissa script inte vill fungera när dom levereras som application/xhtml+XML.

Som exempel, använder du document.write eller ads (reklam) på din sida där en färdig reklamlänk tillhandahålls från exempelvis Google AdSense så kommer den att sluta att fungera. Om du därutöver har implementerat en AJAX applikation genom att använda egenskapen innerHTML på ett element, då kommer inte det heller att fungera.

Vad är Roberts åsikt?

Min personliga inställning är att det mest viktiga är att du väljer Doctype Strict, oavsett om det är HTML eller XHTML. Om du vill använda XHTML och leverera det som text/html, kontrollera noga så att du inte med flit använder koder som kan haverera om de levereras som application/xhtml+XML.

Använd inte skript, som de ovanstående beskrivna, i en XHTML-sida, och ta den tid det behövs för att sidan ska vara väl utformad. Var också uppmärksam på att en sida som skickar information om att vara application/xhtml+XML, men inte är väl utformad, kommer inte att renderas överhuvudtaget. Istället kommer det visas ett felaktigt meddelande till den som besöker sidan.

Anne använde mig som ett exempel i HTML, själv hade jag hellre velat sett mig som ett språkrör när det handlar om att göra genomtänka beslut, oavsett beslut. Ibland jobbar jag med HTML i mitt dagliga arbete och ibland med XHTML, beroende på en massa faktorer. Så, välj det som du tror kommer att passa just dina behov, och välj klokt. Och var säker på att beslutet är väl genomtänkt.

Tack Robert! Artikeln HTML or XHTML? är översatt från engelska till svenska med tillåtelse av Robert Nyman