Søger du en specifik kategori?

 



Oprettet tir. d. 03. februar 2009 kl. 17:32

olebole
olebole (214.023 point)
Guidens karaktér
1
2
3
4
5

XHTML - Hvad 'De Skriftkloge' ikke fortæller dig - (Del 2)

Dette er ikke en tutorial eller generel, enkeltstående artikel om XHTML. Forudsætningen for at få fuldt udbytte af artiklen er, at du har læst den første artikel i serien.
XHTML - overgangen er problemet
Da der er temmelig stor forskel på HTML og ægte XHTML, valgte man at 'liste' teknologien ind via et par versioner. Først XHTML2.0 bliver 'ægte' XHTML - altså ren XML uden HTML-understøttelse - og i denne overgangsfase ligger kimen til alle misforståelserne.

Hele idéen med XHTML er som sagt, at koden skal parses af klientens XML-parser. I XHTML version 1.0 kan koden dog både parses som HTML og XML - og i 1.1 burde den kun kunne parses som XML, men parses også som HTML.

Parses koden som HTML, har man ingen fordele ved XHTML fremfor velskrevet HTML4.01. Parses koden derimod som XML, går det væsentligt hutigere - og fordelene ved XHTML slår igennem.
Parses XHTML-kode som HTML, vil HTML-parseren endda opfatte koden som fejlfyldt, da der i HTML ikke er mulighed for at lukke åbne tags som <img src="hest.gif" ....  />

Et problem er, at en skræmmende stor del af det XHTML, der bliver skrevet, aldrig bliver parsed som XML ... også selvom koden er hyper-valid XHTML1.0-Strict eller XHTML1.1-Strict (mere om, hvorfor senere).
Det vil sige, at klienten modtager et dokument med en DTD, der fortæller, at der er tale om et XHTML-dokument - på trods af, det ikke kan parses som sådan -> første fejl, der skal repareres! Derefter kommer så alle de lukkede tags, der også skal repareres, før dokumentet endelig kan parses.

Kan dokumentet ikke parses som XHTML, ville browserne altså være bedre stillet, om der var skrevet valid HTML4.01 med den korrekte DTD  ;o)

XHTML er andet og mere end lukkede tags
Alle dokumenter har tilknyttet en MIME-type, der fortæller computeren, hvad den skal gøre med det pågældende dokument. Det gælder både lokale filer og webfiler på en server.

Når dokumenter distribueres over nettet, sætter serveren denne MIME-type i dokumentets HTTP-header - i feltet 'Content-type' - og denne MIME fortæller altså klienten, hvad det er for en type dokument, så den kan vide, hvad den skal stille op med det.
Bliver klienten mødt af en MIME-type, den ikke understøtter, vil den normalt åbne en dialog, hvor brugeren bliver tilbudt at downloade dokumentet.

For HTML dokumenter er MIME-typen 'text/html'.
For XHTML dokumenter 'application/xhtml+xml'.
Eller rettere:
For XHTML dokumenter burde MIME-typen være 'application/xhtml+xml'.

Der hersker i øjeblikket et syndigt rod i MIME-types for XHTML - og browsernes understøttelsen af dem. Som hovedregel skal typen være 'application/xhtml+xml', hvis XML-parseren skal tage over.
Sendes typen 'text/html', vil dokumentet altid blive parsed som HTML4.01 - og ikke som XML.

Har man ikke selv foretaget sig noget aktivt for det, vil XHTML dokumenter normalt blive served som 'text/html' - og altså mangle XHTML'ens fordele.
Er der tale om dynamiske dokumenter, er det temmelig let at sætte den korrekte MIME-type. I PHP kan det f.eks. gøres med:
  Header("Content-type: application/xhtml+xml");

Er der tale om statiske dokumenter, må man ind og pille i serveren for at få den til at sende dokumenterne med korrekt MIME. Her er der forskellige muligheder, hvis beskrivelse ikke falder ind under ambitionerne for denne artikel.

