HTML5-Deutsch.de - Inhalt
Ein Projekt von Schumacher-Netz.de

1 Einleitung

1.1 Hintergrund

Dieser Abschnitt ist nicht normativ.

Die Auszeichnungssprache des World Wide Web war schon immer HTML. HTML war primär als Sprache gestaltet worden, die wissenschaftliche Dokumente semantisch beschreiben sollte, auch wenn ihr allgemeiner Aufbau und die Anpassungen über die Jahre dazu verholfen haben, dass sie zahlreiche andere Dokumenttypen beschreiben kann.

The World Wide Web's markup language has always been HTML. HTML was primarily designed as a language for semantically describing scientific documents, although its general design and adaptations over the years have enabled it to be used to describe a number of other types of documents.

Der Hauptbereich, der von HTML nicht angemessen beschrieben wurde, ist ein unklar definiertes Subjekt namens Web-Applikationen. Diese Spezifikation versucht, das zurechtzurücken. Gleichzeitig wird die HTML-Spezifikation aktualisiert, um Probleme zu beheben, die in den letzten zwei Jahren ans Licht getreten sind.

The main area that has not been adequately addressed by HTML is a vague subject referred to as Web Applications. This specification attempts to rectify this, while at the same time updating the HTML specifications to address issues raised in the past few years.

1.2 Zielgruppe

Dieser Abschnitt ist nicht normativ.

Diese Spezifikation ist für Dokument- und Skriptautoren gedacht, die die Eigenschaften verwenden, die in dieser Spezifikation definiert sind, für Implementierer von Tools, die auf Seiten agieren, die die Eigenschaften verwenden, die in dieser Spezifikation definiert sind und für Personen, die wünschen, Dokumente oder Implementierungen richtig nach den Forderungen dieser Spezifikation zu erstellen.

This specification is intended for authors of documents and scripts that use the features defined in this specification, implementors of tools that operate on pages that use the features defined in this specification, and individuals wishing to establish the correctness of documents or implementations with respect to the requirements of this specification.

Diese Dokument ist wahrscheinlich nicht für Leser geeignet, die noch garnicht mit den Web-Technologien vertraut sind, da an einigen Stellen Präzision einer klaren Darstellung und Kürze der Vollständigkeit vorgezogen wird. Einfacher zu verstehende Tutorials und Leitfäden bieten sicherlich eine behutsamere Einführung in den Stoff.

This document is probably not suited to readers who do not already have at least a passing familiarity with Web technologies, as in places it sacrifices clarity for precision, and brevity for completeness. More approachable tutorials and authoring guides can provide a gentler introduction to the topic.

Insbesondere Kenntnisse der Grundlagen zum DOM (Document Object Model) sind notwendig, um einige der mehr technischen Teile dieser Spezifikation vollständig zu verstehen. Kenntnisse in Web IDL, HTTP, XML, Unicode, Zeichenkodierungen, JavaScript und CSS sind teilweise hilfreich, jedoch nicht zwingend notwendig.

In particular, familiarity with the basics of DOM is necessary for a complete understanding of some of the more technical parts of this specification. An understanding of Web IDL, HTTP, XML, Unicode, character encodings, JavaScript, and CSS will also be helpful in places but is not essential.

1.3 Geltungsbereich

Dieser Abschnitt ist nicht normativ.

Diese Spezifikation ist darauf beschränkt, eine Auszeichnungssprache und dazugehörige APIs auf semantischer Ebene zu beschreiben, um zugängliche Seiten im Internet zu schreiben, die von statischen Dokumenten bis zu dynamischen Applikationen reichen.

This specification is limited to providing a semantic-level markup language and associated semantic-level scripting APIs for authoring accessible pages on the Web ranging from static documents to dynamic applications.

Im Geltungsbereich dieser Spezifikation ist kein Mechanismus enthalten, der Anpassungen der Darstellung an bestimmte Medien bedient (auch wenn am Ende dieser Spezifikation Voreinstellungen für die Darstellungsregeln in Browsern gegeben werden und zahlreiche Mechanismen ein Teil der Spezifikation sind, die ein Zusammenspiel mit CSS beschreiben).

The scope of this specification does not include providing mechanisms for media-specific customization of presentation (although default rendering rules for Web browsers are included at the end of this specification, and several mechanisms for hooking into CSS are provided as part of the language).

Im Rahmen dieser Spezifikation soll kein gesamtes Betriebssystem beschrieben werden. Insbesondere fallen Software zur Hardwarekonfiguration, Bildmanipulationswerkzeuge und Applikationen, die Benutzer täglich mit High-End Computern verwenden würden, nicht in diesen Rahmen. Diese Spezifikation ist an Applikationen gerichtet, die von Benutzern nur hin und wieder verwendet werden oder regelmäßig, aber von unterschiedlichsten Orten aus und mit niedrigen CPU-Anforderungen. Beispiele solcher Applikationen sind Online-Bezahlsysteme, Suchsysteme, Spiele (insbesondere Online-Spiele für mehrere Mitspieler), öffentliche Telefon- oder Adressbücher, Kommunikationssoftware (E-Mail-Programme, Chat-Programme, Diskussionssoftware), Dokumentbearbeitungssoftware und so weiter.

The scope of this specification is not to describe an entire operating system. In particular, hardware configuration [BUG] software, image manipulation tools, and applications that users would be expected to use with high-end workstations on a daily basis are out of scope. In terms of applications, this specification is targeted specifically at applications that would be expected to be used by users on an occasional basis, or regularly but from disparate locations, with low CPU requirements. Examples of such applications include online purchasing systems, searching systems, games (especially multiplayer online games), public telephone books or address books, communications software (e-mail clients, instant messaging clients, discussion software), document editing software, etc.

1.4 Geschichte

Dieser Abschnitt ist nicht normativ.

Die ersten fünf Jahre (1990-1995) lief HTML durch einige Revisionen und bekam zahlreiche Erweiterungen, zuerst war es primär bei CERN unterbracht, später bei IETF.

For its first five years (1990-1995), HTML went through a number of revisions and experienced a number of extensions, primarily hosted first at CERN, and then at the IETF.

Mit der Entstehung des W3C wechselte die HTML-Entwicklung erneut den Ort. Im Jahre 1995 machte ein erster fehlgeschlagener Versuch, HTML zu erweitern, bekannt als HTML 3.0, den Weg für einen pragmatischeren Anlauf, bekannt als HTML 3.2, welches 1997 fertiggestellt wurde. HTML4 folgte zügig im gleichen Jahr.

With the creation of the W3C, HTML's development changed venue again. A first abortive attempt at extending HTML in 1995 known as HTML 3.0 then made way to a more pragmatic approach known as HTML 3.2, which was completed in 1997. HTML4 quickly followed later that same year.

Im folgenden Jahr beschlossen die W3C-Mitglieder, die Weiterentwicklung von HTML zu beenden und stattdessen an einem XML-basierten Equivalent zu arbeiten, genannt XHTML. Dieses Bestreben begann mit der Umformulierung von HTML4 als XML, bekannt als XHTML 1.0. XHTML 1.0 erhielt außer der neuen Serialisierung keine neuen Features, es wurde im Jahre 2000 fertiggestellt. Nach XHTML 1.0 richtete das W3C sein Bestreben darauf, die Erweiterung von XHTML für andere Arbeitsgruppen einfacher zu gestalten, dieses lief unter dem Banner XHTML-Modularisierung. Parallel dazu arbeitete das W3C an einer neuen Sprache, die nicht kompatibel zu früheren Version von HTML und XHTML war, genannt XHTML2.

The following year, the W3C membership decided to stop evolving HTML and instead begin work on an XML-based equivalent, called XHTML. This effort started with a reformulation of HTML4 in XML, known as XHTML 1.0, which added no new features except the new serialization, and which was completed in 2000. After XHTML 1.0, the W3C's focus turned to making it easier for other working groups to extend XHTML, under the banner of XHTML Modularization. In parallel with this, the W3C also worked on a new language that was not compatible with the earlier HTML and XHTML languages, calling it XHTML2.

Zu der Zeit, um 1998, als die Weiterentwicklung von HTML beendet wurde, wurden Teile der API für HTML, die von Browser-Herstellern entwickelt wurden, festgelegt und unter den Namen DOM Level 1 (1998), DOM Level 2 Core und DOM Level HTML (begonnen in 2000 und zu Ende gebracht in 2003) veröffentlicht. Diese Bestrebungen verliefen 2004 dann mit einigen veröffentlichten DOM Level 3-Spezifikationen im Sande, da die Arbeitsgruppe geschlossen wurde, bevor alle Level 3-Dokumente erfolgreich abgeschlossen wurden.

Around the time that HTML's evolution was stopped in 1998, parts of the API for HTML developed by browser vendors were specified and published under the name DOM Level 1 (in 1998) and DOM Level 2 Core and DOM Level 2 HTML (starting in 2000 and culminating in 2003). These efforts then petered out, with some DOM Level 3 specifications published in 2004 but the working group being closed before all the Level 3 drafts were completed.

Im Jahre 2003 zündete die Veröffentlichung von XForms, eine Technologie, die als die nächste Generation von Web-Formularen angesiedelt war, den Funken für ein erneutes Interesse, HTML selbst weiterzuentwickeln, anstatt einen Ersatz dafür zu finden. Das Interesse entstand aus der Erkenntnis, dass der Einsatz von XML als Web-Technologie auf vollkommen neue Technologien (wie RSS und später Atom) beschränkt war und existierende, bereits verwendete Technologien (wie HTML) nicht ersetzen konnte.

In 2003, the publication of XForms, a technology which was positioned as the next generation of Web forms, sparked a renewed interest in evolving HTML itself, rather than finding replacements for it. This interest was borne from the realization that XML's deployment as a Web technology was limited to entirely new technologies (like RSS and later Atom), rather than as a replacement for existing deployed technologies (like HTML).

Das erste Ergebnis dieses neuen Interesses war der Beweis des Konzepts, dass es möglich war, HTML4-Formulare so zu erweitern, dass sie viele der in XForms 1.0 vorgestellten Eigenschaften enthielten, ohne dass die Browser Rendering Engines implementieren mussten, die nicht kompatibel mit vorhandenen HTML-Seiten waren. In diesem frühen Stadium, als der Entwurf schon öffentlich verfügbar war und Beiträge von allen möglichen Quellen mit einflossen, stand die Spezifikation allein unter dem Copyright von Opera Software.

A proof of concept to show that it was possible to extend HTML4's forms to provide many of the features that XForms 1.0 introduced, without requiring browsers to implement rendering engines that were incompatible with existing HTML Web pages, was the first result of this renewed interest. At this early stage, while the draft was already publicly available, and input was already being solicited from all sources, the specification was only under Opera Software's copyright.

Die Idee, dass die Entwicklung von HTML fortgesetzt werden sollte, wurde bei einem W3C-Workshop im Jahre 2004 überprüft. Bei diesem Workshop wurden dem W3C einige der Prizipien, denen die Arbeit an HTML5 unterliegt (siehe unten), sowie der bereits erwähnte Entwurf, der nur auf Formulare bezogene Eigenschaften abdeckt, gemeinschaftlich von Opera und Mozilla präsentiert. Der Vorschlag wurde zurückgewiesen, da er mit dem eingeschlagenen Kurs der zuvor beschlossenen Web-Entwicklung kollidierte; die W3C-Mitgliedschaft stimmte ab, stattdessen an dem XML-basierten Ersatz weiterzuarbeiten.

The idea that HTML's evolution should be reopened was tested at a W3C workshop in 2004, where some of the principles that underlie the HTML5 work (described below), as well as the aforementioned early draft proposal covering just forms-related features, were presented to the W3C jointly by Mozilla and Opera. The proposal was rejected on the grounds that the proposal conflicted with the previously chosen direction for the Web's evolution; the W3C staff and membership voted to continue developing XML-based replacements instead.

Kurz darauf gaben Apple, Mozilla und Opera geschlossen ihre Absicht bekannt, dass sie unter dem Dach der WHATWG die Arbeit an neuem Ort fortsetzen werden. Eine öffentliche Mailing-Liste wurde initiiert und der Entwurf zog um zur WHATWG-Seite. Das Urheberrecht wurde daraufhin geändert, so dass es nun gemeinschaftlich von allen drei Parteien gehalten wurde und die Wiederverwendung der Spezifikation gestattete.

Shortly thereafter, Apple, Mozilla, and Opera jointly announced their intent to continue working on the effort under the umbrella of a new venue called the WHATWG. A public mailing list was created, and the draft was moved to the WHATWG site. The copyright was subsequently amended to be jointly owned by all three vendors, and to allow reuse of the specification.

Die WHATWG hielt an mehreren Kernprizipien fest, insbesondere dass die Technologien rückwärtskompatibel sein mussten, dass Spezifikationen und Implementierungen sich untereinander vertragen müssen, auch wenn das bedeutete, die Spezifikation statt der Implementierung zu ändern. Spezifikationen müssen detailiert genug sein, um eine vollkommene Interoperabilität zu erreichen, ohne untereinander ein Reverse Engineering nötig zu machen.

The WHATWG was based on several core principles, in particular that technologies need to be backwards compatible, that specifications and implementations need to match even if this means changing the specification rather than the implementations, and that specifications need to be detailed enough that implementations can achieve complete interoperability without reverse-engineering each other.

