zurück zur Startseite
  


Zurück XHTMLforum > (X)HTML und CSS > (X)HTML
Seite neu laden [XHTML] HTML Kompatibilitätsrichtlinen 2.0a1

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 16.11.2007, 20:34
Standardkatze
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 06.02.2007
Beiträge: 1.826
gato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nett
Ausrufezeichen [XHTML] HTML Kompatibilitätsrichtlinen 2.0a1

Ich wurde ja vor einiger Zeit mal danach gefragt.
Dieser Artikel, oder wie man es bezeihnen will ist ein erster Entwurf, das bedeutet er ist vollständig, Inhalte können sich aber wie immer ändern. Daher bitte ich um Kritik und Anregungen. Danke.
Hinweis: Auf Grund der Zeichenbeschränkung sind vier Beiträge nötig, um diesen Beitrag vollständig wiederzugeben (Ich hoffe die Forensoftware macht da keine Probleme..).

HTML Kompatibilitätsrichtlinien 2.0a1
Arbeitsentwurf vom 16. November 2007

Übersicht
  1. Hintergrund
  2. Ist es ein (X)HTML-Dokument?
  3. Richtlinien zur HTML-Kompatibilität
    1. Angabe der verwendeten Zeichenkodierung
    2. Verarbeitungsanweisungen
    3. Angabe der Elementsprache
    4. Auslagerung von Stil- und Skriptdaten
    5. Elemente mit leerem Inhaltsmodell
    6. Inhaltslose Elemente ohne leerem Inhaltsmodell
    7. Maskierung von (Markup-)Sonderzeichen
    8. Fehlende Attribute in XHTML
    9. Zeilenumbrüche in Attributen
    10. Nur in XML erlaubte Zeichen verwenden
    11. Das tbody-Element
    12. Die Interpretation von Stilangaben
      1. Hintergrundfarbe und -Bild des Anzeigebereichs
      2. Die overflow-Eigenschaft des Anzeigebereichs
      3. Groß- und Kleinschreibung
    13. Die Verarbeitung von Skripten
      1. document.write()
      2. Verwendung von DOM-Level-2-Methoden
  4. Weitere Informationen
    1. Das isindex-Element
    2. Boolische Attribute
    3. Definition und Ansteuerung von Sprungzielen
    4. Inkompatibilität zu XHTML 1.1
    5. Zukunftsfähigkeit von XHTML
    6. Ausblick auf XHTML5

Hintergrund

Als Anfang 2000 die erste XHTML-Spezifikation veröffentlich wurde, gab es kaum Browser die XHTML tatsächlich als solches verarbeiten konnten. Genauer gesagt war den Browsern der XHTML-Medientyp „application/xhtml+xml“ unbekannt. Webautoren waren jedoch neugierig und wollten das „neue“ HTML ausprobieren.
Aus diesem Grund enthält die Spezifikation der XHTML-Version 1.0 einen informativen Anhang. Dieser gibt Hinweise, wie XHTML-Quelltext beschaffen sein muss, damit dieser auch von HTML-Browsern verarbeitet werden kann. Damit dies möglich wird, wurde es Dokumenten der XHTML-Version 1.0 (und nur dieser) erlaubt, mit dem HTML-Medientyp „text/html“ versendet zu werden.
Dieser Anhang war nötig, da XHTML auch ein bisschen „Ballast“ von XML mitgenommen hat. Darüberhinaus kann Quelltext in HTML eine andere Bedeutung haben als in XHTML.
Wie bereits angesprochen wurden diese Regeln im Jahr 2000 verfasst. Ende 2002 wurde die XHTML-1.0-Spezifikation, und damit diese Richtlinien, leicht überarbeitet. Dennoch sind diese Hinweise aus heutiger Sicht veraltet, teilweise falsch und vor allem lückenhaft, denn viele problematischen Punkte werden gar nicht erwähnt.

Ist es ein (X)HTML-Dokument?

Damit man mit den Kompatibilitätsrichtlinien vernünftig arbeiten kann, ist es notwendig zu verstehen, ob es sich bei einem Dokument um ein HTML- oder ein XHTML-Dokument handelt. Dies wird durch den Medientyp des Dokuments bestimmt, denn daran erkennt der Browser, wie er das Dokument verarbeiten muss.
HTML-Dokumente sind untrennbar mit dem Medientyp „text/html“ verbunden. Ein XHTML-Dokument dagegen sollte als Medientyp „application/xhtml+xml“ besitzen, kann aber auch als „application/xml“ versendet werden. Früher war auch „text/xml“ möglich, gilt heute aber als veraltet.
Trotz dieser Definition kommt es oft zu Verständnisproblemen. Vielen Autoren ist nicht klar, dass XHTML-Quelltext, der als „text/html“ versendet wird, als HTML verarbeitet wird und daher ein HTML-Dokument ist.
Wir merken uns folgendes:
  • Ein Dokument ist ein HTML-Dokument, wenn es mit dem Medientyp „text/html“ versendet wird.
  • Ein Dokument ist ein XHTML-Dokument, wenn es mit einem XML-Medientyp wie „application/xhtml+xml“ oder „application/xml“ versendet wird.

