XHTML

Webseiten mit XHTML

XHTML ist ein Mitglied der XML-Familie, und bietet eine moderne Alternative zu HTML. Man kann damit Webseiten herstellen, und zusätzlich die Vorteile von XML nutzen, z.B. die Einbettung anderer XML-Elemente wie SVG-Grafik oder MathML-Formeln. Der Umstieg auf XHTML ist für neue Entwicklungen sinnvoll. Allerdings muss noch eine Weile Rücksicht auf schwächere Browser-Software genommen werden.
XML Extended Markup Language
Webseiten Ziele und Kompromisse
Live-Test Wieviel XHTML beherrscht ihr Browser ?
Dateinamen Theoretisch belanglos, praktisch wichtig
MIME-Type Ankündigung einer XHTML-Datei
Deklaration Einleitung einer XHTML-Seite
Dokument-Type Festlegung der XHTML-Version und -Regeln
Zeichensatz Verwendung aller internationalen Zeichen
Quellcode Tipps und Tricks für XHTML-kompatiblen Quelltext
Parser HTML- oder XML-Parser interpretieren den Quelltext
Validierung Fehlerfreies XHTML
Links Ausgewählte Links zum Thema 'XHTML'

Webseiten mit XHTML

XHTML ist eine sinnvolle und zukunftsträchtige Alternative zu HTML.
Alle modernen Browser (Firefox, Opera, ...) beherrschen XHTML ausgezeichnet. Einige der besonderen Vorteile von XML können ausgenutzt werden, z.B. die volle Kompatibilität aller Mitglieder der XML-Familie - Direkte Einbettung von SVG-Grafik, von MathML-Formeln, usw.
Lediglich der M$IE Browser ist unfähig, korrekte XHTML Dokumente anzuzeigen. Leider kann man dieses Produkt wegen seines unbegründet hohen Markt-Anteils nicht ignorieren.
XHTML-Dateien müssen diesem Browser mit einigen Tricks als HTML-Dateien untergeschoben werden.
In diesem Web werden nur solche Tricks verwendet, die später vollautomatisch entfernt werden können - Wenn der M$IE Browser endlich XHTML versteht oder wenn er bedeutungslos wird...

In diesem Web wird ausschließlich XHTML verwendet (lediglich für einige Demo-Seiten HTML).
Nur in wenigen unumgänglichen Fällen werden Browser-Weichen eingerichtet. Damit werden moderne Browser und M$IE mit unterschiedlichen Dateien versorgt.
Die derzeit noch begrenzten XHTML-Fähigkeiten einiger Web-Editoren müssen ebenfalls berücksichtigt werden. Die Entwicklung von XHTML-Webseiten darf nicht komplizierter sein als die von HTML-Webseiten.
Auf dieser Seite finden sie einige Tipps & Tricks für einen schrittweisen Umstieg auf XHTML.

Live-Test

Wählen sie aus den Optionen und beobachten sie die Anzeige im darunter liegenden Innenrahmen:

Datei-Typ:

HTML (gewöhnlich)
XHTML (einfach)
XHTML (dynamisch)
Einfache XHTML-Datei: Auswahl des Datei-Namens
Dynamische XHTML-Datei: Auswahl der MIME-Type

XML-Fehler:

Zeichensatz:

XML-Version:

(Ihr Browser benötigt evtl. Internet-Zugriff für diese Option)
Das sollte bei korrekter Browser-Funktion angezeigt werden:
Eine einfache normale Webseite
Details zum Live-Test finden sie unterhalb des Text-Fensters. Mit Rechtsklick in den Test-Rahmen können sie den Quelltext ansehen.
Details zum XHTML Live-Test im Innenrahmen (oben).
Testen sie die Optionen mit verschiedenen Browsern ! Nach bisheriger Erfahrung reagieren die (kostenlosen) Browser der Gecko-Familie (Firefox) am besten.

Statische HTML-Datei:

Eine gewöhnliche 'klassische' HTML-Webseite.

Statische HTML oder XHTML-Datei:

Ihr Browser sollte sich nicht durch den Dateinamen beeinflussen lassen.
Mit jeder der 3 Optionen wird die gleiche (!) Datei (Quelltext rechts oberhalb) geladen, jedoch unter verschiedenen Dateinamen.

