Uitbreidbare Hypertext Markup Language

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken
XHTML
Voorbeeldweergave van een XHTML-document


Voorbeeldweergave van een XHTML-document

Bestandsextensie : .xhtml, .xht
MIME-type : applicatie / xhtml + xml [1]
Ontwikkeld door: Wereldwijde web consortium
Type: Opmaaktaal
Verlengd met: XML , HTML
Standaard(en) : 1.0 (aanbeveling) ,

1.1 (aanbeveling) ,
1.1 SE (werkontwerp) ,
5 (werkontwerp) ,
2.0 (werkontwerp)


Voorbeeldweergave van een XHTML-document

De W3C- standaard Extensible Hypertext Markup Language (expandable HTML ; afkorting XHTML ) is een op tekst gebaseerde opmaaktaal voor het structureren en semantisch markeren van inhoud zoals teksten, afbeeldingen en hyperlinks in documenten. Het is een herformulering van HTML 4.01 naar XML . In tegenstelling tot HTML, dat werd gedefinieerd met SGML , gebruikt XHTML de striktere en gemakkelijker te ontleden SGML-subset XML als taalbasis. XHTML- documenten voldoen daarom aan de syntaxisregels van XML.

XHTML 1.0: Overgang van HTML naar XHTML

XHTML 1.0 bevat alle elementen van HTML 4.01, zodat een conversie van HTML 4.01-compatibele pagina's naar XHTML 1.0 eenvoudig mogelijk is. Een niet-XHTML-compatibele webbrowser kan desondanks onder bepaalde voorwaarden XHTML-documenten correct weergeven (zie MIME-typen en HTML-compatibiliteit ): het verwerkt ze als normale HTML. Dit maakt gebruik van het feit dat de HTML-parsers van de populaire browsers syntaxisfouten tolereren. Deze fouttolerantie ontstond als reactie op het feit dat talrijke HTML-documenten op het World Wide Web niet aan de formele standaard voldeden en dat gebruikers browserberichten over HTML-syntaxisfouten vervelend vonden. Voor XHTML daarentegen geldt het basis-XML-idee van ongecompliceerde gegevensuitwisseling en probleemloze geautomatiseerde verwerking. Als gevolg hiervan zijn programma's die XHTML verwerken niet meer zo tolerant.

Nieuwere XHTML-documenttypen bevatten geen lay-outmarkeringen meer. XHTML Transitional 1.0 is het laatste documenttype dat nog opmaakelementen bevat, zoals <font> of <b> . Modernere documenttypen zoals XHTML Strict 1.0 bevatten nog steeds enkele lay-outelementen, maar alleen om redenen van achterwaartse compatibiliteit met de Transitional- documenttypen. Ten slotte zijn in XHTML Basic of XHTML 2 geen layout-elementen meer opgenomen. Voor het visuele ontwerp van XHTML-elementen mag alleen worden verwezen naar externe CSS- regels.

XHTML-modularisatie

Om de ontwikkeling van talen op basis van XHTML mogelijk te maken, zijn gerelateerde en gerelateerde elementen in XHTML 1.1 gecombineerd in zogenaamde modules. Op basis van deze modules in DTD's en in de toekomst in XML-schema , kunt u uw eigen XHTML-documenttypes samenstellen volgens het modulaire principe en deze mixen met andere op XML gebaseerde talen. Voorbeelden van toepassingen van XHTML-modularisatie zijn XHTML 1.1, XHTML Basic en de mengsels met SMIL ( multimedia ), SVG ( vectorafbeeldingen ) en MathML (set van wiskundige formules). De objectmodule wordt gebruikt om algemene objecten zoals multimedia plug-ins te integreren.

Versie overzicht

