Det beror på. För vanliga sidor spelar det inte så stor roll. Men ibland är det väldigt användbart. Här är två exempel på när XHTML är betydligt bättre:
På
http://ubuntu-se.org/planet/ samlar vi RSS- och Atom-flöden från många olika källor. Ett typiskt RSS-flöde innehåller detta:
Kod: Markera allt
<description><p>Här är innehållet med <b>formattering</b></description>
Ett typiskt Atom-flöde innehåller detta:
Kod: Markera allt
<summary type="html"><p>Här är innehållet med <b>formattering</b></p></summary>
RSS-flödet innehåller enbart text och eventuella taggar måste skrivas som "<p>". I Atom-flödet ligger XHTML-koden direkt inuti <summary>-taggen. HTML kan man inte använda på samma sätt eftersom det inte är XML.
Vad spelar det för roll då? Jo, i planeten måste koden formatteras om till något som passar oss. T.ex. filtreras all JavaScript-kod bort. Som du ser så saknas </p> i RSS-exemplet och det är bara ett exempel på vad för skit man kan få in. RSS/HTML är en riktig soppa som är svår att hantera. Atom/XHTML är däremot rent och snyggt, och kan enkelt behandlas med automatiserade verktyg. Fördelen med XML är att det är enkelt att verifiera att koden är korrekt vilket gör att den mesta XHTML-koden på nätet också är det. HTML lider av att de flesta webbläsare är alldeles för förlåtande, så det finns mängder av ful kod på nätet. Och dessutom går det som sagt inte att kombinera med andra XML-format som t.ex. Atom.
Ett annat exempel är
http://help.ubuntu-se.org/. Sidorna är skrivna i DocBook (ett XML-format) som transformeras till XHTML. Orginalet har samma utseende som
https://help.ubuntu.com/ och för att ändra utseendet behövde vi ändra i XHTML-koden. Det är ett tusental sidor så det måste skriptas på något sätt. Eftersom det är XHTML kan man använda XSLT. För att t.ex. lägga till faviconen gör vi så här:
Kod: Markera allt
<xsl:template match="xhtml:head">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<link xmlns="http://www.w3.org/1999/xhtml" rel="shortcut icon" href="/favicon.ico" />
</xsl:copy>
</xsl:template>
Vilket betyder att vi matchar på <head>, kopierar allt och lägger till <link rel="shortcut icon"....> i slutet. XSLT är ett lite smått underligt språk eftersom det är deklarativt, men det är väldigt kraftfullt. Vad är alternativet för HTML? Något fulhack i perl som är beroende av hur just vår HTML är formatterad? XSLT-snutten ovan är idiotsäker och fungerar alltid.
Slutsatsen är att om man ska göra någonting med (X)HTML-koden utöver att visa den i en webbläsare så är XHTML överlägset.