Dynamische XHTML-Datei:

Ihr Browser sollte korrekt auf die Ankündigung der MIME-Type im HTTP-Header reagieren.
Am Webserver wird live eine XHTML-Seite nach ihren Angaben erstellt und in den Innenrahmen geladen.
Mit Klick auf 'Fehler' provozieren sie einen XHTML-Fehler. Damit wird getestet, mit welchem Parser ihr Browser arbeitet: Ein HTML-Parser findet keinen Fehler, ein XML-Browser muss an Stelle der XHTML-Webseite eine Fehlermeldung anzeigen.
In der angezeigten Webseite wird der vom Webserver an ihren Browser abgesendete HTTP-Header zur Kontrolle angezeigt.

Mit diesem Live-Test können sie ausprobieren, wie sie XHTML-Webseiten erstellen müssen, die von allen gängigen Browsern einigermaßen korrekt angezeigt werden.
Quelltext einer korrekten XHTML-Testseite (mit Rechtsklick in die Testseite oben Live anzusehen).
Wählen sie eine XHTML-Testseite nach diesem Muster oder zum Vergleich eine 'gewöhnliche' HTML-Testseite.
Wählen sie einen von 3 Dateinamen für die gleiche XHTML-Datei.
Wählen sie einen Zeichensatz (encoding) für die XHTML-Datei
Wählen sie eine DOCTYPE (XHTML-Version)
Wählen sie unterschiedliche 'Ankündigungen' (MIME-Type) der XHTML-Seite.
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>XHTML Test</title>
</head>
<body>
  <h1>XHTML Test</h1>
  Hier ist xhtml_test.xml
</body>
</html>

Dateinamen

Der internationale Standard ↓ MIME-Type beschreibt eindeutig die Art einer Datei.  Leider halten sich nicht alle Programme an diese Angaben, am wenigsten der M$IE Browser.

Der Name einer Datei sollte keinen Einfluss auf ihre Verarbeitung haben. Dieses Prinzip wird von der Software des derzeitigen IT-Marktführer glatt ignoriert. Nur Windows-Systeme verwenden die 'Datei-Erweiterung' für die Zuordnung von Dateien und Programmen:
Für XHTML-Dateien sinnvoll ist *.xhtml, *.xml
Für den M$IE-Browser muss leider *.htm, *.html verwendet werden. Darüber hinaus schnüffelt M$-Software teilweise auch im Inhalt (!) von Dateien und ignoriert dann (ungefragt) sogar die Datei-Erweiterung.
Die Datei-Endung steuert u.a. auch die Auswahl des↓ ↓ Parser-Programms, d.h. jenes Programm-Teiles innerhalb ihres Browsers, welcher den XHTML- oder HTML-Quelltext analysiert.
Dieses Chaos ist bedauerlich, aber solange derart schwache Software den Markt dominiert, muss man die Dateien so modifizieren, dass sie sogar mit der Software des IT-Marktführers läuft...
Wenn sich diese Situation einmal entspannen sollte, dann ist der Aufwand für die Umbenennung von Dateien gering.

Allerdings sollten sie auf einen richtig eingestellten professionellen Web-Editor oder Web-Organizer achten, der bei Änderung eines Dateinamens auch die dorthin führenden Hyperlinks in allen anderen Dateien ändert !

MHT-Trick

Dieser Trick eignet sich nur für Experimente am eigenen Webserver.

Man benennt die XHTML-Dateien mit *.mht - Diese Endung ist dem M$IE Browser unbekannt, daher akzeptiert er ausnahmsweise die vom Webserver angekündigte Datei-Type (MIME-Type). Der Webserver wird so konfiguriert, dass er *.mht Dateien als text/html ankündigt.

Mit diesem Trick können alle gängigen Browser die XHTML-Dokumente korrekt anzeigen - allerding mit ihrem HTML-Parser. Deshalb muss man in den *.mht Dokumenten auf alle besonderen XML-Vorteile verzichten, z.B. auf die direkte (inline)-Einbettung anderer XML-Dateien.

Vorteil: Um den Trick zu beenden muss man lediglich die Datei-Namen (und alle darauf verweisenden Links !) auf *.xml oder *.xhtml ändern.