Endnu et problem er, at IE6 endnu ikke understøtter 'application/xhtml+xml' <a href="http://www.w3.org/ (...) Browser Oversigt ]</a> så, når der f.eks. er tale om en IE, må man altså serve dokumentet med en anden MIME-type.
Her er 'panik-løsningen' at anvende enten 'application/xml' eller 'text/xml'. To XML-typer, der begge tillades som nødløsninger, hvis man (i IE) bruger flg. 'hack':

<?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/ (...)
<html xmlns="http://www.w3.org/ (...)
<head>
... osv, osv.

Stylesheet'et ' copy.xsl' skal så indeholde:

<stylesheet version="1.0" xmlns="http://www.w3.org/ (...)
    <template match="/">
        <copy-of select="."/>
    </template>
</stylesheet>

Det har bare den bagdel, at når der i koden står noget før DTD'en, går IE i quirks-mode og understøtter således ikke længere CSS-standarden ... ikke mindst box-modellen går det helt galt med.

Helt generelt gælder, at hvis kode skal parses som XML, skal XML-prologen:

  <?xml version="1.0" encoding="iso-8859-1"?>

stå før DTD'en. Så kan IE som sagt ikke længere tolke CSS korrekt, hvorfor der skal altså serves speciel CSS til den.

XHTML1.1 er i modsætning til 1.0 ren XML og må som sådan slet ikke serves som 'text/html' - men kun med en XML-relateret MIME-type. Koden parses dog alligevel som HTML, hvis den bliver sendt som 'text/html' ... hvem sagde, XHTML er enkel og logisk at gå til her i overgangsfasen?  :o|

Fra XHTML2.0 er det udelukkende MIME-typen 'application/xhtml+xml', der kan bruges. Så er overgangsfænomenerne forbi og dokumentet parses som ren XML - og kan ikke andet.
Til gengæld skal koden holde sig helt strengt til standarderne. Ellers 'vælter' browseren simpelthen og viser en XML-fejl ... så er det endelig slut med sloppy kode  ;o)

Du kan selv checke dels dine egne sider og dels kan du jo muntre dig med at se, hvor få sider, du kan finde, der kan parses som XHTML med W3C's udvidede validator-interface: <a href="http://validator.w3.org/ (...) HER ]</a>
Husk, at afkrydse 'Verbose Output', så kan du se, hvad serveren sætter som MIME-type.

XHTML er meget mere end lukkede tags
Udover MIME-problematikken skal der også scriptes anderledes i XHTML, end der skal i HTML - også scripts har afgørende betydning for, hvordan kode parses.
Det kikker vi på i endnu en artikel, hvor jeg også vil gennemgå lidt af de spændende nyheder, der venter på dørtrinnet.

Foreløbig konklusion
En egentlig konklusion bestående af både en samlet, faktuel opstilling og en velbegrundet, personlig vurdering, vil jeg stadig vente med, til serien er helt færdig.
Det er dog svært at skjule, at jeg personligt er en meget varm tilhænger af XML/XHTML og glæder mig som et lille barn til Juleaften til den dag, hvor XHTML2.0 er implementeret i de vigtige browsere.

Indtil da anser jeg det til gengæld for et umådeligt spild af tid, at skrive XHTML. I mellemtiden prøver jeg i stedet at strømline min HTML4.01 kode henimod noget, der kun på ganske få parametre adskiller sig fra XHTML - og det samme gælder min scripting.
På den måde kan jeg skifte til XHTML, overnight - samtidig med, at min kode løbende er valid og så god som den kan blive, set fra browserne ... bedre end XHTML ville være.

Dette er for det første en helt personlig vurdering, som man er mere end velkommen til at være uenig i - og for det andet, kommer der som sagt en mere nuanceret, uddybende og begrundet konklusion på et senere tidspunkt.

-----------------------------------------

Et lille PS:
Brugeren frol har angivet et link til en artikel, der omhandler, hvordan man kan serve sine dokumenter med den korrekte MIME - men dette løser desværre kun 'et hjørne' af problematikken.
For det første bør løsningen kun anvendes, hvis der er _virkelig_ god grund til at anvende XHTML (= hvis det er tvingende nødvendigt). Det er nemlig en temmelig servertung løsning, der frådser kraftigt med serverens resourcer.