Insbesondere die letztere Forderung war Anlass, dass der Umfang der HTML5-Spezifikation das aufnahm, was zuvor in drei getrennten Dokumenten festgelegt war: HTML4, XHTML1 und DOM2 HTML. Es bedeutete auch, deutlich mehr Details aufzunehmen als die, die zuvor als Norm betrachtet wurden.

The latter requirement in particular required that the scope of the HTML5 specification include what had previously been specified in three separate documents: HTML4, XHTML1, and DOM2 HTML. It also meant including significantly more detail than had previously been considered the norm.

Im Jahre 2006 deutete das W3C dann doch noch Interesse an der Mitarbeit bei der Entwicklung von HTML5 an und gründete im Jahr 2007 eine Arbeitsgruppe, um zusammen mit der WHATWG an der Entwicklung der HTML5-Spezifikation zu arbeiten. Apple, Mozilla und Opera gestatteten dem W3C, die Spezifikation unter dem W3C-Urheberrecht zu veröffentlichen, während eine Version mit einer weniger einschränkenden Lizenz auf der WHATWG-Seite behalten wurde.

In 2006, the W3C indicated an interest to participate in the development of HTML5 after all, and in 2007 formed a working group chartered to work with the WHATWG on the development of the HTML5 specification. Apple, Mozilla, and Opera allowed the W3C to publish the specification under the W3C copyright, while keeping a version with the less restrictive license on the WHATWG site.

Beide Gruppen arbeiteten daraufhin für mehrere Jahre unter dem gleichen Editor zusammen: Ian Hickson. Im Jahre 2011 kamen die Gruppen zu dem Schluss, dass sie unterschiedliche Ziele verfolgten: das W3C wollte einen Schnappschuss der Eigenschaften für eine HTML5-Empfehlung machen, während die WHATWG weiter an einem Lebenden Standard für HTML arbeiten, ununterbrochen die Spezifikation pflegen und neue Eigenschaften hinzufügen wollte. Im Jahre 2012 wurde ein neues Editoren-Team beim W3C vorgestellt, um eine HTML5-Empfehlung zu erstellen und einen Entwurf für die nächste HTML-Version zu erarbeiten.

For a number of years, both groups then worked together under the same editor: Ian Hickson. In 2011, the groups came to the conclusion that they had different goals: the W3C wanted to draw a line in the sand for features for a HTML5 Recommendation, while the WHATWG wanted to continue working on a Living Standard for HTML, continuously maintaining the specification and adding new features. In mid 2012, a new editing team was introduced at the W3C to take care of creating a HTML5 Recommendation and prepare a Working Draft for the next HTML version.

Seit dieser Zeit hat die Arbeitsgruppe HTML des W3C ausgesuchte Patches der WHATWG verwendet, die registrierte Fehler in der HTML-Spezifikation des W3C lösten oder die implementierte Wirklichkeit in Benutzerschnittstellen besser repräsentierten. Zur Zeit der Veröffentlichung dieses Dokuments, wurden Patches der WHATWG HTML-Spezifikation bis einschließlich Revision 8152 verarbeitet. Die HTML-Editoren des W3C haben auch Patches hinzugefügt, die aus Diskussionen und Entscheidungen der HTML-Arbeitsgruppe des W3C hervorgegangen sind, sowie Fehlerbereinigungen von Fehlern, die nicht von der WHATWG geteilt werden.

Since then, the W3C HTML WG has been cherry picking patches from the WHATWG that resolved bugs registered on the W3C HTML specification or more accurately represented implemented reality in UAs. At time of publication of this document, patches from the WHATWG HTML specification have been merged until revision 8152 inclusive. The W3C HTML editors have also added patches that resulted from discussions and decisions made by the W3C HTML WG as well a bug fixes from bugs not shared by the WHATWG.

Ein eigenes Dokument wurde veröffentlicht, um die Unterschiede zwischen dem HTML, das in dieser Spezifikation beschrieben ist und der Sprache, die in HTML4 beschrieben ist, zu dokumentieren. [HTMLDIFF]

A separate document is published to document the differences between the HTML specified in this document and the language described in the HTML4 specification. [HTMLDIFF]

1.5 Anmerkungen zum Design

Dieser Abschnitt ist nicht normativ.

Es muss zugegeben werden, dass viele Aspekte von HTML auf den ersten Blick widersinnig und nicht konsistent erscheinen.

It must be admitted that many aspects of HTML appear at first glance to be nonsensical and inconsistent.

HTML und die unterstützenden DOM APIs, wie auch viele der unterstützenden Technologien wurden im Laufe einiger Jahrzehnte durch verschiedenste Personen mit unterschiedlichen Prioritäten entwickelt, die in vielen Fällen nichts von der Existenz der anderen wussten.

HTML, its supporting DOM APIs, as well as many of its supporting technologies, have been developed over a period of several decades by a wide array of people with different priorities who, in many cases, did not know of each other's existence.

Features sind so aus vielen Quellen emporgestiegen und wurden nicht immer in besonders konsistenter Weise aufgebaut. Zudem, bedingt durch die einzigartige Charakteristik des Webs, wurden Implementierungsfehler oft de-facto und nun de-jure Standards, da Inhalt oft ungewollt mit Methoden geschrieben wird, die auf den Fehlern aufbauen, bevor diese korrigiert werden können.

Features have thus arisen from many sources, and have not always been designed in especially consistent ways. Furthermore, because of the unique characteristics of the Web, implementation bugs have often become de-facto, and now de-jure, standards, as content is often unintentionally written in ways that rely on them before they can be fixed.

Ungeachtet dessen wurden Anstrengungen unternommen, bestimmten Design-Zielen zu folgen. Diese sind in den folgenden Unterkapiteln beschrieben.

Despite all this, efforts have been made to adhere to certain design goals. These are described in the next few subsections.

1.5.1 Serialisierbarkeit der Skriptausführung

Dieser Abschnitt ist nicht normativ.

Um Web-Autoren nicht den Komplexitäten von Multithreading auszusetzen, sind die HTML und DOM APIs so aufgebaut, dass kein Skript jemals die simultane Aufführung anderer Skripte erkennen kann. Selbst mit Workers besteht die Absicht, dass das Verhalten von Implementierungen als eine vollständige Serialisierung der Ausführung aller Skripte in allen Browsing-Kontexten anzusehen ist.

To avoid exposing Web authors to the complexities of multithreading, the HTML and DOM APIs are designed such that no script can ever detect the simultaneous execution of other scripts. Even with workers, the intent is that the behavior of implementations can be thought of as completely serializing the execution of all scripts in all browsing contexts.

Die Methode navigator.yieldForStorageUpdates() in diesem Modell ist äquivalent zu dem Vorgang, andere Skripte ablaufen zu lassen, während das aufrufende Skript geblockt wird.

The navigator.yieldForStorageUpdates() method, in this model, is equivalent to allowing other scripts to run while the calling script is blocked.

1.5.2 Kompatibilität mit anderen Spezifikationen

Dieser Abschnitt ist nicht normativ.

Diese Spezifikation arbeitet mit vielen anderen Spezifikationen zusammen und hängt von ihnen ab. Unter bestimmten Umständen jedoch verletzt diese Spezifikation auf Grund von bestimmten eigenen Anforderungen die Anforderungen der anderen Spezifikationen. Jedesmal wenn dieser Fall auftrat, wurden die Verstöße als "gewollter Verstoß" festgehalten und der Grund für die Verletzung aufgeschrieben.

This specification interacts with and relies on a wide variety of other specifications. In certain circumstances, unfortunately, conflicting needs have led to this specification violating the requirements of these other specifications. Whenever this has occurred, the transgressions have each been noted as a "willful violation", and the reason for the violation has been noted.

1.5.3 Erweiterbarkeit

Dieser Abschnitt ist nicht normativ.

HTML hat zahlreiche Erweiterungsmechanismen, die dazu verwendet werden können, um Semantik auf sichere Weise hinzuzufügen:

HTML has a wide number of extensibility mechanisms that can be used for adding semantics in a safe manner:

1.6 HTML gegen XHTML

Dieser Abschnitt ist nicht normativ.

Diese Spezifikation definiert eine abstrakte Sprache zur Beschreibung von Dokumenten und Applikationen, sowie einige APIs, die mit speicherinternen Repräsentationen von Quellen interagieren, die diese Sprache verwenden.

This specification defines an abstract language for describing documents and applications, and some APIs for interacting with in-memory representations of resources that use this language.

Die speicherinterne Repräsentation ist als DOM HTML oder kurz "das DOM" bekannt.

The in-memory representation is known as "DOM HTML", or "the DOM" for short.

Es gibt zahlreiche konkrete Syntaxen, die zur Übertragung von Quellen, die diese abstrakte Sprache verwenden, herangezogen werden können; zwei davon sind in dieser Spezifikation definiert.

There are various concrete syntaxes that can be used to transmit resources that use this abstract language, two of which are defined in this specification.

Die erste konkrete Syntax ist die HTML-Syntax. Dieses Format wird für die meisten Autoren vorgeschlagen. Sie ist kompatibel mit den meisten althergebrachten Internetbrowsern. Wird ein Dokument mit dem text/html MIME-Typen übertragen, dann wird es von Internetbrowsern als HTML-Dokument verarbeitet. Diese Spezifikation definiert Version 5.0 der HTML-Syntax, bekannt als "HTML 5".

The first such concrete syntax is the HTML syntax. This is the format suggested for most authors. It is compatible with most legacy Web browsers. If a document is transmitted with the text/html MIME type, then it will be processed as an HTML document by Web browsers. This specification defines version 5.0 of the HTML syntax, known as "HTML 5".

Die zweite konkrete Syntax ist die XHTML-Syntax, eine XML-Applikation. Wenn ein Dokument mit einem XML MIME-Typen wie application/xhtml+xml übertragen wird, dann wird es von Internetbrowsern als XML-Dokument behandelt, das von einem XML-Prozessor verarbeitet werden muss. Autoren mögen bedenken, dass sich die Verarbeitung von XML und HTML unterscheidet; insbesondere werden selbst kleinste Fehler in der Syntax eines XML-Dokuments seine Darstellung verhindern, in der HTML-Syntax hingegen würden sie ignoriert. Diese Spezifikation definiert Version 5.0 der XHTML-Syntax, bekannt als "XHTML 5".

The second concrete syntax is the XHTML syntax, which is an application of XML. When a document is transmitted with an XML MIME type, such as application/xhtml+xml, then it is treated as an XML document by Web browsers, to be parsed by an XML processor. Authors are reminded that the processing for XML and HTML differs; in particular, even minor syntax errors will prevent a document labeled as XML from being rendered fully, whereas they would be ignored in the HTML syntax. This specification defines version 5.0 of the XHTML syntax, known as "XHTML 5".

Das DOM, die HTML-Syntax und die XHTML-Syntax können nicht alle den gleichen Inhalt repräsentieren. Zum Beispiel können Namensräume nicht durch die HTML-Syntax repräsentiert werden, aber sie werden im DOM und in der XHTML-Syntax unterstützt. Ähnlich können Dokumente, die die Eigenschaft noscript verwenden, in der HTML-Syntax ausgedrückt werden, nicht aber im DOM oder der XHTML-Syntax. Kommentare mit der Zeichenkette "-->" können nur im DOM repräsentiert werden, nicht aber in der HTML- und XHTML-Syntax.

The DOM, the HTML syntax, and the XHTML syntax cannot all represent the same content. For example, namespaces cannot be represented using the HTML syntax, but they are supported in the DOM and in the XHTML syntax. Similarly, documents that use the noscript feature can be represented using the HTML syntax, but cannot be represented with the DOM or in the XHTML syntax. Comments that contain the string "-->" can only be represented in the DOM, not in the HTML and XHTML syntaxes.

1.7 Struktur dieser Spezifikation

Dieser Abschnitt ist nicht normativ.

Diese Spezifikation ist in folgende Hauptabschnitte unterteilt:

Einleitung
Nicht normative Materialien, die einen Kontext für den HTML-Standard liefern.
Gemeinsame Infrastruktur
Die Konformitätsklassen, Algorithmen, Definitionen und die gemeinsamen Grundlagen für den Rest der Spezifikation.
Semantiken, Struktur und APIs von HTML-Dokumenten
Dokumente werden durch Elemente aufgebaut. Diese Elemente bilden durch das DOM einen Baum. Dieser Abschnitt definiert die Eigenschaften dieses DOMs und beschreibt die gemeinsamen Eigenschaften aller Elemente, sowie die Konzepte, die zur Definition von Elementen verwendet wurden.
Die Elemente in HTML
Jedes Element hat eine vordefinierte Bedeutung, die in diesem Abschnitt erklärt wird. Es werden Regeln für Autoren bereitgestellt, wie dieses Element zu verwenden ist, zusammen mit Anforderungen an Benutzerschnittstellen, wie jedes Element zu verarbeiten ist. Dies beinhaltet charakteristische Funktionen von HTML wie Video-Playback und Untertiteln, Formularkontrollelemente und Formularübertragung und eine 2D-Grafik-API, bekannt als HTML-Canvas.
Das Laden von Internetseiten
HTML-Dokumente existieren nicht in einem Vakuum - dieser Abschnitt definiert viele Eigenschaften, die Umgebungen betreffen, die mit mehreren Seiten zu tun haben, wie zum Beispiel Web-Browser und Offline-Caching von Web-Applikationen.
APIs für Web-Applikationen
Dieser Abschnitt führt in die Grundlagen der Skripterstellung für HTML-Applikationen ein.
Benutzerinteraktion
HTML-Dokumente können dem Benutzer zahlreiche Mechanismen anbieten, mit dem Inhalt zu interagieren oder Inhalt zu modifizieren. Diese Mechanismen werden in diesem Abschnitt beschrieben, zum Beispiel die Funktionsweise von Fokus.
Die HTML-Syntax
Die XHTML-Syntax
All diese Eigenschaften wären für die Katz, wenn sie nicht in serialisierter Form dargestellt und an andere Personen gesendet werden könnten. So definieren diese Abschnitte die Syntaxen von HTML und XHML, zusammen mit Verarbeitungsregeln für den Inhalt, der diese Syntaxen verwendet.
Das Rendering
Dieser Abschnitt definiert die voreingestellten Darstellungsregeln für Web-Browser.
Introduction
Non-normative materials providing a context for the HTML standard.
Common infrastructure
The conformance classes, algorithms, definitions, and the common underpinnings of the rest of the specification.
Semantics, structure, and APIs of HTML documents
Documents are built from elements. These elements form a tree using the DOM. This section defines the features of this DOM, as well as introducing the features common to all elements, and the concepts used in defining elements.
The elements of HTML
Each element has a predefined meaning, which is explained in this section. Rules for authors on how to use the element, along with user agent requirements for how to handle each element, are also given. This includes large signature features of HTML such as video playback and subtitles, form controls and form submission, and a 2D graphics API known as the HTML canvas.
Loading Web pages
HTML documents do not exist in a vacuum — this section defines many of the features that affect environments that deal with multiple pages, such as Web browsers and offline caching of Web applications.
Web application APIs
This section introduces basic features for scripting of applications in HTML.
User interaction
HTML documents can provide a number of mechanisms for users to interact with and modify content, which are described in this section, such as how focus works.
The HTML syntax
The XHTML syntax
All of these features would be for naught if they couldn't be represented in a serialized form and sent to other people, and so these sections define the syntaxes of HTML and XHTML, along with rules for how to parse content using those syntaxes.
Rendering
This section defines the default rendering rules for Web browsers.

Es gibt auch einige Anhänge, die obsolete Eigenschaften, Anmerkungen zu IANA und mehrere Indizes auflisten.

There are also some appendices, listing obsolete features and IANA considerations, and several indices.

1.7.1 Wie diese Spezifikation zu lesen ist

Diese Spezifikation sollte gelesen werden wie alle anderen Spezifikationen. Zuerst sollte sie von vorne bis hinten gelesen werden, mehrere Male. Dann sollte sie mindestens einmal rückwärts gelesen werden. Dann sollte sie durch wahlloses Aussuchen von Abschnitten im Inhaltsverzeichnis gelesen werden, wobei allen Querverweisen gefolgt werden sollte.

This specification should be read like all other specifications. First, it should be read cover-to-cover, multiple times. Then, it should be read backwards at least once. Then it should be read by picking random sections from the contents list and following all the cross-references.

Wie in den Konformitätsanforderungen unten beschrieben, beschreibt diese Spezifikation die Konformitätskriterien für vielfältige Konformitätsklassen. Insbesondere gibt es Korformitätsanforderungen, die für Produzenten gelten, zum Beispiel für Autoren und für die Dokumente, die sie erstellen. Dann gibt es Konformitätsanforderungen, die für Konsumenten gelten, zum Beispiel für Web-Browser. Sie können durch ihre Anforderungen unterschieden werden: eine Anforderung für einen Produzenten besagt, was erlaubt ist, während die Anforderung an einen Konsumenten besagt, wie Software sich verhalten muss.

As described in the conformance requirements section below, this specification describes conformance criteria for a variety of conformance classes. In particular, there are conformance requirements that apply to producers, for example authors and the documents they create, and there are conformance requirements that apply to consumers, for example Web browsers. They can be distinguished by what they are requiring: a requirement on a producer states what is allowed, while a requirement on a consumer states how software is to act.

Zum Beispiel ist die Aussage — "Der Wert des Attributs foo muss eine gültige Ganzzahl sein." — eine Anforderung an den Produzenten, da sie die erlaubten Werte darlegt; im Gegensatz dazu steht die Anforderung — "Der Wert des Attributs foo muss mit Hilfe der Regeln zur Verarbeitung von Ganzzahlen verarbeitet werden." Diese Anfordung gilt für Konsumenten, da beschrieben wird, wie der Inhalt zu verarbeiten ist.

For example, "the foo attribute's value must be a valid integer" is a requirement on producers, as it lays out the allowed values; in contrast, the requirement "the foo attribute's value must be parsed using the rules for parsing integers" is a requirement on consumers, as it describes how to process the content.

Anforderungen für Produzenten berühren Konsumenten nicht im Geringsten.

Requirements on producers have no bearing whatsoever on consumers.

Das Beispiel oben fortführend; besteht die Anforderung, dass ein bestimmter Attributwert darauf beschränkt ist, eine gültige Ganzzahl zu sein, impliziert dies keineswegs irgendetwas in Bezug auf die Anforderungen an die Konsumenten. Es könnte sein, dass von den Konsumenten in der Tat gefordert wird, dass dieses Attribut als eine opake Zeichenkette behandelt wird, vollkommen unabhängig davon, ob der Wert konform zu den Anforderungen ist oder nicht. Es kann sein, dass — wie im vorherigen Beispiel — von den Konsumenten gefordert wird, dass sie den Wert entsprechend besonderer Regeln verarbeiten, die definieren, wie ungültige (in diesem Fall nicht numerische) Werte verarbeitet werden müssen.

Continuing the above example, a requirement stating that a particular attribute's value is constrained to being a valid integer emphatically does not imply anything about the requirements on consumers. It might be that the consumers are in fact required to treat the attribute as an opaque string, completely unaffected by whether the value conforms to the requirements or not. It might be (as in the previous example) that the consumers are required to parse the value using specific rules that define how invalid (non-numeric in this case) values are to be processed.

1.7.2 Typografische Konventionen

Dies ist eine Definition, Anforderung oder Erklärung.

Dies ist eine Anmerkung.

Dies ist ein Beispiel.

Dies ist eine offene Problemstellung.

Dies ist eine Warnung.

interface Beispiel {
  // dies ist eine IDL-Definition
};
variable = object . method( [ optionalArgument ] )

Diese ist eine Anmerkung für Autoren, die die Verwendung einer Schnittstelle beschreibt.

/* dies ist ein CSS-Fragment */

Die definierende Instanz eines Begriffs wird wie dieses ausgezeichnet. Verwendungen des Begriffs werden ausgezeichnet wie dieses oder wie dieses.

Die definierende Instanz eines Elements, Attributs oder einer API wird wie dieses ausgezeichnet. Verweise zu diesem Element, Attribut oder dieser API werden ausgezeichnet wie dieses.

Andere Code-Fragmente werden ausgezeichnet wie dieses.

Variablen werden ausgezeichnet wie dieses.

In einem Algorithmus werden Schritte in synchronen Abschnitten mit ⌛ gekennzeichnet.

In einigen Fällen werden Anforderungen in Form einer Liste mit Bedingungen und diesbezüglichen Anforderungen angegeben. In diesem Fall sind die Anforderungen, die an eine Bedingung gestellt werden, immer die ersten Anforderungen, die der Bedingung folgen, auch wenn der Fall auftritt, dass es mehrere Bedingungen für diese Anforderungen gibt. Solche Fälle werden wie folgt dargestellt:

In some cases, requirements are given in the form of lists with conditions and corresponding requirements. In such cases, the requirements that apply to a condition are always the first set of requirements that follow the condition, even in the case of there being multiple sets of conditions for those requirements. Such cases are presented as follows:

Dies ist eine Bedingung
Dies ist eine andere Bedingung
Dies ist die Anforderung, die zu den (beiden) Bedingungen oben gehört.
Dies ist eine dritte Bedingung
Dies ist die Anforderung, die zur dritten Bedingung gehört.
This is a condition
This is another condition
This is the requirement that applies to the conditions above.
This is a third condition
This is the requirement that applies to the third condition.

1.8 Datenschutz

Dieser Abschnitt ist nicht normativ.

Bei einigen Eigenschaften von HTML wird die Benutzerfreundlichkeit in den Vordergrund, und die Privatshäre in den Hintergrund gestellt.

Some features of HTML trade user convenience for a measure of user privacy.

Aufgrund der Internetarchitektur kann ein Benutzer im Allgemeinen anhand seiner IP-Adresse von einem anderen Benuter unterschieden werden. IP-Adressen lassen sich einem Benutzer jedoch nicht eindeutig zuordnen; wechselt ein Benutzer von einem Gerät zum nächsten, oder von Netzwerk zu Netzwerk, wird sich seine IP-Adresse ändern. Ähnlich verhält es sich mit NAT-Routing, Proxyservern und Computern mit mehreren Benutzern; die Pakete scheinen alle von einer einzigen IP-Adresse zu kommen, werden aber an mehrere Benutzer verteilt. Technologien wie Onion-Routing können verwendet werden, um Anfragen weiter zu anonymisieren, so dass Anfragen von einem Benutzer an einem Internetknotenpunkt den Anschein erwecken, als kämen sie von verschiedensten Teilen des Netzwerks.

In general, due to the Internet's architecture, a user can be distinguished from another by the user's IP address. IP addresses do not perfectly match to a user; as a user moves from device to device, or from network to network, their IP address will change; similarly, NAT routing, proxy servers, and shared computers enable packets that appear to all come from a single IP address to actually map to multiple users. Technologies such as onion routing can be used to further anonymize requests so that requests from a single user at one node on the Internet appear to come from many disparate parts of the network.

Jedoch ist die IP-Adresse, die für die Anfrage eines Benutzers verwendet wird, nicht der einzige Mechanismus, wie die Anfragen eines Benutzers miteinander in Verbindung gebracht werden können. Zum Beispiel sind Cookies für genau diesen Zweck ausgelegt, sie sind die Grundlage für die meisten Eigenschaften von Internetsitzungen (Sessions), die das Anmelden an einer Seite gestatten, mit der ein Account besteht.

However, the IP address used for a user's requests is not the only mechanism by which a user's requests could be related to each other. Cookies, for example, are designed specifically to enable this, and are the basis of most of the Web's session features that enable you to log into a site with which you have an account.

Es gibt weitere Mechanismen, die noch subtiler sind. Bestimmte Charakteristika eines Benutzersystems können dazu verwendet werden, um zwischen Benutzergruppen zu unterscheiden; werden genug solcher Informationen gesammelt, kann ein "digitaler Fingerabdruck" des Browsers eines individuellen Benutzers berechnet werden. Dies kann bei der Feststellung, welche Anfragen von dem gleichen Benutzer kommen, genauso gut sein wie eine IP-Adresse, wenn nicht sogar besser.

There are other mechanisms that are more subtle. Certain characteristics of a user's system can be used to distinguish groups of users from each other; by collecting enough such information, an individual user's browser's "digital fingerprint" can be computed, which can be as good, if not better, as an IP address in ascertaining which requests are from the same user.

Werden Anfragen auf diese Weise Gruppen zugeordnet, besonders über mehrere Seiten hinweg, kann dies sowohl für unkritische (und auch bestreitbar positive) Zwecke als auch für üble Zwecke verwendet werden. Ein Beispiel eines einigermaßen unkritischen Zwecks wäre, herauszufinden, ob eine bestimmte Person Seiten mit Hundebildern oder Seiten mit Katzenbildern bevorzugt (auf Grundlage der Anzahl der Besuche auf diesbezüglichen Seiten), um dann bei zukünftigen Besuchen auf teilnehmenden Internetseiten automatisch bevorzugte Illustrationen zu verwenden. Ein übler Zweck wäre jedoch zum Beispiel, wenn Regierungen Informationen über die Privatadresse einer Person (ermittelt durch die Adresse, die diese Person auf einer Seite zur Routenplanung verwendet) mit ihrer scheinbaren politischen Zugehörigkeit zusammenführen (ermittelt durch die Untersuchung von Foren-Seiten, in denen die Person mitwirkt), um zu bestimmen, ob die Person daran gehindert werden sollte, an einer Wahl teilzunehmen.

Grouping requests in this manner, especially across multiple sites, can be used for both benign (and even arguably positive) purposes, as well as for malevolent purposes. An example of a reasonably benign purpose would be determining whether a particular person seems to prefer sites with dog illustrations as opposed to sites with cat illustrations (based on how often they visit the sites in question) and then automatically using the preferred illustrations on subsequent visits to participating sites. Malevolent purposes, however, could include governments combining information such as the person's home address (determined from the addresses they use when getting driving directions on one site) with their apparent political affiliations (determined by examining the forum sites that they participate in) to determine whether the person should be prevented from voting in an election.

Da die üblen Zwecke überaus bösartig sein können, wird Implementierern von Benuterschnittstellen empfohlen, ihren Benutzern Werkzeuge zur Minimierung des Risikos an die Hand zu geben, dass Informationen durchsickern, die für den Fingerabdruck eines Benutzers verwendet werden könnten.

