Extensible HyperText Markup Language: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Fyson (overleg | bijdragen)
Tekst vervangen door "ik ben cool=" 1010100011001010010100101010101010011001100101010011010010001001101001011001000010111010101001010101010100110 ""
Labels: Vervangen Misbruikfilter: Kwebbelen Misbruikfilter: Leeghalen Misbruikfilter: Experimenteren
k Wijzigingen door Fyson (Overleg) hersteld tot de laatste versie door Geerlings' robot
Regel 1:
{{Infobox W3C-standaard
ik ben cool=" 1010100011001010010100101010101010011001100101010011010010001001101001011001000010111010101001010101010100110 "
| naam = Extensible HyperText Markup Language
| logo =
| afbeelding = XHTML.svg
| onderschrift = Voorbeeld van XHTML
| status = Gepubliceerd
| startjaar = 26 januari 2000
| auteurs = [[World Wide Web Consortium|W3C]] en WHATWG
| basisstandaarden = [[HyperText Markup Language|HTML]]
| gerelateerde_standaarden = [[Extensible Markup Language|XML]]
| afkorting = XHTML
| domein = [[Wereldwijd web]]
| website = [http://www.w3.org/TR/xhtml11/ XHTML 1.1]
}}
'''XHTML''' (''Extensible Hypertext Markup Language'') is een [[opmaaktaal]] voor vooral [[website]]s, die de functionaliteit heeft van [[HyperText Markup Language|HTML]], maar een striktere [[syntaxis (informatica)|syntaxis]]. Dit omdat HTML gebaseerd is op het flexibele [[Standard Generalized Markup Language|SGML]], waar XHTML gebaseerd is op [[Extensible Markup Language|XML]], een striktere subset van SGML. Door de striktere syntaxis van XML-documenten kunnen deze makkelijker verwerkt worden door een XML-[[parser]], terwijl SGML-documenten een veel complexere parser nodig hebben. XHTML 1.0 is een [[World Wide Web Consortium|W3C]]-standaard geworden op 26 januari 2000.
 
==Voordelen van XHTML==
XHTML biedt, mits goed gebruikt, enkele voordelen boven HTML. Doordat XML-documenten ''well-formed'' moeten zijn, kunnen ze makkelijker geïnterpreteerd worden door [[useragent]]s. Een correcte XML-parser moet namelijk een fatale error geven als een XML-document niet volledig correct is, terwijl bij SGML-parsers complexe error-correcties worden gedaan. Doordat voor het verwerken van XHTML minder rekenkracht nodig is kan deze ook beter verwerkt worden door useragents met minder rekenkracht, zoals [[mobiele telefoon]]s en [[Personal digital assistant|pda's]].
 
Door de ''modularisatie van XHTML'' kan XHTML makkelijk uitgebreid worden met nieuwe elementen en attributen. Ook worden hiermee de compatibiliteitsproblemen opgelost die ontstonden door onofficiële uitbreidingen van de HTML-standaard die niet door alle browsers werden ondersteund.
 
In XHTML kunnen verschillende XML-namespaces gebruikt worden, zo kunnen [[Mathematical Markup Language|MathML]] en [[Scalable Vector Graphics]] in een XHTML-document verweven worden.
 
==Verschillen met HTML 4.01==
===Inhoudelijk===
De inhoudelijke verschillen tussen XHTML 1.0 (XHTML 2.0 wordt verderop besproken) en HTML zijn niet groot, dezelfde elementen en attributen zijn te gebruiken. Het grootste verschil tussen XHTML en HTML is dat XHTML ''well-formed'' moet zijn, dit houdt in dat:
 
*Alle elementen moeten gesloten worden
**Incorrect: <code><nowiki><p>Dit is een alinea.<p>Dit is nog een alinea.</nowiki></code>
**Correct:&nbsp;&nbsp; <code><nowiki><p>Dit is een alinea.</p><p>Dit is nog een alinea.</p></nowiki></code>
*Ook lege elementen moeten gesloten worden
**Incorrect: <code><nowiki><br></nowiki></code>
**Correct:&nbsp;&nbsp; <code><nowiki><br /></nowiki></code>
*Elementen moeten correct genest worden
**Incorrect: <code><nowiki><em><strong>Dit is tekst met nadruk.</em></strong></nowiki></code>
**Correct:&nbsp;&nbsp; <code><nowiki><em><strong>Dit is tekst met nadruk.</strong></em></nowiki></code>
*Attribuutwaarden moeten tussen aanhalingstekens
**Incorrect: <code><nowiki><td rowspan=3></nowiki></code>
**Correct:&nbsp;&nbsp; <code><nowiki><td rowspan="3"></nowiki></code>
*Alle elementen en attributen moeten met kleine letters geschreven worden
**Incorrect: <code><nowiki><BODY><P ID="iets">Wikipedia</P></BODY></nowiki></code>
**Correct:&nbsp;&nbsp; <code><nowiki><body><p id="iets">Wikipedia</p></body></nowiki></code>
*Attributen mogen niet geminimaliseerd worden
**Incorrect: <code><nowiki><textarea readonly>READ-ONLY</textarea></nowiki></code>
**Correct:&nbsp;&nbsp; <code><nowiki><textarea readonly="readonly">READ-ONLY</textarea></nowiki></code>
*<code><nowiki>style</nowiki></code>- en <code><nowiki>script</nowiki></code>-elementen zijn <code><nowiki>#PCDATA</nowiki></code> en zullen dus geparset worden. Speciale karakters, zoals <code>&lt;</code>, moeten gecodeerd worden als [[Karakter-entiteitreferentie|entiteit]] of binnen een <code>CDATA</code> blok geplaatst worden
**Incorrect: <code><nowiki><script type="application/x-javascript">if (i < j) document.write("kleiner");</script></nowiki></code>
**Correct:&nbsp;&nbsp; <code><nowiki><script type="application/x-javascript"><![CDATA[if (i < j) document.write("kleiner");]]></script></nowiki></code>
 
Zogenaamde lege elementen zoals <code><nowiki><br /></nowiki></code> en <code><nowiki><hr /></nowiki></code> kunnen ook voluit worden geschreven als <code><nowiki><br></br></nowiki></code> en <code><nowiki><hr></hr></nowiki></code> in XHTML, dit wordt echter sterk afgeraden omdat veel (oudere) browsers hier niet goed mee omgaan en omdat het syntactisch gezien de indruk wekt dat deze elementen iets kunnen bevatten.
 
Voor de omzetting van HTML naar XHTML zijn programma's ontwikkeld, maar in principe kan dit ook handmatig worden gedaan.
 
===Technisch===
Om XHTML 1.0 compatibel te houden met HTML 4.01 mag XHTML 1.0 worden opgestuurd met het [[Multipurpose Internet Mail Extensions|mime-type]] <code><nowiki>text/html</nowiki></code> dat eigenlijk bedoeld is voor HTML. Dit heeft echter enkele nadelen, XHTML die is verstuurd met dit mime-type wordt namelijk gewoon verwerkt als HTML, het document is dan dus eigenlijk invalide HTML 4.01 in plaats van XHTML, zogenaamde tag-soup. XHTML-documenten verstuurd met het correcte <code><nowiki>application/xhtml+xml</nowiki></code>-mime-type worden door sommige browsers, onder andere het veelgebruikte [[Internet Explorer]] (tot versie 9)<ref>{{en}}[http://blogs.msdn.com/b/ie/archive/2010/11/01/xhtml-in-ie9.aspx XHTML in IE9 blog]</ref>, niet ondersteund. Andere browsers zoals [[Mozilla Firefox|Firefox]] en [[Google Chrome|Chrome]] ondersteunen dit wel.
 
==Versies van XHTML==
===XHTML 1.0===
XHTML 1.0 was de eerste XHTML-versie en werd een W3C-standaard op 26 januari 2000. XHTML 1.0 is een herformulering van HTML 4.01 in XML met als doel ''backwards compatible'' te zijn. Er zijn drie versies van XHTML 1.0:
* '''XHTML 1.0 Strict''', is hetzelfde als HTML 4.01 Strict met XML-regels.
* '''XHTML 1.0 Transitional''', staat sommige afgekeurde elementen en attributen toe die niet in XHTML 1.0 Strict gebruikt mogen worden, zoals <code><nowiki><center></nowiki></code>, <code><nowiki><u></nowiki></code>, <code><nowiki><strike></nowiki></code>, en <code><nowiki><applet></nowiki></code>.
* '''XHTML 1.0 Frameset''', staat het gebruik van HTML-frames toe.
 
===XHTML 1.1===
XHTML 1.1 is de eerste XHTML-versie die is gebaseerd op de modularisatie van XHTML en zou de basis moeten zijn van toekomstige XHTML-versies. Door deze modularisatie en het niet meer toestaan van het <code><nowiki>text/html</nowiki></code>-mime-type is XHTML 1.1 niet compatibel met XHTML 1.0 en HTML 4.01. XHTML 1.1 heeft ook ondersteuning voor Ruby, een opmaaktaal voor Oost-Aziatische talen.
 
===XHTML 2.0===
Deze versie van XHTML 2.0 was in ontwikkeling, maar is nooit een gebruikte standaard geworden. Het zou een volledig nieuwe opmaaktaal zijn en niet zomaar een nieuwe versie. XHTML 2.0 was dan ook niet compatibel met HTML of enig andere versie van XHTML. In 2009 heeft W3C besloten de ontwikkeling van XHTML 2.0 stop te zetten ten gunste van HTML5<ref>{{en}} [http://www.w3.org/News/2009#item119 XHTML 2 Working Group Expected to Stop Work End of 2009, W3C to Increase Resources on HTML 5]</ref>.
 
De grootste verschillen tussen XHTML 2.0 en XHTML 1.0 waren:
 
* HTML-forms zouden ingewisseld worden met [[XForms]].
* HTML-frames zouden ingewisseld worden met [[XFrames]].
* De [[HTML-event|DOM Events]] zouden ingewisseld worden met [[XML Events]] die het XML [[Document Object Model]] gebruiken.
* Er werd een nieuw lijsttype geïntroduceerd: <code><nowiki><nl></nowiki></code> was speciaal bedoeld voor het maken van navigaties.
* Elk element kon gebruikt worden als een [[hyperlink]], bijvoorbeeld: <code><nowiki><li href="articles.html">Startpagina</li></nowiki></code>.
* Elk element kon alternatieve media aangeven met behulp van het <code><nowiki>src</nowiki></code> attribuut, bijvoorbeeld: <code><nowiki><p src="lbridge.jpg" type="image/jpeg">London Bridge</p></nowiki></code> in plaats van <code><nowiki><img src="lbridge.jpg" alt="London Bridge" /></nowiki></code>.
* Naast de kop-elementen <code><nowiki>h1</nowiki></code> tot en met <code><nowiki>h6</nowiki></code> konden ook de <code><nowiki>h</nowiki></code>- en <code><nowiki>section</nowiki></code>-elementen gebruikt worden om beter de structuur van de tekst aan te geven.
* De lettertype-elementen <code><nowiki><i></nowiki></code>, <code><nowiki><b></nowiki></code> en <code><nowiki><tt></nowiki></code> zouden afwezig zijn in XHTML 2.0. De enige lettertype-elementen die overblijven zijn <code><nowiki><sup></nowiki></code> en <code><nowiki><sub></nowiki></code>.
 
===Andere versies van XHTML===
* [[XHTML Basic]]: een lichte versie van XHTML bedoeld voor veel verschillende useragents.
* [[XHTML Mobile Profile]]: een uitbreiding van XHTML Basic door het Open Mobile Alliance speciaal bedoeld voor mobiele telefoons.
 
==Externe link ==
* {{en}}[http://www.w3.org/MarkUp/ Algemene informatie van het W3C]
 
===Specificaties===
* [http://www.w3.org/TR/xhtml1/ XHTML 1.0-specificatie]
* [http://www.w3.org/TR/xhtml11/ XHTML 1.1-specificatie]
* [http://www.w3.org/TR/xhtml2/ XHTML 2.0 Working Draft] (16 december 2010)
 
{{Appendix}}
{{Navigatie webdesign}}
 
[[Categorie:Open standaard]]
[[Categorie:Webdesign]]
[[Categorie:W3C-standaard]]
[[Categorie:XML-gebaseerde standaard]]