Dernæst skal man være opmærksom på, at hvis man bruger scripts, skal disse være skrevet til brug under XML. Almindelig scripting, som det bruges under HTML, kan ikke umiddelbart anvendes under XHTML - der har nogle andre script-DOM bindings.
Det vil der komme mere om i den næste artikel, som jeg desværre endnu ikke har haft tid til at få skrevet færdig .... hav venligst lidt tålmodighed  :)

En par kommentarer til brugeren 'tumlehund':
Problemet er jo netop, at ens (java)scripts ikke nødvendigvis er kompatible med XHTML, når version 2.0 bliver en realitet.

Idag spænder browserne sikkerhedsnet ud under kodere, der ikke kan scripte op mod XML-DOM'en - og lader i stedet HTML-parseren overtage dokumentet. Når XHTML2.0 kommer, sker dette ikke længere - og langt de fleste XHTML-sider, der idag ligger på WWW, vil gå ned med en XML-fejl ... hele Eksperten inkluderet  ;o)

- og jo, jeg har testet ... både på frontend og backend. Ellers ville der jo blot være tale om hovedløs påståelighed. Uden at jeg i den anledning ønsker at pege fingre, kan jeg ikke undlade at tvivle på, du selv har testet noget somhelst omkring performance og dårlig XHTML-kode kontra god HTML-kode - samt hvad der egentlig skal trækkes af last på serveren  ;o)

Til læsere, der finder artiklen er 'farvet':
Hvis græsset er grønt, hvorfor skal jeg så tvinges til at fotografere det i sort/hvidt?

Fordi en vis procentdel af befolkningen er farveblind, skal de, for hvem farverne ikke er skjult (eller fremstår forvrænget), vel ikke luske rundt i dunkle kældre og tale om alle farverne i det skjulte.
Vi skal heller ikke tvinges til at omtale græsset som 'rødt' fire gange, fordi vi har sagt 'grønt' fire gange. Den slags demokratisme er i al respekt ikke noget, jeg agter at ligge under for. Take it or leave it!

Til læsere, der måtte undre sig over brugeren stich's klynkerier, må jeg nøjes med at henvise til en lang række tråde om emnet - afsluttende med denne:
http://www.eksperten.dk/ (...)

Jeg orker ikke at replicere yderligere!

Skrevet tir. d. 07. december 2004 kl. 02:12| #1

popsy (44.321 point)
Hmm... Touche! Godt og velskrevet, rigtigt interessant.

Skrevet tir. d. 07. december 2004 kl. 02:14| #2

morteeart (14.598 point)
Igen et fantastisk stykke arbejde.
Ud fra dette kan man næsten drage den konklusion at man så ikke bør bruge xhtml så længe at IE går i quirks mode over "<?xml version="1.0" encoding="iso-8859-1"?>".
Eller så ikke lave design med css. (måske xslt, men det er en anden sag)

Skrevet tir. d. 07. december 2004 kl. 06:50| #3

phatlasse (86.132 point)
Mindst lige så god som den første - virklig lækkert for øjnene :-)

Skrevet tir. d. 07. december 2004 kl. 10:11| #4

3xm (17.222 point)
haps!

Skrevet tir. d. 07. december 2004 kl. 10:37| #5

jpvj (92.618 point)
Ole: hvad kan jeg sige... hvad jeg forventede fra dig!

Skrevet tir. d. 07. december 2004 kl. 14:49| #6

jensgram (38.599 point)
www.jensgram.dk
Ind med det - igen!

Skrevet tir. d. 07. december 2004 kl. 16:53| #7


Skrevet tir. d. 07. december 2004 kl. 20:09| #8

nielsmo (19.071 point)
Kan vist kun give den 13... desværre ;)

Skrevet ons. d. 08. december 2004 kl. 08:28| #9

milo (24.299 point)
Yderst brugbar info :)