Since the malevolent purposes can be remarkably evil, user agent implementors are encouraged to consider how to provide their users with tools to minimize leaking information that could be used to fingerprint a user.

Leider, wie der erste Absatz in diesem Abschnitt andeutet, bringt es manchmal einen großen Vorteil, gerade die Informationen preiszugeben, die auch zum Erzeugen eines Fingerabdrucks verwendet werden könnten. Es ist also nicht einfach damit geschehen, alle möglichen Löcher zu stopfen. Zum Beispiel müssen die Anfragen eines Benutzers, der sich an einer Seite anmeldet, um unter einem bestimmten Namen zu schreiben, erkennbar von einem einzigen Benutzer stammen, mehr oder weniger per Definition. Zum Beispiel lassen auch Informationen über die Textbreite, die für viele Effekte notwendig sind, wie das Darstellen von Text auf einem Canvas (zum Beispiel jeder Effekt, der eine Grenzlinie um einen Text zieht), Informationen durchsickern, die zur Gruppierung von Benutzeranfragen verwendet werden können, wenn auch subtiler. (Durch eine Brute-Force-Suche könnten in diesem Fall die Schriftarten offengelegt werden, die ein Benutzer installiert hat; Informationen, die sich beträchtlich von Benutzer zu Benutzer unterscheiden können.)

Unfortunately, as the first paragraph in this section implies, sometimes there is great benefit to be derived from exposing the very information that can also be used for fingerprinting purposes, so it's not as easy as simply blocking all possible leaks. For instance, the ability to log into a site to post under a specific identity requires that the user's requests be identifiable as all being from the same user, more or less by definition. More subtly, though, information such as how wide text is, which is necessary for many effects that involve drawing text onto a canvas (e.g. any effect that involves drawing a border around the text) also leaks information that can be used to group a user's requests. (In this case, by potentially exposing, via a brute force search, which fonts a user has installed, information which can vary considerably from user to user.)

Eigenschaften in dieser Spezifikation, die zur Erzeugung von Fingerabdrücken des Benutzers verwendet werden können, sind wie dieser Abschnitt gekennzeichnet. (This is a fingerprinting vector.)

Features in this specification which can be used to fingerprint the user are marked as this paragraph is. (This is a fingerprinting vector.)

Auch andere Eigenschaften der Plattform können für den gleichen Zweck verwendet werden, einschließlich, aber nicht beschränkt auf:

Other features in the platform can be used for the same purpose, though, including, though not limited to:

1.9 Eine kurze Einleitung zu HTML

Dieser Abschnitt ist nicht normativ.

Ein einfaches HTML-Dokument sieht wie folgt aus:

A basic HTML document looks like this:

<!DOCTYPE html>
<html>
 <head>
  <title>Beispielseite</title>
 </head>
 <body>
  <h1>Beispielseite</h1>
  <p>Dies ist ein <a href="demo.html">einfaches</a> Beispiel.</p>
  <!-- dies ist ein Kommentar -->
 </body>
</html>

HTML-Dokumente bilden einem Baum aus Elementen und Text. Jedes Element ist im Quelltext durch ein Start-Tag beschrieben, wie zum Beispiel "<body>", und ein End-Tag, wie zum Beispiel "</body>". (Bestimmte Start- und End-Tags können in bestimmten Fällen ausgelassen werden, werden aber von anderen Tags vorausgesetzt.)

HTML documents consist of a tree of elements and text. Each element is denoted in the source by a start tag, such as "<body>", and an end tag, such as "</body>". (Certain start tags and end tags can in certain cases be omitted and are implied by other tags.)

Tags müssen so verschachtelt werden, dass Elemente ohne Überlappung vollständig in anderen enthalten sind:

Tags have to be nested such that elements are all completely within each other, without overlapping:

<p>Dies ist <em>sehr <strong>falsch</em>!</strong></p>
<p>Dies <em>ist <strong>richtig</strong>.</em></p>

Diese Spezifikation definiert Elemente, die in HTML verwendet werden können, begleitet von Regeln, wie diese Elemente verschachtelt werden können.

This specification defines a set of elements that can be used in HTML, along with rules about the ways in which the elements can be nested.

Elemente können Attribute besitzen, die bestimmen, wie diese Elemente verwendet werden. Im Beispiel unten gibt es einen Hyperlink, erzeugt durch das Element a und sein Attribut href:

Elements can have attributes, which control how the elements work. In the example below, there is a hyperlink, formed using the a element and its href attribute:

<a href="demo.html">simple</a>

Attribute werden innerhalb eines Start-Tags angegeben und bestehen aus einem Namen und einem Wert, getrennt durch ein Gleichzeichen "=". Der Wert des Attributs kann ohne Anführungsstriche bleiben, sofern er keine Leerzeichen oder irgendeines der folgenden Zeichen enthält: " ' ` = < oder >. Ansonsten muss der Wert entweder mit Apostrophen (einfaches Anführungszeichen) oder Anführungszeichen (doppeltes Anführungszeichen) umschlossen werden. Der Wert, zusammen mit dem Zeichen "=", kann vollstäding ausgelassen werden, wenn der Wert eine leere Zeichenkette ist.