Richtlinien zur HTML-Kompatibilität

Dieser Abschnitt führt die Richlinen auf, die beachtet werden müssen, wenn XHTML-Quelltext als HTML verarbeitet werden soll. Zudem wird gezeigt, woher diese Verarbeitungsunterschiede kommen, damit diese besser verstanden werden können.
Achtung: Einige dieser Unterschiede, vor allem im Bereich der Verarbeitung von Stilangaben und Skripten, werden browserweit sehr unterschiedlich interpretiert. Oftmals werden Regeln nicht ausgeführt oder gar gebrochen. Nur die in Diesem Dokument enthaltene Definition ist in diesen Fällen gültig.

1. Angabe der verwendeten Zeichenkodierung
Diese Richtlinie muss befolgt werden.

Die Zeichenkodierung, die das Dokument verwendet, muss so angegeben sein, dass diese sowohl von HTML- als auch von XML-Parsern erkannt werden kann.

Begründung

Dokumente, die keine Informationen über den Zeichensatz enthalten, mit dem sie kodiert wurden, müssen mit der Standardzeichenkodierung verarbeitet werden.
Zitat:
Zitat von http://www.w3.org/TR/html401/charset.html#h-5.2.2
[...] user agents must not assume any default value for the "charset" parameter.
HTML-Dokumente besitzen keine Standardzeichenkodierung. Die Spezifikation von HTML 4.01 geht jedoch nicht weiter auf diese Problematik ein. Die Browserhersteller haben daher verschiedene Ansätze entwickelt, um die Kodierung eines Dokuments festzustellen.
Zitat:
Zitat von http://www.w3.org/TR/xhtml1/#strict
[...] (An XML) declaration is required when the character encoding of the document is other than the default UTF-8 or UTF-16 and no encoding was determined by a higher-level protocol.
Für XHTML-Dokumente gilt als Standardzeichenkodierung entweder UTF-8 oder UTF-16.

Vorgehensweise

Die verwendete Zeichenkoderung kann innerhalb eines HTML-Dokuments sehr einfach festgelegt werden. Dazu ist es notwendig ein meta-Element mit diesen Informationen als erstes Kind des head-Elements zu erzeugen.
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 <!-- weiterer Quelltext -->
Die Metaangabe muss an erster Stelle stehen, weil der Titel eines Dokuments bereits Sonderzeichen enthalten kann, die in den zahlreichen Zeichensätzen eine unterschiedliche Bedeutung haben. Daher dürfen vor dieser Angabe auch keine Kommentare stehen, die Sonderzeichen enthalten.
In der Angabe muss der Medientyp „text/html“ angegeben werden. Einerseits, weil das der Wahrheit entspricht, andererseits weil nicht jedes Benutzerprogramm aus einer Metaangabe mit „application/xhtml+xml“ die Zeichenkodierung herauslesen kann.
Wird als Zeichenkodierung UTF-8 oder UTF-16 verwendet ist diese Angabe die einzig notwendige. Wird eine andere Zeichenkodierung verwendet, muss diese für XML-Parser angegeben werden.
Code:
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
 <!-- weiterer Quelltext -->
Dies geschieht durch die XML-Deklaration, welche vor der Dokumenttypangabe angegeben wird. XML-Parser erkennen die Zeichenkodierung aus der Deklaration, HTML-Parser aus der Metaangabe.
Hinweis: XML-Parser können zusätzlich auch eine Byte-Order-Mark verarbeiten. Da diese aber vor allem bei der Arbeit mit serverseitigen Werkzeugen Probleme verursachen kann, sollte keine Byte-Order-Mark gesetzt werden.

Problemfall: Internet Explorer 6

Aus dieser Richtlinie ergibt sich ein Problem im Zusammenspiel mit dem Internet Explorer. Da der Version 6 die XML-Deklaration unbekannt ist, wird der IE 6 in den Quirksmodus versetzt. Das bedeutet die Darstellung entspricht dem IE 5.5 und all dessen Fehlern wie beispielsweise das falsch berechnete Boxenmodell.
Wird also eine andere Zeichenkodierung als UTF-8 oder UTF-16 verwendet, kann keine browserweit ähnliche Darstellung erreicht werden. Da der Internet Explorer 6 noch über ein Drittel des Marktes beherrscht ist eine abweichende Zeichenkodierung (oder alternativ: XHTML selbst) keine Option.
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 16.11.2007, 20:35
Standardkatze
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 06.02.2007
Beiträge: 1.826
gato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nett
Standard

2. Verarbeitungsanweisungen
Diese Richtlinie muss befolgt werden.

Ein Dokument darf keine Verarbeitungsanweisungen (Processing Instructions) enthalten.
Beispiel: Eine Verarbeitungsanweisung, die eine Stildatei referenziert.
Code:
<?xml-stylesheet href="./stilangaben.css" type="text/css" ?>
Begründung