XHTML is een term die wordt gebruikt om de verschillende XHTML-versies samen te vatten:

  • XHTML 1.0 vertegenwoordigt de op XML gebaseerde herformulering van HTML 4.01 . XHTML 1.0 bevat de bekende drie documenttypen Strict , Transitional en Frameset . XHTML 1.0 is zo ontworpen dat achterwaartse compatibiliteit met de populaire HTML-browsers mogelijk is. Tegelijkertijd kan het door nieuwere browsers worden verwerkt volgens de strikte regels.
  • De huidige versie XHTML 1.1 scheidt van de verouderde elementen en attributen van de overgangs- en framesetvarianten, die de presentatie van het document direct beïnvloeden. De reikwijdte van de taal komt grotendeels overeen met XHTML 1.0 Strict, plus elementen voor Ruby- uitleg. XHTML 1.1 is niet ontworpen om compatibel te zijn met HTML-browsers.
  • XHTML Basic is ontworpen voor minimalistische apparaten zoals mobiele telefoons en handhelds door slechts een paar taalcomponenten (modules) van XHTML te gebruiken. XHTML Basic is de basis voor XHTML Mobile Profiles (zie WAP 2.0 ) en voor WML 2.0.
  • De modularisering resulteerde in verdere gemengde versies , zoals XHTML 1.1 plus MathML plus SVG .
  • Versie XHTML 2.0 , waarvan de ontwikkeling eind 2009 werd stopgezet ten gunste van HTML5 , zou gebroken hebben met de erfenis van HTML 4 en voor fundamentele veranderingen zorgen.
    Belangrijke innovaties waren de vereenvoudigde, onbeperkte notatie van hyperlinks , de vereenvoudigde integratie van andere soorten media (bijvoorbeeld afbeeldingen en video's), de uitgebreidere mogelijkheden om de toegankelijkheid te waarborgen en de meer verfijnde specificatie van metadata . Eerdere kernfuncties van HTML of XHTML zouden zijn uitbesteed aan andere XML-talen in XHTML 2.0, namelijk XForms voor formulieren, XML-events voor de integratie van scripts en XFrames voor frames .

De belangrijkste verschillen tussen HTML en XHTML

HTML XHTML
Element- en attribuutnamen zijn hoofdlettergevoelig niet relevant (bijv. <br> , <Br> , <BR> ) altijd klein (alleen <br /> )
Elementen zonder inhoud, b.v. B. br <br> <br /> (afhankelijk van de DTD) ofwel lege elementtag
(bijv. <br /> ) of met een eindtag
(bijv. <br></br> )

De variant <br /> wordt aanbevolen om redenen van compatibiliteit

Begin of einde dag Weglaten is in sommige gevallen toegestaan vermeld altijd beide
Geef attribuutwaarde op tussen aanhalingstekens optioneel zolang de attribuutwaarde geen bepaalde tekens bevat. altijd
booleaanse attributen, b.v. B. gecontroleerd <input type="radio" checked > Specificeer de attribuutnaam als attribuutwaarde, b.v. B. <input type="radio" checked="checked" />

Daarnaast:

  • De start tag van het root element html moet altijd de namespace specificatie voor XHTML bevatten: <html xmlns="http://www.w3.org/1999/xhtml">
  • In XHTML 1.1 is het lang attribuut vervangen door het xml:lang attribuut van XML. XHTML 1.0 raadt aan om beide attributen te specificeren; B. <html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de"> .
  • Vanaf XHTML 1.0 wordt de rol van het name attribuut in de elementen a , frame en map door het id attribuut. Als achterwaartse compatibiliteit gewenst is, moeten zowel de name als de id attributen worden genoteerd met dezelfde attribuutwaarde en moet XHTML 1.0 tijdelijk worden gedeclareerd. In XHTML 1.1 en XHTML modularisering, is er niet langer een name attribuut voor deze elementen.
  • Het name attribuut voor de form en img elementen is alleen tijdelijk beschikbaar in XHTML 1.0, niet in XHTML 1.0 Strict en XHTML 1.1. Deze beperking is met name relevant voor DOM- toegang tot de elementen.

voorbeeld

Dit is de brontekst van een HTML-document dat voldoet aan de normen. Het voorbeeld is bewust zo kort mogelijk gehouden en is bedoeld om verschillen in de toegestane syntax te laten zien. In HTML is het een goed idee om alle noodzakelijke elementen volledig op te schrijven.

 <! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 // EN" "http://www.w3.org/TR/html4/strict.dtd">
< hoofd >
  < titel > voorbeeld </ titel >

< h1 > voorbeeldpagina </ h1 >
< p > Een alinea
<P> Nog een <br>
paragraaf
< ol >
  < li > lijstelement
  < li > lijstelement
</ ol >
<P> <img src = picture.gif alt = "picture motief">
</ lichaam >

Het html element is geheel weggelaten, de end- en starttags ontbreken voor de head en body elementen en p en li elementen zijn niet gesloten. Het src attribuut van de afbeelding wordt zonder aanhalingstekens weergegeven.

Hetzelfde document als geldige XHTML 1.1 kan er als volgt uitzien:

 <? xml-versie = "1.0"-codering = "UTF-8"?>
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.1 // EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" xml: lang = "de" >
 < hoofd >
   < titel > voorbeeld </ titel >
 </ hoofd >
 < lichaam >
    < h1 > voorbeeldpagina </ h1 >
    < p > Een alinea </ p >
    <P> Nog een <br />
    Paragraaf </ p >
    < ol >
      < li > lijstelement </ li >
      < li > lijstelement </ li >
    </ ol >
    < p >
      < img src = "bild.gif" alt = " Bildmotiv " />
    </ p >
 </ lichaam >
</ html >

De XML-declaratie <?xml version="1.0" encoding="UTF-8" ?> Is optioneel, maar wordt aanbevolen door het W3C omdat het XML- parsers de tekencodering van het document vertelt. De tekencodering UTF-8 moet in hoofdletters worden geschreven. [2] Op het eerste gezicht is dit in tegenspraak met het XHTML-principe om alle elementen en attributen in kleine letters te schrijven. Het is echter de officiële naam die wordt gegeven door de IANA [3] , en de XML-parser kan hoofdletters en kleine letters negeren bij het interpreteren ervan. [4] Als de coderingsinformatie ontbreekt en er geen codering is verzonden in de HTTP- header , kan de browser de UTF-8- of UTF-16- codering gebruiken volgens de XML-standaard.

De specificatie van de XML-declaratie zorgt ervoor dat Internet Explorer 6 en Opera 7.0 tot 7.03 in de zogenaamde quirks-modus springen, wat leidt tot eigenaardigheden bij het verwerken van de stylesheets en JavaScript . Om deze reden wordt de XML-declaratie vaak weggelaten wanneer het document als text/html aan deze browser wordt geleverd (zie de volgende sectie over MIME-typen).

MIME-typen en HTML-compatibiliteit

Bij het verzenden van HTML- en XHTML-documenten worden bepaalde MIME-typen gebruikt, bijv. B. in de Content-Type header voor e-mail en vooral voor HTTP :

  • Volgens RFC 2854 moeten HTML-documenten worden verzonden met het MIME-type text/html .
  • Een XHTML 1.0 document dient normaliter te worden verzonden volgens RFC 3236 met het MIME type application/xhtml+xml . Als het document voldoet aan de richtlijnen voor achterwaartse compatibiliteit, kan het als text/html worden verzonden volgens RFC 2854 en de XHTML 1.0-standaard. Vanwege het ontbreken van XHTML-ondersteuning van de wijdverbreide software, is de laatste optie van bijzonder belang.
  • Aangezien XHTML 1.1 niet compatibel is met normale HTML-browsers, mogen dergelijke documenten volgens een W3C-melding alleen als application/xhtml+xml worden aangeleverd. Hetzelfde geldt voor de andere nakomelingen van XHTML-modularisatie, zoals XHTML Basic.

Hoe de browsers het document verwerken, hangt af van het MIME-type. Alleen wanneer een XHTML-document wordt gedeclareerd met bijvoorbeeld het inhoudstype application/xhtml+xml XHTML-compatibele browsers hun XML-parsers, die profiteren van de strikte XHTML-code, zoals verwerkingsgemak. Als dat het geval is, kan het document alleen worden weergegeven als het goed gevormde XML is . Veel huidige browsers, waaronder Mozilla , Mozilla Firefox , Google Chrome , Opera en Safari , ondersteunen het MIME-type application/xhtml+xml . De wijdverbreide Internet Explorer kan echter pas iets met dit MIME-type vanaf versie 7.0: oudere versies openen een downloaddialoog in plaats van het document weer te geven. Daarom moet text/html worden gebruikt, tenzij de browser uitdrukkelijk in de Accept header van het verzoek heeft aangegeven dat deze application/xhtml+xml . [5] Dit kan aan de serverzijde worden bepaald om het juiste MIME-type te verzenden - waarbij een versiecontrole zou moeten worden uitgevoerd voor Internet Explorer vanaf versie 7.0, aangezien IE nog steeds */* als MIME-type verzendt. [6]

XHTML en lay-out

Met HTML 4 begon het W3C geleidelijk die elementen en attributen uit HTML uit te sluiten die direct verantwoordelijk waren voor de presentatie van het document en die geen uitvoeronafhankelijke structurering uitdrukten. Net als HTML 4 bevat XHTML 1.0 een overgangsvariant met deze verouderde taalcomponenten. In het moderne webdesign is echter vast komen te staan ​​dat de strikte variant wordt gebruikt en de documenten consequent worden opgemaakt met CSS . De gestructureerde inhoud en de respectievelijke lay-out kunnen dus afzonderlijk worden gedefinieerd. Met XHTML 1.1 en het geplande XHTML 2.0 wilde het W3C deze ontwikkeling eindelijk voltooien door alleen uitvoeronafhankelijke tekstopmaak en de lay-out onvermijdelijk te laten implementeren met CSS of vergelijkbare talen.

Extensies

Verbeteringen aan HTML

Als SGML-taal hebben HTML-pagina's een nauwkeurig gedefinieerde structuur die wordt gespecificeerd in de documenttypedefinitie (DTD). Zonder kennis van de DTD is de hiërarchische boomstructuur van een document echter niet eenduidig ​​vast te stellen. Sommige elementen hebben geen eindtag (zoals <br> voor een regeleinde) of een optionele eindtag (zoals <p> voor een alinea met tekst). Alleen de DTD bepaalt welke elementen dit zijn. Als de parser het niet weet, is de documenthiërarchie dubbelzinnig. XHTML als XML-taal verhelpt deze tekortkoming.

HTML is eigenlijk niet uitbreidbaar, maar gewone browsers gaan als volgt te werk bij het verwerken van HTML:

  • Identificatie door onbekende elementen wordt genegeerd.
  • Bij syntactische fouten wordt toch getracht een logische elementenboom te maken. Er wordt gepoogd het beste te maken van een niet-conforme pagina, dwz er wordt in ieder geval een pagina getoond.

Dit maakt de verwerking van verschillende HTML-versies mogelijk. Als een versie een nieuw element introduceert, wordt dit door oudere browsers gewoon genegeerd. Hetzelfde geldt voor attributen. Als een browser die HTML 3.2 ondersteunt bijvoorbeeld het acronym voor afkortingen geïntroduceerd in HTML 4.0 niet kent, wordt dit overgeslagen en verschijnt de afkorting in normale tekstopmaak. Hetzelfde geldt voor browserspecifieke extensies. Het blink element is bijvoorbeeld in geen enkele HTML-standaard opgenomen. Sommige browsers, oorspronkelijk alleen de Netscape Navigator , geven de tekst dan knipperend weer, andere browsers geven de tekst normaal weer.

Extensies voor XHTML

In tegenstelling tot HTML is XHTML gemaakt met uitbreidbaarheid in het achterhoofd. XHTML gebruikt hiervoor het namespace- concept XML. Een XHTML-versie vormt zo'n namespace. Andere XML-talen zoals MathML , SVG en RDF vertegenwoordigen verdere naamruimten. Elementen uit andere naamruimten kunnen nu in een XHTML-document worden gebruikt door het xmlns attribuut te gebruiken xmlns een overeenkomstige naamruimte op te geven. Voor dit doel moet een speciaal doctype worden gebruikt, dat de elementen definieert - bij gebruik van MathML is dit:

 <? xml-versie = "1.0"-codering = "UTF-8"?>
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.1 plus MathML 2.0 // EN"
"http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">

Een voorbeeld van het gebruik van het naamruimteconcept om XHTML uit te breiden is de inbedding van MathML :

 <p> Dit is nog steeds volkomen normale XHTML </p>
<math xmlns = "http://www.w3.org/1998/Math/MathML" >
  <mrow>
    <msub>
      <mi> x </mi>
      <mn> 1,2 </mn>
    </msub>
    <mo> = </mo>
    <mfrac>
      <mrow>
        <mrow>
          <mo> - </mo>
          <mi> b </mi>
        </mrow>
        <mo> & PlusMinus; </mo>
        <msqrt>
          <mrow>
            <msup>
              <mi> b </mi>
              <mn> 2 </mn>
            </msup>
            <mo> - </mo>
            <mrow>
              <mn> 4 </mn>
              <mo> & InvisibleTimes; </mo>
              <mi> een </mi>
              <mo> & InvisibleTimes; </mo>
              <mi> c </mi>
            </mrow>
          </mrow>
        </msqrt>
      </mrow>
      <mrow>
        <mn> 2 </mn>
        <mo> & InvisibleTimes; </mo>
        <mi> een </mi>
      </mrow>
    </mfrac>
  </mrow>
</math>
<p> ... en hier gaat XHTML verder </p>

Een MathML-compatibele browser zou dit gedeelte van het document als volgt kunnen weergeven:

Dit is nog steeds normaal XHTML

... en hier gaat XHTML verder

Uitbreidingen zijn dus mogelijk door nieuwe namespaces aan te maken zonder zelf de XHTML-standaarden te hoeven wijzigen. Door het gebruik van namespaces is er geen conflict tussen elementen met dezelfde naam in verschillende extensies. Deze kunnen altijd duidelijk worden toegewezen en bijvoorbeeld via de DOM worden geadresseerd met de identifier van de namespace. De uitgebreide XHTML-versies die zijn gemaakt als resultaat van de XHTML-modularisering zijn gebaseerd op dit concept.

De opkomst van dergelijke extensies leidt tot een situatie die vergelijkbaar is met die van HTML-extensies, omdat niet alle browsers de geïntegreerde extensies ondersteunen zoals bij SVG. De browser heeft de volgende opties voor het afhandelen van elementen uit onbekende naamruimten:

  • Hij kan de opmaak van dergelijke elementen negeren en gewoon de tekstinhoud weergeven (zoals bij HTML).
  • Hij kan alle elementen van de onbekende naamruimte negeren, evenals hun tekstinhoud.
  • Hij kan proberen een plug-in voor de extensie van internet te laden en de pagina vervolgens correct weer te geven.

Individueel bewijs

  1. RFC 3236
  2. Bill Wilder: Is “UTF-8” hoofdlettergevoelig in XML-declaratie? In: blog.codingoutloud.com. Ontvangen 5 oktober 2019 .
  3. iana.org
  4. w3.org
  5. XHTML-mediatypetest - resultaten. w3.org, 9 maart 2006, geraadpleegd op 3 april 2019 .
  6. Jens Oliver Meiert:XHTML en het juiste MIME-type. meiert.com, 5 april 2006, geraadpleegd op 3 april 2019 .

web links

Specificaties gerelateerd aan XHTML

XHTML zelf
Afstammelingen van XHTML-modularisatie
Basis voor XHTML

XHTML-zelfstudies en -hulpmiddelen