Attributes are placed inside the start tag, and consist of a name and a value, separated by an "=" character. The attribute value can remain unquoted if it doesn't contain space characters or any of " ' ` = < or >. Otherwise, it has to be quoted using either single or double quotes. The value, along with the "=" character, can be omitted altogether if the value is the empty string.

<!-- leere Attribute -->
<input name=address disabled>
<input name=address disabled="">

<!-- Attribute mit Wert -->
<input name=address maxlength=200>
<input name=address maxlength='200'>
<input name=address maxlength="200">

HTML-Benutzerschnittstellen (zum Beispiel Internet-Browser) verarbeiten dieses Markup daraufhin und verwandeln es in einen DOM-Baum (Document Object Model). Ein DOM-Baum ist eine speicherinterne Repräsentation des Dokuments.

HTML user agents (e.g. Web browsers) then parse this markup, turning it into a DOM (Document Object Model) tree. A DOM tree is an in-memory representation of a document.

DOM-Bäume enthalten mehrere Arten von Knoten, insbesondere einen DocumentType-Knoten, Element-Knoten, Text-Knoten, Comment-Knoten und in einigen Fällen ProcessingInstruction-Knoten.

DOM trees contain several kinds of nodes, in particular a DocumentType node, Element nodes, Text nodes, Comment nodes, and in some cases ProcessingInstruction nodes.

Das Quelltext-Snippet zu Beginn dieses Abschnitts würde in den folgenden DOM-Baum verwandelt:

The markup snippet at the top of this section would be turned into the following DOM tree:

Das Wurzelelement dieses Baums ist das Element html, dieses ist immer an der Wurzel eines HTML-Dokuments zu finden. Es enthält zwei Elemente, head und body, sowie einen Text-Knoten dazwischen.

The root element of this tree is the html element, which is the element always found at the root of HTML documents. It contains two elements, head and body, as well as a Text node between them.

Es gibt viel mehr Text-Knoten im DOM-Baum als man anfangs erwarten würde, weil die Quelle zahlreiche Leerzeichen (hier ausgedrückt durch "␣") und Zeilenumbrüche ("⏎") enthält, die alle als Text-Knoten im DOM enden. Jedoch erscheinen aus historischen Gründen nicht alle Leerzeichen und Zeilenumbrüche aus dem ursprünglichen Quelltext im DOM. Insbesondere werden alle Leerzeichen vor dem Start-Tag von head fallen gelassen und alle Leerzeichen nach dem End-Tag von body werden am Ende von body angereiht.

There are many more Text nodes in the DOM tree than one would initially expect, because the source contains a number of spaces (represented here by "␣") and line breaks ("⏎") that all end up as Text nodes in the DOM. However, for historical reasons not all of the spaces and line breaks in the original markup appear in the DOM. In particular, all the whitespace before head start tag ends up being dropped silently, and all the whitespace after the body end tag ends up placed at the end of the body.

Das Element head enthält das Element title, welches selbst einen Text-Knoten mit dem Text "Beispielseite" enthält. Ähnlich dazu enthält das Element body ein Element h1, ein Element p und einen Kommentar.

The head element contains a title element, which itself contains a Text node with the text "Sample page". Similarly, the body element contains an h1 element, a p element, and a comment.


Dieser DOM-Baum kann von Skripten in der Seite manipuliert werden. Skripte (normalerweise in JavaScript) sind kleine Programme, die über das Element script eingebettet werden können oder durch Inhaltsattribute für Event-Handler. In diesem Beispiel setzt das Skript in einem Formular den Wert des Elements output auf, sagen wir, "Hello World":

This DOM tree can be manipulated from scripts in the page. Scripts (typically in JavaScript) are small programs that can be embedded using the script element or using event handler content attributes. For example, here is a form with a script that sets the value of the form's output element to say "Hello World":

<form name="main">
 Result: <output name="result"></output>
 <script>
  document.forms.main.elements.result.value = 'Hello World';
 </script>
</form>
<form name="main">
 Result: <output name="result"></output>
 <script>
  document.forms.main.elements.result.value = 'Hello World';
 </script>
</form>

Jedes Element im DOM-Baum wird durch ein Objekt repräsentiert. Diese Objekte haben APIs, damit sie manipuliert werden können. Zum Beispile kann das Attribut "href" eines Verweises (zum Beispiel des Elements a aus dem Baum oben) in vielfältiger Weise verändert werden:

Each element in the DOM tree is represented by an object, and these objects have APIs so that they can be manipulated. For instance, a link (e.g. the a element in the tree above) can have its "href" attribute changed in several ways:

var a = document.links[0]; // erhalte den ersten Verweis im Dokument
a.href = 'sample.html'; // ändere die Ziel-URL des Verweises
a.protocol = 'https'; // ändere nur den Schema-Teil der URL
a.setAttribute('href', 'http://example.com/'); // ändere das Inhaltsattribut direkt
var a = document.links[0]; // obtain the first link in the document
a.href = 'sample.html'; // change the destination URL of the link
a.protocol = 'https'; // change just the scheme part of the URL
a.setAttribute('href', 'http://example.com/'); // change the content attribute directly

Da DOM-Bäume verwendet werden, um HTML-Dokumente zu repräsentieren, wenn sie durch Implementierungen verarbeitet und dargestellt werden (insbesondere interaktive Implementierungen wie Internet-Browser), bezieht sich die Ausdrucksweise in dieser Spezifikation überwiegend auf DOM-Bäume, anstatt auf den oben genannten Quelltext.

Since DOM trees are used as the way to represent HTML documents when they are processed and presented by implementations (especially interactive implementations like Web browsers), this specification is mostly phrased in terms of DOM trees, instead of the markup described above.


HTML-Dokumente beschreiben interaktiven Inhalt auf eine medienunabhängige Weise. HTML-Dokumente könnten auf einem Bildschirm oder durch einen Sprachsynthesizer oder durch ein Braille-Display dargestellt werden. Um genau diese Darstellung präzise zu steuern, können Autoren eine Sprache für die Darstellung, wie zum Beispiel CSS, verwenden.

HTML documents represent a media-independent description of interactive content. HTML documents might be rendered to a screen, or through a speech synthesizer, or on a braille display. To influence exactly how such rendering takes place, authors can use a styling language such as CSS.

Im folgenden Beispiel wurde die Seite mit Hilfe von CSS gelb auf blau gestaltet.

In the following example, the page has been made yellow-on-blue using CSS.

<!DOCTYPE html>
<html>
 <head>
  <title>Beispielseite mit Stil</title>
  <style>
   body { background: navy; color: yellow; }
  </style>
 </head>
 <body>
  <h1>Beispielseite mit Stil</h1>
  <p>Diese Seite ist nur eine Demonstration.</p>
 </body>
</html>
<!DOCTYPE html>
<html>
 <head>
  <title>Sample styled page</title>
  <style>
   body { background: navy; color: yellow; }
  </style>
 </head>
 <body>
  <h1>Sample styled page</h1>
  <p>This page is just a demo.</p>
 </body>
</html>

Autoren sollten Tutorials und Guides verwenden, wenn sie im Detail wissen möchten, wie HTML verwendet wird. Einige Beispiele in dieser Spezifikation könnten von Nutzen sein, jedoch sei dem unerfahrenen Autor gesagt, dass diese Spezifikation die Sprache in einer Detailstufe definiert, die am Anfang schwer zu verstehen sein mag.

For more details on how to use HTML, authors are encouraged to consult tutorials and guides. Some of the examples included in this specification might also be of use, but the novice author is cautioned that this specification, by necessity, defines the language with a level of detail that might be difficult to understand at first.

1.9.1 Sichere Applikationen mit HTML schreiben

Dieser Abschnitt ist nicht normativ.

Wird HTML verwendet, um interaktive Seiten zu erzeugen, muss darauf geachtet werden, dass keine Sicherheitslücken erzeugt werden, durch die Angreifer die Integrität der Seite selbst oder ihrer Benutzer kompromittieren könnten.

When HTML is used to create interactive sites, care needs to be taken to avoid introducing vulnerabilities through which attackers can compromise the integrity of the site itself or of the site's users.

Eine ausgedehnte Studie dieser Angelegenheit ist außerhalb des Horizonts dieses Dokuments. Es wird Autoren dringend empfohlen, sich intensiver mit dieser Angelegenheit zu beschäftigen. Jedoch wird in diesem Abschnitt versucht, eine kurze Einleitung in bekannte Fallstricke bei der Entwicklung von HTML-Applikationen zu geben.

A comprehensive study of this matter is beyond the scope of this document, and authors are strongly encouraged to study the matter in more detail. However, this section attempts to provide a quick introduction to some common pitfalls in HTML application development.

Das Sicherheitsmodell des Webs basiert auf dem Konzept der "Ursprünge" und dementsprechend beziehen sich viele mögliche Attacken im Web auf Aktionen über den Ursprung des eigentlichen Dokuments hinaus. [ORIGIN]

The security model of the Web is based on the concept of "origins", and correspondingly many of the potential attacks on the Web involve cross-origin actions. [ORIGIN]

Benutzereingaben nicht validieren
Cross-Site Scripting (XSS)
SQL-Injektion

Werden Eingaben akzeptiert, die nicht vertrauenswürdig sind, zum Beispiel benutzererzeugte Textkommentare, Werte in URL-Parametern, Nachrichten von Dritt-Seiten und so weiter, ist es unverzichtbar, dass die Daten vor der Verwendung validiert und richtig ersetzt werden. Siehe Ersatzzeichen. Wird dies nicht gemacht, kann ein Angreifer vielseitige Attacken ansetzen; von möglicherweise harmlosen Attacken — wie zum Beispiel der Bereitstellung von falschen Benutzerinformationen wie einem negativen Alter — bis hin zu ernsthaften Attacken — wie dem Aufruf von Skripten, die jedesmal dann aufgerufen werden, wenn ein Benutzer die Seite mit diesen Informationen anschaut, und diese möglicherweise bei diesem Vorgang weiterverbreitet — oder bis zur Katastrophe, bei der zum Beispiel alle Daten auf einem Server gelöscht werden.

When accepting untrusted input, e.g. user-generated content such as text comments, values in URL parameters, messages from third-party sites, etc, it is imperative that the data be validated before use, and properly escaped when displayed. Failing to do this can allow a hostile user to perform a variety of attacks, ranging from the potentially benign, such as providing bogus user information like a negative age, to the serious, such as running scripts every time a user looks at a page that includes the information, potentially propagating the attack in the process, to the catastrophic, such as deleting all data in the server.

Beim Schreiben von Filtern, die die Benutzereingaben validieren, muss unbedingt auf Grundlage einer Whitelist gearbeitet werden, die bekannte sichere Konstrukte erlaubt und alle anderen Eingaben blockiert. Filter auf Grundlage einer Blacklist, die bekannte schädliche Eingaben blockieren und alles andere erlauben, sind nicht sicher, da nicht alles, was schädlich ist, schon bekannt ist (zum Beispiel, weil es erst in der Zukunft erfunden wird).

When writing filters to validate user input, it is imperative that filters always be whitelist-based, allowing known-safe constructs and disallowing all other input. Blacklist-based filters that disallow known-bad inputs and allow everything else are not secure, as not everything that is bad is yet known (for example, because it might be invented in the future).

Nehmen wir zum Beispiel an, eine Seite schaut auf den Query-String ihres URLs (der Uniform Resource Locator), um zu bestimmen, was sie darstellen soll und leitet den Benutzer dann auf diese Seite weiter, um folgende Nachricht darzustellen:

For example, suppose a page looked at its URL's query string to determine what to display, and the site then redirected the user to that page to display a message, as in:

<ul>
 <li><a href="message.cgi?sag=Hallo">Sag Hallo</a>
 <li><a href="message.cgi?sag=Willkommen">Sag Willkommen</a>
 <li><a href="message.cgi?sag=Cheese">Sag Cheese</a>
</ul>
<ul>
 <li><a href="message.cgi?say=Hello">Say Hello</a>
 <li><a href="message.cgi?say=Welcome">Say Welcome</a>
 <li><a href="message.cgi?say=Kittens">Say Kittens</a>
</ul>

Würde die Nachricht einfach ohne Ersatzmechanismus dargestellt, könnte ein Angreifer einen URL herstellen, der ein script-Element enthält:

If the message was just displayed to the user without escaping, a hostile attacker could then craft a URL that contained a script element:

http://example.com/message.cgi?say=%3Cscript%3Ealert%28%27Oh%20no%21%27%29%3C/script%3E

Würde der Angreifer dann einen Benutzer als Opfer finden, der diese Seite besucht, könnte ein beliebiges Skript des Angreifers auf der Seite ausgeführt werden. Solch ein Skript könnte beliebige Angriffe starten, limitiert nur durch das, was auf der Internetseite verfügbar ist: ist die Seite zum Beispiel ein Shop-System, könnte solch ein Skript dafür sorgen, dass ein Benutzer unbewusst beliebig viele ungewollte Einkäufe tätigt.

If the attacker then convinced a victim user to visit this page, a script of the attacker's choosing would run on the page. Such a script could do any number of hostile actions, limited only by what the site offers: if the site is an e-commerce shop, for instance, such a script could cause the user to unknowingly make arbitrarily many unwanted purchases.

Dieser Angriff ist bekannt als Cross-Site Scripting.

This is called a cross-site scripting attack.

Es gibt viele Konstrukte, die verwendet werden können, um eine Seite dazu zu bewegen, Code auszuführen. Hier sind einige, die Autoren berücksichtigen sollten, wenn sie Whitelist-Filter schreiben:

There are many constructs that can be used to try to trick a site into executing code. Here are some that authors are encouraged to consider when writing whitelist filters:

Cross-Site Anfragefälschung (CSRF von cross-site request forgery)

Gestattet eine Seite einem Benutzer, Forumlarübertragungen mit benutzerspezifischen Beigaben zu machen, zum Beispiel eine Nachricht in einem Forum unter seinem Benutzernamen zu posten, Käufe zu tätigen oder einen Pass zu beantragen, ist es wichtig, sicherzustellen, dass die Anfrage durch den Benutzer absichtlich getätigt wurde, und nicht durch eine andere Seite, die den Benutzer auf betrügerischer Weise dazu veranlasst, diese Anfrage ohne sein Wissen abzusenden.

If a site allows a user to make form submissions with user-specific side-effects, for example posting messages on a forum under the user's name, making purchases, or applying for a passport, it is important to verify that the request was made by the user intentionally, rather than by another site tricking the user into making the request unknowingly.

Dieses Problem besteht, weil HTML-Formulare an andere Ausgangspunkte gesendet werden können.

This problem exists because HTML forms can be submitted to other origins.

Seiten können diese Attacken durch die Angabe von benutzerspezifischen versteckten Tokens verhindern oder durch Überprüfung der Origin-Header bei allen Anfragen.

Sites can prevent such attacks by populating forms with user-specific hidden tokens, or by checking Origin headers on all requests.

Clickjacking

Eine Seite, die Benutzer mit einer Schnittstelle konfrontiert, die Aktionen vollzieht, die der Benutzer eventuell nicht vollziehen möchte, muss so ausgelegt sein, dass die Möglichkeit verhindert wird, dass der Benutzer auf betrügerischer Weise dazu veranlasst werden kann, diese Schnittstelle zu aktivieren.

A page that provides users with an interface to perform actions that the user might not wish to perform needs to be designed so as to avoid the possibility that users can be tricked into activating the interface.

Eine Möglichkeit, wie ein Benutzer hereingelegt werden könnte, besteht darin, dass eine Angreiferseite eine Opferseite in ein kleines iframe setzt und den Benutzer zum Klicken verleitet, zum Beispiel, indem der Benutzer ein Reaktionsspiel spielt. Spielt der Benutzer das Spiel, kann die Angreiferseite in genau dem Moment schnell ein iframe unter den Mauszeiger setzen, in dem der Benutzer klickt. Somit wird der Benutzer hereingelegt und klickt auf die Schnittstelle der Opferseite.

One way that a user could be so tricked is if a hostile site places the victim site in a small iframe and then convinces the user to click, for instance by having the user play a reaction game. Once the user is playing the game, the hostile site can quickly position the iframe under the mouse cursor just as the user is about to click, thus tricking the user into clicking the victim site's interface.

Um dies zu vermeiden, werden Internetseiten, von denen nicht erwartet wird, dass sie in Frames dargestellt werden, dazu angehalten, ihre Schnittstelle nur zu aktivieren, wenn sie feststellen, dass sie nicht in einem Frame sind (zum Beispiel durch den Vergleich des window-Objekts mit dem Wert des Attributs top).

To avoid this, sites that do not expect to be used in frames are encouraged to only enable their interface if they detect that they are not in a frame (e.g. by comparing the window object to the value of the top attribute).

1.9.2 Bekannte Stolpersteine, die bei Verwendung der Skript-APIs zu vermeiden sind

Dieser Abschnitt ist nicht normativ.

Skripte in HTML folgen der Semantik "run-to-completion". Dies bedeutet, dass der Browser das Skript normalerweise ohne Unterbrechnung ausführen wird, bevor er etwas anderes tut, wie zum Beispiel das Auslösen weiterer Ereignisse oder die weitere Verarbeitung des Dokuments.

Scripts in HTML have "run-to-completion" semantics, meaning that the browser will generally run the script uninterrupted before doing anything else, such as firing further events or continuing to parse the document.

Auf der anderen Seite werden HTML-Dateien asynchron und inkrementell verarbeitet, was bedeutet, dass der Parser an jeder beliebigen Stelle anhalten kann, um Skripte auszuführen. Dies ist im Allgemeinen eine gute Sache, aber es bedeutet, dass Autoren darauf achten müssen, Ereignis-Handler hinter der Stelle einzubinden, an der sie überhaupt aktiviert werden könnnten.

On the other hand, parsing of HTML files happens asynchronously and incrementally, meaning that the parser can pause at any point to let scripts run. This is generally a good thing, but it does mean that authors need to be careful to avoid hooking event handlers after the events could have possibly fired.

Es gibt zwei Techniken, um dies verlässlich zu tun: Inhaltsattribute für Ereignis-Handler verwenden oder sowohl die Erzeugung des Elements als auch das Hinzufügen des Ereignis-Handlers im gleichen Skript veranlassen. Letzteres ist sicher, da, wie bereits erwähnt, Skripte bis zur Vollendung durchlaufen, bevor weitere Ereignisse aktiviert werden können.

There are two techniques for doing this reliably: use event handler content attributes, or create the element and add the event handlers in the same script. The latter is safe because, as mentioned earlier, scripts are run to completion before further events can fire.

Eine Möglichkeit für diesen Fall sind img-Elemente und das load-Ereignis. Das Ereignis könnte aktiviert werden, sobald das Element verarbeitet wurde, insbesondere wenn das Bild schon im Cache vorhanden ist (was allgemein üblich ist).

One way this could manifest itself is with img elements and the load event. The event could fire as soon as the element has been parsed, especially if the image has already been cached (which is common).

Hier verwendet der Autor den Handler onload in einem img-Element, um das Ereignis load aufzufangen:

Here, the author uses the onload handler on an img element to catch the load event:

<img src="spiele.png" alt="Spiele" onload="spieleLogoIstGeladen(event)">
<img src="games.png" alt="Games" onload="gamesLogoHasLoaded(event)">

Wird das Element per Skript hinzugefügt, dann wird auch das Ereignis nicht verpasst, sofern die Ereignis-Handler im gleichen Skript hinzugefügt werden:

If the element is being added by script, then so long as the event handlers are added in the same script, the event will still not be missed:

<script>
 var img = new Image();
 img.src = 'spiele.png';
 img.alt = 'Spiele';
 img.onload = spieleLogoIstGeladen;
 // img.addEventListener('load', spieleLogoIstGeladen, false); // würde auch funktionieren
</script>
<script>
 var img = new Image();
 img.src = 'games.png';
 img.alt = 'Games';
 img.onload = gamesLogoHasLoaded;
 // img.addEventListener('load', gamesLogoHasLoaded, false); // would work also
</script>

Würde der Autor jedoch zuerst das Element img erzeugen und dann in einem separaten Skript die Ereignis-Listener hinzufügen, besteht die Möglichkeit, dass das load-Ereignis zwischenzeitlich aktiviert würde und damit würde es verpasst:

However, if the author first created the img element and then in a separate script added the event listeners, there's a chance that the load event would be fired in between, leading it to be missed:

<!-- Verwende nicht diese Art, es kommt zu einer Wettlaufsituation! -->
 <img id="spiele" src="spiele.png" alt="Spiele">
 <!-- das Ereignis 'load' könnte hier aktiviert werden, während der Parser eine Pause macht,
      in diesem Fall wirst Du es nicht sehen! -->
 <script>
  var img = document.getElementById('spiele');
  img.onload = spieleLogoIstGeladen; // könnte niemals aktiviert werden!
 </script>
<!-- Do not use this style, it has a race condition! -->
 <img id="games" src="games.png" alt="Games">
 <!-- the 'load' event might fire here while the parser is taking a
      break, in which case you will not see it! -->
 <script>
  var img = document.getElementById('games');
  img.onload = gamesLogoHasLoaded; // might never fire!
 </script>

1.9.3 Wie man Fehler beim Schreiben von HTML auffängt: Validatoren und Konformitäts-Checker

Dieser Abschnitt ist nicht normativ.

Autoren werden ermutigt, Konformitäts-Checker (auch bekannt als Validatoren) zu verwenden, um gebräuchliche Fehler zu finden. Das W3C stellt zahlreiche Validierungsdienste online zur Verfügung, einschließlich des Nu Markup Validation Service.

Authors are encouraged to make use of conformance checkers (also known as validators) to catch common mistakes. The W3C provides a number of online validation services, including the Nu Markup Validation Service.

1.10 Konformitätsanforderungen für Autoren

Dieser Abschnitt ist nicht normativ.

Entgegen vorherigen Versionen der HTML-Spezifikation definiert diese Spezifikation in bestimmtem Detail die erforderliche Verarbeitung sowohl ungültiger Dokumente als auch gültiger Dokumente.

Unlike previous versions of the HTML specification, this specification defines in some detail the required processing for invalid documents as well as valid documents.

Auch wenn die Verarbeitung von ungültigem Inhalt in den meisten Fällen wohl definiert ist, sind die Konformitätsanforderungen für Dokumente trotzdem wichtig: in der Praxis ist die Interoperabilität (die Situation, in der alle Implementierungen bestimmten Inhalt in einer verlässlichen und identischen oder äquivalenten Weise verarbeiten) nicht das einzige Ziel der Dokumentkonformitätsanforderungen. Dieser Abschnitt erklärt im Detail einige der gebräuchlicheren Gründe, warum immer noch zwischen konformen Dokumenten und Dokumenten mit Fehlern unterschieden wird.

However, even though the processing of invalid content is in most cases well-defined, conformance requirements for documents are still important: in practice, interoperability (the situation in which all implementations process particular content in a reliable and identical or equivalent way) is not the only goal of document conformance requirements. This section details some of the more common reasons for still distinguishing between a conforming document and one with errors.

1.10.1 Markup zur Darstellung

Dieser Abschnitt ist nicht normativ.

Die Mehrheit der Eigenschaften früherer HTML-Versionen, die die Darstellung beeinflussen, sind nicht länger erlaubt. Es hat sich gezeigt, dass Markup zur Darstellung im Allgemeinen einige Probleme beinhaltet:

The majority of presentational features from previous versions of HTML are no longer allowed. Presentational markup in general has been found to have a number of problems:

Die Verwendung von Elementen zur Darstellung führt zu schlechterer Zugänglichkeit

Obwohl es möglich ist, Markup für die Darstellung auf eine Weise zu benutzen, die Benutzern mit assistierenden Technologien (ATs) eine akzeptable Erfahrung bietet (zum Beispiel durch ARIA), ist dies bedeutend schwieriger als mit semantisch angemessenem Markup. Desweiteren helfen solche Techniken nicht dabei, Seiten für Benutzer zugänglich zu machen, die nicht grafische Benutzerschnittstellen ohne AT verwenden (wie Benutzer von Browsern im Textmodus).

While it is possible to use presentational markup in a way that provides users of assistive technologies (ATs) with an acceptable experience (e.g. using ARIA), doing so is significantly more difficult than doing so when using semantically-appropriate markup. Furthermore, even using such techniques doesn't help make pages accessible for non-AT non-graphical users, such as users of text-mode browsers.

Medienunabhängiges Markup zu verwenden, auf der anderen Seite, bietet einen einfachen Weg, um Dokumente so zu erstellen, dass sie für mehr Benutzer verwendbar sind (zum Beispiel für Benutzer von Text-Browsern).

Using media-independent markup, on the other hand, provides an easy way for documents to be authored in such a way that they work for more users (e.g. text browsers).

Höhere Kosten für die Wartung

Es ist weitaus einfacher, eine Seite zu warten, die mit darstellungsunabhängigem Markup geschrieben wurde. Zum Beispiel erfordert die Änderung der Farbe einer Seite, die <font color=""> im ganzen Dokument verwendet, Änderungen im gesamten Quelltext der Internetseite, während eine ähnliche Änderung einer Internetseite, die auf CSS aufbaut, mit der Änderung einer einzigen Datei erledigt werden kann.

It is significantly easier to maintain a site written in such a way that the markup is style-independent. For example, changing the color of a site that uses <font color=""> throughout requires changes across the entire site, whereas a similar change to a site based on CSS can be done by changing a single file.

Größere Dokumentgröße

Markup zur Darstellung neigt dazu, redundanter zu sein und führt so zu größeren Dokumentgrößen.

Presentational markup tends to be much more redundant, and thus results in larger document sizes.

Aus diesen Gründen wurde Markup zur Darstellung aus dieser HTML-Version entfernt. Diese Änderung sollte keine Überraschung sein; HTML4 hat Markup zur Darstellung vor vielen Jahren für veraltet erklärt und stellte einen Modus (HTML4 Transitional) zur Verfügung, um Autoren zu helfen vom Gebrauch des Markups zur Darstellung hinwegzusteuern; später ging XHTML 1.1 weiter und erklärte all diese Eigenschaften für veraltet.

For those reasons, presentational markup has been removed from HTML in this version. This change should not come as a surprise; HTML4 deprecated presentational markup many years ago and provided a mode (HTML4 Transitional) to help authors move away from presentational markup; later, XHTML 1.1 went further and obsoleted those features altogether.

Die einzigen bleibenden Eigenschaften für Darstellungs-Markup in HTML sind das Attribut style und das Element style. Von der Verwendung des Attributs style wird in produktiven Umgebungen abgeraten, aber es kann für den schnellen Aufbau eines Prototypen hilfreich sein (von dem aus die Regeln später direkt in ein eigenes Style Sheet verschoben werden können) und zur Anbringung von besonderen Stilen in ungewöhnlichen Fällen, in denen getrennte Style Sheets ungelegen kommen würden. Ähnlich dazu kann ein style-Element nützlich bei einer Zusammenführung sein oder für seitenspezifische Stile. Aber im Allgemeinen ist ein externes Stylesheet wahrscheinlich einfacher, wenn die Stile für unterschiedliche Seiten gelten.

The only remaining presentational markup features in HTML are the style attribute and the style element. Use of the style attribute is somewhat discouraged in production environments, but it can be useful for rapid prototyping (where its rules can be directly moved into a separate style sheet later) and for providing specific styles in unusual cases where a separate style sheet would be inconvenient. Similarly, the style element can be useful in syndication or for page-specific styles, but in general an external style sheet is likely to be more convenient when the styles apply to multiple pages.

Es sollte betont werden, dass einige Elemente, die zuvor für die Darstellung definiert waren, in dieser Spezifikation umdefiniert wurden, damit sie medienunabhängig sind: b, i, hr, s, small und u.

It is also worth noting that some elements that were previously presentational have been redefined in this specification to be media-independent: b, i, hr, s, small, and u.

1.10.2 Syntaxfehler

Dieser Abschnitt ist nicht normativ.

Die Syntax von HTML ist beschränkt, um unterschiedlichste Probleme zu verhindern.

Nicht intuitives Verhalten bei der Fehlerverarbeitung

Durch bestimmte ungültige Syntaxkonstrukte werden bei der Verarbeitung DOM-Bäume erzeugt, die keineswegs intuitiv sind.

Certain invalid syntax constructs, when parsed, result in DOM trees that are highly unintuitive.

Zum Beispiel wird das folgende Quelltextfragment zu einem DOM mit einem hr-Element, das eine jüngere Schwester des betreffenden table-Elements ist:

For example, the following markup fragment results in a DOM with an hr element that is an earlier sibling of the corresponding table element:

<table><hr>...
Fehler mit optionaler Fehlerkorrektur

Damit Benutzerschnittstellen in kontrollierten Umgebungen verwendet werden können, ohne die eher bizarren und verworrenen Fehlerverarbeitungsregeln zu implementieren, dürfen Benutzerschnittstellen scheitern* (* hier noch eine genauere Erklärung verlinken), wenn sie auf einen Verarbeitungsfehler stoßen.

To allow user agents to be used in controlled environments without having to implement the more bizarre and convoluted error handling rules, user agents are permitted to fail whenever encountering a parse error.

Fehler, bei denen das Verhalten der Fehlerverarbeitung nicht kompatibel zu Benutzerschnittstellen ist, die Streaming unterstützen

Einige Arten der Fehlerverarbeitung, wie der Verarbeitung des Beispiels mit <table><hr>... oben, sind nicht kompatibel mit Benutzerschnittstellen, welche die Daten als Stream verarbeiten (Benutzerschnittstellen, die HMTL-Dateien in einem Durchlauf verarbeiten — ohne einen Speicherzustand). Um Interoperabilitätsprobleme mit solchen Benutzerschnittstellen zu vermeiden, wird jegliche Syntax, die zu solch einem Verhalten führt, als ungültig betrachtet.

Some error-handling behavior, such as the behavior for the <table><hr>... example mentioned above, are incompatible with streaming user agents (user agents that process HTML files in one pass, without storing state). To avoid interoperability problems with such user agents, any syntax resulting in such behavior is considered invalid.

Fehler, die zur Infoset-Coercion führen können (Verweis oder Erklärung zu Coercion zufügen)

Wenn eine Benutzerschnittstelle, die auf XML aufbaut, mit einem HTML-Parser verbunden ist, ist es möglich, dass bestimmte Invarianten, die XML erzwingt (zum Beispiel dürfen Kommentare niemals zwei aufeinanderfolgende Bindestriche haben), durch eine HTML-Datei verletzt werden. Um damit zurecht zu kommen, kann es erforderlich sein, dass der Parser das HTML DOM in ein XML-kompatibles Infoset überführt. Die meisten Syntaxkonstrukte, die solch einen Vorgang benötigen, werden als ungültig angesehen.

When a user agent based on XML is connected to an HTML parser, it is possible that certain invariants that XML enforces, such as comments never containing two consecutive hyphens, will be violated by an HTML file. Handling this can require that the parser coerce the HTML DOM into an XML-compatible infoset. Most syntax constructs that require such handling are considered invalid.

Fehler, die zu unproportional schlechter Leistung führen

Einige Syntaxkonstrukte können zu unproportional schlechter Leistung führen. Um von der Verwendung solcher Konstrukte abzuraten, werden sie normalerweise als nicht konform angegeben.

Certain syntax constructs can result in disproportionally poor performance. To discourage the use of such constructs, they are typically made non-conforming.

Zum Beispiel führt der folgende Quelltext zu schlechter Leistung, da alle nicht geschlossenen i-Elemente in jedem Abschnitt neu konstruiert werden müssen, was zu immer mehr Elementen führt:

For example, the following markup results in poor performance, since all the unclosed i elements have to be reconstructed in each paragraph, resulting in progressively more elements in each paragraph:

<p><i>Er träumte.
<p><i>Er träumte, dass er Frühstück aß.
<p><i>Dann Mittagessen.
<p><i>Und schließlich Abendessen.

Das sich daraus ergebende DOM für dieses Fragment wäre:

The resulting DOM for this fragment would be:

Fehler mit zerbrechlichen Syntaxkonstrukten

Es gibt Syntaxkonstrukte, die aus geschichtlichen Gründen relativ zerbrechlich sind. Um die Zahl der Benutzer gering zu halten, die versehentlich auf solche Probleme stoßen, werden sie als nicht konform angegeben.

There are syntax constructs that, for historical reasons, are relatively fragile. To help reduce the number of users who accidentally run into such problems, they are made non-conforming.

Zum Beispiel werden bestimmte benannte Ersatzzeichenketten in Attributen auch dann verarbeitet, wenn das schließende Semikolon weggelassen wird. Es ist sicher, ein Fragezeichen anzugeben, das von Zeichen gefolgt wird, wenn sie keine benannte Ersatzzeichenkette bilden. Werden die Buchstaben jedoch verändert, so dass in der Tat eine Zeichenkette entsteht, die eine benannte Ersatzzeichenkette bildet, wird diese als jenes Zeichen interpretiert (für das die Ersatzzeichenkette steht).

For example, the parsing of certain named character references in attributes happens even with the closing semicolon being omitted. It is safe to include an ampersand followed by letters that do not form a named character reference, but if the letters are changed to a string that does form a named character reference, they will be interpreted as that character instead.

In diesem Fragment ist der Attributwert "?bill&ted":

In this fragment, the attribute's value is "?bill&ted":

<a href="?bill&ted">Bill und Ted</a>
<a href="?bill&ted">Bill and Ted</a>

Im folgenden Fragment ist der Attributwert jedoch "?art©", nicht das beabsichtigte "?art&copy", weil "&copy" auch ohne das schließende Semikolon gleich behandelt wird, als wäre es die Ersatzzeichenkette "&copy;" und wird demnach als "©" interpretiert:

In the following fragment, however, the attribute's value is actually "?art©", not the intended "?art&copy", because even without the final semicolon, "&copy" is handled the same as "&copy;" and thus gets interpreted as "©":

<a href="?art&copy">Art und Copy</a>

Um dieses Problem zu vermeiden, müssen alle benannten Ersatzzeichenketten mit einem Semikolon schließen. Die Verwendung von benannten Ersatzzeichenketten ohne Semikolon wird als Fehler markiert.

To avoid this problem, all named character references are required to end with a semicolon, and uses of named character references without a semicolon are flagged as errors.

Dementsprechend ist die richtige Ausdrucksweise der oben beshriebenen Fälle:

Thus, the correct way to express the above cases is as follows:

<a href="?bill&ted">Bill und Ted</a> <!-- &ted ist in Ordnung ok, da es keine benannte Ersatzzeichenkette ist -->
<a href="?art&amp;copy">Art and Copy</a> <!-- das & muss ersetzt werden, denn &copy ist eine benannte Ersatzzeichenkette -->
<a href="?bill&ted">Bill and Ted</a> <!-- &ted is ok, since it's not a named character reference -->
<a href="?art&amp;copy">Art and Copy</a> <!-- the & has to be escaped, since &copy is a named character reference -->
Fehler mit bekannten Interoperabilitätsproblemen in älteren Benutzerschnittstellen

Bestimmte Syntaxkonstrukte sind bekannt dafür, insbesondere fast unbemerkte oder ernsthafte Probleme in älteren Benutzerschnittstellen zu verursachen und werden deshalb als nicht konform gekennzeichnet, um Autoren zu helfen, diese zu vermeiden.

Certain syntax constructs are known to cause especially subtle or serious problems in legacy user agents, and are therefore marked as non-conforming to help authors avoid them.

Deshalb ist zum Beispiel das Zeichen "`" (U+0060) in Attributen ohne Anführungszeichen nicht gestattet. In bestimmten älteren Browsern wird er manchmal wie ein Anführungszeichen verwendet.