Skrevet ons. d. 08. december 2004 kl. 12:27| #10

De andre har vidst talt! :) /Htmlkongen

Skrevet ons. d. 08. december 2004 kl. 19:17| #11

skovenborg (54.812 point)
Tja, lidt ligesom den forrige artikel - altså stadig god, velskrevet og spændende. Kan nu godt se at også mine sider bliver parset som fejlfyldt html4.01 :-S
Om jeg er blevet omvendt fra en (måske) dårlig vane er så spørgsmålet, for jeg bliver lidt i tvivl om det virkelig bliver så let at konvertere korrekt skrevet html4 til xhtml2.0 (hvis man pludselig ikke må lukke img-tags og den slags).

Skrevet ons. d. 08. december 2004 kl. 23:17| #12

basementjack (19.671 point)
Yderst brugbar...

Skrevet tor. d. 09. december 2004 kl. 00:24| #13


Skrevet fre. d. 10. december 2004 kl. 14:43| #14

roenving (327.719 point)
Oki, vi venter spændt på fortsættelsen !-)

Skrevet fre. d. 10. december 2004 kl. 19:44| #15

zyph (16.197 point)
Lækkert, rigtig godt skrevet, og det er herligt, at nogen endeligt kommer mere detajleret ind på emnet !-)

Skrevet søn. d. 12. december 2004 kl. 10:24| #16


Skrevet man. d. 13. december 2004 kl. 17:29| #17

ibtage (30.412 point)
Læst med stor interesse for emnet

Skrevet fre. d. 17. december 2004 kl. 07:58| #18

meget velskrevet artikel - godt arbejde ole

Skrevet lør. d. 18. december 2004 kl. 17:35| #19


Skrevet ons. d. 22. december 2004 kl. 13:35| #20

dxs (15.155 point)
Rigtig godt!!

Skrevet man. d. 27. december 2004 kl. 11:03| #21


Skrevet ons. d. 29. december 2004 kl. 19:56| #22


Skrevet tor. d. 17. februar 2005 kl. 08:53| #23


Skrevet søn. d. 27. februar 2005 kl. 20:11| #24

jonashn (14.625 point)
Bravo!

Skrevet lør. d. 11. juni 2005 kl. 22:12| #25

ahave (21.903 point)
Super artikel, kan klart anbefales.
/ahave

Skrevet fre. d. 08. juli 2005 kl. 01:59| #26

webcreator (15.316 point)
Fantastisk - fabelagtigt. Endnu en god artikel. Jeg var faktisk ved at omskrive mine HTML 4.01 Strict sider til XHTML, men har efter gennemlæsning af denne artikel besluttet mig for, ligesom Olebole, blot at forberede koden til det. Jeg ser meget frem til den næste artikel - skynd dig, Olebole :-)

Skrevet fre. d. 08. juli 2005 kl. 22:32| #27

ysubhi (19.864 point)
super!

Skrevet lør. d. 23. juli 2005 kl. 03:04| #28

jesper-moeller (11.693 point)
Super skrevet....

BRAVO
Dejligt at nogen overskudet at udtrykke på skrift, hvad der egenligt burde råbes ud fra byens tårne.
BRAVO
Du burde skrive for nogle blade ;-)
Tjek denne side for et eksempel af en af de sjældne  ÆGTE velskavet XML  side (Advancered side :-)
og læg mærke til IE advarslen...*G*
http://golem.ph.utexas.edu/ (...)

Mere god læsning om emnet XHTML XML  m.m. :
http://www.goer.org/ (...)
http://hsivonen.iki.fi/ (...)
http://www.hixie.ch/ (...)
http://software.hixie.ch/ (...)
http://www.damowmow.com/ (...)

Skrevet lør. d. 07. januar 2006 kl. 16:48| #29

cronaldo (8.547 point)
At underdrive: FREMRAGENDE!

Skrevet søn. d. 15. januar 2006 kl. 17:26| #30

mccookie (25.472 point)
Læs bare hvad de andre har skrevet ;)