Verarbeitungsanweisungen versetzen den Internet Explorer bis Version 7 in den Quirksmodus, d.h. eine browserweit ähnliche Darstellung wird unmölich.
Unabhängig davon können können Verarbeitungsanweisungen, wie andere XML-Features, von HTML-Parsern nicht verarbeitet werden (meist werden sie ignoriert).

3. Angabe der Elementsprache
Diese Richtlinie muss befolgt werden.

Wird die Elementsprache definiert, muss diese Information für HTML- und XML-Parser verfügbar und identisch sein.

Begründung

Die Sprache eines HTML-Elements wird mit dem lang-Attribut definiert. Wird das Dokument von einem HTML-Parser verarbeitet ist dieses Attribut ausschlaggebend. Die Elementsprache in XHTML-Dokumenten wird mit dem xml:lang-Attribut definiert. Bei der Verarbeitung mit einem XML-Parser wird nur dieses Attribut beachtet.
Beide Attribute müssen den selben Wert enthalten. Beispielsweise ein Absatz:
Code:
<p lang="de" xml:lang="de">Deutscher Text</p>
Erkennung durch Stilangaben
Zitat:
Zitat von http://www.w3.org/TR/2007/CR-CSS21-20070719/selector.html#lang
[...] (in HTML), the language is determined by a combination of the "lang" attribute, the META element, and possibly by information from the protocol (such as HTTP headers). XML uses an attribute called xml:lang, and there may be other document language-specific methods for determining the language.
Die Sprachangaben eines Elements können bei der Arbeit mit Stilangaben verwendet werden. Folgender Quelltext angenommen:
Code:
<p lang="de" xml:lang="de">Deutscher und <em>betonter</em> Text.</p>
Die CSS-Pseudoklasse :lang(de) trifft hier sowohl auf das p- als auch das darinliegende em-Element zu, denn dieses erbt die Sprachinformation von seinem Elternelement.
Wird ein Dokument als HTML verarbeitet trifft die :lang-Pseudoklasse auf das lang-Attribut zu, anderfalls auf das xml:lang-Attribut.
Der Attributselektor [lang=de] würde nur das p-Element formatieren. Außerdem würde ein Attributselektor unabhängig von der Verarbeitung des Dokuments zwischen dem lang- und dem xml:lang-Attribut unterscheiden.
Zu beachten ist jedoch, dass das xml:lang-Attribut einerseits in HTML unbekannt ist, andererseits vom Internet Explorer bis Version 7 nicht erkannt wird. Das ist aber kein Problem, da das lang-Attribut beiden Sprachen und dem Internet Explorer bekannt ist.

4. Auslagerung von Stil- und Skriptdaten
Diese Richtlinie muss befolgt werden.

Stilangaben und Skripte (z.B. Javascript) müssen in externen Dateien gelagert werden.

Begründung

Für HTML-Dokumente ist es unproblematisch, Stilangaben und Skripte innerhalb des Dokuments in style- bzw. script-Elemente zu verpacken. Lediglich XHTML-Dokumente haben hier Probleme.
In XHTML wurde das Inhaltsmodell der style- und script-Elemente verändert, so dass Sonderzeichen wie < und &amp; dort eine andere Bedeutung besitzen als in HTML. Würden diese Zeichen verwendet werden, könnte das Dokument nicht angezeigt werden, da die Sonderzeichen laut XML-Regeln „falsch“ eingesetzt wären.
Die aus früheren Zeiten bekannte (und heute überflüssige) Methode, problematischen Inhalt dieser Elemente durch Kommentare zu verstecken, ist in XHTML-Dokumenten nicht möglich, da ein XML-Parser den Kommetarinhalt löschen würde, bevor dieser berücksichtigt wird.
XML bietet für dieses Problem eine Lösung, diese kann aber von HTML-Parsern nicht verarbeitet werden und führt daher wiederum zu Fehlern.

Problemlösung: Guten Stil bewahren

Die Lösung für dieses Problem ist sehr simpel und ist für gute Webautoren längst selbstverständlich, denn Inhalt, Design und Verhalten eines Dokuments sollten stets voneinander getrennt werden. Folgt man diesem Grundsatz, ist eine fehlerfreie Verarbeitung des Dokuments möglich.
Stilangaben und Skripte können sehr einfach im Kopf eines Dokuments eingefügt werden, ohne Probleme zu verursachen:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 <link rel="stylesheet" type="text/css" media="screen" href="stilangaben.css" />
 <style type="text/css">@import './stilangaben.css' projection;</style>
 <script type="text/javascript" src="./script.js"></script>
 <!-- weiterer Quelltext -->
5. Elemente mit leerem Inhaltsmodell
Diese Richtlinie muss befolgt werden.

Elemente mit leerem Inhaltsmodell (area-, base-, basefont-, br-, col-, frame-, hr-, img-, input-, isindex-, link-, meta- und param-Elemente) müssen selbstschließend geschrieben werden.

Begründung