For example, this is why the "`" (U+0060) character is not allowed in unquoted attributes. In certain legacy user agents, it is sometimes treated as a quote character.

Ein weiteres Beispiel dazu ist DOCTYPE, welches notwendig ist, um den No-Quirks-Modus einzuschalten, da das Verhalten von älteren Browsern im Quirks-Modus oft spärlich dokumentiert ist.

Another example of this is the DOCTYPE, which is required to trigger no-quirks mode, because the behavior of legacy user agents in quirks mode is often largely undocumented.

Fehler, bei denen das Risiko besteht, dass Angriffe gegen die Sicherheit Erfolg haben.

Bestimmte Einschränkungen bestehen nur, um bekannte Sicherheitsprobleme zu vermeiden.

Certain restrictions exist purely to avoid known security problems.

Zum Beispiel besteht die Beschränkung der Verwendung von UTF-7 nur, um zu verhindern, dass Autoren einem UTF-7 ausnutzenden Angriff mit seitenübergreifenden Skripten zum Opfer fallen. [UTF7]

For example, the restriction on using UTF-7 exists purely to avoid authors falling prey to a known cross-site-scripting attack using UTF-7. [UTF7]

Fälle, bei denen die Absicht des Autors unklar ist

Quelltext wird oft als nicht konform gekennzeichnet, wenn die Absicht des Autors schwer erkennbar ist. Eine frühe Korrektur dieser Fehler macht eine spätere Pflege einfacher.