Skrevet søn. d. 09. april 2006 kl. 21:34| #31


Skrevet tor. d. 13. april 2006 kl. 13:23| #32

tumlehund (19.801 point)
Okay, kan vi få armene ned over denne artikel...

olebole har fat i en række problemstillinger omkring XHTML, som er svære at komme uden om. Desværre er artiklen utrolig farvet, og det gør den utroværdig. Fx:

"Parses koden som HTML, har man ingen fordele ved XHTML fremfor velskrevet HTML4.01". Det er rigtigt at man umiddelbart ikke får nogen fordel, men på det tidspunkt hvor man skal til at overgå til XHTML 2.0, er det da en kæmpe gevinst at man allerede har "XHTML-kompatibel" kode, fremfor man (igen) skal til omskrive sin kode (fra fx HTML 4.01). Desuden har man også stor fordel af at alle ens scripts allerede er "XHTML-kompatible".

Et andet eksempel: "Parses XHTML-kode som HTML, vil HTML-parseren endda opfatte koden som fejlfyldt, da der i HTML ikke er mulighed for at lukke åbne tags som <img src="hest.gif" .... />". Dette har jo ingen betydning i praksis! Jeg tvivler desuden på, at olebole har foretaget en måling.

Endnu et eksempel:
"Kan dokumentet ikke parses som XHTML, ville browserne altså være bedre stillet, om der var skrevet valid HTML4.01 med den korrekte DTD ;o)". Browseren er ikke dårligere stillet om det er XHTML "tag soup" eller HTML "tag soup" (i praksis)!

Sidste eksempel (kommentar til content negotiation):
"Det er nemlig en temmelig servertung løsning, der frådser kraftigt med serverens resourcer.". Det er jo en overdrivelse af dimensioner! Og hvis man alligevel bruger fx ASP, PHP, ASP.NET el.lign, så betyder det altså ikke noget i det samlede billede. Desuden vil man jo, selv hvis IE engang forstår "application/xhtml+xml", skulle bruge content negotiaion så tidligere versioner får siderne serveret som "text/html".

Og husk så lige, at en XHTML-validering giver en mere præcis validering end HTML-validering, fx:
<p>Se min
        <table><tr><td>fede tabel</td></tr></table>
        den er for sej</p>
Her vil en HTML-validering fortælle at der står et ensomt slut-p-element, mens en XHTML-validering vil fortælle at der er kommet et blokelement ind i noget der kun må indeholde inline-indhold.

Jeg vil opfordre til at bruge XHTML, hvis:
- man skal lave et nyt site
- man skal lave grundig refactoring/redesign

Hvis man allerede har et HTML 4.01 site (som validerer vel at mærke!), er der IMO ikke rigtig nogen grund til at bruge tid på at "opgradere" til XHTML, med mindre man har tid til det, eller man synes det er sjovt/interessant.

Det er under ingen omstændigheder et argument, at XHTML parses for langsomt som "text/html" (det har ingen betydning i praksis), derimod er det en fordel at ens kode allerede er klar, når IE engang forstår "application/xhtml+xml".

Skrevet fre. d. 26. maj 2006 kl. 12:31| #33

tjanum (14.225 point)
Synes det er en rigtig fin artikel. Det er da rigtigt, at artiklen måske er svagt farvet, men hvad i alverden er der i vejen med at have en mening og give den til kende - specielt når den nu også indeholder en masse faktuelt indhold, der sikkert er brugbar for en masse. Topkarakter giver jeg ikke, men udelukkende fordi jeg kunne have ønsket mig lidt dokumentation for dine test omkring serverbelastning. Jeg tvivler ikke på, at du har testet det, men jeg er overrasket over dine "fund", og kunne derfor godt have tænkt mig at høre om, hvordan det er testet og hvilke præcise, målbare resultater, du har fået. Men som sagt "thumbs up" herfra :-)

Skrevet fre. d. 26. maj 2006 kl. 16:28| #34