Die genannten Elemente dürfen in HTML nur als Start-Tag vorkommen. In XHTML ist eine derartige Definition der Elemente nicht möglich, daher müssen diese Elemente selbstschließend (z.B. <hr/>) oder in einer Start- und End-Tag-Kombination geschrieben werden (z.B. <hr></hr>).
Die Start- und End-Tag-Kombination wird jedoch von HTML-Parsern unterschiedlich interpretiert und führt bei verschiedenen Elementen zu unerwarteten Ergebnissen. Daher hat sich die selbstschließende Schreibweise durchgesetzt.
Bei der selbstschließenden Schreibweise sollte man darauf achten, vor den Solidus ein Leerzeichen einzufügen (z.B. <hr />), da die Schreibweise <hr/> in standardkonformen HTML-Parsern <hr>&gt; entspricht (dies wird aber vom Großteil der HTML-Parser ebenfalls ignoriert).

6. Inhaltslose Elemente ohne leerem Inhaltsmodell
Diese Richtlinie muss befolgt werden.

Elemente, deren Inhaltsmodell nicht leer ist (Elemente mit leerem Inhaltsmodell wurden in Richtlinie 5 besprochen), aber keinen Inhalt besitzen (z.B. <script></script> oder <div></div>), dürfen nicht in der selbstschließenden Schreibweise geschrieben werden.

Begründung

In HTML gibt es keine selbstschließenden Elemente, die Schreibweise <div/> wäre also fehlerhaft. Bei Elementen ohne leerem Inhaltsmodell kann der Parser diesen Fehler aber nicht einfach ignorieren.
Stattdessen werden diese Elemente als Start-Tag interpretiert, d.h. <div/> entspricht <div>. Wird beim parsen des Dokuments kein passendes End-Tag gefunden wird dieses vor Beginn des body-End-Tags eingefügt. In Kombination mit Stilangaben oder Skripten durchaus eine zerstörerische Kraft. Bei script-Elementen ist es ähnlich, denn wird <script/> als Start-Tag interpretiert kann ein Teil des folgenden Quelltextes als Skript verarbeitet werden und für den Betrachter des Dokuments unsichtbar.

7. Maskierung von (Markup-)Sonderzeichen
Diese Richtlinie muss, muss und sollte befolgt werden.

Die Markup-spezifischen Sonderzeichen < (kleiner als), > (größer als), & (kaufmännisches Und) sowie " (das Zollzeichen bzw.) müssen maskiert werden (&lt;, &gt;, &amp; und &quot; respektive).
Das Sonderzeichen ' (Apostroph) darf nicht durch &apos; maskiert werden. Es kann durch die numerische (& #39;) bzw. hexadezimale Schreibweise (&#x27;) maskiert werden.
Andere Sonderzeichen wie die deutschen Umlaute sollten nicht maskiert werden, stattdessen sollte ein entsprechender Zeichensatz für das Dokument gewählt werden.

Begründung

Das kleiner-als-Zeichen leitet ein Element bzw. eine Auszeichnung ein, würde es in einem Text vorkommen, z.B. als 2<3 würde ein XML-Parser auf ein unbekanntes bzw. fehlerhaftes Element treffen und einen Fehler verursachen.
Das kaufmännische Und leitet in den Auszeichnungssprachen eine Entität ein, d.h. die Maskierung eines Sonderzeichens. Unmaskiert wird der darauf folgende Text selbst als Maskierung misverstanden. Für einen XML-Parser grund genug das Parsen abzubrechen und eine Fehler auszuwerfen.
Das größer-als-Zeichen, das Zollzeichen und der Apostroph verursachen in der Regel keine Fehler. Zollzeichen und Apostroph können Attributwerte umschließen und müssen daher maskiert werden, wenn sie selbst innerhalb von Attributwerten vorkommen.
Die Maskierung &apos; für den Apostroph wurde in XML eingeführt, ist HTML-Parsern jedoch unbekannt. Daher muss die numerische bzw. hexadezimale Schreibweise verwendet werden.
Andere Sonderzeichen wie die deutschen Umlaute und Satzzeichen sollten nicht maskiert sondern ein entsprechender Zeichensatz (idealerweise UTF-8) verwendet werden. Einige XML-Werkzeuge prüfen das Dokument nicht auf Gültigkeit nach den Regeln der DTD (der Dokumenttypdefinition), daher sind ihnen die darin definierten Entitäten unbekannt. Das gilt auch für alle HTML-Maskierungen. Stößt ein XML-Werkzeug nun auf eine dieser Maskierungen stellt dieses ein unbekanntes Objekt dar und es wird ein Fehler verursacht, das Dokument kann nicht weiter verarbeitet werden.

8. Fehlende Attribute in XHTML
Diese Richtlinie muss befolgt werden.

In der Variante Strict darf das form-Element kein name-Attribut besitzen. In keiner Variante darf das input-Element das ismap-Attribut besitzen.

Begründung

In den XHTML-DTDs sind diese Attribute nicht definiert, sie können daher in einem XHTML-Dokument nicht verwendet werden.

9. Zeilenumbrüche in Attributen
Diese Richtlinie muss befolgt werden.