Markup where the author's intent is very unclear is often made non-conforming. Correcting these errors early makes later maintenance easier.

Es ist zum Beispiel unklar, ob der Autor im Folgenden eine h1- oder eine h2-Überschrift verwenden wollte:

For example, it is unclear whether the author intended the following to be an h1 heading or an h2 heading:

<h1>Contact details</h2>
Fälle, die wahrscheinlich Tippfehler sind

Macht der Benutzer einen einfachen Schreibfehler, ist es hilfreich, wenn der Fehler früh erkannt werden kann, da dies dem Autor viel Zeit beim Debuggen sparen kann. Aus diesem Grund sieht diese Spezifikation die Verwendung von Elementnamen, Attributnamen und so weiter als Fehler an, die nicht den definierten Namen in dieser Spezifikation entsprechen.

When a user makes a simple typo, it is helpful if the error can be caught early, as this can save the author a lot of debugging time. This specification therefore usually considers it an error to use element names, attribute names, and so forth, that do not match the names defined in this specification.

Tippt der Autor zum Beispiel <capton> statt <caption>, würde dies als Fehler gekennzeichnet und der Autor könnte diesen Fehler sofort berichtigen.

For example, if the author typed <capton> instead of <caption>, this would be flagged as an error and the author could correct the typo immediately.

Fehler, die in Zukunft mit neuer Syntax kollidieren könnten

Damit die Sprachsyntax in Zukunft erweitert werden kann, werden bestimmte, ansonsten harmlose, Eigenschaften nicht gestattet.

In order to allow the language syntax to be extended in the future, certain otherwise harmless features are disallowed.

Zum Beispiel werden Attribute in End-Tags zur Zeit ignoriert, aber sie sind ungültig, sofern eine zukünftige Änderung diese Syntax-Eigenschaft verwendet ohne mit schon verwendetem (und gültigem!) Inhalt in Konflikt zu stehen.]

For example, "attributes" in end tags are ignored currently, but they are invalid, in case a future change to the language makes use of that syntax feature without conflicting with already-deployed (and valid!) content.

Einige Autoren sehen es als hilfreich an, alle Attribute immer in Anführungszeichen zu setzen und immer alle optionalen Tags einzuschließen, da sie die Konsistenz aus dieser Angewohnheit den geringen Vorteilen der Kürze vorziehen, die durch die Flexibiliät der HTML-Syntax möglich ist. Um soche Autoren zu unterstützen, können Konformitätsprüfprogramme einen Modus anbieten, der solche Konventionen zwingend erfordert.

Some authors find it helpful to be in the practice of always quoting all attributes and always including all optional tags, preferring the consistency derived from such custom over the minor benefits of terseness afforded by making use of the flexibility of the HTML syntax. To aid such authors, conformance checkers can provide modes of operation wherein such conventions are enforced.

1.10.3 Beschränkung der Inhaltsmodelle und Attributwerte

Dieser Abschnitt ist nicht normativ.

Diese Spezifikation definiert über die Syntax der Sprache hinaus auch Einschränkungen wie Elemente und Attribute angegeben werden können. Diese Einschränkungen bestehen aus ähnlichen Gründen:

Beyond the syntax of the language, this specification also places restrictions on how elements and attributes can be specified. These restrictions are present for similar reasons:

Fehler mit Inhalt, der dubiose Semantik enthält

Um den Missbrauch von Elementen mit definierter Bedeutung zu verhindern, sind Inhaltsmodelle definiert worden, die beschränken, wie Elemente verschachtelt werden können, wenn diese Verschachtelungen von dubiosem Wert wären.

To avoid misuse of elements with defined meanings, content models are defined that restrict how elements can be nested when such nestings would be of dubious value.

Zum Beispiel erlaubt diese Spezikifation kein section-Element innerhalb eines kbd-Elements, da es höchst unwahrscheinlich ist, dass ein vollständiger Bereich (section) ein Tastenkürzel bekommen sollte.

For example, this specification disallows nesting a section element inside a kbd element, since it is highly unlikely for an author to indicate that an entire section should be keyed in.

Fehler durch einen Konflikt in der ausgedrückten Semantik

Um die Aufmerksamkeit des Autors auf Fehler bei der Verwendung von Elementen zu lenken, werden auch eindeutige Widersprüche in der ausgedrückten Semantik als Konformitätsfehler angesehen.

Similarly, to draw the author's attention to mistakes in the use of elements, clear contradictions in the semantics expressed are also considered conformance errors.

Zum Beispiel ist die Semantik in den folgenden Fragmenten widersinnig: ein Separator kann weder gleichzeitig eine Zelle sein, noch kann ein Radio-Button eine Fortschrittsanzeige sein.

In the fragments below, for example, the semantics are nonsensical: a separator cannot simultaneously be a cell, nor can a radio button be a progress bar.

<hr role="cell">
<input type=radio role=progressbar>

Ein weiteres Beispiel ist die Beschränkung des Inhaltsmodells des Elements ul, das nur li-Elemente als Kinder erlaubt. Per Definition bestehen Listen nur aus Null oder mehr Listeneinträgen, enthält ein ul-Element etwas anderes als ein li-Element, ist nicht eindeutig, was gemeint war.

Another example is the restrictions on the content models of the ul element, which only allows li element children. Lists by definition consist just of zero or more list items, so if a ul element contains something other than an li element, it's not clear what was meant.

Fälle, bei denen der voreingestellte Stil wahrscheinlich zu Missverständnissen führt

Bestimmte Elemente haben voreingestellte Stile oder Verhaltensweisen, die in bestimmten Kombinationen wahrscheinlich zu Missverständnissen führen. Gibt es äquivalente Alternativen ohne dieses Problem, sind die missverständlichen Kombinationen nicht erlaubt.

Certain elements have default styles or behaviors that make certain combinations likely to lead to confusion. Where these have equivalent alternatives without this problem, the confusing combinations are disallowed.

Zum Beispiel werden div-Elemente als Block-Boxen dargestellt und span-Elemente als Inline-Boxen. Eine Block-Box in eine Inline-Box zu setzen, führt zu unnötiger Verwirrung; da entweder das Verschachteln von div-Elementen oder die Verschachtelung von ausschließlich span-Elementen oder die Verschachtelung von span-Elementen in div-Elementen dem gleichen Zweck dient wie die Verschachtelung eines div-Elements in einem span-Element, aber nur letzteres eine Block-Box in einer Inline-Box benötigt, ist die letztere Kombination nicht erlaubt.

For example, div elements are rendered as block boxes, and span elements as inline boxes. Putting a block box in an inline box is unnecessarily confusing; since either nesting just div elements, or nesting just span elements, or nesting span elements inside div elements all serve the same purpose as nesting a div element in a span element, but only the latter involves a block box in an inline box, the latter combination is disallowed.

Ein weiteres Beispiel dazu wäre, dass interaktiver Inhalt nicht verschachtelt werden kann. Zum Beispiel kann ein button-Element kein textarea-Element enthalten. Das voreingestellte Verhalten für solche verschachtelbaren interaktiven Elemente wäre höchst verwirrend für Benutzer. Anstatt sie zu verschachteln, können sie nebeneinander angegeben werden.

Another example would be the way interactive content cannot be nested. For example, a button element cannot contain a textarea element. This is because the default behavior of such nesting interactive elements would be highly confusing to users. Instead of nesting these elements, they can be placed side by side.

Fehler, die andeuten, dass die Spezifikation falsch verstanden wurde

Manchmal ist etwas nicht erlaubt, weil es, sofern gestattet, wahrscheinlich ein Missverständnis beim Benutzer hervorrufen würde.

Sometimes, something is disallowed because allowing it would likely cause author confusion.

Es ist zum Beispiel nicht erlaubt, das Attribut disabled auf den Wert "false" zu setzen, denn trotz der anscheinlichen Bedeutung, dass das Element aktiv ist, bedeutet es in der Tat, dass das Element inaktiv ist (für Implementierungen spielt nur die Anwesenheit des Attributs eine Rolle, nicht der Wert).

For example, setting the disabled attribute to the value "false" is disallowed, because despite the appearance of meaning that the element is enabled, it in fact means that the element is disabled (what matters for implementations is the presence of the attribute, not its value).

Fehler durch Limitationen, die nur auferlegt wurden, um die Sprache zu vereinfachen

Einige Konformitätsfehler vereinfachen die Sprache, die ein Autor lernen muss.

Some conformance errors simplify the language that authors need to learn.

Zum Beispiel verbietet das shape-Attribut des Elements area die Verwendung des Wertes circ, um Tutorials und andere Lernhilfen zu vereinfachen, obwohl es in der Praxis sowohl den Wert circ als auch den Wert circle als Synonyme akzeptiert. Es gäbe keinen Vorteil dadurch, beide Werte zu erlauben, aber es würde zusätzliche Schwierigkeiten beim Lehren der Sprache verursachen.

For example, the area element's shape attribute, despite accepting both circ and circle values in practice as synonyms, disallows the use of the circ value, so as to simplify tutorials and other learning aids. There would be no benefit to allowing both, but it would cause extra confusion when teaching the language.

Fehler, die Eigentümlichkeiten des Parsers einbeziehen würden

Einige Elemente werden auf eine etwas exzentische Weise verarbeitet (üblicherweise aus historischen Gründen) und die Einschränkungen ihrer Inhaltsmodelle sind so ausgelegt, dass sie den Autor vor diesen Problemen bewahren.

Certain elements are parsed in somewhat eccentric ways (typically for historical reasons), and their content model restrictions are intended to avoid exposing the author to these issues.

Ein form-Element ist zum Beispiel innerhalb von Formulierndem Inhalt (Phrasing Content) nicht erlaubt, denn wenn es als HTML verarbeitet wird, wird das Start-Tag eines form-Elements das End-Tag eines p-Elements voraussetzen. Deshalb entstehen aus dem foglenden Quellext zwei Absätze, nicht einer:

For example, a form element isn't allowed inside phrasing content, because when parsed as HTML, a form element's start tag will imply a p element's end tag. Thus, the following markup results in two paragraphs, not one:

<p>Welcome. <form><label>Name:</label> <input></form>

Es wird genau wie das Folgende verarbeitet:

It is parsed exactly like the following:

<p>Welcome. </p><form><label>Name:</label> <input></form>
Fehler, die wahrscheinlich zu Skriptabbrüchen führen, die schwer zu debuggen sind

Einige Fehlermeldungen werden zur Hilfe ausgegeben, um Skriptprobleme zu vermeiden, die ansonsten schwer zu analysieren wären.

Some errors are intended to help prevent script problems that would be hard to debug.