Der Trick kann noch erweitert werden: Man stellt jede XHTML-Datei in ein eigenes Verzeichnis und adressiert in Links niemals die Datei, sondern nur das Verzeichnis. Der Webserver sucht daraufhin im Verzeichnis die (in der Konfiguration eingestellte) Standard-Datei. Jedes Verzeichnis enthält eine derartige Datei index.html, die sehr kurz ist und sich selbst sofort durch die gewünschte XHTML-Datei ersetzt.

Einstellung des Apache Webservers:
Suchen sie die Datei (typischer Pfad)
C:\Programme\Apache Software Foundation\Apache2.2\conf\mime.types
Öffnen sie die Datei mit einem Text-Editor und suchen sie die Zeile
text/html     html htm mht
und ergänzen sie mht
Nach Neustart sendet der Webserver *.mht Dateien mit der MIME-Type 'gewöhnlicher' HTML-Webseiten.

MIME-Type

Der internationale Standard → MIME-Type beschreibt eindeutig die Art einer Datei. Insbesondere im Internet wird jede Datei durch einen vorangehenden HTTP-Header angekündigt, in dem die Art der Datei durch ihre MIME-Type beschrieben ist. Leider halten sich nicht alle Programme an diese Angaben, am wenigsten M$IE.
Details zum HTTP-Header.

Die korrekte (vom W3C empfohlene) MIME-Type für XHTML ist
application/xhtml+xml
Wegen der notorischen Probleme von M$IE muss man für diesen Browser auch andere Typen verwenden:
text/xml, application/xml
notfalls sogar die MIME-Type gewöhnlicher HTML-Webseiten
text/html
Die MIME-Type eines Dokuments wird vom Webserver angekündigt. Es gibt verschiedene Regeln, welche dafür angewendet werden können. Darauf wird hier nicht eingegangen, da diese Methode nur am eigenen Webserver anwendbar ist. Ihr Web-Provider hat seinen Webserver (hoffentlich) gegen eine Änderung der Konfiguration gesperrt.
Link: Schneegans - Apache Content Negotiation

Alle modernen Server-Programmiersprachen erlauben die Manipulation des HTTP-Headers. In diesem Falle bestimmt nicht der Webserver die gesendete MIME-Type sondern das Programm.
Perl
In Arbeit !
In Arbeit !

PHP

ist die meist verwendete Programmiersprache für dynamische Webseiten. Mit den HTTP-Funktionen wird der HTTP-Header beeinflusst.
Die PHP-Funktion header muss am Anfang einer Webseite aufgerufen werden, vor jeder anderen Ausgabe.
Die alternative Methode ist output buffering - Die Ausgabe der Webseite wird eine aufgehalten, und erst später gesendet, wenn der HTTP-Header fertiggestellt ist.
Eine PHP Script-Datei trägt normalerweise einen Dateinamen *.php
In diesem Fall kann sich auch der M$IE-Browser nicht am Dateinamen orientieren. Er verwendet meist die ansonsten ignorierte Angabe der MIME-Type.
Die <?xml ...> Deklaration darf nicht im Klartext enthalten sein. Sie muss in einer PHP-Anweisung ( echo, print) enthalten sein, da sie sonst manchmal irrtümlich als <?php ?> Element interpretiert wird.

Beispiel für eine mit PHP erzeugte XHTML-Datei:
<?php
header('Content-Type: text/xml; charset=utf-8');
print '<?xml version="1.0" encoding="utf-8"?>'."\n";
?>
<!DOCTYPE . . >
<html xmlns="http://www.w3.org/1999/xhtml">
...
</html>

XML und HTML Deklaration