Innerhalb von Attributen müssen Zeilenumbrüche vermieden werden.

Begründung

Attributwerte, die Zeilenumbrüche enthalten werden von den Benutzerprogrammen unterschiedlich interpretiert, daher müssen sie vermieden werden.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 16.11.2007, 20:35
Standardkatze
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 06.02.2007
Beiträge: 1.826
gato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nett
Standard

10. Nur in XML erlaubte Zeichen verwenden
Diese Richtlinie muss befolgt werden.

Das Dokument darf nur aus Zeichen bestehen, die in einem XML-1.0-Dokument ebenfalls erlaubt sind.

Begründung

Zeichen, die in einem XML-Dokument der Version 1.0 (dazu gehören alle XHTML-Dokumente) nicht erlaubt sind, dürfn nicht verwendet werden, da ein XML-Parser sonst einen Fehler wirft.

Beispiel: In HTML wird das Zeichen U+000C (&#xc;) wie ein Leerzeichen behandelt. In XML ist es verboten.

11. Das tbody-Element
Diese Richtlinie muss befolgt werden.

Tabellen (table-Elemente) dürfen keine tr-Elemente als Kindelemente besitzen. tr-Elemente dürfen nur Kinder von thead-, tfoot- und tbody-Elementen sein.

Begründung

In HTML können einige Elemente im Quelltext weg gelassen werden. Sie werden dann nachträglich vom Parser eingefügt. Das gilt z.B. für das html-, body- und tbody-Element. In XHTML (genauer: XML) kann diese Eigenschaft eines Elements nicht ausgedrückt werden, daher ist das html- und das body-Element in XHTML Pflicht. Das tbody-Element jedoch nicht.
Dieser Unterschied ergibt sich nicht direkt aus der Spezifikation, sondern aus den Dokumenttypdefinitionen (DTDs):
Zitat:
Zitat von Beliebige HTML-DTD
Code:
<!ELEMENT TABLE - - (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ELEMENT TBODY - O (TR)+ -- table body -->
Zitat:
Zitat von Beliebige XHTML-DTD
Code:
<!ELEMENT table (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
Alle wichtigen Eigenschaften des table-Elements sind definiert: In XHTML wird der Elementname klein geschrieben, es kann ein caption-Element beinhalten, ein oder mehrere col- bzw. colgroup-Elemente und auch thead- und tfoot-Elemente. Der letzte Punkt der Elementdefinition macht den Unterschied zwischen HTML und XHTML klar.
In HTML kann ein table-Element keine tr-Elemente als Kind besitzen, dafür ist das tbody-Element pflicht. Das tbody-Element ist jedoch so definiert, dass der Autor es nicht in den Quelltext schreiben muss, der HTML-Parser fügt das Element selbstständig ein.
Da diese Eigenschaft XML-Elementen unbekannt ist wurde die Definition des table-Elements in XHTML leicht verändert: Es kann entweder thead-, tfoot- und tbody-Elemente als Kind haben - dann müssen diese auch in den Quelltext geschrieben werden - oder tr-Elemente.

12. Die Interpretation von Stilangaben
Diese Richtlinie muss befolgt werden.

Stilregeln müssen so definiert werden, dass sie bei der Verarbeitung eines Dokuments als HTML bzw. XML eine identisch Ausgabe erzeugen.

Begründung

Für HTML gibt es eine Reihe von Sonderregelungen, die bei der Interpretation von Stilangaben beachtet werden müssen. In XHTML-Dokumenten werden diese Sonderregelungen jedoch nicht berücksichtigt.
Zitat:
Zitat von http://www.w3.org/TR/xhtml1/#C_13
CSS defines different conformance rules for HTML and XML documents; be aware that the HTML rules apply to XHTML documents delivered as HTML and the XML rules apply to XHTML documents delivered as XML.
Nicht alle CSS-fähigen Browser setzen diese Regeln korrekt um, das ist mitunter einer der Gründe, warum sich Autoren von XHTML-Quelltext hier der Problematik nicht bewusst sind.
Die Spezifikation von CSS 2.1 ist zwar schon recht ausgereift, aber noch immer in Bearbeitung. Daher könnten diese Sonderregelungen in Zukunft auch wegfallen.
Im einzelnen sind folgende Bereiche betroffen:

12.1 Hintergrundfarbe und -Bild des Anzeigebereichs
Zitat:
Zitat von http://www.w3.org/TR/2007/CR-CSS21-20070719/colors.html#background
For HTML documents whose root HTML element has computed values of 'transparent' for 'background-color' and 'none' for 'background-image', user agents must instead use the computed value of those properties from that HTML element's first BODY element child when painting backgrounds for the canvas, and must not paint a background for that BODY element. Such backgrounds must also be anchored at the same point as they would be if they were painted only for the root element. This does not apply to XHTML documents.
In dieser Sonderregelung für HTML stecken viele Informationen. Geht man die Spezifikation der relevanten Eigenschaften und diesen Absatz Schritt für Schritt durch, werden aus der Spezifikation folgende Punkte deutlich:
  • Für jedes Element ist der Standardwert der background-color-Eigenschaft transparent (durchsichtig).
  • Für jedes Element ist der Standardwert der background-image-Eigenschaft none (keines).
  • In HTML wird der Anzeigebereich durch das body-Element definiert, in XML durch das Wurzelelement des Dokuments (in XHTML das html-Element).
  • Ist keine dieser Eigenschaften für das html-Element definiert, aber eine oder beide für das body-Element, so werden diese definierten Eigenschaften vom body-Element entfernt und auf das html-Element übertragen.
Wäre eine dieser Eigenschaften also für das body-Element definiert, würde bei der Anzeige des Dokuments als XML tatsächlich nur das body-Element und nicht der Anzeigebereich betroffen sein.

12.2 Die overflow-Eigenschaft des Anzeigebereichs
Zitat:
Zitat von http://www.w3.org/TR/2007/CR-CSS21-20070719/visufx.html#overflow
UAs must apply the 'overflow' property set on the root element to the viewport. HTML UAs must instead apply the 'overflow' property from the BODY element to the viewport, if the value on the HTML element is 'visible'. The 'visible' value when used for the viewport must be interpreted as 'auto'. The element from which the value is propagated must have a used value for 'overflow' of 'visible'.
Diese Sonderregelung ähnelt der für die Eigenschaften von Hintergrundfarbe und Bild. Auch hier ergeben sich folgende Punke aus der Spezifikation:
  • Für jedes Element ist der Standardwert der overflow-Eigenschaft visible. Das bedeutet, wenn für ein Element Höhe und Breite definiert sind, der Inhalt aber mehr Platz als verfügbar benötigt, wird der Inhalt außerhalb des Elements dargestellt. Sind Höhe und Breite nicht definiert, so vergrößert sich das Element, bis genug Platz für seinen inhalt ist.
  • Ist der Wert der overflow-Eigenschaft für das html-Element visible und der Wert der Eigenschaft für das body-Element definiert, so wird der Wert vom body-Element entfernt und auf das html-Element übertragen.
  • Das html-Element bestimmt die Beschaffenheit des Anzeigebereichs. Ist der Wert der overflow-Eigenschaft für das html-Element visible, verändert er sich automatisch auf „auto“ (d.h. der Bereich sollte Scrollbar werden, das ist aber vom Darstellungsprogramm abhängig).

12.3 Groß- und Kleinschreibung

Wird ein Dokument als XML verarbeitet spielt die Groß- und Kleinschreibung eine wichtige Rolle. Die trifft auch auf Stilangaben zu. Element- und Attributnamen müssen kleingeschrieben werden.

13. Die Verabeitung von Skripten
Diese Richtlinie muss befolgt werden.

Die write()- bzw. writeln()-Methoden in JavaScript dürfen nicht verwendet werden. Wird mit Methoden des DOM gearbeitet müssen die Namensraum-fähigen Methoden des Level-2-DOMs verwendet werden.
Die Begründung folgt in den Unterpunkten.

13.1 document.write()

Die JavaScript-Funktionen write() und writeln() können in XHTML nicht verwendet werden, da es durch die Definition von XML Skripten verboten ist, während des Parsevorgangs beliebigen neuen Text in das Dokument einzufügen.

13.2 Verwendung von DOM-Level-2-Methoden

Alle XHTML-Elemente und -Attribute befinden sich im XHTML-Namensraum (http://www.w3.org/1999/xhtml). Soll in das Dokument dynamisch ein neues Element eingefügt werden, so muss das einzufügende Element (das gilt auch für Attribute) dem XHTML-Namensraum angehören. Dies ist nur mit den Methoden des DOM-Level-2-Kerns möglich.
Zitat:
Zitat von http://www.w3.org/TR/DOM-Level-2-Core/core.html#Namespaces-Considerations
DOM Level 1 methods are namespace ignorant.
Das bedeutet, fügt man mit der Level-1-Methode createElement() ein p-Element ein, erhält man kein Absatzelement, sondern ein unbekanntes Inlinelemement (Inline deshalb, weil das der Standardwert für undefinierte Elemente ist).
Stattdessen muss man die Namensraum-fähigen Level-2-Methoden verwenden. Diese haben den selben Namen, nur mit „NS“ als Suffix.
Code:
NeuesElement = document.createElementNS('http://www.w3.org/1999/xhtml','p');
Der Vorteil der Level-2-Methoden ist, dass das erzeugte Element sowohl von XML-Parsern als auch von HTML-Parsern verarbeitet werden kann.
Elemente aus dem XHTML-Namensraum werden von üblichen HTML-Parsern als identische HTML-Elemente erkannt. Der tatsächliche HTML-Namensraum wäre aber „null“, da HTML selbst über keinen Namensraum verfügt.
Mit Zitat antworten
  #4 (permalink)  
Alt 16.11.2007, 20:36
Standardkatze
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 06.02.2007
Beiträge: 1.826
gato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nett
Standard

Weitere Informationen
Die folgenden Informationen sind zwar sehr wichtig, haben aber nicht die nötige Relevanz für eine Richtlinie.

1. Das isindex-Element
Das isindex-Element ist veraltet und daher nur in den Varianten Transitional und Frameset erlaubt. Es soll durch das input-Element ersetzt werden, da isindex keine brauchbaren Informationen liefert und nicht browserweit implementiert ist.
Als HTML verarbeitete Dokumente zeigen durch dieses Element ein Eingabefeld für Suchanfragen an. Als XML verarbeitet, wird die Anzeige des Dokuments nicht beeinflusst.
Als Richtlinie wäre dieses Element verboten.

2. Boolische Attribute
In HTML gibt es so genannte boolische Attribute. Das sind Attribute wie compact, nowrap, ismap, declare, noshade, checked, disabled, readonly, multiple, selected, noresize und defer, denen kein Wert zugewiesen wird.
In XHTML muss diesen Attributen ihr Name als Wert zugewiesen werden. Es soll Parser geben, die diese Schreibweise nicht verstehen. Das ist jedoch ein Fehler des Parsers, denn die ausgeschriebene Schreibweise entspricht gültigem HTML.

3. Definition und Ansteuerung von Sprungzielen
Für XHTML ist definiert, was tatsächlich schon für HTML definiert war. Ein Sprungziel wird definiert, indem man einem beliebigen Element eine ID gibt. Als Vereis zu diesem Sprungziel wird die ID mir vorangestelltem Gatterzeichen (#) referenziert.
Code:
<a href="#IDReferenz">Sprungziel ansteuern.</a>
<!-- Quelltext dazwischen -->
<p id="IDReferenz">Sprunziel definieren.</p>
4. Inkompatibilität zu XHTML 1.1
XHTML 1.1 ist inkompatibel zu XHTML 1.0, denn der Wert des usemap-Attributs der img-, input- und object-Elemente muss in den beiden Versionen unterschiedlich Angegeben werden.
In XHTML 1.0 (identisch zu HTML 4.01) muss der Wert eine Hypertext-Referenz sein (identisch zum Ansteuern von Sprunfzielen) z.B. „#map“. Ab XHTML 1.1 muss der Wert eine ID referenzieren und darf nur diese referenzierte ID als Wert enthalten, z.B. „map“.
Das ist einerseits Problematisch, weil die Darstellungsprogramme dieses Verhalten kaum implementiert haben. Zum anderen wird dadurch unklar, wie sich ein XML-Werkzeug verhalten soll, das den XHTML-Namensraum implementiert hat, aber nur ein XHTML-Fragment parst.
XHTML 1.1 basiert offiziell nicht auf dem Sprachschatz von HTML 4.01, daher ist das versenden von XHTML-1.1-Dokumenten als „text/html“ verboten.

5. Zukunftsfähigkeit von XHTML
XHTML 2.0 befindet sich seit Jahren im Entwurfsstadium und plant große Veränderungen im Vergleich zur Vorgängerversion. So werden beispielsweise Formulare durch die XML-Technik XForms ersetzt, p-Elemente sollen Blockelemente enthalten können und nahezu jedes Element wird als Verweis bzw. Bildalternative eingsetzt werden können.
Das hört sich alles sehr gut an, und tatsächlich bietet XHTML 2.0 einige Vortschritte, doch gibt es mehr als einen Wermutstropfen.
Aktuell möchte die XHTML-2.0-Arbeitsgruppe den XHTML 1.x-Namensraum übernehmen. Dies hätte fatale Auswirkungen: Dokumente, die nach den Regeln von XHTML 1.x verfasst wurden könnten so übernacht ungültig werden. Hier tritt erneut das Problem der Verarbeitung auf: Wie soll ein XML-Werkzeug wissen, welche Elementdefinition, wenn es nur ein XHTML-Fragment verarbeitet?
Unabhängig davon haben Browserentwickler bereits kommentiert, dass die Ausweitung der Verweis- und Alternativtechnik für Bilder einen nicht verantwortbaren Aufwand bei der Implementierung darstellen würde.

6. Ausblick auf XHTML5
Auch auf Grund der Problematik von XHTML 2.0 haben sich seit Mitte 2004 die Browserhersteller Mozilla, Opera und Apple zu der WHATWG zusammengeschlossen. Diese Arbeitsgruppe hat sich zum Ziel gesetzt HTML weiterzuentwickeln. Der Arbeitsentwurf, Web Applications 1.0 wurde Anfang 2007 von der HTML-Arbeitsgruppe beim W3C zur Basis für die neue HTML Version 5 gewählt.
HTML5 definiert die Sprache HTML (HTML5), die XML-Formulierung dieser Sprache (XHTML5) und die Darstellung dieser Sprache im DOM (DOM5).
Zwar definiert HTML5 einige Elemente ebenfalls neu, legt dabei aber hohen Wert auf Rückwärtskompatibilität. Der Entwurf der Spezifikation definiert die Syntax von HTML selbst neu, so dass diese in Zukunft von Validatoren besser überprüft werden kann.
Für XHTML5 gelten die Regeln von XML, aber auch hier wird Wert darauf gelegt, die Unterschiede zwischen HTML und XHTML zu verringern (das gilt für die Syntax ebenso wie für die Arbeit mit DOM-Methoden).
Die HTML-Arbeitsgruppe möchte für XHTML5 den XHTML-Namensraum verwenden und steht damit in Konkurrenz zur XHTML-2.0-Arbeitsgruppe. Die HTML-Arbeitsgruppe hat aber angekündgt auch ohne diesen Namensraum zu XHTML 1.0 kompatibel zu bleiben.

Ende des Beitrags.
Mit Zitat antworten
  #5 (permalink)  
Alt 17.11.2007, 14:03
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.845
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Erstmal Respekt für die Arbeit.

Ich hab's bisher nur überflogen, aber es sind ein paar Dinge enthalten, die ich so auch noch nicht wusste, deswegen werde ich mir den Artikel bei Zeiten mal genauer durchlesen.

Danke.
Mit Zitat antworten
  #6 (permalink)  
Alt 17.11.2007, 15:59
Benutzerbild von Geronimo
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 14.06.2004
Beiträge: 2.651
Geronimo sorgt für eine eindrucksvolle AtmosphäreGeronimo sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von gato Beitrag anzeigen
Die Metaangabe muss an erster Stelle stehen, weil der Titel eines Dokuments bereits Sonderzeichen enthalten kann, die in den zahlreichen Zeichensätzen eine unterschiedliche Bedeutung haben. Daher dürfen vor dieser Angabe auch keine Kommentare stehen, die Sonderzeichen enthalten.
Interessant. Hab' ich gleich umgesetzt.
Mit Zitat antworten
  #7 (permalink)  
Alt 18.11.2007, 00:22
Benutzerbild von heiko_rs
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 18.09.2005
Ort: Berlin
Beiträge: 9.869
heiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von designfanatiker Beitrag anzeigen
Interessant. Hab' ich gleich umgesetzt.
Das hatte ich vor ein paar Wochen bereits geschrieben, als ich Dich auf das fehlende meta-Element aufmerksam gemacht hatte

Zitat:
Zitat von heiko_rs Beitrag anzeigen
stelle das meta-Element an erste Stelle, direkt unter <head>.
Mit Zitat antworten
  #8 (permalink)  
Alt 18.11.2007, 00:25
Benutzerbild von Geronimo
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 14.06.2004
Beiträge: 2.651
Geronimo sorgt für eine eindrucksvolle AtmosphäreGeronimo sorgt für eine eindrucksvolle Atmosphäre
Standard

Hab' deine Anmerkungen zum Beitrag von Cheffu nicht gelesen. Hätte ich vielleicht tun sollen.
Mit Zitat antworten
  #9 (permalink)  
Alt 18.11.2007, 13:03
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.737
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Ich hab den Text auch erst nur überflogen. Dabei sind mir bisher nur ein paar Grammatikfehler (vor allem Zeichensetzung) aufgefallen. Auch könnten oder müssten einige Passagen etwas deutlicher formuliert werden, da sie etwas missverständlich wirken.
Ob es auch inhaltliche Fehler gibt, kann ich erst sagen, nachdem ich den Text genauer gelesen habe.
__________________
Markus Wulftange
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 18.11.2007, 13:28
Standardkatze
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 06.02.2007
Beiträge: 1.826
gato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nettgato ist einfach richtig nett
Standard

Zitat:
Zitat von heiko_rs Beitrag anzeigen
stelle das meta-Element an erste Stelle, direkt unter <head>.
Da möchte/muss ich auch noch weitere Test durchführen. So wie es aussieht reicht die Angabe für die Erkennung der UTF-16-Kodierung nicht aus.

Zitat:
Zitat von Gumbo Beitrag anzeigen
Dabei sind mir bisher nur ein paar Grammatikfehler (vor allem Zeichensetzung) aufgefallen.
Das kann ich mir denken ouh Aber das soll sich noch verbessern.

Zitat:
Zitat von Gumbo Beitrag anzeigen
Auch könnten oder müssten einige Passagen etwas deutlicher formuliert werden, da sie etwas missverständlich wirken.
Wenn bestimmte Abschnitte besondere Pflege benötigen, sag mir bitte um welche es sich dabei handelt. Ich kann mich leider nicht sehr gut in die Leserseite versetzen.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Redesign für Steiner Cycling Team pkipper Site- und Layoutcheck 11 09.02.2011 13:25
per jquery flash entfernen und html anzeigen lassen destroy90210 Javascript & Ajax 2 02.01.2010 18:15
DIV immer ganze Breite - normal?!?!? csski CSS 3 02.07.2008 13:20
Wie parse ich mit php Markdown syntax nach html? asdfgqw Serveradministration und serverseitige Scripte 0 03.06.2008 01:11
CSE HTML Validator Standard Anschaffung wert? DieterWelzel Offtopic 10 17.08.2007 18:02


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:19 Uhr.