Dies ist zum Beispiel der Grund, warum es nicht konform ist, zwei id-Attribute mit dem gleichen Wert zu haben. Doppele IDs führen dazu, dass das falsche Element ausgewählt wird, teilweise mit desaströsen Effekten, deren Grund schwer aufzuspüren ist.

This is why, for instance, it is non-conforming to have two id attributes with the same value. Duplicate IDs lead to the wrong element being selected, with sometimes disastrous effects whose cause is hard to determine.

Fehler, die die Zeit des Autors verschwenden

Einige Konstrukte sind nicht erlaubt, weil Autoren in der Vergangenheit sehr viel Zeit mit ihnen verschwendet haben. Durch den Anstoß, diese Fehler zu vermeiden, können Autoren in Zukunft eine Menge Zeit sparen.

Some constructs are disallowed because historically they have been the cause of a lot of wasted authoring time, and by encouraging authors to avoid making them, authors can save time in future efforts.

Zum Beispiel führt das Attribut src des script-Elements dazu, das der Inhalt des Elements ignoriert wird. Jedoch ist dies nicht offensichtlich, insbesondere wenn der Inhalt des Elements nach ausführbarem Skript aussieht — dies kann dazu führen, dass Autoren eine Menge Zeit in den Versuch stecken, das Inline-Skripts zu debuggen, ohne dass sie merken, dass es garnicht ausgeführt wird. Um dieses Problem zu lösen, bestimmt diese Spezifikation, dass es nicht konform ist, ausführbares Skript innerhalb eines script-Elements zu haben, wenn das src-Attribut vorhanden ist. Das bedeutet, dass Autoren, die ihre Dokumente validieren, wahrscheinlich weniger Zeit mit dieser Art Fehler verschwenden.

For example, a script element's src attribute causes the element's contents to be ignored. However, this isn't obvious, especially if the element's contents appear to be executable script — which can lead to authors spending a lot of time trying to debug the inline script without realizing that it is not executing. To reduce this problem, this specification makes it non-conforming to have executable script in a script element when the src attribute is present. This means that authors who are validating their documents are less likely to waste time with this kind of mistake.

Fehler in Bereichen, die Autoren betreffen, die zu und von XHTML migrieren

Einige Autoren schreiben gerne Dateien, die mit ähnlichen Ergebnissen sowohl als XML als auch als HTML interpretiert werden können. Obwohl von dieser Praxis im Allgemeinen abgeraten wird, da es eine Myriade subtiler Komplikationen mit sich bringt (insbesondere wenn Skripte, Stile oder irgendeine Art von automatischer Serialisierung betroffen sind), bringt diese Spezifikation einige Beschränkungen mit, die dazu gedacht sind, diese Schwierigkeiten zumindest ein wenig zu entschärfen. Diese Beschränkungen machen es Autoren einfacher, diese als Übergangsschritt zu verwenden, wenn zwischen HTML und XHTML migriert wird.

Some authors like to write files that can be interpreted as both XML and HTML with similar results. Though this practice is discouraged in general due to the myriad of subtle complications involved (especially when involving scripting, styling, or any kind of automated serialization), this specification has a few restrictions intended to at least somewhat mitigate the difficulties. This makes it easier for authors to use this [BUG] as a transitionary step when migrating between HTML and XHTML.

Zum Beispiel gibt es einigermaßen komplizierte Regeln zu den Attributen lang und xml:lang, um die beiden synchron zu halten.

For example, there are somewhat complicated rules surrounding the lang and xml:lang attributes intended to keep the two synchronized.

Ein weiteres Beispiel wären die Beschränkungen zu den Werten des Attributs xmlns in der HTML-Serialisierung, die dazu gedacht sind, sicherzustellen, dass Elemente in konformen Dokumenten im gleichen Namensraum enden, egal, ob sie als HTML oder XML verarbeitet werden.

Another example would be the restrictions on the values of xmlns attributes in the HTML serialization, which are intended to ensure that elements in conforming documents end up in the same namespaces whether processed as HTML or XML.

Fehler in Bereichen, die für zukünftige Erweiterungen reserviert sind

Genau wie die Beschränkungen der Syntax, die neue Syntax in zukünftigen Revisionen der Sprache ermöglichen sollen, sind einige Beschränkungen des Inhaltsmodells und der Elemente und Attributwerte auf die zukünftige Erweiterung des HTML-Vokabulars ausgerichtet.

As with the restrictions on the syntax intended to allow for new syntax in future revisions of the language, some restrictions on the content models of elements and values of attributes are intended to allow for future expansion of the HTML vocabulary.

Durch die Beschränkung der Werte des Attributs target auf bestimmte vordefinierte Werte, die mit dem Zeichen "_" (U+005F) beginnen, wird erreicht, dass neue vordefinierte Werte zu einem späteren Zeitpunkt eingeführt werden können, ohne mit Werten in Konflikt zu geraten, die von Autoren definiert wurden.

For example, limiting the values of the target attribute that start with an "_" (U+005F) character to only specific predefined values allows new predefined values to be introduced at a future time without conflicting with author-defined values.

Fehler, die einen Missbrauch von anderen Spezifiktionen andeuten

Bestimmte Beschränkungen sollen die Beschränkungen anderer Spezifikationen unterstützen.

Certain restrictions are intended to support the restrictions made by other specifications.

Zum Beispiel unterstreicht die Anforderung, dass nur gültige Mediaanfragen (Media Queries) in Attributen verwendet werden dürfen, die Medienanfragen aufnehmen, die Wichtigkeit, dass den Konformitätsregeln jener Spezifikation (der Spezifiktion Media Queries) entsprochen wird.

For example, requiring that attributes that take media queries use only valid media queries reinforces the importance of following the conformance rules of that specification.

1.11 Empfohlene Lektüre

Dieser Abschnitt ist nicht normativ.

Die folgenden Dokumente könnten für Leser dieser Spezifikation von Interesse sein.

The following documents might be of interest to readers of this specification.

Character Model for the World Wide Web 1.0: Fundamentals [CHARMOD]

Diese Spezifikation aus dem Bereich Architektur gibt Autoren von Spezifikationen, Software- und Inhaltsentwicklern eine gemeinsame Referenz für interoperable Textmanipulation im World Wide Web, aufgebaut auf dem Universal Character Set, das gemeinsam durch den Unicode-Standard und ISO/IEC 10646 definiert ist. Die angesprochenen Themen beinhalten die Verwendung des Begriffs 'character/Zeichen', 'encoding/Verschlüsselung' und 'string/Zeichenkette', eine Referenzverarbeitungsmodell, Wahl und Identifikation von Zeichenverschlüsselungen, Zeichenersatz und indizieren von Zeichenketten.

This Architectural Specification provides authors of specifications, software developers, and content developers with a common reference for interoperable text manipulation on the World Wide Web, building on the Universal Character Set, defined jointly by the Unicode Standard and ISO/IEC 10646. Topics addressed include use of the terms 'character', 'encoding' and 'string', a reference processing model, choice and identification of character encodings, character escaping, and string indexing.

Unicode Security Considerations [UTR36]

Da Unicode so viele Zeichen enthält und die verschiedensten Schriftsysteme der Welt beherbergt, kann eine falsche Verwendung Programme oder Systeme für Hacker-Angriffe verwundbar machen. Dies ist besonders wichtig, da immer mehr Produkte internationalisiert werden. Dieses Dokument beschreibt einige der Sicherheitsbedenken, die Programmierer, Systemanalysten, Standardentwickler und Benutzer beachten sollten und gibt genaue Empfehlungen, um das Risiko von Problemen zu reduzieren.

Because Unicode contains such a large number of characters and incorporates the varied writing systems of the world, incorrect usage can expose programs or systems to possible security attacks. This is especially important as more and more products are internationalized. This document describes some of the security considerations that programmers, system analysts, standards developers, and users should take into account, and provides specific recommendations to reduce the risk of problems.

Web Content Accessibility Guidelines (WCAG) 2.0 [WCAG]

Die Web Content Accessibility Guidelines (WCAG) 2.0 enthalten viele Empfehlungen, um Web-Inhalt zugänglicher zu machen. Werden diese Richtlinien befolgt, wird der Inhalt für mehr Menschen mit Behinderungen zugänglich gemacht, einschließlich Behinderungen wie Blindheit und vermindertes Sehvermögen, Gehörlosigkeit und Hörverlust, Lernschwächen, kognitive Beschränkungen, beschränkte Mobilität, Sprachbehinderungen, Photosensitivität und Kombinationen dieser. Das Befolgen dieser Regeln wird Ihren Web-Inhalt oft auch im Allgemeinen für Benutzer besser nutzbar machen.

Web Content Accessibility Guidelines (WCAG) 2.0 covers a wide range of recommendations for making Web content more accessible. Following these guidelines will make content accessible to a wider range of people with disabilities, including blindness and low vision, deafness and hearing loss, learning disabilities, cognitive limitations, limited movement, speech disabilities, photosensitivity and combinations of these. Following these guidelines will also often make your Web content more usable to users in general.

Authoring Tool Accessibility Guidelines (ATAG) 2.0 [ATAG]

Diese Spezifikation enthält Richtlinien für die Entwicklung von Autorenwerkzeugen zur Erstellung von Web-Inhalten, die für Menschen mit Behinderungen zugänglicher sind. Ein Autorenwerkzeug, das konform zu diesen Richtlinien ist, wird Zugänglichkeit durch eine zugängliche Benutzerschnittstelle für Autoren mit Behinderungen fördern. Und es wird die Herstellung von zugänglichem Web-Inhalt durch alle Autoren ermöglichen, unterstützen und fördern.

This specification provides guidelines for designing Web content authoring tools that are more accessible for people with disabilities. An authoring tool that conforms to these guidelines will promote accessibility by providing an accessible user interface to authors with disabilities as well as by enabling, supporting, and promoting the production of accessible Web content by all authors.

User Agent Accessibility Guidelines (UAAG) 2.0 [UAAG]

Dieses Dokument stellt Richtlinien zum Design von Benutzerschnittstellen zur Verfügung, die die Barrieren für die Zugänglichkeit zum Web für Menschen mit Behinderungen herabsetzen. Benutzerschnittstellen sind Browser und andere Arten von Software, die Web-Inhalt empfangen und darstellen. Eine Benutzerschnittstelle, die diesen Richtlinien entspricht, wird die Zugänglichkeit durch ihre eigene Benutzerschnittstelle und durch andere interne Eigenschaften fördern, einschließlich seiner Fähigkeit, mit anderen Technologien zu kommunizieren (insbesondere assistiven Technologien). Desweiteren sollten alle Benutzer, nicht nur Benutzer mit Behinderungen, diese konformen Benutzerschnittstellen als benutzerfreundlicher empfinden.

This document provides guidelines for designing user agents that lower barriers to Web accessibility for people with disabilities. User agents include browsers and other types of software that retrieve and render Web content. A user agent that conforms to these guidelines will promote accessibility through its own user interface and through other internal facilities, including its ability to communicate with other technologies (especially assistive technologies). Furthermore, all users, not just users with disabilities, should find conforming user agents to be more usable.

Polyglot Markup: HTML-Compatible XHTML Documents [POLYGLOT]

Ein Dokument, das Polyglot-Quelltext verwendet, ist ein Dokument, das aus einem Datenstrom besteht, der in identische Dokumentbäume verarbeitet wird (mit Ausnahme des xmlns-Attributs im Wurzelelement), wenn er als HTML oder als XML verarbeitet wird. Polyglot-Quelltext, der wohlgeformten Beschränkungen folgt, wird von der HTML5-Spezifikation als kompatibel angesehen, ungeachtet dessen, ob er als HTML oder XHTML verarbeitet wird. Polyglot-Quelltext verwendet einen bestimmten DOCTYPE, Namensraumspezifiktionen und eine bestimmte Groß- und Kleinschreibung für Element- und Attributnamen — normalerweise Kleinschreibung, aber zuweilen auch die Kamelschreibweise. Polyglot verwendet Kleinschreibung für bestimmte Attributwerte. Weitere Beschränkungen beziehen sich auf leere Elemente, benannte Ersatzzeichenketten und die Verwendeung von Skripten und Stilen.

A document that uses polyglot markup is a document that is a stream of bytes that parses into identical document trees (with the exception of the xmlns attribute on the root element) when processed as HTML and when processed as XML. Polyglot markup that meets a well defined set of constraints is interpreted as compatible, regardless of whether they are processed as HTML or as XHTML, per the HTML5 specification. Polyglot markup uses a specific DOCTYPE, namespace declarations, and a specific case — normally lower case but occasionally camel case — for element and attribute names. Polyglot markup uses lower case for certain attribute values. Further constraints include those on empty elements, named entity references, and the use of scripts and style.

HTML to Platform Accessibility APIs Implementation Guide [HPAAIG]

Dies ist der Entwurf einer Dokumentation zur Abbildung von HTML-Elementen und -Attributen auf Aufgaben, Zustände und Eigenschaften einer Zugänglichkeits-API auf verschiedenen Plattformen. Es gibt Empfehlungen wie zugängliche Namen und Beschreibungen für HTML-Elemente abgeleitet werden können. Es enthält auch Bespiele zur Implementierung von Zugänglichkeitseigenschaften.

This is draft documentation mapping HTML elements and attributes to accessibility API Roles, States and Properties on a variety of platforms. It provides recommendations on deriving the accessible names and descriptions for HTML elements. It also provides accessible feature implementation examples.