stich (18.422 point)
olebole omtaler XML-prologen -- og viser herefter XML-deklarationen (som kun er en del af XML-prologen). Og XML-deklarationen er altså meget sjældent påkrævet, den er blot anbefalet - og kan trygt udelades til IE.
Og IE6 forstår altså ikke application/xhtml+xml (i modsætning til hvad der står i denne rant), ej heller vil IE7 komme til det.
Men man kan bare nøjes med at sende XHTML1.0-sider med den anbefalede application/xhtml+xml mimetype til UAs der accepterer den, og som text/html til resten (dvs. bruge en del af det script frol henviser til); det er på ingen måde noget der kræver særligt meget af serveren.
Artiklen har efter min mening alt for mange farvede ord og sætninger, fx "hyper-valid" og "Koden parses dog alligevel som HTML, hvis den bliver sendt som 'text/html' ... hvem sagde, XHTML er enkel og logisk at gå til her i overgangsfasen? :o|" - at XHTML kan blive parsed som HTML har for så vidt intet med XHTML at gøre, det kan ethvert dokument (med variende succes...).
---
olebole går som sædvanlig over til at kommunikere på en alt andet end sober og anstændig måde, når andre folk kritiserer hans messen. Det gider jeg ikke indlede mig på, men vil blot lade det tale for sig selv... Til gengæld vil jeg opfordre til at læse andre synspunkter på sagen, fx http://kurafire.net/ (...) og http://www.w3.org/ (...)

Skrevet ons. d. 07. juni 2006 kl. 12:17| #35

freakstyle (16.110 point)
Jeg blev klogere

Skrevet man. d. 27. november 2006 kl. 05:36| #36

Jeg har ind i mellem følt mig stødt over din noget barske retorik; men din viden kan men ikke udsætte noget på. Artiklen er meget oplysende, afmystificerende og ikke mindst velskrevet. Parser-problematikken har jeg aldrig før skænket en tanke. Høj klasse & keep up the good work...

Skrevet tor. d. 31. januar 2008 kl. 21:19| #37

maqhem (18.815 point)
www.maqhem.com/
Rigtig god artikel. Jeg glæder mig, til der kommer en 3'er. Ikke så meget som én eneste negativ kommentar fra mig, for jeg synes tydeligt, jeg kan se, når du kommer med subjektive holdninger og objektive fakta.

Skriv en kommentar



Mest populære guides

Guidens karakter
!!!Karaktér: 3
12 stemmer
31/01 - 2011
Af: heinzdmx

Dropbox - gratis online lagerplads

Jeg vil i denne guide forklare lidt om hvad Dropbox er og også hvordan du får mest mulig plads på Dropbox. Dropbox er kort sagt en service hvor du har dine data lagt til backup på både nettet og din egen computer.
Guidens karakter
!!!Karaktér: 4
33 stemmer
02/02 - 2009
Af: jkrons

Dato- og tidsberegninger i Excel

En introduktion til simple beregninger med dato og tid i Excel. Opdateret med afsnit om beregning af tillæg.
Excel  |  Læs »
Guidens karakter
!!!Karaktér: 4
21 stemmer
06/11 - 2011
Af: fromsej

Sådan fjerner du virus og malware

Udviklingen går stærkt på "skidt"fronten, så vi har sammensat en ny og effektiv programpakke til fjernelse af det.
Virus  |  Læs »

Log ind

   

   

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Gør dig selv en tjeneste: Køb et ordentligt SD-kort

Der kan være meget stor hastighedsforskel på to umiddelbare ens SD-kort. Se her hvad du skal være opmærksom på, når du køber ekstra hukommelse til din mobil, tablet eller kamera.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Gratis flysimulator fra Microsoft

Den legendariske Flight Simulator fra Microsoft genopstår den 29. februar - og denne gang er spillet gratis.


Nyheder fra Computerworld

Teaser billede

Bank: Derfor er login uden NemID helt i orden

Der er ikke hold i påstanden om sikkerhedsproblemer i forbindelse med bankkunders login uden brug af NemID, lyder det fra Nykredit Bank.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger