Att skriva XHTML men leverera HTML

Är XHTML verkligen dött?

I anslutning till min guide från SGML till XHTML är det fortfarande högaktuellt att diskutera vad Tommy redan 2005 skrev i sin blogg Den Autistiska Göken – för han har absolut rätt! Det fanns, och finns förhoppningsvis ännu, goda intentioner om att utveckla ett lite mer avancerat programspråk som skulle gå under benämningen XHTML. HTML:s lite “stela” utformning behövde byggas ut så att man kunde använda det i fler sammanhang. Tillsammans med applicationen XML trodde man sig ha hittat ett bra alternativ, och det är det också. Problematiken som Tommy tar upp, och som jag trycker på i guiden, är att de flesta förvisso skriver XHTML men sedan levereras tyvärr detta som ett HTML-format, alltså i rent textformat. http://www.w3c.se/resources/office/translations/articles/i18n/serving-xhtml.html

“Vid det här laget finns det förmodligen miljoner webbplatser som använder låtsas-XHTML på ett sätt som gör att de skulle upphöra att fungera om de levererades som en applikation av XML. De kräver helt enkelt att dokumenten tolkas som HTML, trots att märkkoden utger sig för att vara XHTML”

Intresset för XHTML har ökat markant, så den stora problematiken ligger troligtvis inte enbart i att man kanske skriver felaktig XHTML. Det största problemet är att man levererar sin XHTML i textformat. Det här beror helt på okunskap om vad XHTML är och det skapar en grov kommunikationsmiss mellan dokumentet och webbläsaren.

XML parser och namespace

Tanken med XHTML är ju att bygga ut HTML 4.01 med applicationen XML, och det innebär att märkkoden XHTML tillsammans med ett relevant doctype och namespace skickar en specificerad information till webbläsarens xml-tolk, eller parser som det också kallas, så att dokumentet kan tolkas som XHTML och inte HTML. Med XML/XHTML ges det möjlighet att skapa egna märkningar. Fast det spelar ju ingen roll hur många nya märkningar man än använder sig av om inte dessa kan implementeras (realiseras) bara för att dokumentet inte tolkas korrekt. Eller hur?

Rätt MIME-type

Så fort vi lägger till XML till HTML så förändrar vi förutsättningarna. Förutom att vi måste byta doctype och ange en namespacedeclaration är det viktigt att kontrollera så att dokumentet också verkligen levereras som en xml-applikation. De flesta glömmer att ändra MIME-type utan fortsätter att spotta ut dokumenten i textformat – dvs text/html – i tron att det är XHTML. En av förutsättningarna för att ditt dokument ska kunna tolkas som XHTML är att du anger rätt MIME-type, och rätt MIME-typ för XHTML är följande:

  1. <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" />
  2. <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />

Skriver du på svenska och INTE använder WordPress eller något annat bloggverktyg som kräver engelsk encoding ska du använda det första alternativet. Ni som använder WordPress eller någon bloggplattform som är engelsk ska givetvis ha alternativ två.

CDATA-avsnitt

Sedan kommer en lite krångligare procedur. Alla inbäddade javascript och css som finns på sidan måste läggas in i sina respektive CDATA-avsnitt oavsett om de ligger i head eller body. Se följande:

  1. <script type="text/javascript"><!--//--><![CDATA[//><!-- javascriptet //--><!]]></script>
  2. <style type="text/css"><!--/*--><![CDATA[/*><!--*/ din CSS /*]]>*/--></style>

De som använder WordPress och plugin kan kika i källan. Alla som skriver sina plugin tänker inte alltid på att lägga in dessa avsnitt i sina koder så när pluginet är installerat händer det ofta att det dyker upp olika kodslyngor som borde ha omslutits av CDATA-avsnitten.

Tommy har gett upp. Han har slutat att slåss som en väderkvarn och det tycker jag är synd, men jag förstår honom. Så vem ska man skylla på? Kan man skylla på någon? Är det ett kommunikationsbrott från W3C eller är det så att man helt enkelt inte har givit sig tid till att verkligen försöka f ö r s t å hur XHTML fungerar? Personligen tror jag på det sistnämnda. Man surfar runt på webben, snappar upp lite här och lite där. Man lär sig att använda css och att applicera rätta html-märkningar. Ja till och med lär man sig att byta doctype. Men inte alla lägger till en namnrymd, och definitivt inte alla tänker på att ändra MIME-type. Jag ska berätta om en liten anekdot. För länge sedan fick jag för mig att byta design. Tyvärr tog jag fram en gammal layout som jag hade haft i HTML. Men käck som jag ansåg mig vara så bytte jag doctype och satte dit en namespace efter konstens alla regler för det hade jag ju gjort så många gånger förr. Vad jag glömde var att byta MIME-type. Jag tänkte inte heller på att det var en gammal HTML-layout och inte XHTML-layout så att kontrollera MIME-type föll mig totalt ur minnet. Men…Tommy hade en kommentar och den fick mig att reagera. Naturligtvis levererade jag inte kaxigt där och då som XHTML utan som HTML. Gissa om jag var snabb med att byta MiME-type. Sedan jag bytte till WordPress har jag upptäckt att det är betydligt knepigare att leverera xhtml – kanske dels pga en del plugin eller kommentarsystemet. Jag tror mig veta att jag skriver xhtml men det handlar inte bara att skriva korrekta koder. Tyvärr måste jag medge att kaxigt i sin nuvarande form på WP inte levererar xhtml trots mina starka intentioner – men jag jobbar hårt på det, och jag kommer att skriva hur jag löste det.

Vad jag vill ha sagt är att jag tycker att det är synd om man inte vet om detta för det finns så många duktiga och flitiga människor som gör bra hemsidor i XHTML, och visst är det tragiskt om dessa skulle falla på mållinjen bara för att de levereras i fel format?

För mer läsning i ämnet:
http://www.hixie.ch/advocacy/xhtml
http://kaxigt.com/xhtml-guide-fran-sgml-till-xhtml/

Läs även andra bloggares åsikter om , ,

Liknande poster:

Leave a Reply

Your email address will not be published. Required fields are marked *