Die erste Zeile jeder XML-Datei muss mit der <?xml ?> Deklaration beginnen.
Danach wird in einer DOCTYPE Deklaration ↓ angegeben, nach welchen Regeln (XHTML-Version) die Datei verarbeitet werden soll.
Danach folgt bei XHTML ein <html>-Element mit obligatorischer Angabe des HTML-Namespace.
Elemente anderer XML-Familien (z.B. SVG-Grafik) können direkt in den Quellcode eingebettet werden, wenn auch ihr Namespace zusätzlich zum HTML-Namespace angegeben wird.
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
...
</html>
Wenn ihr Web-Editor mit XML Probleme bereitet, dann können sie die erste Zeile nur für die Entwicklung abschalten, so wie rechts gezeigt. Allerdings müssen sie die XML-Deklaration nach Fertigstellung wieder einschalten. Solche <!-- Kommentare --> werden von XML richtig erkannt und daher ignoriert. Das Attribut xmlns ist in HTML unbekannt und wird von Browsern und Editoren ignoriert.
<!--
<?xml version="1.0" encoding="utf-8" ?>
-->
<html xmlns="http://www.w3.org/1999/xhtml">
...
</html>

Dokument-Type

Es gibt verschiedene XHTML-Versionen, wie von den meisten anderen Standards. Mit der Festlegung der DOCTYPE erklären sie, welche Version angewendet werden soll. Das erfolgt normalerweise in der 2. Zeile, direkt nach der ↑ XML-Deklaration.

Wenn diese Angabe fehlt, dann versuchen manche Parser, die DOCTYPE zu erraten (doctype sniffing). Das ist zumindest sehr unsicher. Die ↓ Validierung einer Datei ist jedoch nur mit deklarierter DOCTYPE möglich.

Die Gesamtheit aller Regeln ist in der Document Type Definition DTD enthalten, die als Datei im Internet zur Verfügung steht und in der DOCTYPE Deklaration angegeben wird - für XHTML1 z.B.
Jede DTD-Dateie enthält zahlreiche Links zu anderen Teilen (Modulen), die ebenfalls zum Umfang der festgelegten Regeln gehören. Jede Standard-DTD kann man vom W3C laden.

Die meisten Parser kennen die verschiedenen Versionen, ohne die *.dtd Datei zu lesen, es kann jedoch vorkommen, dass ein Parser die DTD lesen will/muss - In diesem Falle wird die Funktion nur bei funktionierendem Internet-Zugang ausgeführt.

Nachfolgend werden nur einige spezielle Merkmale der einzelnen Versionen angeführt.

XHTML 1.0 Strict

Das <html>-Element muss das Attribut xmlns enthalten.
Das <html>-Element muss die beiden Elemente <head> und <body> enthalten.
Jedes <meta>-Element muss das Attribut content enthalten.
Die beiden Elemente <style> und <script> müssen ein type-Attribut enthalten. Ihr Inhalt muss als CDATA markiert sein.
Das name-Attribut ist nicht zulässig. Verwenden sie eindeutige id-Attribute.
Bilder <img> müssen mit dem Attribut alt einen beschreibenden Kurztext enthalten.
Formulare <form> müssen das Attribut action mit einer Adresse (URI) enthalten.
Textfelder <textarea> müssen die Attribute rows und cols enthalten.
Externe Dateien können als <object> eingebettet werden.

<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"  
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional

Die Namen der 16 VGA-Farben können verwendet werden.
Innenrahmen <iframe> sind zulässig.
Java <applet>s sind zulässig. Eines der Attribute code oder object muss enthalten sein. Die Attribute height und width müssen enthalten sein.
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"  
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.1

Alle HTML-üblichen 'Character Entities' sind deklariert, z.B. &auml; für das ä
<!ENTITY auml "&#228;">
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">

HTML 5

In der nächsten HTML Version 5 vereinfacht sich die Deklaration der Dokument-Type. Es wird sich erst zeigen, ob und wie XML-konform diese Version sein wird.

<!DOCTYPE HTML>

Zeichensatz

Bereits in der ersten Zeile einer XHTML-Datei wird der Zeichensatz festgelegt.

UTF-8

Der Standard-Zeichensatz für XML ist utf-8.
Damit lassen sich alle → Unicode-Zeichen darstellen, d.h. deutsche Umlaute ebenso wie griechische, slawische oder kyrillische Zeichen, sogar indische, japanische, chinesische Zeichen, etc.
Für häufige Zeichen wird nur 1 Byte verwendet, weniger häufige Zeichen benötigen mehr Bytes. Damit werden alle gängigen Weltsprachen umfasst.
Alle gängigen Browser funktionieren problemlos mit UTF-8, lediglich manche (Web)-Editoren haben damit noch Probleme.
Alle Seiten dieses Webs verwenden den UTF-8 Zeichensatz (wenige Ausnahmen für Demo-Zwecke).
Details zu UTF-8

Latin-1

Von den meisten Web-Editoren wird ungefragt iso-8859-1 eingesetzt. Das ist der westeuropäische Zeichensatz Latin-1 mit den Sonderzeichen äöüÄÖÜß. Dieser Zeichensatz mit 256 Zeichen kann jedoch keine Sonderzeichen anderer (z.B. slawischer) Sprachen darstellen. Darüber hinaus gibt es gelegentlich Probleme, weil M$-Software ungefragt den eigenen, etwas abweichenden Standard CP-1252 bevorzugt.
Tipp: Fast jeder Web-Editor lässt sich in seinen einstellbaren Vorgaben (Optionen) auf den Zeichensatz UTF-8 einstellen.
Details zu ISO-8859

ASCII

Die wenigsten Probleme hat man durch den Verzicht auf die direkte Verwendung aller Zeichen mit Code>7F.
Es bleiben die 128 ASCII-Zeichen, die in jedem Zeichensatz gleich sind, und von jeder Software auf jedem Betriebssystem problemlos unterstützt werden.
Details zu ASCII

Solche Dateien lassen sich wahlweise als HTML- oder XHTML-Seiten verwenden. Mit Hilfe von Maskierungs-Methoden können trotzdem alle Sonderzeichen dargestellt werden (siehe unten).
Wenn man alle Sonderzeichen maskiert, dann funktionieren XHTML-Webseiten mit jedem Zeichensatz - Deklarieren sie trotzdem am besten
<?xml version="1.0" encoding="utf-8" ?>

Maskierung

Einige Zeichen werden von XML nicht als Daten sondern als Steuerzeichen aufgefasst, z.B. < und > als Begrenzung der Auszeichnungen (tags).
Um diese oder beliebige andere → Unicode-Zeichen zu codieren, wird die Syntax &#dd; oder &#xhh; verwendet, wobei dd für die dezimale Unicode-Zahl steht oder hh für die hexadezimale.
Das Zeichen < mit Code 60.0 = #3C kann man daher mit &#60; oder &#x3C; codieren.
Aus praktischen Gründen kann man in der ↑ DTD (oder in einer privaten Ergänzung) Alias-Namen für jedes Character-Entity definieren, z.B.
<!ENTITY lt "&#60;">

Maskierte Zeichen (entities) in XML:
Die 1. XHTML-Spaltezeigt die Standard-Maskierung mit dem hexadezimalen Unicode. Sie ist für jedes Unicode-Zeichen anwendbar.
Die 2. XML-Spalte enthält jene Alias-Namen (Character Entities), die in jeder XHTML-Version verwendbar sind.
ChrXHTMLChrXHTML
<&#x3C;&lt; "&#x22;&quot;
>&#x3E;&gt; &&#x26;&amp;
    '&#x27;&apos;

Sonderzeichen

Alle → Unicode-Zeichen können durch Maskierung ihres hexadezimal-Codes dargestellt werden. Rechts die Codierung der deutschen Umlaute, des und ganz unten rechts des 'geschützte Leerzeichens'.
Die hexadezimal-Codes der ersten Spalte funktionieren in jeder HTML oder XML-Version.
Ab ↑ XHTML 1.1 können auch alle aus HTML gewohnten Alias-Namen (2. Spalte) verwendet werden, z.B. &auml; für das ä usw.
Sonderzeichen in XHTML
ChrXHTMLChrXHTML
Ä&#xC4;&Auml; ä&#xE4;&auml;
Ö&#xD6;&Ouml; ö&#xF6;&ouml;
Ü&#xDC;&Uuml; ü&#xFC;&uuml;
    ß&#xDF;&szlig;
&#x20AC;&euro;  &#xA0;&nbsp;
Für Dateinamen sollte man nur die kleinen ASCII-Zeichen a..z sowie Ziffern 0..9, allenfalls noch das _ underline verwenden.

Details in den Kapiteln über Zeichensätze, ASCII, Unicode, ISO-8859, und UTF-8
Vermeiden sie Großbuchstaben und verwenden sie in Dateinamen keinesfalls Leerzeichen, Interpunktion, Umlaute oder Sonderzeichen.
Selbst wenn das auf ihrem PC funktioniert, ergeben sich Probleme bei Transport, Speicherung oder Verwendung solcher Dateien auf anderen Systemen, insbesondere im Internet.

Quelltext

Im Quelltext (source code) von XHTML-Dateien gelten ähnliche, jedoch wesentlich strenger ausgelegte Regeln wie für HTML.
Beachten sie auch das Kapitel DOCTYPE auf dieser Seite, d.h. die verwendete XHTML-Version.
Tipp: Wenn sie die hier angeführten Tipps befolgen, dann ist ihr Quelltext mit beiden Standards kompatibel: Sie können die Webseite dann wahlweise als HTML- oder als XHTML-Seite einsetzen.

Minimal-Webseite

Ein XHTML Dokument muss innerhalb des <html>-Elements die Elemente <head> und <body> enthalten. Das ist auch für HTML sinnvoll, obwohl z.B. ein fehlender <head> von gängigen Browsern hingenommen wird. Ein guter (und richtig eingestellter) Web-Editor erstellt neue Webseiten bereits mit allen notwendigen Elementen.

<html xmlns="http://www.w3.org/1999/xhtml">
<head> ... </head>
<body> ... </body>
</html>

Kleinbuchstaben

Auszeichnungs-Elemente und Attribute müssen in Kleinbuchstaben angeführt werden. z.B. <table> funktioniert, <TABLE> ergibt Fehler.
Gute Web-Editoren lassen sich so einstellen, dass nur Kleinbuchstaben für Auszeichnungen (tags) verwendet werden.
In den Daten (Text innerhalb der HTML-Elemente) darf man natürlich auch Großbuchstaben verwenden.
Auch für ↑ Dateinamen (zumindest von Webseiten) sollte man nur Kleinbuchstaben verwenden.

Abgeschlossene Elemente

In XML müssen alle begonnenen Auszeichnungs-Elemente ordnungsgemäß wieder beendet werden (tag mit / ).
<div>Das ist richtig</div>
Einige Elemente werden in HTML ohne Abschluss verwendet, z.B. <img> (Bild, Grafik).
Beginn und Abschluss solcher Elemente kann in XML im gleichen tag erfolgen:
<base /> <br /> <col /> <hr /> <input /> <img /> <link /> <meta /> usw.
Tipp: Die XML-Syntax funktioniert auch in HTML. Wenn man sie konsequent verwendet, lassen sich Webseiten nur durch Änderung der Deklaration zwischen HTML und XML umstellen.

Attribute

Attribut-Namen müssen in Kleinbuchstaben angeführt werden.
<p class="test"> Korrekt </p>
<span CLASS="test">Fehler</span>
Attribut-Werte müssen in " " eingeschlossen werden
<link rel="stylesheet" />
<link rel=fehler />
Attribute müssen immer einen Wert haben. Der Wert darf allerdings aus einem leeren Text bestehen.
<input checked="checked" />
Fehler:   <input checked  />

name-Attribut

Dieses Relikt sollte langsam aus allen Webseiten verschwinden und durch das id-Attribut ersetzt werden. Moderne → DOM-Methoden verwenden zur Identifikation eines Elements ausschließlich das id-Attribut. In XHTML (und der nächsten Version HTML 5) Code sollte kein name-Attribut enthalten sein.

Anker

sind Sprung-Adressen innerhalb einer Webseite. Sie werden z.B. so adressiert:
<a href="#ziel_1"> Sprung</a>
In HTML wird des Attribut name verwendet, in XML das Attribut id, welches innerhalb eines Dokuments eindeutig sein muss.
Sprungziele werden daher am besten mit beiden Attributen formuliert. Sie funktionieren dann in HTML und XHTML:
<a id="ziel_1" name="ziel_1"></a>

CSS-Style Elemente

Solche Elemente kommen normalerweise im <head> von Webseiten vor. Ihre Daten (innerhalb des Elements) müssen als XML-CDATA bezeichnet und durch CSS-Kommentar-Zeichen /* */ von der Interpretation durch den Parser ausgenommen werden.
<style type="text/css" media="screen">
  /*<![CDATA[*/
body{background-color:#FF0;}
  /*// ]]>*/
</style>

Script Elemente

Solche Elemente können an jeder Stelle, auch mehrfach in Webseiten vorkommen. Ihre Daten (innerhalb des Elements) müssen als XML-CDATA bezeichnet und durch Javascript-Kommentar-Zeichen // von der Interpretation durch den Parser ausgenommen werden.
<script type="text/javascript">
  //<![CDATA[
  alert("Javascript");
  //]]>
</script>
Die Javascript-Funktion document.write kann nicht verwendet werden. Verwenden sie statt dessen die → DOM-Funktionen von Javascript.

Sonderzeichen

Alle Sonderzeichen müssen maskiert werden, so wie im Kapitel über Zeichensätze (oben) demonstriert.
Änderung der Größe
&#xC4;nderung der Gr&#xF6;&#xDF;e
Darüber hinaus gibt es weitere Regeln, die jedoch selten angewendet werden. Mittelfristig sollte man alle Webseiten nur mehr XML-konform herstellen, denn das bietet bei gleichem Aufwand wesentlich bessere Möglichkeiten.

Parser

Parser sind Programme, welche einen Text 'abarbeiten' und interpretieren, d.h. sinngemäß darauf reagieren und z.B. eine Webseite herstellen. Alle modernen Programmiersprachen verfügen über XML-Parser zur raschen und eleganten Verarbeitung von XML-Dokumenten. Gängige Browser verfügen meist über 2 verschiedene Parser für HTML und XML.
Durch verschiedene Maßnahmen kann man ein Browser-Programm dazu bewegen, einen bestimmten Parser zu verwenden.
Der HTML-Parser ist sehr tolerant, und erzeugt meist auch aus sehr lücken- und fehlerhaftem HTML-Quelltext noch eine halbwegs lesbare Webseite. Dieses Verhalten ist aber auch ärgerlich, wenn der Parser unerwünschte Korrekturen, Kürzungen oder Ergänzungen anbringt. Erfahrene HerstellerInnen von Webseiten beherrschen deshalb zahlreiche Tricks, um HTML-Parser zu überlisten. XML-Parser sind unerbittlich: Beim Auftreten eines einzigen Fehlers wird die Interpretation eines Dokuments abgebrochen. Diese Strenge mag unangenehm erscheinen - Wenn das Parsen jedoch erfolgreich abgeschlossen wird, dann ist das immerhin eine Garantie für ein (syntaktisch) fehlerfreies Dokument. Zum Debuggen kann man auch ↓ Validator-Programme verwenden.

Validierung

Ein Validator ist ein Programm, welches Fehler in einem Objekt findet. Zur Herstellung 'wohlgeformter' (well-formed) XHTML-Dokumente benötigen sie daher einen XHTML- oder XML-Validator. Damit finden sie die Position von Syntax-Fehlern und erhalten in günstigen Fällen auch Hinweise zur Problemlösung.
Wenn sie die oben angeführten Hinweise beachten, dann sollte die Herstellung fehlerfreier XML-Dokumente kein Problem sein. Sie sollten versuchen, ihren Web-Editor so einzustellen, dass sofort (ohne Nachbesserung) fehlerfreies XML codiert wird. Wenn das nicht möglich ist, dann sollten sie sich nach einem anderen Web-Editor umsehen, es gibt sie zahlreich, in guter Qualität und sogar kostenfrei aus dem Internet.

Quellen

XML-Validator Software ist häufig bereits in Web-Editoren integriert - Sehen sie einmal in der Hilfe nach !
Das W3C bietet einen Online-Validator.
Im Internet finden sie mit Stichwort validator eine Menge Software, meist kostenfrei. Es gibt auch Validators für andere Zwecke - Für XHTML benötigen sie einen XHTML- oder XML-Validator.
Auch der beste Validator kann nicht verhindern, dass auf manchen Webseiten Unsinn steht - dazu müsste der Validator die Daten lesen und 'verstehen'. Das überlassen sie besser den diversen Geheimdiensten - Die lesen mit Sicherheit auch ihre Webseite . .  

Ausgewählte Links zum Thema 'XHTML'

  XHTML-Validator: W3C (en), Validome (de),

XHTML CSS