Addison Wesley - XML, XHTML, CSS & Co
Addison Wesley - XML, XHTML, CSS & Co
<edition
[Link]>
Die edition [Link] bietet IT-Experten die maßgebliche Referenz zu den
technischen Grundlagen des WWW. Fachleute haben die englischen
W3C-Recommendations ins Deutsche übersetzt, begutachtet und kommentiert.
Parallel zur Buchreihe finden Sie die Übersetzungen auch online unter
[Link].
XML & Co
Die W3C-Spezifikationen für Dokumenten-
und Datenarchitektur
Stefan Mintert (Hrsg.)
edition [Link]
760 Seiten
€ 59,95 [D] / € 61,70 [A]
ISBN 3-8273-1844-0
<edition
Stefan Mintert (Hrsg.)
[Link]>
eBook
Die nicht autorisierte Weitergabe dieses eBooks
an Dritte ist eine Verletzung des Urheberrechts!
Die Informationen in diesem Produkt werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht.
Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt.
Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen.
Trotzdem können Fehler nicht vollständig ausgeschlossen werden.
Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder eine juristische
Verantwortung noch irgendeine Haftung übernehmen. Für Verbesserungsvorschläge und Hinweise
auf Fehler sind Verlag und Herausgeber dankbar.
Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherung in elektronischen Medien.
Die gewerbliche Nutzung der in diesem Produkt gezeigten Modelle und Arbeiten ist nicht zulässig.
Fast alle Hardware- und Softwarebezeichnungen, die in diesem Buch erwähnt werden, sind gleichzeitig auch
eingetragene Warenzeichen oder sollten als solche betrachtet werden.
Umwelthinweis:
Dieses Produkt wurde auf chlorfrei gebleichtem Papier gedruckt.
Die Einschrumpffolie – zum Schutz vor Verschmutzung – ist aus umweltverträglichem und recyclingfähigem
PE-Material.
10 09 08 07 06 05 04 03 02 01
ISBN 3-8273-1872-6
Inhaltsverzeichnis
Vorwort 17
Herstellung des Buches, typografische Konventionen und
weitere Formalien 19
Danksagung 20
Einleitung 21
Thematische Einf"hrung und #berblick "ber den Band 22
Die W3C-Spezifikationen in diesem Band 23
Weitere W3C-Spezifikationen und -Texte 25
Internet Society und Internet Engineering Task Force 25
HTTP und MIME 26
MIME-Typen f"r XHTML 27
Uniform Resource Identifier (URI) 28
International Organization for Standardization 31
Organization for the Advancement of Structured
Information Standards 32
Common Gateway Interface 32
Literatur 33
n
A Die HTML 4.01- Spezifikation
1 ber die HTML 4-Spezifikation
1.1
1.2
Wie die Spezifikation aufgebaut ist
Dokumentkonventionen
38
38
39
1.3 Danksagungen 40
1.4 Bemerkung zum Urheberrecht 41
2 Einf%hrung in HTML 4 41
2.1 Was ist das World Wide Web? 41
2.2 Was ist HTML? 44
2.3 HTML 4 45
2.4 Dokumente erstellen mit HTML 4 48
Page size: 168,00 x 240,00 mm
<edition
[Link]>
<6> Inhaltsverzeichnis
Page size: 168,00 x 240,00 mm
Inhaltsverzeichnis <7>
Page size: 168,00 x 240,00 mm
<edition
[Link]>
<8> Inhaltsverzeichnis
Page size: 168,00 x 240,00 mm
Inhaltsverzeichnis <9>
Page size: 168,00 x 240,00 mm
<edition
[Link]>
B Element-Ausschl%sse 379
C Richtlinien zur HTML-Kompatibilit+t 380
C.1 Verarbeitungsanweisungen und die XML-Deklaration 380
C.2 Leere Elemente 380
C.3 Elementminimierung und leerer Elementinhalt 380
C.4 Eingebettete Stylesheets und Skripte 380
C.5 Zeilenumbr"che innerhalb von Attributwerten 381
C.6 Isindex 381
C.7 Die Attribute lang and xml:lang 381
C.8 Fragmentbezeichner 381
C.9 Zeichencodierung 382
C.10 Boolesche Attribute 382
C.11 Document Object Model und XHTML 382
C.12 Die Verwendung von et-Zeichen in Attributwerten (und
anderswo) 383
C.13 Cascading Style Sheets (CSS) und XHTML 383
C.14 Referenzierung von Style-Elementen bei Verwendung
als XML 384
C.15 Leerraumzeichen in HTML vs. XML 384
C.16 Die benannte Zeichenreferenz ' 384
D Danksagungen 385
E Literaturverzeichnis 385
<edition
[Link]>
XHTML Basic
D 1 Einleitung
1.1 XHTML f"r KleinstinformationsgerEte
500
500
1.2 Hintergrund und Voraussetzungen 500
1.3 Gr"nde f"r Entwurfsentscheidungen 501
2 Konformit+t 503
2.1 KonformitEt der Dokumente 503
2.2 KonformitEt der Benutzerschnittstelle 503
3 Der XHTML-Basic-Dokumenttyp 503
4 Wie XHTML Basic verwendet wird 504
5 Danksagung 505
A Referenzen 505
A.1 Normative Referenzen 505
A.2 Informelle Referenzen 506
B XHTML-Basic- Dokumenttyp-Definition 506
B.1 "SGML Open Catalog Entry" f"r XHTML Basic 506
B.2 XHTML Basic-Treiber 507
B.3 XHTML-Basic-Anpassungen 511
<edition
[Link]>
<edition
[Link]>
<edition
[Link]>
<edition
[Link]>
Endlich ist er da. Der zweite Band der edition [Link]. Entstanden ist diese Buchreihe als Idee,
die ich 1999 whrend der OpenNet-Veranstaltung an Klaus Birkenbihl, den Leiter des deut-
schen B"ros des World Wide Web Consortium (W3C) herangetragen habe. Unser gemein-
sames Ziel ist es seitdem, die technischen Spezifikationen des W3C in deutscher Sprache
herauszugeben. Die als Empfehlung (Recommendation) ver0ffentlichten Texte haben lngst den
Charakter einer Norm. Sie sind lngst zur wesentlichen technischen Grundlage des World
Wide Web geworden – um so wichtiger, dass diese Texte in deutscher Sprache zur Verf"gung
stehen. Zweifellos ist das World Wide Web Consortium die maßgebliche Organisation f"r die
technische Weiterentwicklung des WWW.
Die edition [Link] liefert Referenzinformation auf hohem Niveau. Im Zentrum stehen die maß-
geblichen, in der Regel englischsprachigen Originaltexte, ins Deutsche "bertragen und fachlich
kommentiert von Experten aus dem deutschsprachigen Raum. Und noch etwas gilt f"r dieses
Buch wie f"r das erste: Die 7bersetzungen wurden vom W3C gepr"ft. Daf"r geht schon an
dieser Stelle der Dank an Klaus Birkenbihl (Deutsch-8sterreisches W3C-B"ro) und an Ivan
Herrmann (W3C).
Es k0nnte Einwnde geben, dass doch Englisch gerade im IT-Bereich als Fachsprache etabliert
sei. Diese unbestrittene Tatsache ndert jedoch nichts daran, dass viele der W3C-Empfehlun-
gen und andere Spezifikationen schwer verstndlich, weil sehr formal geschrieben sind. Eine
7bersetzung ins Deutsche unter Beibehaltung der formalen Exaktheit bietet dem Leser einen
leichteren Zugang zu den einzigen verbindlichen Texten, die es in diesem Bereich gibt.
»Sind die B"cher der edition [Link] also Leseb"cher f"r jedermann?« – Nein, sicher nicht. Die
edition [Link] besteht nicht aus Einsteigerb"chern. Die Texte halten sich inhaltlich an das eng-
lische Original. Sie sind technisch exakt, przise und zum Teil formal. Der Leser der edition
[Link] ist Profi; oder auf dem Weg dorthin. Der Leser ist Software- Entwickler, der W3C-kon-
forme Applikationen entwickelt. Er f"hrt Datenmodellierungen durch, die sich an die relevanten
Standards halten, um sich reibungslos in eine heteroge IT-Landschaft zu f"gen. Er formuliert
Dokumentstrukuren, die ihre Inhalte hersteller- und medienneutral beschreiben. Er generiert
Webseiten, die durch Befolgen der Recommendations eine maximale Reichweite erzielen.
7ber die 7bersetzung hinaus war es von Anfang an unser Ziel, dem Leser noch mehr zu bieten.
Mit der Absicht, die Verstndlichkeit der technischen Texte zu erh0hen, haben wir deshalb
Experten gesucht, die nicht nur "bersetzen, sondern auch fachlich kommentieren. Die Kom-
mentare der Fachleute sollen Ihnen helfen, auch die schwierigen Passagen der Spezifikationen
zu verstehen – und die einfachen Passagen bequemer. Dies geschieht in Form von anderen
Umschreibungen des Sachverhalts oder durch zustzliche Beispiele. Das Maß an Kommentie-
rungen variiert von Text zu Text, abhngig vom Schwierigkeitsgrad des Originals. Zusammen
mit den Experten, die die Kommentierung angefertigt haben, hoffe ich, dass wir das richtige
Maß gefunden haben.
F"r diesen Band der edition [Link] haben die folgenden Personen Beitrge geliefert:
Christine K
hnel
Christine K"hnel ist schon bald nach ihrem Mathematikstudium der Informatik verfallen.
Nach mehrjhriger Programmiererfahrung hat sie Mitte der Neunzigerjahre das Netz f"r
sich entdeckt und besitzt heute ausgewiesenes Know-How "ber Web-Techniken, auch
"ber W3C-Themen hinaus.
Neben freiberuflichen Ttigkeiten im Bereich Web-Design hat sie vor allem den Ruf als eine
der namhaftesten deutschen JavaScript- Expertinnen erworben. Die FAQ zur deutschspra-
chigen JavaScript- Newsgruppe wird von ihr herausgegeben.
Christine K"hnel schreibt Fachartikel f"r die iX. Als Co- Herausgeberin hat sie 2000 ihre
erste Monographie, den „JavaScript-Workshop“, bei Addison-Wesley ver0ffentlicht.
Stefan Mintert
Stefan Mintert begann parallel zu seinem Informatik-Studium in Dortmund bereits 1993 als
Web-Admin am Informatik- Fachbereich zu arbeiten. Seit 1994 ergnzt er seine WWW-
Erfahrung mit SGML-Know-how. Als stndiger freier Mitarbeiter der im Heise-Verlag
erscheinenden iX schreibt er regelmßig Fachartikel. Des Weiteren hat er bereits mehrere
Buchtitel ver0ffentlicht. 1998 erschien von Stefan Mintert als Co-Autor das erste deutsch-
sprachige Buch zum Thema XML. Die erste deutsche Fassung einer W3C-Recommendation
war seine 7bersetzung von XML.
Den Verlag Addison-Wesley hat er auch schon bei der 7bersetzung der W3C-B"cher von
Dave Ragget et. al. („Raggett on HTML 4“) und von HNkon Lie & Bert Bos („Cascading Style
Sheets“) fachlich beraten.
Er lebt heute in Hamburg und arbeitet seit 1998 als freier Berater, unter anderem in den
Bereichen Cross Media Publishing und Content Management. Dar"ber hinaus publiziert er
weiter und ist hufiger Referent auf Fachtagungen und Kongressen.
Judith Muhr
Judith Muhr arbeitet freiberuflich als 7bersetzerin.
Stefan Schumacher
Stefan Schumacher entdeckte die Seiten des World Wide Web Consortiums 1996 als Stu-
dent und erkannte die Spezifikationen als wertvolle Informationsquelle. Das Interesse an
der englischen Sprache und die Herausforderung, die Spezifikationen vollkommen zu ver-
stehen, weckten sein Interesse, wichtige Dokumente ins Deutsche zu "bersetzen. Er ist
selbststndiger Berater in den Bereichen Internet, Netzwerk und Kommunikation.
7ber die Website [Link] finden Sie die Kurzvita jedes Mitarbeiters, zum Teil
ergnzt um Links, auf die wir in der gedruckten Fassung verzichtet haben.
<edition
[Link]>
Die W3C-Texte sind vor allem f"r die Darstellung im Web ausgezeichnet. Wir haben versucht,
diese Auszeichnungen so gut wie m0glich f"r den Druck zu verwenden. Folgende Textbau-
steine werden Ihnen in diesem Buch hufig begegnen:
Anmerkung: Nicht nur die bersetzer haben kommentiert. Auch das W3C hat in seinen Texten
Anmerkungen. Sie sehen so aus, wie dieser Absatz. n
Im gesamten Buch finden Sie zahlreiche Beispiele. Dazu geh0ren auch Listings mit Code-Bei-
spielen.
Neben diesen Elementen auf Blockebene finden sich verschiedenartige Auszeichnungen in den
Bl0cken. Zu den wichtigsten zhlen die Elemente und Attribute von (X)HTML. Des Weiteren
enthlt jeder Text dieser Sammlung einige eigene Auszeichnungen, die (hoffentlich) selbsterkl-
rend sind.
Danksagung
F"r die inhaltliche Pr"fung der 7bersetzungen danke ich Ivan Hermann (W3C) und Klaus Bir-
kenbihl ([Link]). Stefan Hermann (infinity loop) hat durch die Bereitstellung seines Produkts
upCast zum Gelingen dieses Bandes beigetragen.
Ohne das Engagement von Stefan Schumacher und Christine K"hnel htte es keine 7berset-
zung von HTML 4 gegeben. Des Weiteren sind Christine K"hnel die meisten der Kommentare
in HTML 4 zu danken.
Last but not least: Mein besonderer Dank an Sylvia Hasselbach, unsere Lektorin von Addison-
Wesley. Dass sie das Projekt trotz allen Qrgers durchgezogen und das Buch gegen alle Wider-
stnde und Bedenken verteidigt hat, danke ich ihr pers0nlich sehr.
Abschließend bleibt mir der Wunsch zu ußern, dass sich unsere Arbeit lohnt und wir richtig
liegen mit der 7berzeugung, dass dieses Buch, so wie das erste der Reihe und die (hoffentlich)
nachfolgenden gebraucht werden; dass die edition [Link] in deutscher Sprache das Referenz-
werk wird, das auf keinem Schreibtisch fehlen darf. 7bersetzer, Verlag, W3C und der Heraus-
geber glauben daran...
Stefan Mintert
Hamburg im April 2002
<edition
[Link]>
<edition
[Link]>
Thematische Einf
hrung und !berblick
ber den Band
Der vorliegende Band widmet sich dem wichtigsten Thema des World Wide Web. Es geht um
die technischen Standards f"r die Ausgabe und Darstellung von Texten und Daten im WWW.
Die zentrale Sprache, die Lingua Franca des Web ist die Hypertext Markup Language (HTML).
Ohne HTML, in alle ihren Versionen und neuen Fassungen, gbe es kein WWW.
HTML geh0rt mittlerweile schon fast zur Allgemeinbildung. Doch das, was von Autoren HTML
genannt wird, ist oft alles andere als sauber geschrieben. Moderne Web-Browser sind gndig
bei Regelverst0ßen im Source-Code der Dokumente. Es geh0rte zum guten Ton, Web-Seiten
mit verschiedenen Browsern zu testen. Doch damit kann keine wirkliche Gewhr "bernommen
werden, dass Texte "berall und von jedermann zu lesen sind. Zu verschieden sind die Benut-
zerprogramme und Ausgabeformen im Internet – von graphischen Browsern, "ber Suchmaschi-
nen bis zu akustischer Ausgabe. Nach und nach setzt sich bei immer mehr Menschen die Ein-
sicht durch, die schon seit langem die 7berzeugung vieler Experten ist: Der beste Weg, um
m0glichst viele Menschen m0glichst gut im Web zu erreichen, besteht darin, akzeptierte Web-
Standards zu schaffen, zu verbreiten und selbst zu praktizieren. Aus diesem Grund ist die
Kenntnis der vorliegenden W3C- Spezifikationen f"r jeden unerlsslich, der als Autor, Designer
oder Anwendungsentwickler ttig ist.
HTML steht schon lngst nicht mehr allein da. Die Nachfolgerin und aktuelle Fassung trgt den
Namen Extensible Hypertext Markup Language (XHTML). Whrend die Erstere mit Hilfe von
SGML (Standard Generalized Markup Language) definiert wurde, ist die j"ngere Schwester eine
Anwendung von XML (Extensible Markup Language). Der Zusammenhang der Sprachen ist in
der folgenden Abbildung dargestellt.
formatiert
DSSSL
& transformiert
SGML HTML
Metasprachen
beeinflusst
definiert formatiert CSS
XML XHTML
formatiert
XSL
& transformiert XSLT
Auszeichnungssprachen
Formatierungs- und
Transformationssprachen
Der Zusammenhang zwischen XML, SGML, XHTML, HTML, CSS, DSSSL, XSL, XSLT (Quelle: [BeMi2000])
Die W3C-Spezifikationen in diesem Band sind innerhalb des World Wide Web Consortiums in
der »Document Formats Domain« angesiedelt. Zu anderen Arbeitsbereichen des W3C zhlen
etwa die »Architecture Domain« und die Domain »Technology and Society«. In diesen Namen
zeigt sich schon, wo XHTML, CSS & Co angesiedelt sind. Es geht darum, Dokumente darzustel-
len und zu formatieren.
F"r die strukturierte Darstellung von Web-Seiten dienen HTML und XHTML. Die wichtigste
Spezifikation ist nach wie vor HTML 4.01. HTML 4.01 definiert die Menge der Elementtypen
(wie p, h1, a, table und so weiter), die f"r Web-Seiten verwendet werden k0nnen. Hierbei ist
wichtig, dass HTML 4.01 auch die Semantik der Elementtypen definiert. Erst dann ist klar, dass
h1 eine 7berschrift erster Ordnung und p ein Absatz ist. Das Web ist nun mehr als zehn Jahre
alt und immerhin schon Mitte der Neunzigerjahre begann es seinen Siegeszug um die Welt.
Und doch gab es niemals zuvor eine HTML-Spezifikation in deutscher Sprache. Das heißt, alles
was Sie bisher in deutscher Sprache "ber HTML gelesen haben, war Sekundrliteratur. Erst mit
diesem Band liegt eine 7bersetzung der Primrliteratur zum Web-Design in Deutsch vor –
zudem fachlich kommentiert.
XHTML 1.0 (zweite Auflage) ist die zweite Recommendation im Buch. Es handelt sich dabei um
die Neuformulierung von HTML 4 mit den Vokabeln von XML. XHTML 1.0 erklrt nicht die
Semantik der Elementtypen, sondern verweist auf HTML 4. Sie m"ssen deshalb auch heute
noch die HTML 4-Recommendation kennen. Trotzdem ist es sinnvoll neue Dokumente in
XHTML und nicht mehr in HTML herauszugeben, denn die Weiterentwicklung geht in diese
Richtung.
Whrend HTML 4 und XHTML 1.0 noch recht monolithisch sind, werden neuere Versionen
modular aufgebaut. Viele Gerte brauchen nicht den vollen Sprachumfang von HTML oder k0n-
nen ihn nicht unterst"tzen. Einige Gertehersteller wollen Teile von HTML unterst"tzen, aber
auch eigene Teile zuf"gen. Dies k0nnen zum Beispiel zuk"nftige Mobiltelefone, PDAs oder
e-Books sein. Der Schl"ssel dazu ist die Modularisierung von XHTML, die Sie als dritten Text in
diesem Buch finden.
Bei XHTML 1.1 handelt es sich um eine auf Modulen aufbauende Version. XHTML Basic ist eine
Untermenge von XHTML, die besonders f"r mobile Gerte entworfen wurde.
Die Formatierung von (X)HTML im weiteren Sinne, von der Bildschirmdarstellung bis zur
Sprachausgabe ist die Domne der Cascading Style Sheets, deren »Level 2« Sie zum Abschluss
des Bandes finden.
Die folgende Tabelle zeigt den Zeitplan aus der „HTML Working Group Roadmap“ vom
7. Februar 2003. Die Daten sind tatschliche (zur"ckliegende) oder voraussichtlichte (zuk"nfti-
ge) Daten, die angeben wann ein Dokument den jeweiligen Status erreicht hat. Die Abk"rzun-
gen stehen f"r Candidate Recommendation (CR), Proposed Recommendation (PR), Recom-
mendation (REC). Nur der letzte Status ist ein stabiler Zustand. Alle genannten W3C-Doku-
mente, die eine Recommendation sind, finden Sie in kommentierter Fassung in diesem Buch.
<edition
[Link]>
Neben den Spezifikationen, die in diesem Band enthalten sind, gibt es zahlreiche weitere, die
mehr oder weniger eng verwandt sind. Einige dieser Spezifikationen sind zum Zeitpunkt der
Drucklegung noch nicht fertig, whrend alle in diesem Band enthaltenen Texte verabschiedete
Recommendations sind, die eine Reihe von Pr"fungen hinter sich haben.
Wer sich f"r die technische Grundlage von XHTML interessiert, findet in der XML-Spezifika-
tion alle Informationen – auf [Link] sogar in deutscher Sprache. Im Rahmen der
Buchreihe ist bereits ein Band zu diesem Thema erschienen.
Im engeren Umfeld von XHTML sind einige Recommendations am Horizont zu erkennen: XFra-
mes wird die Neuformulierung der HTML-Frames sein, die allerdings nicht die gleichen Nach-
teile haben sollen. Qhnlich verhlt es sich mit XForms, einer XML- Sprache f"r Formulare. HLink
wird es gestatten, beliebigen Elementen Hyperlink-Fhigkeiten zu geben. Weitere in Arbeit
befindliche Spezifikationen beschftigen sich mit der Erstellung von Schemata anstelle von
DTDs f"r XHTML. Des weiteren gibt es einige Arbeiten, die XHTML-Profile f"r kombinierte
Anwendungen definieren. Dazu geh0rt zum Beispiel XHTML+MathML+SMIL.
Die nchste große Version von XHTML wird die Version 2.0 sein. Der gegenwrtige Zeitplan
unter [Link]/MarkUp/xhtml-roadmap/ nennt als Ver0ffentlichungszeitpunkt f"r die Pro-
posed Recommendation den Juli 2004. Einen Termin f"r die Recommendation gibt es noch
nicht, aber es darf angenommen werden, dass XHTML 2.0 nicht vor Ende 2004 verabschiedet
wird.
Auch wenn es vielen Menschen so vorkommt: Das Web ist nicht das Internet, vielmehr setzt
es auf der Infrastrukur des Internet auf. Die Internet Society (ISOC) k"mmert sich um die offene
Weiterentwicklung des Internet. Eine wichtige Rolle nimmt die mit ihr assoziierte Internet Engi-
neering Task Force (IETF) ein. Die wichtigsten Ver0ffentlichungen der IETF sind die Requests for
Comments (RFC), die zum Beispiel die Standards f"r alle Internet-Protokolle beschreiben. Die
offiziellen Websites sind: [Link] [Link] [Link]
<edition
[Link]>
F"r das Web sind wichtige RFCs unter anderen: HTTP/1.1 (RFC 2616) und HTTP Authentica-
tion (RFC 2617). Jenseits des Hypertext Transfer Protocol (HTTP) endet die Zustndigkeit der
IETF und es beginnt die Zustndigkeit des W3C. HTTP ist sozusagen die Schnittstelle zwischen
beiden Organisationen. Informationen "ber HTTP gibt es beim W3C unter [Link]
Protocols/.
Neben der Integration bestehender Protokolle war in der Geburtsstunde des Web auch ein
neues Protokoll geboren, das (besser als bestehende 7bertragungsverfahren) auf die Bed"rf-
nisse von Hypertextsystemen zugeschnitten sein sollte. Getauft hat Berners-Lee seine Entwick-
lung auf den Namen Hypertext Transfer Protocol (HTTP). In der Version 1.1 kennt HTTP die
Befehle GET, POST, HEAD, PUT, DELETE, TRACE und OPTIONS. Die wichtigsten davon
sind:
GET
zur Anforderung eines Dokumentes von einem Server
POST
zur 7bertragung von Daten, die etwa Formulareingaben des Benutzer darstellen
HEAD
zur Abfrage von HTTP-Header-Informationen, ohne ein Dokument vollstndig laden zu
m"ssen
PUT
als Gegenst"ck zu GET zum 7bertragen eines Dokumentes zu einem Server
Die fr"h geforderte Multimedialitt des World Wide Web macht es notwendig, dass verschie-
denartige Inhalte von Dokumenten (Text, Graphik, Video, Audio usw.) mit einer Kennzeich-
nung versehen werden, damit der Empfnger (der Client) weiß, wie er die erhaltenen Daten
verarbeiten muss und ob er es "berhaupt kann. Diese Kennzeichnung folgt im Web der MIME-
Konvention. Urspr"nglich als Multipurpose Internet Mail Extensions f"r den Mailverkehr ent-
wickelt, wird MIME nun auch als Multimedia Internet Message Extensions f"r weitere Dienste,
darunter das World Wide Web, eingesetzt. An einem Beispiel ist die Verfahrensweise leicht
ersichtlich. Das HTTP ist aufgrund seiner textuellen Natur auch f"r Menschen lesbar. Folgende
Zeilen zeigen eine Telnet-Verbindung zu einem Web-Server.
Trying [Link]...
Connected to [Link].
Escape character is '^]'.
HEAD /pub/WWW/Addressing/ HTTP/1.0
Content-Type: text/html
Content-Length: 12094
Last-Modified: Wed, 16 Apr 1997 21:44:29 GMT
HTTP
ber TLS
In diesem Fall wird eine TLS-Verbindung hergestellt, "ber die dann HTTP „gesprochen“
wird. Eigenschaften dieser Vorgehensweise sind URIs, die mit https beginnen und Verbin-
dungen "ber den Port 443. Die Spezifikation ist in RFC 2818 zu finden.
TLS mit HTTP/1.1
In diesem Fall wird TLS "ber eine bestehende TCP-Verbindung abgewickelt. Dadurch lassen
sich gesicherte und ungesicherte HTTP-Nachrichten "ber denselben Port (80) schicken.
Details sind in RFC 2817 zu finden.
MIME-Typen f
r XHTML
Was unter einem MIME-Typ zu verstehen ist und wie er in HTTP benutzt wird, wurde soeben
schon erklrt. Bleibt die Frage, welcher MIME-Typ wof"r verwenden werden [Link] es nur
HTML gab, war die Angelegenheit relativ einfach, mittlerweile ist es kompliziert. Neben HTML
(text/html) gibt es XML (text/xml). Was ist mit XHTML? Einerseits handelt es sich um HTML,
andererseits XML. Außerdem gibt es XHTML in mehreren Geschmacksrichtungen. Dar"ber
hinaus kann man noch MathML oder SVG in XHTML einbetten. Das Problem ist nicht ganz trivial.
F"r einige wichtige Flle enthlt die W3C-Note „XHTML Media Types“ ([Link]
xhtml-media-types) L0sungsvorschlge. Der Text unterscheidet zwischen voneinander abwei-
chenden XHTML-Versionen, XHTML mit eingebettetem MathML und HTML.
text/html ist im Allgemeinen nicht f"r XHTML geeignet, sondern nur f"r HTML. Er darf jedoch
verwendet werden, wenn ltere Browser XHTML darstellen sollen. In diesem Fall halten sich
die XHTML-Dokumente an die HTML-Kompatibilittsrichtlinien aus der XHTML 1-Spezifikati-
on. Dazu geh0rt, dass ein leeres Element wie <br/> (korrekte XHTML-Schreibweise) nun als
<br /> geschrieben wird. Das Leerzeichen vor dem Schrgstrich sorgt daf"r, dass alte Browser
das als br erkennen. Aber auch in diesem Fall sollte man text/html nur f"r XHTML 1 verwen-
den. Der Einsatz mit kombinierten Sprachen, wie XHTML+MathML ist nicht zulssig.
Außerdem ist unbedingt anzuraten, eine explizite Angabe "ber die Zeichenkodierung zu
machen. Fehlt eine solche Angabe, k0nnte man annehmen, das UTF-8 oder UTF-16 f"r XHTML
erlaubt sind, da es sich ja um Defaults f"r XML handelt. Bei Verwendung von text/html weist
die zugeh0rige Spezifikation („The 'text/html' Media Type“, RFC 2854) darauf hin, dass durch
RFC 2046 (MIME) als Default-Kodierung US-ASCII anzunehmen ist. Diesen Widerspruch kann
<edition
[Link]>
man verlsslich durch Angabe der Zeichenkodierung in der XML-Deklaration (<?xml version=:
"1.0:" encoding=:"ISO-8859-1:"?>) und im meta-Element (<meta http-equiv="Content-Type" con-
tent="text/html; charset=ISO-8859-1" />) vermeiden.
Prinzipiell sollte man f"r XHTML-Dokumente den MIME-Typ application/xhtml+xml benutzen,
allerdings um den Preis, dass der Großteil der Browser heute damit nichts anfangen kann.
Selbstverstndlich kann auch application/xml f"r XHTML verwendet werden, schließlich sind
XHTML-Dokumente g"ltige XML-Instanzen. Mit diesem MIME-Typ verliert man jedoch die
Behandlung des Dokuments als XHTML-Dokument. Durch Einsatz von Stylesheets (etwa CSS)
lsst sich auf der gestalterischen Seite einiges ausgleichen, aber die Ber"cksichtigung der beson-
deren Semantik einiger Elemente (beispielsweise Links, Formulare und so weiter) ist verloren.
Fehlt bei der Verwendung von application/xml auf MIME-Ebene die Angabe der Zeichenkodie-
rung, muss das empfangende Programm anhand der durch XML 1.0 definierten Regeln die
Kodierung bestimmen. Im Gegensatz dazu gilt f"r text/xml dasselbe wie f"r text/html: Fehlt die
Kodierungsangabe auf MIME-Ebene, geben die „XML Media Types“ (RFC3023) US-ASCII vor.
Die Problematik wird in der W3C-Note in folgender Tabelle zusammengefasst. Ber"cksichtigt
man die aktuelle Browser-Situation, bedeutet das f"r den Einsatz von XHTML: beschrnken auf
XHTML 1, beachten der HTML-Kompatibilittsrichtlinien, deklarieren als text/html sowie voll-
stndige Angabe der Zeichenkodierung (XML-Deklaration und meta).
Es ist momentan nicht leicht, einerseits standardkonform zu bleiben und andererseits mit den
aktuellen Browsern kompatibel. Da die Entwicklung der Browser schnell voranschreitet, ver-
weisen wir an dieser Stelle auf eine Online-Quelle: Unter [Link]
test/xhtml/media-types/ finden Sie einen Test, der feststellt, welcher Browser welchen MIME-
Typ akzeptiert. Selbstverstndlich sind die Ergebnisse f"r bereits getestete Browser dort ver-
0ffentlicht.
Jedes HTML-Dokument, oder allgemeiner jedes Objekt, das im Netz erreichbar ist, soll "ber
eine eindeutigen Bezeichner adressierbar sein. Die Objekte nennt man auch Ressource. Der
Bezeichner heißt Uniform Resource Identifier (URI). Dessen Syntax wird in RFC 2396 fest-
gelegt.
Beispiele sieht man bei der tglichen Arbeit mit dem World Wide Web stndig, dennoch sei
eines genannt: [Link] Bei der Ressource, die damit adressiert
wird, handelt es sich um ein HTML-Dokument. Nebenbei sei bemerkt, dass dort Pressebe-
richte "ber unsere Buchreihe zu finden sind. Ein URI besteht aus mehreren Teilen. Der erste
Teil (hier: http) wird „Schema“ (engl.: Scheme) genannt. Im obigen Beispiel gibt das Schema an,
wie das Dokument zu erreichen ist, nmlich per HTTP. Es handelt sich bei diesem URI deshalb
um einen Spezialfall, den Uniform Resource Locator (URL). Auch wenn dieser Begriff mittler-
weile als veraltet gilt, RFC 2396 beschreibt ihn so: „Der Ausdruck Uniform Resource Locator
(URL) bezeichnet die Vertreter der URIs, die Ressourcen durch Nennung ihres primren
Zugriffsmechanismus' (z. B. ihren Aufenthaltsort im Netzwerk) beschreiben, anstatt sie durch
ihren Namen oder andere Eigenschaften zu identifizieren. Der Ausdruck Uniform Resource
Name (URN) bezeichnet die Vertreter der URIs, von denen verlangt wird, dass sie global ein-
deutig und bestndig bleiben, selbst wenn die Ressource nicht mehr existiert oder nicht mehr
erreichbar ist.“
Beim Schreiben von HTML-Texten d"rften URIs mit dem http-Schema am hufigsten Anwen-
dung finden. Dennoch sind andere Schemata wichtig. Eine offizielle Liste der URI-Schemata ist
bei der Internet Assignet Names Authority (IANA) zu finden: [Link]
uri-schemes. Mit Stand vom 11. Mrz 2003 sind folgende Namen bei der IANA reserviert:
<edition
[Link]>
Die bekannten Namen wie http, ftp oder mailto bed"rfen keiner weiteren Beispiele. Interes-
sant, insbesondere f"r den Aufbau von Firmen-Websites d"rften die Namen tel und fax sein.
Das folgende Beispiel illustriert eine m0gliche Verwendung auf dem Website von Addison-
Wesley:
Auf den ersten Blick mag es wenig Sinn machen, Telefon- und Faxnummern als URI anzugeben.
Doch lngst ist es "blich Faxe per Computer zu verschicken und auch Software zur IP-Telefo-
nie ist keine Science-Fiction. Je nach Ausstattung seines Computers kann ein Benutzer obige
Links anklicken und es startet seine Fax- respektive Telefon-Software. Letztere beginnt m0gli-
cherweise gleich den Whlvorgang.
Das W3C versteht sich selbst nicht als Normierungsorganisation. Derer gibt es aus deutsch-
sprachiger Sicht vier: eine internationale und je eine nationale in Deutschland, 8sterreich und
der Schweiz.
Die Internationale Organisation f>r Normierung (ISO), mit Sitz in Genf, ist nat"rlich ebenfalls im
Web vertreten: [Link] Deutsches Mitglied der ISO ist das Deutsche Institut f>r Nor-
mung e.V. (DIN, [Link] Die 0sterreichische Vertretung ist das @sterreichische Nor-
mungsinstitut (ON, [Link] und die Schweiz wird durch die Schweizerische Nor-
men-Vereinigung (SNV, [Link] vertreten. Im technischen Bereich muss neben der
ISO unbedingt die 40 Jahre fr"her gegr"ndete International Electrotechnical Commission (IEC,
[Link] erwhnt werden. Aufgrund der Zusammenarbeit tragen viele Normen das
Prfix ISO/IEC.
<edition
[Link]>
OASIS ist eine Organisation, die sich der Verbreitung von offenen Standards wie XML ver-
schrieben hat. Im Gegensatz zum W3C gibt sie selbst keine technischen Spezifikationen heraus.
Außerdem ist die Mitgliedschaft nicht auf Firmen beschrnkt, sondern steht auch Einzelper-
sonen offen. Die OASIS-Homepage ist unter [Link] OASIS betreibt auch
das Portal [Link] unter der gleichnamigen Adresse [Link]
OASIS ist gemeinsam mit den Vereinten Nationen verantwortlich f"r das Projekt Electronic Busi-
ness XML ([Link]
Ein f"r den praktischen Einsatz von XML sehr wichtiger Aspekt wird vom W3C nicht adres-
siert: Das Auffinden von externen Entities. Im Gegensatz zu SGML muss bei XML f"r externe
Entities immer ein System-Identifier angegeben werden. In XML-Dokumenten ist dies ein URI.
Damit ist das Problem der Entity-Referenzierung aus W3C-Sicht erledigt. In der Praxis ist die-
ser formale Standpunkt oft nicht zufriedenstellend. Doch schon zu SGML-Zeiten gab es eine
L0sung: Ein Katalog, der global eindeutige Entity-Namen (damals:Formal Public Identifier (FPI);
heute mehr und mehr: URI) auf lokale Namen abbildet. Eine Initiative f"r XML Catalogs gibt es
([XMLcat]); praktisch werden nach wie vor die alten, etablierten SGML Open Catalogs eingesetzt
([SOcat]) und auch von vielen XML-Programmen unterst"tzt.
HTML-Formulare sind vergleichsweise pl0tzlich im Web aufgetaucht. Sie wurden in der zwei-
ten Jahreshlfte 1993 im XMosaic-Browser implementiert. Zu dieser Zeit gab es nur zwei ver-
breitete Web-Server, den vom NCSA (Vorlufer des Apache-Servers) und den vom CERN. Es
stellte sich die Frage, wie Daten, die vom Benutzer in Formulare eingetragen wurden, zum Ser-
ver "bertragen und von diesem an ein verarbeitendes Programm "bertragen werden. Die
7bertragung zum Server erfolgt durch Anhngen an einen URI (Get-Methode) oder als Inhalt
der HTTP-Nachricht (Post-Methode). Die Entwickler am National Center f"r Supercomputing
Applications (NCSA) haben einen Vorschlag gemacht, wie die Daten auf dem Server-Rechner
an ein beliebiges Programm "bergeben werden k0nnen: das Common Gateway Interface. Das
Ziel der Entwickler war eine L0sung, die es gestattet, ein so genanntes CGI-Programm mit
beliebigen Server-Programmen benutzen zu k0nnen; es sollte keine L0sung nur f"r den NCSA-
Server sein. Daher kommt der Name Common Gateway Interface.
Da CGI im Unix-Umfeld entwickelt wurde, war es naheliegend, dass Daten per Standardein-
gabe (STDIN) und durch Umgebungsvariablen "bergeben werden. Die Dokumentation von
CGI ist nach fast zehn Jahren noch immer unter der selben Adresse zu finden: The Common
Gateway Interface, [Link]
Wer ein Bourne-Shell-Skript f"r die Auswertung von per HTTP "bertragenen Daten schreiben
m0chte, wird nach wie vor sehr direkt mit dem CGI in Ber"hrung kommen. F"r die meisten
komfortableren Programmiersprachen, wie etwa Perl oder PHP, ist eine „manuelle“ Auswer-
tung der CGI-Parameter nicht mehr n0tig. F"r Perl beispielsweise gibt es ein Modul, dass die
CGI-Parameterwerte in ein Perl-Objekt umwandelt und in einer f"r die Programmiersprache
nat"rlichen Weise zur Verf"gung stellt.
Literatur
BeMi2000
Henning Behme und Stefan Mintert. XML in der Praxis, Addison-Wesley, M"nchen 2000
Clark97
James Clark. Comparison of SGML and XML,1997. [Link]
xml-971215
Goldfarb97
Charles F. Goldfarb. The SGML History Niche, 1997. [Link]
[Link]
Raggett98
Dave Raggett, Jenny Lam, Ian Alexander, Michael Kmiec. HTML 4, Addison-Wesley, Bonn
1998
SOcat
Paul Grosso (Subcommitee chair). Entity Management - OASIS Technical Resolution
9401:1997 (Amendment 2 to TR 9401), OASIS, 10. September 1997. [Link]
[Link]/specs/[Link]
W3C7pt
Das World Wide Web Consortium (W3C) in sieben Punkten, 7bersetzung von Henning
Fischer, 6.4.2002. [Link]
W3CTR
W3C Technical Reports and Publications. [Link] Deutsche 7bersetzun-
gen siehe [Link]
XML10pt
W3C Communication Team. XML in 10 Punkten, 7bersetzung von Henning Fischer, 2002.
[Link]
XMLcat
Norman Walsh (editor). XML Catalogs, OASIS, 6. August 2001. [Link]
committees/entity/[Link]
XMLspec21
Guide to the W3C XML Specification ("XMLspec") DTD, Version 2.1. [Link]
[Link]/XML/1998/06/[Link]
<edition
[Link]>
A
< Die HTML 4.01-
Spezifikation >
Page size: 168,00 x 240,00 mm
<edition
[Link]>
HTML 4.01-Spezifikation
Deutsche bersetzung
Die HTML 4.01- Spezifikation
Diese Version:
[Link]
Aktuelle Version:
[Link]
bersetzer:
Christine Khnel ( bersetzung, fachliche Kommentierung)
<kuehnel@[Link]>
Stefan Schumacher ( bersetzung, fachliche Kommentierung)
<sts@[Link]>
Stefan Mintert (Fachlektorat und fachliche Kommentierung)
Bei diesem Dokument handelt es sich um eine bersetzung eines W3C-Textes. Dieser
Text ist urheberrechtlich geschtzt; bitte beachten Sie die nachfolgenden Hinweise des
Originaldokuments. Die Rechte an der bersetzung liegen bei den bersetzern und
dem Verlag Addison-Wesley. Die bersetzung hat keine durch das W3C legitimierte,
normative Wirkung. Das einzige maßgebliche Dokument ist das englische Original.
Bitte senden Sie Fehler und Korrekturen zur deutschen Fassung an die bersetzer.
Kommentare der bersetzer, die als solche gekennzeichnet sind, unterliegen dem
Urheberrecht der bersetzer. Sie sind nicht Bestandteil des Ursprungsdokuments.
Diese Ver=ffentlichung ist eine Vorver ffentlichung. Kein Teil dieses Textes darf kopiert
werden. Alle Rechte vorbehalten. Nach Abschluss der Arbeit wird das endgltige
Dokument unter der oben angegebenen Adresse ver=ffentlicht. Die jetzige Ver=ffent-
lichung w@hrend der laufenden Arbeit dient zur Information von Interessierten und zur
Prfung durch die Fach=ffentlichkeit. Sollten Sie Fehler finden oder Verbesserungsvor-
schl@ge haben, schicken Sie diese bitte per Mail an die bersetzer.
Copyright L1997-1999 W3CM (MIT, INRIA, Keio), All Rights Reserved. W3C liability,
trademark, document use and software licensing rules apply.
Zusammenfassung
Diese Spezifikation definiert die HyperText Markup Language (HTML), die Sprache fr Ver-
=ffentlichungen im World Wide Web. Diese Spezifikation definiert HTML 4.01, eine ber-
arbeitung von HTML 4. Zus@tzlich zu den Text-, Multimedia und Hyperlink-Funktionen der fr-
heren HTML-Versionen (HTML 3.2 [HTML32] und HTML 2.0 [RFC1866]), untersttzt HTML
4 mehr Multimedia-Erweiterungen, Skript-Sprachen, Stylesheets, bessere Druckfunktionen,
sowie zug@nglichere Dokumente fr behinderte Benutzer. HTML 4 macht auch große Schritte
im Hinblick auf die Internationalisierung von Dokumenten, mit dem Ziel, das Netz wirklich
weltweit zu machen (World Wide Web).
HTML 4 ist eine zum internationalen Standard ISO 8879 konforme SGML-Anwendung (Stan-
dard Generalized Markup Language [ISO8879]).
<edition
[Link]>
Referenz zitiert werden. Die Rolle des W3C bei der Erstellung dieser Recommendation ist es,
die Spezifikation bekannt zu machen und ihren breiten Einsatz zu f=rdern. Dies erh=ht die
Funktionalit@t und Interoperabilit@t des Webs.
Das W3C empfiehlt, dass Benutzerprogramme und Autoren (und im besonderen Programme
Die HTML 4.01- Spezifikation
zur Erstellung von Web-Seiten) Dokumente bevorzugt in HTML 4.01 erzeugen und nicht in
HTML 4.0. Das W3C empfiehlt, dass Autoren HTML 4-Dokumente erstellen, statt HTML
3.2-Dokumente. Aus Grnden der Rckw@rtskompatibilit@t empfiehlt das W3C zus@tzlich, dass
Programme, die HTML 4 interpretieren, auch weiterhin HTML 3.2 und HTML 2.0 unterstt-
zen.
Informationen ber die n@chste Generation von HTML, die „Extensible HyperText Markup
Language“[XHTML], finden Sie bei der W3C HTML Activity ([Link] und
in der Liste der W3C Technical Reports ([Link]
Dieses Dokument wurde als Teil der W3C HTML Activity ([Link]
erstellt. Die Ziele der HTML Working Group ([Link] nur
fr Mitglieder: [Link] werden in der HTML Working Group
Charter ([Link] nur fr Mitglieder: [Link]
MemberAccess/) besprochen.
Eine Liste der aktuellen W3C-Recommendations und anderer technischer Dokumente ist
unter [Link] zu finden.
Sffentliche Diskussionen zu HTML-Gesichtspunkten werden in der Mailingliste www-
html@[Link] gefhrt (Archiv: www-html@[Link]).
Verf-gbare Sprachen
Die englische Version dieser Spezifikation ist die einzige normative Version. bersetzungen
dieses Dokuments finden Sie unter [Link]
Errata
Die Liste der bekannten Fehler in dieser Spezifikation ist verfgbar unter
[Link]
Das kurze SGML-Tutorial kl@rt den Leser im Grundsatz ber die Beziehung von HTML zu
SGML auf und gibt einen berblick, wie die Dokumenttyp-Definition (DTD) von HTML zu
lesen ist.
Abschnitt 4 bis 24: HTML 4-Referenzhandbuch
1.2 Dokumentkonventionen
Dieses Dokument wurde fr zwei Lesergruppen geschrieben: Autoren und Entwickler. Wir
hoffen, dass die Spezifikation Autoren mit den n=tigen Werkzeugen ausstatten wird, um effi-
ziente, attraktive und zug@ngliche Dokumente zu schreiben, ohne sie mit den Details der
HTML-Implementation zu berfordern. Entwickler sollten jedoch alles finden, was sie ben=ti-
gen, um konforme Benutzerprogramme zu erstellen.
Die Spezifikation kann von verschiedenen Seiten angegangen werden:
<edition
[Link]>
· Vom Anfang bis zum Ende lesen. Die Spezifikation beginnt mit einer allgemeinen Dar-
stellung von HTML und wird zum Ende mehr und mehr technisch und geht in die Details.
· Schneller Zugang zu Informationen. Um an Informationen ber die Syntax und
Semantik so schnell wie m=glich zu kommen, enth@lt die Online-Version der Spezifikation
Die HTML 4.01- Spezifikation
Um sich vom umgebenden Text abzuheben, sind informelle Bemerkungen hervorgehoben, und
werden von einigen Benutzerprogrammen eventuell besonders dargestellt.
Alle Beispiele, die missbilligten Sprachgebrauch verdeutlichen sollen, sind als „MISSBILLIGTES
BEISPIEL“ gekennzeichnet. Missbilligte Beispiele beinhalten auch empfohlene alternative L=sun-
gen. Alle Beispiele, die nicht erlaubten Sprachgebrauch verdeutlichen, sind klar als „UNER-
LAUBTES BEISPIEL“ gekennzeichnet.
Beispiele und Bemerkungen wurden ausgezeichnet und werden eventuell von einigen Benutzer-
programmen besonders dargestellt.
1.3 Danksagungen
Dank an alle, die mitgeholfen haben, den Working Draft zu erstellen, der zur HTML 4-Spezifika-
tion fhrte, und an all diejenigen, die Vorschl@ge und Korrekturen eingebracht haben.
Vielen Dank an die Web Accessibility Initiative Task Force (WAI HC Group) fr ihre Arbeit
zur Verbesserung der Zug@nglichkeit in HTML und an T.V. Raman (Adobe) fr seine frhe
Arbeit bei der Entwicklung von zug@nglichen Formularen.
Die Autoren dieser Spezifikation, die Mitglieder der W3C HTML Working Group, verdienen
große Anerkennung fr ihre gewissenhafte Bearbeitung dieses Dokuments, ihre konstruktiven
Kommentare und ihre harte Arbeit: John D. Burger (MITRE), Steve Byrne (JavaSoft), Martin J.
Drst (University of Zurich), Daniel Glazman (ElectricitW de France), Scott Isaacs (Microsoft),
Vielen Dank an Shane McCarron fr die Fehlerverfolgung zu dieser Version der Spezifikation.
2 Einf-hrung in HTML 4
2.1 Was ist das World Wide Web?
Das World Wide Web (Web) ist ein Netzwerk von Informationsquellen. Um diese Ressourcen
dem gr=ßtm=glichen Publikum problemlos verfgbar zu machen, sttzt sich das Web auf drei
Mechanismen:
1. Ein einheitliches Namensschema zum Lokalisieren von Ressourcen im Web (z. B. URIs)
2. Protokolle fr den Zugriff auf benannte Ressourcen ber das Web (z. B. HTTP)
3. Hypertext zur einfachen Navigation zwischen den Ressourcen (z. B. HTML)
Die Zusammenh@nge zwischen den drei Mechanismen sind in der gesamten Spezifikation erkennbar.
<edition
[Link]>
werden kann.
URIs bestehen blicherweise aus drei Teilen:
1. Dem Namensschema des fr den Zugriff auf die Ressource verwendeten Mechanismus
2. Dem Namen des Rechners, auf dem sich die Ressource befindet
3. Dem Namen der Ressource selbst, angegeben als Pfad
Nehmen wir den URI, der die „Technical Reports“ des W3C kennzeichnet:
[Link]
Dieser URI kann folgendermaßen gelesen werden: Es gibt ein via HTTP-Protokoll verfgbares
Dokument (s. [RFC2616]), das sich auf dem Rechner [Link] befindet und ber den Pfad
„/TR“ erreichbar ist. Andere Schemata, die Ihnen in HTML-Dokumenten begegnen k=nnen,
enthalten „mailto“ fr Email und „ftp“ fr FTP.
Anmerkung der bersetzer: In gewissem Sinne ist dies kein so gutes Beispiel.
Zwar liefert der Web-Browser bei Eingabe von [Link] die gewnschte
Seite; wer aber genau hinsieht, stellt fest, dass die Adresse nach dem Laden anders lau-
tet: [Link] Der Schr@gstrich am Ende rhrt daher, dass der Server bei
Zugriff auf /TR eine Umlenkung ausl=st. Das heißt, der Browser wird angwiesen, es
doch noch einmal an anderer Stelle zu probieren, in diesem Fall /TR/.
Auf Protokollebene sieht das so aus: Zuerst der Zugriff auf /TR:
Zu erkennen ist die Antwort „301 Moved Permanently“ und die neue Adresse „Loca-
tion: [Link] Nun zum Vergleich der Zugriff auf /TR/:
HTTP/1.1 200 OK
Date: Fri, 29 Nov 2002 18:11:37 GMT
Server: Apache/1.3.26 (Unix) PHP/3.0.18
P3P: policyref="[Link]
Cache-Control: max-age=600
Expires: Fri, 29 Nov 2002 18:21:37 GMT
Last-Modified: Sat, 16 Nov 2002 15:56:59 GMT
ETag: "3dd66acb"
Accept-Ranges: bytes
Content-Length: 102136
Connection: close
Content-Type: text/html; charset=iso-8859-1
Hier die Antwort „200 OK“. Im ersten Fall werden also zwei HTTP-Anfragen ben=tigt.
Hier ist ein weiteres Beispiel fr einen URI. Dieser weist auf die Mailbox eines Benutzers:
Anmerkung: Den meisten Lesern wird der Begriff „URL“ gel,ufig sein, nicht aber der Begriff „URI“.
URLs bilden eine Teilmenge des umfassenderen URI-Namensschemas. n
Einige URIs weisen auf eine Stelle innerhalb einer Ressource. Diese Art von URIs endet mit
„#“, gefolgt von Bezeichnern fr einen Anker (genannt Fragmentbezeichner). Zum Beispiel
zeigt dieser URI auf einen Anker namens section_2:
[Link]
Ein relativer URI enth@lt keinerlei Namensschemainformationen. Sein Pfad weist im Allgemei-
nen auf eine Ressource auf demselben Rechner wie das aktuelle Dokument. Relative URIs k=n-
nen relative Pfadkomponenten (z. B. meint „..“ die n@chsth=here Ebene in der durch den Pfad
festgelegten Hierarchie) und auch Fragmentbezeichner enthalten.
Relative URIs werden unter Verwendung eines Basis-URIs zu vollst@ndigen URIs aufgel=st. Als
Beispiel fr die Aufl=sung relativer URIs nehmen wir an, wir h@tten den Basis-URI
„[Link] Der relative URI in folgender Auszeichnung eines
Hypertext-Links
<A href="[Link]">Suppliers</A>
<edition
[Link]>
HTML wurde ursprnglich von Tim Berners-Lee w@hrend seiner CERN-Zeit entwickelt und
durch den von NCSA geschaffenen Mosaic-Browser popul@r gemacht. Mit dem explosiven
Wachstum des Web erblhte es w@hrend der Neunzigerjahre. In dieser Zeit wurde HTML auf
mehrere Arten erweitert. Das Web ist darauf angewiesen, dass Autoren von Webseiten und
Produkthersteller dieselben Konventionen fr HTML einhalten. Das hat zur gemeinsamen
Arbeit an Spezifikationen fr HTML angeregt.
HTML 2.0 (November 1995, s. [RFC1866]) wurde unter der Leitung der Internet Engineering
Task Force (IETF) entwickelt, um die Ende 1994 g@ngige Praxis zu formalisieren. HTML+ (1993)
und HTML 3.0 (1995, s. [HTML30]) schlugen reichhaltigere Versionen von HTML vor. Obwohl
in den Diskussionen der Standards nie ein Konsens erreicht wurde, fhrten diese Entwrfe zur
bernahme einer Auswahl von neuen Features. Die Bemhungen der HTML Working Group
des World Wide Web Consortiums to codify common practice in 1996 endeten mit HTML
3.2 (January 1997, s. [HTML32]). Onderungen gegenber HTML 3.2 sind in Anhang A zusam-
mengestellt.
Die Mehrheit ist sich darin einig, dass HTML-Dokumente ber verschiedene Browser und
2.3 HTML 4
HTML 4 erweitert HTML um Mechanismen fr Stylesheets, Scripting, Frames, eingebundene
Objekte, verbesserte Untersttzung fr von rechts nach links zu lesende Texte sowie Texte
mit unterschiedlichen Leserichtungen, reichhaltigere Tabellen und fr Menschen mit Behin-
derungen bessere Zug@nglichkeit bietende Erweiterungen bei Formularen.
HTML 4.01 ist eine berarbeitung von HTML 4.0, in der Fehler korrigiert und einige Onderun-
gen seit der vorhergehenden berarbeitung vorgenommen wurden.
2.3.1 Internationalisierung
Diese HTML-Version wurde mit Hilfe von Experten auf dem Gebiet der Internationalisierung
gestaltet, so dass Dokumente in jeder Sprache geschrieben und problemlos um die Welt trans-
portiert werden k=nnen. Erreicht wurde das durch die Einbeziehung von [RFC2070], der sich
mit der Internationalisierung von HTML befasst.
Ein bedeutender Schritt war die Aufnahme des Standards ISO/IEC:10646 (siehe [ISO10646])
als Dokument-Zeichensatz fr HTML. Dies ist der weltweit umfassendste Standard zu Fragen
der Darstellung internationaler Zeichen, Leserichtung, Zeichensetzung und anderer Themen
bezglich der Sprachen der Welt.
HTML bietet jetzt weitreichendere Untersttzung fr verschiedene menschliche Sprachen
innerhalb eines Dokuments. Dies erm=glicht die effektivere Indizierung von Dokumenten
durch Suchmaschinen, qualitativ bessere Typographie, eine bessere Text-nach-Sprache-Kon-
vertierung, bessere Silbentrennung usw.
<edition
[Link]>
N@heres dazu finden Sie auf der zugeh=rigen Web-Site unter [Link]
national/.
Die HTML 4.01- Spezifikation
2.3.2 [Link]
Da die Web-Community w@chst und ihre Mitglieder sich in ihren F@higkeiten und ihrem K=n-
nen voneinander unterscheiden, ist es entscheidend, dass die zugrunde liegenden Technologien
an deren spezifische Bedrfnisse angepasst sind. HTML wurde darauf ausgelegt, Webseiten fr
Menschen mit physischen Einschr@nkungen besser zug@nglich zu machen. Folgende HTML
4-Entwicklungen sind durch die wachsende Bedeutung der Zug@nglichkeit angeregt worden:
· Bessere Trennung zwischen Dokumentstruktur und Pr@sentation, demzufolge F=rderung
der Nutzung von Stylesheets anstelle von HTML-Pr@sentationselementen und -Attributen.
· Bessere Formulare, darin enthalten die Erg@nzung um Zugriffstasten, die F@higkeit, Formu-
lar-Kontrollelemente semantisch zu gruppieren, die F@higkeit, SELECT-Optionen semantisch
zu gruppieren, und wirkliche Labels.
· Die F@higkeit, im Markup eingebundener Objekte (mit dem OBJECT-Element) eine Text-Be-
schreibung anzugeben.
· Ein neuer Mechanismus fr clientseitige Imagemaps (MAP-Element), der Autoren gestattet,
Bild- und Textlinks zu integrieren.
· Die Forderung, dass mit dem IMG-Element eingebundene Bilder und durch das AREA-Element
eingebundene Imagemaps von alternativem Text begleitet werden.
·· Untersttzung fr title- und das lang-Attribut bei allen Elementen.
Untersttzung fr das ABBR- und das ACRONYM-Element.
·· Ein breiteres Spektrum von Zielmedien (TTY, Braille usw.) zur Nutzung mit Stylesheets.
Bessere Tabellen, die berschriften, Spaltengruppen und Mechanismen zur F=rderung
nichtvisueller Darstellung beinhalten.
· Langbeschreibungen (long descriptions) von Tabellen, Bildern, Frames usw.
Autoren, die die Aspekte der Zug@nglichkeit nicht aus den Augen verlieren w@hrend sie Seiten
gestalten, werden nicht nur den Segen der Accessibility-Gemeinschaft empfangen, sie werden
auch in anderer Form Nutzen daraus ziehen: wohlgestaltete HTML-Dokumente, die Struktur
und Pr@sentation trennen, werden sich leichter an neue Technologien anpassen.
Anmerkung: Fr mehr Informationen ber die Gestaltung zug,nglicher HTML-Dokumente lesen Sie
bitte [WAI]. n
2.3.3 Tabellen
Das neue Tabellen-Modell in HTML basiert auf [RFC1942]. Autoren haben jetzt gr=ßere Kont-
rolle ber Struktur und Layout (z. B. Spaltengruppen). Dass Designer in der Lage sind, Spalten-
breiten zu empfehlen, erlaubt es Benutzerprogrammen, Tabellendaten inkrementell (so, wie sie
eintreffen) anzuzeigen, ohne auf die vollst@ndige Tabelle warten zu mssen bevor sie sie dar-
stellen.
Anmerkung: Einige Autorenwerkzeuge sttzen sich fr Formatierungen beim Schreiben sehr stark
auf Tabellen; das kann leicht zu Problemen bzgl. der Zug,nglichkeit fhren. n
2.3.5 Stylesheets
Stylesheets vereinfachen das HTML-Markup und entlasten HTML erheblich von der Verant-
wortung fr die Pr@sentation. Sie geben sowohl Autoren als auch Nutzern Kontrolle ber die
Pr@sentation von Dokumenten – ber Schriftarten, Ausrichtungen, Farben usw.
Style-Informationen k=nnen fr einzelne Elemente oder Gruppen von Elementen angegeben
werden. Style-Informationen k=nnen innerhalb eines HTML-Dokuments oder in externen
Stylesheets angegeben werden.
Der Mechanismus der Zuordnung eines Stylesheets zu einem Dokument ist unabh@ngig von
der Stylesheet-Sprache.
Vor dem Erscheinen der Stylesheets hatten Autoren eingeschr@nkte Kontrolle ber die Dar-
stellung. HTML 3.2 beinhaltete eine Anzahl von Attributen und Elementen, die Kontrolle ber
Ausrichtung, Schriftgr=ße und Textfarbe anboten. Die Autoren nutzten darber hinaus Tabel-
len und Graphiken als Layout-Hilfsmittel. Es wird eine verh@ltnism@ßig lange Zeit dauern, bis
die Benutzer ihre Browser ersetzt haben, d. h., diese Features werden noch fr einge Zeit Ver-
wendung finden. Wie dem auch sei, da Stylesheets m@chtigere Pr@sentations-Mechanismen bie-
ten, wird das World Wide Web Consortium letzten Endes viele der HTML-Pr@sentationsele-
mente und -attribute nach und nach zurckziehen. In der gesamten Spezifikation sind die
gef@hrdeten Elemente und Attribute als „missbilligt“ (siehe Abschnitt 4) gekennzeichnet. Sie
werden begleitet von Beispielen, die zeigen, wie derselbe Effekt mit anderen Elementen oder
Stylesheets zu erreichen ist.
2.3.6 Scripting
Mit Hilfe von Skripten k=nnen Autoren dynamische Webseiten gestalten (z. B. „Intelligente For-
mulare“ („Smart Forms“), die reagieren, wenn Benutzer sie ausfllen) und HTML als Werkzeug
verwenden, um Netz-Applikationen zu bauen.
Anmerkung der bersetzer: „Intelligent“ sind Formulare dann, wenn sie bereits
beim Ausfllen auf Eingaben des Benutzers reagieren, z. B. Werte auf Zul@ssigkeit hin
prfen, Formularfelder in Abh@ngikeit von in anderen Feldern eingetragenen Werten
vorbelegen usw. Da das bereits auf dem Client passiert, werden Formulare deutlich
benutzerfreundlicher. Als Autor sollte man aber stets daran denken, dass zwingend not-
wendige Prfungen eingegebener Werte nicht ausschließlich durch clientseitige Skripte
<edition
[Link]>
erfolgen sollten. Ein Formular soll auch dann benutzbar sein, wenn Scripting nicht zur
Verfgung steht, sei es, weil der Browser Scripting generell oder fr die gew@hlte
Skriptsprache nicht untersttzt, sei es, weil der Benutzer Scripting deaktiviert hat.
Die HTML 4.01- Spezifikation
Die zum Einbinden von Skripten angebotenen Mechanismen sind unabh@ngig von der Skript-
sprache.
2.3.7 Drucken
Manchmal werden Autoren wnschen, es Benutzern leicht zu machen, mehr als nur das aktu-
elle Dokument zu drucken. Wenn Dokumente Teil einer gr=ßeren Arbeit sind, kann der
Zusammenhang zwischen ihnen durch das HTML-LINK-Element oder mit Hilfe des „Resource
Description Framework (RDF)“ (s. [RDF10]) vom W3C beschrieben werden.
HTML hat seine Wurzeln in SGML, das stets eine Sprache zur Spezifikation strukturierter Aus-
zeichnungen war. So wie sich HTML entwickelt, werden mehr und mehr seiner Pr@sentations-
elemente und -attribute durch andere Mechanismen ersetzt werden, insbesondere durch Style-
sheets. Die Entwicklung hat gezeigt, dass die Trennung der Struktur eines Dokuments von sei-
nen Pr@sentationsaspekten die Kosten fr die Bedienung eines breiten Spektrums von Plattfor-
men, Medien usw. reduziert und die berarbeitung von Dokumenten erleichtert.
Um das Web zug@nglicher fr jedermann zu machen, insbesondere fr jene Personen mit
Behinderungen, sollten Autoren darber nachdenken, wie ihre Dokumente auf verschiedenen
Plattformen dargestellt werden k=nnten wie z. B. durch sprachbasierte Browser, Braille-Leser
usw. Wir fordern nicht etwa dazu auf, dass Autoren ihre Kreativit@t einschr@nken, sondern
lediglich, dass sie alternative Darstellungen in ihrem Design bedenken. HTML bietet eine Anzahl
von Mechanismen dafr (z. B. das alt-Attribut, das accesskey-Attribut usw.)
Darber hinaus sollten Autoren bedenken, dass ihre Dokumente ein weit entferntes Publikum
mit anderen Computer-Konfigurationen erreichen k=nnten. Damit Dokumente korrekt inter-
pretiert werden, sollten Autoren in ihre Dokumente Informationen ber die natrliche Spra-
che und die Leserichtung des Textes aufnehmen, darber, wie das Dokument kodiert ist, und
ber andere Aspekte, die im Zusammenhang mit der Internationalisierung stehen.
Durch sorgf@ltige Gestaltung ihrer Tabellen und Einsatz der neuen Tabellen-Features von
HTML 4 k=nnen Autoren Benutzerprogrammen helfen, Dokumente schneller darzustellen.
Anmerkung der bersetzer: HTML basiert auf SGML. Aus diesem Grund ist die
Diskussion des Verh@ltnisses in diesem Kapitel wichtig. Mittlerweile ist HTML aber von
XHTML abgel=st worden. XHTML basiert auf XML, nicht mehr auf SGML. Und obwohl
HTML inhaltlich auch heute noch ein sehr wichtiger Standard ist, sind die nachfolgenden
Ausfhrungen ber SGML fr XHTML nicht mehr uneingeschr@nkt zutreffend. Aus die-
sem Grund finden Sie im Folgenden eine Reihe von Kommentaren, die die Gltigkeit
der Aussagen aus Sicht von XHTML korrigieren.
Ein einfhrender Artikel zum Thema SGML ist im Web unter [Link]
xml/ zu finden. An gleicher Stelle gibt es auch Einfhrungen in XML. Eine deutsche
bersetzung des XML-Standards ([Link] ist ebenso
wie eine deutsche bersetzung von XHTML ([Link]
als Teil des deutschen W3C- bersetzungsprojekts entstanden.
<edition
[Link]>
Ein HTML-Dokument unterteilt sich in einen Kopf (Head) (hier zwischen <HEAD> und
</HEAD>) und einen Rumpf (Body) (hier zwischen <BODY> und </BODY>). Der Titel eines
Dokuments erscheint (zusammen mit anderen Informationen ber das Dokument) im Kopf;
der Inhalt des Dokuments steht im Rumpf. Der Rumpf in diesem Beispiel enth@lt lediglich einen
Die HTML 4.01- Spezifikation
Anmerkung der bersetzer: Fr XHTML spielt das Konzept der SGML-Deklara-
tion keine Rolle mehr. Das liegt darin begrndet, dass fr alle XML-Anwendungen eine
einzige, feste SGML-Deklaration vereinbart wurde. In der Praxis kann man also einfach
davon ausgehen, dass Tags durch spitze Klammern begrenzt werden und dass es eine
Reihe von Sonderzeichen (wie &) gibt, die sp@ter erkl@rt werden.
Der Begriff der Dokumentinstanz rhrt daher, dass jedes Dokument ein Beispiel oder
ein Vertreter des Dokumenttyps ist, der durch die DTD definiert wird. Wer sich mit
objektorientierter Programmierung auskennt, wird den Begriff der Instanz kennen; der
Dokumenttyp entspricht dann der Klasse.
3.2.1 Elemente
Der Name des Elements erscheint im Start-Tag (geschrieben <Elementname>) und im End-Tag
(geschrieben </Elementname>); beachten Sie den Schr@gstrich vor dem Elementnamen im End-
Tag. Zum Beispiel begrenzen Start- und End-Tag des Elementtyps UL die Aufz@hlungspunkte in
einer Liste:
<UL>
<LI><P>...Punkt.1...
<LI><P>...Punkt.2...
</UL>
Einige HTML-Elementtypen erlauben Autoren, die End-Tags wegzulassen (z. B. die Element-
typen P und LI). Einige wenige Elemementtypen gestatten auch das Weglassen der Start-Tags,
z. B. HEAD und BODY. Die HTML-DTD gibt fr jeden Elementtyp vor, ob Start- und End-Tag erfor-
derlich sind oder nicht.
Einige HTML-Elementtypen haben keinen Inhalt. Zum Beispiel hat das Zeilenwechsel-Element
BR keinen Inhalt; seine einzige Funktion besteht darin, eine Textzeile zu begrenzen. Solche lee-
ren Elemente haben nie End-Tags. Die Dokumenttyp-Definition und der Text der Spezifikation
geben vor, ob ein Elementtyp leer ist (keinen Inhalt hat) oder, wenn er Inhalt haben kann, was
als zul@ssiger Inhalt betrachtet wird.
<edition
[Link]>
Anmerkung der bersetzer: Die Forderung, dass leere Elemente niemals einen
End-Tag besitzen drfen, ist weder durch SGML noch (fr XHTML) durch XML begrn-
det. Es ist eine Festlegung dieser Spezifikation.
Die HTML 4.01- Spezifikation
Die nachfolgende Aussage bzgl. der Klein/Großschreibung gilt nicht mehr fr XHTML.
Auch die anschließenden Beispiele sind nur fr HTML, nicht jedoch fr XHTML richtig
und sollten unter diesem Blickwinkel ignoriert werden.
<DIV>
<P>Dies ist der Absatz.
</DIV>
Der End-Tag des umschließenden Block-Elements (hier </DIV>) impliziert den End-Tag des
offenen <P>-Start-Tags.
Elemente sind keine Tags. Manche Leute sprechen von Elementen als Tags (z. B. „der P-Tag“).
Denken Sie daran, dass ein Element eine Sache ist und der Tag (sei es Start- oder End-Tag) eine ande-
re. Zum Beispiel ist das HEAD-Element immer vorhanden, sogar, wenn sowohl Start- als auch End-Tag
in der Auszeichnung fehlen. n
Anmerkung der bersetzer: Die obige Bemerkung ist sehr wichtig. Tats@chlich
werden die Begriffe Tag, Element, Elementtyp immer wieder durcheinander gebracht.
HTML-Dokumente bestehen aus ineinander verschachtelten Elementen (<p>Hallo
Welt!</p>), die wiederum aus Start-Tags (<p>), End-Tags (</p>) und Inhalt (Hallo Welt!)
bestehen.
Der HTML-Dokumenttyp (festgelegt durch die DTD) deklariert die Elementtypen (hier: p).
Alle in dieser Spezifikation deklarierten Elementtypen sind im Index der Elemente aufgelistet.
Anmerkung der bersetzer: Dieser Verweis auf den Index ist ein klassisches Bei-
spiel fr die falsch benutzte Terminologie: Natrlich ist es kein Index der Elemente.
Wie sollte das auch m=glich sein? Die Anzahl der Elemente ist potenziell unbegrenzt
3.2.2 Attribute
Elemente k=nnen zugeh=rige Eigenschaften haben, genannt Attribute, diese k=nnen Werte
besitzen (standardm@ßig oder von Autoren oder Skripten gesetzt). Attribut-Wert-Paare
erscheinen vor „>“ des Start-Tags eines Elements. Im Start-Tag eines Elements kann eine belie-
bige Anzahl von durch Zwischenraum getrennten (zul@ssigen) Attribut-Wert-Paaren stehen.
Sie k=nnen beliebig angeordnet sein.
In diesem Beispiel ist das id-Attribut fr ein H1-Element gesetzt:
<H1 id="section1">
This is an identified heading thanks to the id attribute
</H1>
Standardm@ßig verlangt SGML, dass alle Attributwerte entweder von doppelten Anfhrungszei-
chen (ASCII dezimal 34) oder einfachen Anfhrungszeichen (ASCII dezimal 39) begrenzt wer-
den. Einfache Anfhrungszeichen k=nnen im Attributwert enthalten sein, wenn der Wert durch
doppelte Anfhrungszeichen begrenzt ist und umgekehrt. Autoren k=nnen auch Numerische
Zeichenreferenzen verwenden, die die doppelten (") und einfachen (') Anfhrungs-
zeichen repr@sentieren. Fr doppelte Anfhrungszeichen drfen Autoren auch die Zeichen-En-
tity-Referenz „"“ benutzen.
In bestimmten F@llen k=nnen Autoren den Wert eines Attributs ohne jegliche Anfhrungszei-
chen angeben; der Attributwert darf nur Buchstaben (a-z und A-Z), Ziffern (0-9), Bindestriche
(ASCII dezimal 45), Punkte (ASCII dezimal 46), Unterstriche (ASCII dezimal 95) und Doppel-
punkte (ASCII dezimal 58) enthalten. Wir empfehlen, Anfhrungszeichen auch dann zu verwen-
den, wenn es m=glich ist, sie wegzulassen.
Bei Attributnamen wird nie zwischen Groß- und Kleinschreibung unterschieden. Die Definition
eines jeden Attributs gibt an, ob bei seinem Wert zwischen Groß- und Kleinschreibung unter-
schieden wird.
Alle durch diese Spezifikation definierten Attribute sind im Index der Attribute aufgelistet.
<edition
[Link]>
3.2.3 Zeichenreferenzen
Zeichenreferenzen sind numerische oder symbolische Namen fr Zeichen, die in einem HTML-
Dokument enthalten sein k=nnen. Sie sind ntzlich fr selten verwendete Zeichen oder solche,
die in Authoring Tools nur schwer oder gar nicht eingegeben werden k=nnen. Sie werden Zei-
chenreferenzen berall in diesem Dokument sehen; sie beginnen mit einem „&“-Zeichen und
enden mit einem Semikolon (;). Bekannte Beispiele sind:
·· „<“ steht fr das <-Zeichen.
„>“ steht fr das >-Zeichen.
·· „"“ steht fr das doppelte "-Zeichen.
„å“ (dezimal) steht fr den Buchstaben „a“ mit einem kleinen Kreis darber.
·· „И“ (dezimal) steht fr den kyrillischen Großbuchstaben „I“.
„水“ (hexadezimal) steht fr das chinesische Zeichen fr Wasser.
Wir er=rtern HTML-Zeichenreferenzen sp@ter in Abschnitt 5.1, „Dokument-Zeichensatz“ im
Detail. Die Spezifikation enth@lt auch eine Liste der Zeichenreferenzen (siehe Abschnitt 24),
die in HTML 4-Dokumenten auftauchen k=nnen.
3.2.4 Kommentare
Leerraum (white space) ist nicht gestattet zwischen dem =ffnenden Begrenzer der Auszeich-
nungsdeklaration (markup declaration open delimiter) („<!“) und dem =ffnenden Begrenzer
des Kommentars (comment open delimiter) („- -“); er ist jedoch zul@ssig zwischen dem schlie-
ßenden Begrenzer des Kommentars (comment close delimiter) („- -“) und dem schließenden
Begrenzer der Auszeichnungsdeklaration („>“). Ein h@ufiger Fehler ist es, in einen Kommentar
eine Kette von Bindestrichen („- --“) einzuschließen. Autoren sollten vermeiden, zwei oder
mehr aufeinanderfolgende Bindestriche innerhalb von Kommentaren zu schreiben.
Information, die in Kommentaren erscheint, hat keine spezielle Bedeutung (z. B. werden Zei-
chenreferenzen nicht als solche interpretiert).
Beachten Sie, dass Kommentare Auszeichnungen sind.
zise Beschreibung der Eigenschaften eines Elements zu versuchen. Das folgende Tutorial sollte
es mit SGML nicht vertrauten Lesern gestatten, die DTD zu lesen und die technischen Details
der HTML-Spezifikation zu verstehen.
In DTDs k=nnen sich Kommentare ber mehrere Zeilen erstrecken. In der DTD sind Kom-
mentare durch ein Paar von „- -“-Marken begrenzt, z. B.
Hier erkl@rt der Kommentar „named property value“ die Verwendung des PARAM-Elementtyps.
Kommentare in der DTD haben lediglich informellen Charakter.
Anmerkung der bersetzer: Diese Art des Kommentierens von DTDs ist mit
XML nicht mehr m=glich. Folglich wird man eine Zeile wie die obige in der XHTML-
DTD nicht mehr finden. Eine Alternative ist etwa:
3.3.2 Parameter-Entity-Definitionen
Die HTML-DTD beginnt mit einer Serie von Parameter-Entity-Definitionen. Eine Parameter-
Entity-Definition definiert eine Art Makro, das irgendwo in der DTD angesprochen und refe-
renziert werden kann. Diese Makros erscheinen nicht in HTML-Dokumenten, lediglich in der
DTD. Andere Makrotypen, genannt Zeichenreferenzen, k=nnen im Text eines HTML-Doku-
ments oder in Attributwerten erscheinen.
Wird das Parameter-Entity in der DTD ber den Namen angesprochen, so wird es in eine Zei-
chenkette (string) aufgel=st.
Eine Parameter-Entity-Definition beginnt mit dem Schlsselwort <!ENTITY % gefolgt vom Entity-
Namen, dann der in Anfhrungszeichen eingeschlossenen Zeichenkette, zu der das Entity auf-
gel=st wird, und letzlich der schließenden Klammer >. Die Benutzung eines Parameter-Entity in
einer DTD beginnt mit „%“, gefolgt vom Parameter-Entity-Namen und optional dem abschlie-
ßenden „;“.
Das folgende Beispiel definiert die Zeichenkette, in die das „%fontstyle;“-Entity aufgel=st wird.
Die Zeichenkette, in die das Parameter-Entity aufgel=st wird, kann andere Parameter-Entity-
Namen enthalten. Diese Namen werden rekursiv aufgel=st. Im folgenden Beispiel ist das „%inli-
ne;“-Parameter-Entity so definiert, dass es die „%fontstyle;“-, „%phrase;“-, „%special;“- und
„%formctrl;“- Parameter enth@lt.
<edition
[Link]>
Zwei DTD-Entities werden Ihnen h@ufig in der HTML-DTD begegnen: „%block;“ und „%inli-
ne;.“ Sie werden verwendet, wenn das Inhaltsmodell Block-Level- bzw. Inline-Elemente umfasst
(definiert in Abschnitt 7, „Die globale Struktur eines HTML-Dokuments“).
Die HTML 4.01- Spezifikation
3.3.3 Elementdeklarationen
Der Hauptteil der HTML-DTD besteht aus den Deklarationen von Elementtypen und deren
Attribute. Das <!ELEMENT-Schlsselwort beginnt eine Deklaration und das >-Zeichen
beschließt sie. Dazwischen sind spezifiziert:
1. Der Name des Elements
2. Ob die Tags des Elements optional sind. Erscheinen zwei Bindestriche hinter dem Element-
namen, so heißt das, Start- und End-Tag sind vorgeschrieben. Ein Bindestrich, gefolgt vom
Buchstaben „O“ bedeutet, der End-Tag kann weggelassen werden. Zwei „O“s zeigen an,
dass sowohl Start- als auch End-Tag weggelassen werden k=nnen (o = omit).
3. Der Inhalt des Elements, so vorhanden. Der erlaubte Inhalt eines Elements wird dessen
Inhaltsmodell genannt. Elementtypen, die dafr angelegt sind, keinen Inhalt zu haben, wer-
den Leere Elemente genannt. Das Inhaltsmodell fr so ein Element ist durch die Verwen-
dung des Schlsselwortes „EMPTY“ deklariert.
Anmerkung der bersetzer: Der zweite Punkt, der sich mit dem Weglassen von
Start- und/oder End-Tags besch@ftigt, ist fr XML und damit XHTML nicht mehr rele-
vant.
In diesem Beispiel:
<!ELEMENT UL - - (LI)+>
Inhaltsmodell-Definitionen
Das Inhaltsmodell beschreibt, was in einer Instanz eines Elementtyps enthalten sein kann.
Inhaltsmodell-Definitionen k=nnen beinhalten:
· Die Namen von erlaubten oder verbotenen Elementtypen (z. B. enth@lt das UL-Element
( ... )
begrenzt eine Gruppe.
A
A muss genau einmal vorkommen.
A+
A muss einmal oder mehrmals vorkommen.
A?
A darf nicht oder muss einmal vorkommen.
A*
A kann nicht oder mehrmals vorkommen.
+(A)
A kann vorkommen.
-(A)
A darf nicht vorkommen.
A|B
Entweder A oder B muss vorkommen, aber nicht beide.
A,B
A und B mssen in dieser Reihenfolge vorkommen.
A&B
A und B mssen in beliebiger Reiehenfolge vorkommen.
Anmerkung der bersetzer: Die Exklusionen und Inklusionen (+(A) und -(A))
sowie der Ausdruck A & B sind in XML nicht mehr m=glich und finden sich folglich nicht
mehr in den XHTML-DTDs.
<!ELEMENT UL - - (LI)+>
<edition
[Link]>
<!ELEMENT DL - - (DT|DD)+>
Das DL-Element muss ein oder mehrere DT- oder DD-Elemente in beliebiger Reihenfolge enthalten.
Die HTML 4.01- Spezifikation
Das OPTION-Element kann nur Text und Entities wie & enthalten – dies wird durch den
SGML-Daten-Typ #PCDATA angezeigt.
Ein paar HTML-Elementtypen verwenden ein weiteres SGML-Feature, um Elemente von ihrem
Inhaltsmodell auszuschließen. Ausgeschlossenen Elementen wird ein Bindestrich vorangestellt.
Expliziter Ausschluss berschreibt erlaubte Elemente.
In diesem Beispiel sagt -(A), dass das Element A nicht in einem anderen A-Element vorkommen
kann (d. h., Anker k=nnen nicht verschachtelt werden).
Beachten Sie, dass der A-Elementtyp Teil des DTD-Parameter-Entities „%inline;“ ist, jedoch
durch -(A) explizit ausgeschlossen wird.
3.3.4 Attributdeklarationen
Mit dem <!ATTLIST-Schlsselwort beginnt die Deklaration von Attributen, die ein Element
erhalten kann. Ihm folgen der Name des in Frage kommenden Elements, eine Liste von Attri-
butdefinitionen und ein abschließendes >. Jede Attributdefinition ist ein Triplet, das Folgendes
definiert:
·· Den Namen des Attributs.
Den Typ des Attributwertes oder einen expliziten Satz m=glicher Werte. Explizit durch die
DTD definierte Werte unterscheiden nicht zwischen Groß- und Kleinschreibung. Bitte
konsultieren Sie den Abschnitt 6, „HTML-Grunddatentypen“ fr weitere Informationen zu
Typen von Attributwerten.
· Ob der Standardwert des Attributs implizit ist (Schlsselwert „#IMPLIED“), in welchem Fall
das Benutzerprogramm den Standardwert liefern muss (in einigen F@llen durch Ableitung
von Eltern-Elementen), stets erforderlich ist (keyword „#REQUIRED“) oder auf den ange-
gebenen Wert fixiert (keyword „#FIXED“) ist. Einige Attributdefinitionen spezifizieren
explizit einen Standardwert fr die Attribute.
Anmerkung der bersetzer: Der Wert #IMPLIED bedeutet so viel wie „optional“.
<!ATTLIST MAP
name CDATA #IMPLIED
>
Der Typ der erlaubten Werte ist als CDATA, einem SGML-Datentyp, angegeben. CDATA ist
Text, der Zeichenreferenzen (siehe Abschnitt 5.3) enthalten kann.
Fr weitere Informationen zu „CDATA“, „NAME“, „ID“ und andere Datentypen lesen Sie bitte
im Abschnitt 6, „HTML-Grunddatentypen“ nach.
Das folgende Beispiel zeigt mehrere Attributdefinitionen:
Das rowspan-Attribut verlangt Werte vom Typ NUMBER. Der Standardwert ist explizit als „1“
gegeben. Das optionale http-equiv-Attribut verlangt Werte vom Typ NAME. Das optionale id-
Attribut verlangt Werte vom Typ ID. Das optionale valign-Attribut ist gezwungen, Werte aus
der Menge {top, middle, bottom, baseline} anzunehmen.
DTD-Entities in Attributdefinitionen
Attributdefinitionen k=nnen auch Parameter-Entity-Referenzen enthalten.
In diesem Beispiel sehen wir, dass die Attributdefinitionsliste fr das LINK-Element mit dem
„%attrs;“-Parameter-Entity beginnt.
<edition
[Link]>
<!ENTITY % coreattrs
"id ID #IMPLIED -- document-wide unique id - -
class CDATA #IMPLIED -- space-separated list of classes - -
Die HTML 4.01- Spezifikation
Das „%attrs;“-Parameter-Entity wurde aus Bequemlichkeit definiert, weil diese Attribute fr
die meisten HTML-Elementtypen definiert sind.
Ohnlich definiert die DTD den „%URI;“-Parameter-Entity als aufzul=sen in die Zeichenkette
„CDATA“.
Wie dieses Beispiel zeigt, versorgt das Paramater-Entity „%URI;“ Leser der DTD mit mehr
Information als fr ein Attribut zu dem Datentyp erwartet werden. Ohnlich wurden Entities fr
„%Color;“, „%Charset;“, „%Length;“, „%Pixels;“ usw. definiert
Boolesche Attribute
Einige Attribute spielen die Rolle boolescher Variablen (z. B. das selected-Attribut fr das OPTI-
ON-Element). Ihr Auftauchen im Start-Tag eines Elements impliziert, dass der Wert des Attri-
buts „wahr“ (true) ist; ihr Fehlen impliziert den Wert „falsch“ (false).
Boolesche Attribute k=nnen nur einen zul@ssigen Wert annehmen: den Namen des Attributs
selbst (z. B. selected="selected").
Dieses Beispiel definiert das selected-Attribut als boolesches Attribut.
Das Attribut wird bei Auftauchen im Start-Tag des Elements auf „wahr“ gesetzt:
<OPTION selected="selected">
...Inhalt...
</OPTION>
In HTML k=nnen boolesche Attribute in minimierter Form auftreten – der Wert des Attributs
erscheint allein im Start-Tag des Elelements. So kann selected gesetzt werden, indem man
schreibt:
<OPTION selected>
anstatt:
<OPTION selected="selected">
Autoren sollte bewusst sein, dass viele Benutzerprogramme nur die minimierte Form erken-
nen, nicht aber die vollst@ndige Form.
Anmerkung der bersetzer: Die minimierte Form ist in XHTML nicht mehr
4.1 Definitionen
HTML-Dokument
Ein HTML-Dokument ist ein SGML-Dokument, das den Beschr@nkungen dieser Spezifika-
tion gerecht wird.
Autor
Ein Autor ist eine Person oder ein Programm, die/das HTML-Dokumente schreibt oder
generiert. Bei einem Autorenwerkzeug handelt es sich um einen speziellen Autor, n@mlich
um ein Programm, das HTML generiert.
Wir empfehlen Autoren, lieber zur Strict-DTD konforme Dokumente zu schreiben als zu
anderen durch diese Spezifikation definierten DTDs. Details ber die in HTML 4 definierten
DTDs finden Sie im Abschnitt 7.2, „HTML-Versionsinformation“.
Benutzer
Ein Benutzer ist eine Person, die mit einem Benutzerprogramm interagiert, um ein dar-
gestelltes HTML-Dokument zu sehen, zu h=ren oder auf andere Art zu nutzen.
<edition
[Link]>
HTML-Benutzerprogramm
Ein HTML-Benutzerprogramm ist jede Vorrichtung, die HTML-Dokumente interpretiert.
Zu den Benutzerprogrammen geh=ren visuelle Browser (Text- und graphische Browser),
nicht-visuelle Browser (Audio, Braille), Suchmaschinen, Proxies und so weiter.
Die HTML 4.01- Spezifikation
Ein zu HTML 4 konformes Benutzerprogramm ist eines, das die in dieser Spezifikation
dargelegten zwingenden Bedingungen („muss“) einschließlich der folgenden Punkte beach-
tet:
· Ein Benutzerprogramm sollte vermeiden, literalen Attributwerten irgendwelche L@ngen-
beschr@nkungen aufzuerlegen (siehe Passage zu „Capacities“ in Abschnitt 20, „SGML-De-
klaration“). Einfhrende Informationen zu SGML-Attributen sind im Abschnitt 3.3.4, „At-
tributdeklarationen“ zu finden.
· Ein Benutzerprogramm muss sicherstellen, dass die Darstellung nicht davon beeinflusst
wird, ob Start- und End-Tags vorhanden oder nicht vorhanden sind, wenn die HTML-
DTD diese als optional angibt. Einfhrende Informationen ber SGML-Elemente finden
Sie im Abschnitt 3.3.3, „Elementdeklarationen“.
· Aus Grnden der Abw@rtskompatibilit@t empfehlen wir, dass Tools, die HTML 4 inter-
pretieren, auch weiterhin HTML 3.2 (siehe [HTML32]) und HTML 2.0 (siehe
[RFC1866]) untersttzen.
Fehlerbedingungen
Empfehlungen fr Reaktionen auf Fehler finden Sie in den „Anmerkungen zu ungltigen
Dokumenten“ im Anhang B.
Missbilligt
Ein missbilligtes Element oder Attribut ist eines, das durch neuere Konstrukte berholt
wurde. Missbilligte Elemente werden im Referenzhandbuch an den entsprechenden Stellen
definiert, sind aber deutlich als missbilligt gekennzeichnet. Missbilligte Elemente k=nnen in
zuknftigen Versionen von HTML obsolet sein.
Aus Grnden der Abw@rtskompatibilit@t sollten Benutzerprogramme auch weiterhin miss-
billigte Elemente untersttzen.
Die Definitionen von Elementen und Attributen bringen klar zum Ausdruck, welche von
ihnen missbilligt werden.
Diese Spezifikation enth@lt Beispiele, die zeigen, wie die Verwendung missbilligter Elemente
vermieden werden kann. In den meisten F@llen setzt das Stylesheet-Untersttzung der
Benutzerprogramme voraus. Um Stil- und Gestaltungseffekte zu erzielen, sollten Autoren
im Allgemeinen eher Stylesheets verwenden als HTML-Pr@sentationsattribute. HTML-
Pr@sentationsattribute werden missbiligt seit Stylesheet-Alternativen existieren (s. z. B.
[CSS1]).
Obsolet
Ein obsoletes Element oder Attribut ist eines, fr dessen Untersttzung durch ein Benut-
zerprogramm es keine Garantie gibt. Obsolete Elemente werden in dieser Spezifikation
nicht mehr definiert, sind jedoch aus historischen Grnden in den „Onderungen“ im Anhang
A des Referenzhandbuches aufgelistet.
4.2 SGML
HTML 4 ist eine zur internationalen Norm ISO 8879 – Standard Generalized Markup Language
SGML (definiert in [ISO8879]) konforme SGML-Anwendung .
Inhaltstyp-Name:
text
Inhalts-Sub-Typ-Name:
html
Erforderliche Parameter:
keine
Optionale Parameter:
charset
Dekodierungs-Einschrnkungen:
jede Dekodierung ist erlaubt
Sicherheits-Einschrnkungen:
siehe „Anmerkungen zur Sicherheit“ im Anhang B
Der optionale Parameter „charset“ verweist auf die Zeichenkodierung, die verwendet wird,
um das HTML-Dokument als Bytesequenz darzustellen. Gltige Werte fr diesen Parameter
sind im Abschnitt 5.2, „Zeichenkodierungen“ definiert. Obwohl dieser Parameter optional ist,
empfehlen wir, ihn stets zu setzen.
<edition
[Link]>
5 [Link] von
HTML-Dokumenten
Die HTML 4.01- Spezifikation
In diesem Kapitel er=rtern wir, wie HTML-Dokumente auf einem Computer und ber das
Internet repr@sentiert werden.
Der Abschnitt ber den Dokumentzeichensatz wendet sich der Frage zu, welche abstrakten
Zeichen Teil eines HTML-Dokuments sein k=nnen. Zeichen umfassen den lateinischen Buchsta-
ben „A“, den kyrillischen Buchstaben „I“, das chinesische Zeichen fr „Wasser“ usw.
Der Abschnitt ber Zeichenkodierungen wendet sich der Frage zu, wie diese Zeichen in einer
Datei oder zur bertragung ber das Internet dargestellt werden k=nnen. Da manche Zeichen-
kodierungen nicht alle Zeichen direkt darstellen k=nnen, die ein Autor in einem Dokument
verwenden m=chte, bietet HTML andere Mechanismen, auf jedes Zeichen zu verweisen, Zei-
chenreferenzen genannt.
Weil es innerhalb der menschlichen Sprachen eine Vielzahl von Zeichen und eine große Vielfalt
der Darstellungsarten dieser Zeichen gibt, muss darauf geachtet werden, dass Dokumente von
Benutzerprogrammen rund um den Erdball verstanden werden k=nnen.
Der ASCII-Zeichensatz reicht fr ein globales Informationssystem wie das Web nicht aus, des-
wegen nutzt HTML das so genannte Universal Character Set (UCS), einen viel umfangreicheren
Zeichensatz, definiert in [ISO10646]. Dieser Standard definiert einen Vorrat von Tausenden
von den V=lkern der ganzen Welt verwendeten Zeichen.
5.2 Zeichenkodierungen
Das, was diese Spezifikation Zeichenkodierung (character encoding) nennt, ist in anderen Spe-
zifikationen unter verschiedenen Namen bekannt (was zur Verwirrung fhren kann). Das Kon-
zept ist jedoch im ganzen Internet weitgehend gleich. Auch Protokoll-Header, Attribute und
Parameter, die sich auf Zeichkodierungen beziehen, benutzen denselben „Zeichensatz“ (char-
set) und dieselben Werte aus dem [IANA]-Register (komplette Liste siehe [CHARSETS]).
Der „charset“-Parameter identifiziert eine Zeichenkodierung; dies ist eine Methode zur Kon-
vertierung einer Folge von Bytes in eine Folge von Zeichen. Diese Konvertierung passt natr-
lich zum System der Web-Aktivit@ten: Server senden HTML-Dokumente als Folge von Bytes zu
Benutzerprogrammen; Benutzerpromme interpretieren sie als eine Folge von Zeichen. Die
Konvertierngsmethode kann sich zwischen einer einfachen Eins-zu-Eins-Beziehung und komple-
xen Umsetzungssystemen und -algorithmen bewegen.
Eine einfache Ein-Byte-pro-Zeichen-Kodierungstechnik gengt nicht fr Textfolgen aus einem
Zeichenvorrat so groß wie [ISO10646]. Zus@tzlich zu Kodierungen des vollst@ndigen Zeichen-
satzes (wie UCS-4) gibt es mehrere verschiedene Kodierungen von Teilen von [ISO10646].
<edition
[Link]>
Server und Proxies k=nnen eine Zeichenkodierung „on the fly“ @ndern (genannt Transkodie-
rung), um den Anforderungen von Benutzerprogrammen gerecht zu werden (siehe Abschnitt
14.2 in [RFC2616], „the 'Accept-Charset' HTTP request header“). Server und Proxies mssen
ein Dokument nicht mit einer Zeichenkodierung bedienen, die den vollst@ndigen Dokumentzei-
Die HTML 4.01- Spezifikation
chensatz umfasst.
Im Web h@ufig verwendete Zeichenkodierungen sind ISO-8859-1 (auch als „Latin-1“ bezeich-
net; verwendbar fr die meisten westeurop@ischen Sprachen), ISO-8859-5 (die die kyrillische
Schrift untersttzt), SHIFT_JIS (eine japanische Kodierung), EUC-JP (eine andere japanische
Kodierung) and UTF-8 (eine Kodierung von ISO 10646, die eine unterschiedliche Bytezahl fr
verschiedene Zeichen nutzt). Die Namen fr Zeichenkodierungen unterscheiden nicht zwi-
schen Groß- und Kleinschreibung, so dass zum Beispiel „SHIFT_JIS“, „Shift_JIS“ und „shift_jis“
@quivalent sind.
Diese Spezifikation schreibt nicht vor, welche Zeichenkodierungen ein Benutzerprogramm
untersttzen muss.
Konforme Benutzerprogramme (siehe Abschnitt 4.1) mssen alle Zeichen in allen Zeichenko-
dierungen, die sie erkennen, korrekt auf ISO 10646 abbilden (oder sie mssen sich verhalten,
als ob sie so arbeiten wrden).
<meta http-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<edition
[Link]>
ISO-8859-1 enth@lt brigens nicht das Euro-Zeichen. Statt dessen kann ISO-8859-15
verwendet werden, allerdings kann man davon ausgehen, dass diese Kodierung von
einer kleineren Anzahl Programme untersttzt wird. Das Euro-Entity € drfte die
Die HTML 4.01- Spezifikation
sicherste (aber vielleicht nicht bequemste) Wahl sein (siehe auch Abschnitt 5.3, „Zei-
chenreferenzen“).
Im Hinblick auf das XML-basierte XHTML sei darauf hingewiesen, dass XML 1.0 ver-
langt, dass jedes verarbeitende System mindestens die Kodierungen UTF-8 und UTF-16
beherrscht. Die Internet Engineering Task Force (IETF) verlangt in ihrem RFC 2277
„IETF Policy on Character Sets and Languages“, dass Protokolle in der Lage sein ms-
sen, die UTF-8-Kodierung zu verwenden. Nachzulesen unter [Link]
[Link].
Wer sich mit diesem Thema eingehender besch@ftigen m=chte, findet beim W3C ein
Arbeitspapier mit dem Titel „Character Model for the World Wide Web 1.0“. Das
Dokument gibt es noch nicht in deutscher bersetzung. In Englisch ist es unter
[Link] zu finden. Sobald es eine bersetzung gibt, wird sie
voraussichtlich unter [Link] erh@ltlich sein.
Wie stellt ein Server fest, welche Zeichenkodierung fr ein Dokument, das er anbietet, gilt?
Manche Server prfen die ersten paar Bytes eines Dokuments oder vergleichen mit einer
Datenbank bekannter Kodierungen und Dateien. Viele moderne Server geben Webmastern
mehr Einflussm=glickeiten auf die Zeichensatzkonfiguration als alte Server. Webmaster sollten
diese Mechanismen nutzen, um einen „charset“-Parameter zu senden, wann immer das m=glich
ist. Sie sollten jedoch Vorsicht walten lassen, um ein Dokument nicht mit einem falschen Wert
im „charset“-Parameter zu identifizieren.
Woher weiß ein Benutzerprogramm, welche Zeichenkodierung verwendet wurde? Der Server
sollte diese Information anbieten. Der direkteste Weg fr einen Server, das Benutzerpro-
gramm ber die Zeichenkodierung des Dokuments zu informieren, ist die Verwendung des
„charset“-Parameters im „Content-Type“-Header-Feld des HTTP-Protokolls ([RFC2616],
Das HTTP-Protokoll ([RFC2616], Abschnitt 3.7.1) fhrt ISO-8859-1 als Standardkodierung an,
sollte der „charset“-Parameter im „Content-Type“-Header-Feld fehlen. In der Praxis hat sich
diese Empfehlung als nutzlos erwiesen, weil manche Server es nicht gestatten, einen „char-
set“-Parameter zu senden und andere nicht entsprechend konfiguriert sein k=nnen, den Para-
meter zu senden. Deswegen drfen Benutzerprogramme keinen Standardwert fr den „char-
set“-Parameter annehmen.
Um Server- oder Konfigurationseinschr@nkungen zu begegnen, k=nnen HTML-Dokumente
explizite Angaben ber die Zeichenkodierung des Dokuments enthalten; das META-Element kann
benutzt werden, Benutzerprogrammen diese Information zur Verfgung zu stellen.
Zum Beispiel sollte ein Dokument die folgende META-Deklaration enthalten, um zu spezifizieren,
dass die Zeichenkodierung des aktuellen Dokuments „EUC-JP“ ist:
Die META-Deklaration darf nur verwendet werden, wenn die Zeichenkodierung derart auf-
gebaut ist, dass ASCII-wertige Bytes fr ASCII-Zeichen stehen (mindestens bis das META-Ele-
ment gelesen wurde). META-Deklarationen sollten so frh wie m=glich im HEAD-Element erschei-
nen.
Fr F@lle, in denen weder das HTTP-Protokoll noch das META-Element Informationen ber die
Zeichenkodierung eines Dokuments bereitstellt, bietet HTML bei verschiedenen Elementen
auch das charset-Attribut. Durch Kombination dieser Mechanismen kann ein Autor die Chan-
cen betr@chtlich erh=hen, dass das Benutzerprogramm die Zeichenkodierung erkennt, wenn
der Benutzer eine Ressource l@dt.
Zusammenfassend sei bemerkt: Konforme Benutzerprogramme mssen die folgende Reihen-
folge bei der Ermittlung der Zeichenkodierung eines Dokuments beachten (von der h=chsten
zur niedrigsten Priorit@t):
1. Einen HTTP-„charset“-Parameter in einem „Content-Type“-Feld.
2. Eine META-Deklaration mit „http-equiv“, gesetzt auf „Content-Type“ und einem gesetzten
Wert fr „charset“.
3. Das in einem eine externe Ressource kennzeichnenden Element gesetzte charset-Attribut.
Zus@tzlich zu dieser Liste kann das Benutzerprogramm Heuristik und Benutzereinstellungen
verwenden. Zum Beispiel benutzen viele Benutzerprogramme die Heuristik, um die verschiede-
nen Kodierungen fr japanischen Text voneinander zu unterscheiden. Benutzerprogramme
haben auch blicherweise eine vom Benutzer einstellbare lokale Standardkodierung, die sie
anwenden, wenn andere Indikatoren fehlen.
<edition
[Link]>
Anmerkung: Sollte es fr spezifische Anwendungen erforderlich werden, auf Zeichen außerhalb von
[ISO10646] zu verweisen, sollten die Zeichen einer privaten Zone zugewiesen werden, um Konflikte
mit gegenw,rtigen oder knftigen Versionen des Standards zu vermeiden. Davon wird jedoch aus Grn-
den der Portierbarkeit dringend abgeraten. n
5.3 Zeichenreferenzen
Eine gegebene Zeichenkodierung kann eventuell nicht in der Lage sein, alle Zeichen des Doku-
mentzeichensatzes darzustellen. Fr solche Kodierungen, oder wenn Hard- bzw. Software-
konfigurationen Benutzern bei einigen Dokumentzeichen nicht gestatten, sie direkt einzugeben,
k=nnen Autoren SGML-Zeichenreferenzen nutzen. Zeichenreferenzen sind von der Zeichen-
kodierung unabh@ngige Mechanismen zur Eingabe beliebiger Zeichen aus dem Dokumentzei-
chensatz.
Zeichenreferenzen k=nnen in HTML in zwei Formen erscheinen:
·· Numerische Zeichenreferenzen (entweder dezimal oder hexadezimal)
Zeichen-Entity-Referenzen.
Zeichenreferenzen innerhalb von Kommentaren haben keine spezielle Bedeutung; sie sind
lediglich Kommentardaten.
Anmerkung: HTML bietet andere Wege der Darstellung von Zeichen, insbesondere eingebettete
Graphiken (siehe Abschnitt 13). n
Anmerkung: In SGML ist es in einigen F,llen m glich, das abschließende „;“ nach einer Zeichenrefe-
renz zu entfernen (z. B. an einem Zeilenumbruch oder unmittelbar vor einem Tag). Unter anderen
Umst,nden darf es nicht entfernt werden (z. B. in der Mitte eines Wortes). Um Probleme mit Benutzer-
programmen zu vermeiden, die verlangen, dass dieses Zeichen vorhanden ist, raten wir dringend dazu,
das „;“ in allen F,llen zu verwenden. n
5.3.2 Zeichen-Entity-Referenzen
<edition
[Link]>
einen Wert hat, der in der internen Zeichenkodierung des Benutzerprogramms nicht aus-
gedrckt werden kann, usw.
Weil es viele verschiedene Dinge gibt, die in solch einem Fall getan werden k=nnen, schreibt
dieses Dokument kein bestimmtes Verhalten vor. Abh@ngig von der Implementierung k=nnen
nicht darstellbare Zeichen auch vom darunterliegenden Anzeigesystem und nicht von der
Anwendung selbst behandelt werden. Bei Fehlen eines besseren Verhaltens, zum Beispiel ange-
passt an die Erfordernisse einer speziellen Schrift (script) oder einer Sprache, empfehlen wir
fr Benutzerprogramme das folgende Verhalten:
1. Einen deutlich erkennbaren, aber unaufdringlichen Mechanismus w@hlen, um den Benutzer
ber fehlende Ressourcen zu informieren.
2. Die hexadezimale Form verwenden (nicht die dezimale), wenn fehlende Zeichen durch ihre
numerische Repr@sentation dargestellt werden, weil das die in Zeichensatz-Standards ver-
wendete Form ist.
6 HTML-Grunddatentypen
Dieser Abschnitt der Spezifikation beschreibt die Grunddatentypen, die als Inhalt eines Ele-
ments oder Wert eines Attributs vorkommen k=nnen.
Einhrende Informationen darber, wie die HTML-DTD zu lesen ist, finden Sie in Abschnitt 3,
„ ber SGML und HTML“.
CS
Im Wert wird zwischen Groß- und Kleinschreibung unterschieden (case-sensitive), d. h.,
Benutzerprogramme interpretieren „a“ und „A“ verschieden.
CI
Im Wert wird nicht zwischen Groß- und Kleinschreibung unterschieden (case-sensitive),
d. h., Benutzerprogramme interpretieren „a“ und „A“ gleich.
CN
Der Wert kann nicht von Groß- in Kleinschreibung oder umgekehrt ge@ndert werden, z. B.,
weil es sich um eine Zahl oder ein Zeichen aus dem Dokument-Zeichensatz handelt.
CA
Die Element- oder Attributdefinition selbst gibt die Information zu Groß- bzw. Kleinschrei-
bung.
CT
Ist ein Attribut eine Liste, gelten, wenn nicht anders angegeben, die Schlssel fr alle Werte
der Liste.
<edition
[Link]>
6.3 Text-Zeichenfolgen
Mehrere Attribute (in der DTD: %Text;) nehmen Text auf, der so angelegt ist, dass er fr Men-
schen lesbar ist („human readable“). Fr einfhrende Informationen ber Attribute lesen Sie
Die HTML 4.01- Spezifikation
Anmerkung der bersetzer: Eines dieser Attribute, das %Text; erwartet, ist das
title-Attribut. Wie drei der zum Zeitpunkt des Erscheinens dieses Buches g@ngigen
Browser den Link
<A href="[Link]/"
title="
Wert des
"title-Attributes""
>mein Link</A>
<!- - (Zwischen "Wert" und "des"
befinden sich zwei TabulatorsprUnge) - ->
6.4 URIs
Diese Spezifiaktion verwendet den Terminus URI, wie er in [URI] definiert ist (s.a. [RFC1630]).
Beachten Sie, dass URIs URLs (wie in [RFC1738] und [RFC1808] definiert) beinhalten.
Relative URIs werden unter Verwendung eines Basis-URIs in vollst@ndige URIs aufgel=st.
[RFC1808], Abschnitt 3 definiert den normativen Algorithmus fr diesen Prozess. Mehr Infor-
mationen ber Basis-URIs finden Sie im Abschnitt 12.4, „Pfadangaben: Das Base-Element“ im
Kapitel ber Links.
Generell unterscheiden URIs zwischen Groß- und Kleinschreibung. Es kann URIs oder Teile
von URIs geben, in denen Groß- oder Kleinschreibung keine Rolle spielt (z. B. Namen von
Maschinen), aber dies herauszufinden, wird nicht immer leicht sein. Benutzer sollten immer
annehmen, dass URIs zwischen Groß- und Kleinschreibung unterscheiden (um auf der sicheren
6.5 Farben
Der Typ „color“ (%Color;) fr Attributwerte verweist auf Farbdefinitionen, wie sie in [SRGB]
spezifiziert sind. Ein Farbwert (color value) kann entweder eine Hexadezimalzahl (mit voran-
gestelltem Nummernzeichen) oder einer der folgenden 16 Farbnamen (color names) sein. Die
Farbnamen unterscheiden nicht zwischen Groß- und Kleinschreibung.
<edition
[Link]>
Dementsprechend beziehen sich sowohl „#800080“ als auch „Purple“ auf die Farbe „Purpur“.
Obwohl Farben Dokumenten merklich Informationswert hinzufgen und sie lesbarer machen
k=nnen, bedenken Sie bitte die folgenden Richtlinien, wenn Sie Farben in Ihre Dokumente mit
einbeziehen:
· Die Verwendung von Elementen und Attributen zur Spezifizierung von Farben ist missbilligt.
Sie sind statt dessen aufgefordert, Stylesheets zu verwenden.
· Verwenden Sie keine Farbkombinationen, die fr Menschen, die unter Farbenblindheit der
verschiedensten Form leiden, Probleme verursachen k=nnen.
· Wenn Sie ein Hintergundbild verwenden oder die Hintergrundfarbe festlegen, dann legen
Sie unbedingt die verschiedenen Textfarben ebenfalls fest.
· Mit Hilfe von BODY- und FONT-Element bzw. bgcolor in Tabellen spezifizierte Farben sehen auf
unterschiedlichen Plattformen unterschiedlich aus (z. B. Workstations, Macs, Windows und
LCD-Panele vs. CRTs), deswegen sollten Sie sich nicht auf einen speziellen Effekt verlassen.
Die Untersttzung des [SRGB]-Farbmodells zusammen mit ICC-Farbprofilen drften dieses
Problem in Zukunft mildern.
· Wenn m=glich machen Sie sich bliche Konventionen zu eigen, Benutzer nicht unn=tig zu
verwirren.
6.6 Maße
HTML spezifiziert drei Arten von Maßwerten fr Attribute:
1. Pixels: Der Wert (in der DTD: %Pixels;) ist eine ganze Zahl, die die Anzahl der Pixel des
Canvas (Bildschirm, Papier) angibt. Der Wert „50“ bedeutet folglich 50 Pixel. Fr normative
Informationen ber die Definition von Pixel lesen Sie bitte in [CSS1] nach.
2. Length: Der Wert (in der DTD: %Length;) kann entweder %Pixel; oder ein prozentualer
Anteil des verfgbaren horizontalen Platzes sein. Folglich bedeutet der Wert „50%“ die
H@lfte des verfgbaren Platzes.
3. MultiLength: Der Wert (in der DTD: %MultiLength;) kann %Length; sein oder ein relati-
ves Maß. Ein relatives Maß hat die Form „i*“, wobei „i“ eine ganze Zahl ist. Wenn Benutzer-
programme Elementen, die sich darum bewerben, Platz zuweisen, weisen sie zuerst Pixel-
und Prozentwerte zu, dann verteilen sie den verbleibenden verfgbaren Platz unter den
relativen Maßen. Jedes relative Maß erh@lt einen Anteil des verfgbaren Platzes, der propor-
tional ist zu der dem „*“ vorausgehenden ganzen Zahl. Der Wert „*“ ist @quivalent zu „1*“.
Folglich werden, wenn 60 Pixel an Platz verfgbar sind, nachdem das Benutzerprogramm
Pixel- und Prozentwerte zugewiesen hat und die sich bewerbenden relativen Maße 1*, 2*,
und 3* sind, der 1* 10 Pixel, der 2* 20 Pixel und der 3* 30 Pixel zugewiesen.
Fr Maßwerte ist die Unterscheidung zwischen Groß- und Kleinschreibung nicht relevant.
6.8 Sprachcodes
Der Wert von Attributen vom Typ Sprachcode (language code) (in der DTD: %LanguageCode)
weist auf einen Sprachcode, wie er durch [RFC1766] Abschnitt 2 spezifiziert wird, hin. Informa-
tionen zur Spezifizierung von Sprachcodes in HTML finden Sie im Abschnitt 8.1.1, „Sprach-
codes“. Leerr@ume sind im Sprachcode nicht erlaubt.
Sprachcodes unterscheiden nicht zwischen Groß- und Kleinschreibung.
6.9 Zeichenkodierungen
Die „charset“-Attribute (in der DTD: %Charset) verweisen auf eine Zeichenkodierung wie in
Abschnitt 5.2, „Zeichenkodierungen“ beschrieben. Die Werte mssen Zeichenfolgen aus der
IANA-Registrierung sein (z. B. „euc-jp“) (s. [CHARSETS] fr eine komplette Liste).
Namen von Zeichenkodierungen unterscheiden nicht zwischen Groß- und Kleinschreibung.
Um die Zeichenkodierung einer externen Ressource zu bestimmen, mssen Benutzerpro-
gramme die im Abschnitt 5.2.2, „Spezifizieren von Zeichenkodierungen“ angefhrten Schritte in
der vorgegebenen Reihenfolge ausfhren.
<edition
[Link]>
YYYY-MM-DDThh:mm:ssTZD
Die HTML 4.01- Spezifikation
mit:
Die Zeitzonen-Kennzeichnung:
Z
weist auf UTC (Coordinated Universal Time) hin. Das „Z“ muss groß geschrieben werden.
+hh:mm
weist darauf hin, dass es sich um eine lokale Zeit handelt, die hh Stunden und mm Minuten
gegenber UTC voraus ist.
-hh:mm
weist darauf hin, dass es sich um eine lokale Zeit handelt, die hh Stunden und mm Minuten
gegenber UTC zurck ist.
Exakt die hier gezeigten Komponenten mit exakt dieser Interpunktion mssen vorhanden sein.
Beachten Sie, dass das \;T\( in der Zeichenfolge genau so vorkommen muss (es muss groß
geschrieben werden), um den Beginn des Zeit-Elements wie in [ISO8601] spezifiziert anzuzei-
gen.
Wenn eine generierende Anwendung die Zeit nicht auf die Sekunde genau weiß, kann sie den
Wert „00“ fr Sekunden benutzen (falls erforderlich analog fr Minuten und Stunden).
Anmerkung: [DATETIME] geht nicht auf die Frage der Schaltsekunden ein. n
6.12 Linktypen
Autoren k=nnen die nachfolgenden bekannten Linktypen verwenden – hier aufgelistet mit ihrer
blichen Interpretation. In der DTD weist %LinkTypes auf eine durch Leerzeichen getrennte
Liste von Linktypen. Leerraum-Zeichen (white space) sind innerhalb von Linktypen nicht
erlaubt.
Diese Linktypen unterscheiden nicht zwischen Groß- und Kleinschreibung. Zum Beispiel hat
„Alternate“ dieselbe Bedeutung wie „alternate“.
Benutzerprogramme, Suchmaschinen usw. k=nnen diese Linktypen auf verschiedenste Art
interpretieren. Zum Beispiel k=nnen Benutzerprogramme den Zugriff auf verlinkte Dokumente
ber eine Navigationsleiste anbieten.
Alternate
kennzeichnet Ersatzversionen des Dokuments, in dem der Link vorkommt. Wird es zusam-
men mit dem hreflang-Attribute verwendet, bedeutet dies, dass eine bersetzte Version
des Dokuments vorliegt. Wird es zusammen mit dem media-Attribut verwendet, bedeutet
<edition
[Link]>
Autoren k=nnten den Wunsch haben, zus@tzliche Linktypen, die nicht in dieser Spezifikation
beschrieben sind, zu definieren. Wenn dem so ist, sollten sie ein Profile benutzen (siehe
Abschnitt 7), um die fr die Definition des Linktyps verwendeten Konventionen anzufhren.
Siehe profile-Attribut des HEAD-Elements fr mehr Details.
Die HTML 4.01- Spezifikation
Anmerkung der bersetzer: Die Verwendung eines Linktyps sieht in der Praxis
zum Beispiel so aus:
<link rel="stylesheet"
type="text/css"
href="[Link]" />
Hier wird eine CSS-Datei durch das link-Element im Kopf der HTML-Datei mit der
HTML-Datei verknpft. Die anderen genannten Linktypen werden von den meisten
Browsern nicht untersttzt. Auch die genannten Profile spielen praktisch keine Rolle.
6.13 Medien-Deskriptoren
Nachfolgend sind die anerkannten Medien-Deskriptoren (in der DTD: %MediaDesc) aufgelistet.
screen
ist bestimmt fr nicht seitenorientierte Computer-Bildschirme.
tty
ist bestimmt fr Medien, die ein @quidistantes Zeichenraster verwenden, wie Teleprinter,
Terminals oder tragbare Ger@te mit eingeschr@nkten Dartsellungsf@higkeiten.
tv
ist bestimmt fr TV-@hnliche Ger@te (geringe Aufl=sung, Farben, begrenzte Scroll-M=glich-
keit).
projection
ist bestimmt fr Projektoren.
handheld
ist bestimmt fr Handheld-Ger@te (kleiner Bildschirm, monochrom, Rastergrafiken, geringe
Bandbreite).
print
ist bestimmt fr seitenweises undurchsichtiges Material und fr Dokumente, die am Bild-
schirm im Druckvorschau-Modus angesehen werden.
braille
ist bestimmt fr Braille-Leseger@te.
aural
ist bestimmt fr Sprach-Synthesizer.
all
ist geeignet fr alle Ger@te.
Knftige HTML-Versionen k=nnen neue Werte einfhren und parametrisierte Werte gestat-
ten. Um die Einfhrung dieser Erweiterungen zu erleichtern, mssen konforme Benutzerpro-
gramme in der Lage sein, den media-Attributwert folgendermaßen zu parsen:
abgebildet auf:
"screen"
"3d-glasses"
"print and resolution > 90dpi"
2. Jeder Eintrag wird genau vor dem ersten Zeichen beschnitten, das weder ein US-ASCII-Zei-
chen [a-zA-Z] (ISO 10646 hex 41-5a, 61-7a), eine Ziffer [0-9] (hex 30-39) noch ein Binde-
strich (hex 2d) ist. Im Beispiel ergibt dies:
"screen"
"3d-glasses"
"print"
3. Anschließend wird (unter Beachtung von Groß- und Kleinschreibung) ein Vergleich mit
dem Satz der oben definierten Medientypen durchgefhrt. Benutzerprogramme k=nnen
nicht passende Eintr@ge ignorieren. Im Beispiel bleiben screen und print brig.
6.14 Skript-Daten
Skript-Daten (in der DTD: %Script;) k=nnen den Inhalt des SCRIPT-Elements oder den Wert
innerer (intrinsic) Ereignisattribute (siehe Abschnitt 18) bilden. Benutzerprogramme drfen
Skript-Daten nicht als HTML-Auszeichnung auswerten, sondern mssen sie statt dessen an die
Script-Engine weiterreichen.
Ob zwischen Groß- und Kleinschreibung unterschieden wird, h@ngt von Skript-Sprache ab.
<SCRIPT type="text/javascript">
Nachricht = "World!";
nachricht = "Hello ";
alert(nachricht + Nachricht);
</SCRIPT>
<SCRIPT type="text/vbscript">
Nachricht = "World!"
nachricht = "Hello "
<edition
[Link]>
Das erste Skript (JavaScript) meldet sich mit „Hello World!“, weil „Nachricht“ und
Die HTML 4.01- Spezifikation
„nachricht“ zwei unterschiedliche Variablen bezeichen. Die Meldung des zweiten Skripts
(VBScript) hingegen lautet „Hello Hello“, da nicht zwischen „Nachricht“ und „nach-
richt“ unterschieden wird.
Bite beachten Sie, dass Skript-Daten als Elementinhalt keine Zeichenreferenzen (siehe
Abschnitt 5.3) enthalten k=nnen, Skript-Daten in Form von Attributwerten diese jedoch bein-
halten drfen. Der Anhang liefert weitere Informationen ber die Spezifizierung von Nicht-
HTML-Daten (siehe B.3.2).
Anmerkung der bersetzer: Im folgenden Beispiel wird der Benutzer bei Klick
auf den Link mit „Grß Gott“ begrßt werden, w@hrend die alert-Anweisung im SCRIPT-
Element „Grüß Gott“ unver@ndert, also mit unaufgel=stem Entity, wiedergibt
<SCRIPT type="text/javascript">
alert('Grüß Gott');
</SCRIPT>
<A href="[Link]
onclick="alert('Grüß Gott')"
>[Link]
6.15 Stylesheet-Daten
Stylesheet-Daten (in der DTD: %StyleSheet;) k=nnen den Inhalt des STYLE-Elements oder den
Wert des style-Attributs bilden. Benutzerprogramme drfen Skript-Daten nicht als HTML-
Auszeichnung auswerten.
Ob zwischen Groß- und Kleinschreibung unterschieden wird h@ngt von der Stylesheet-Sprache
ab.
Bite beachten Sie, dass Stylesheet-Daten als Elementinhalt keine Zeichenreferenzen (siehe
Abschnitt 5.3) enthalten k=nnen, Stylesheet-Daten in Form von Attributwerten diese jedoch
beinhalten drfen. Der Anhang liefert weitere Informationen ber die Spezifizierung von Nicht-
HTML-Daten (siehe B.3.2).
_blank
Das Benutzerprogramm sollte das angegebene Dokument in ein neues unbenanntes Fenster
laden.
_self
<edition
[Link]>
7.2 HTML-Versionsinformation
Ein gltiges HTML-Dokument gibt die im Dokument benutzte HTML-Version an. Die Doku-
menttyp-Deklaration benennt die fr das Dokument verwendete Dokumenttyp-Definition
Die HTML 4.01- Spezifikation
· Die HTML 4.01 Transitional DTD beinhaltet alles aus der Strict-DTD und zus@tzlich miss-
billigte Elemente und Attribute (von denen die meisten die visuelle Darstellung betreffen).
Fr Dokumente, die diese DTD benutzen, verwenden Sie die Dokumenttyp-Deklaration:
· Die HTML 4.01 Frameset DTD beinhaltet alles aus der Transitional DTD und zus@tzlich
Frames. Fr Dokumente, die diese DTD benutzen, verwenden Sie die Dokumenttyp-Dekla-
ration:
Anmerkung: Mit der Version vom 24. Dezember von HTML 4.01 verpflichtet sich die HTML-
Arbeitsgruppe zu folgendem Verfahren:
· Alle Mnderungen hin zu knftigen HTML 4-DTDs lassen Dokumente, die zu den DTDs der gegen-
w,rtigen Spezifikation konform sind, nicht ungltig werden. Die HTML-Arbeitsgruppe beh,lt sich
Attributdefinitionen
Der gesamte Rest eines HTML-Dokuments nach der Dokumenttyp-Deklaration wird vom
HTML-Element aufgenommen. Somit hat ein typisches HTML-Dokument diese Struktur:
<edition
[Link]>
Attributdefinitionen
Das HEAD-Element enth@lt Informationen ber das aktuelle Dokument, wie seinen Titel, Schls-
selw=rter, die sinnvoll fr Suchmaschinen sein k=nnen, und andere Daten, die nicht als Doku-
mentinhalt betrachtet werden. Benutzerprogramme stellen Elemente, die im HEAD stehen, im
Allgemeinen nicht als Inhalt dar. Sie k=nnen jedoch Informationen aus dem HEAD ber andere
Mechanismen fr den Benutzer verfgbar machen.
Anmerkung der bersetzer: Das ist zum Beispiel das Head-Element der eng-
lischen Originalfassung der Seite zu Abschnitt 7 dieser Spezifikation:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>The global structure of an HTML document</title>
<link rel="previous" href="../[Link]">
<link rel="next" href="[Link]">
<link rel="contents" href="../[Link]#toc">
<link rel="stylesheet" type="text/css" href="
[Link]
<link rel="STYLESHEET" href="../style/[Link]" type="text/css">
</head>
Eine M=glichkeit, wie ein Benutzerprogramm (hier der Mozilla-Browser) dem Benutzer
die enthaltenen Informationen zug@nglich machen kann, zeigen die folgenden Abbildungen:
<!- - The TITLE element is not considered part of the flow of text.
It should be displayed, for example as the page header or
window title. Exactly one title is required per document.
- ->
<!ELEMENT TITLE - - (#PCDATA) -(%[Link];) - - document title - ->
<!ATTLIST TITLE %i18n>
<edition
[Link]>
Da Benutzer oft Dokumente aus dem Zusammenhang gerissen aufrufen, sollten Autoren
selbsterkl@rende Titel anbieten. So sollten Autoren anstelle eines Titels wie „Einfhrung“, der
nicht viel Information ber den Kontext bietet, einen Titel wie „Einfhrung in die Bienenhaltung
im Mittelalter“ w@hlen.
Anmerkung der bersetzer: Das TITLE-Element wird von Autoren oft vernach-
l@ssigt. Nicht selten trifft man Dokumente mit dem Title „Untitled“ an, das ist der Titel,
den eine Reihe von HTML-Editoren standardm@ßig einsetzen. Dem Benutzer wird
damit der Umgang mit den Dokumenten erschwert. Sie sind auch im Katalog der Lese-
zeichen, Favoriten oder wie immer er im konkreten Benutzerprogramm heißen mag,
„Untitled“. Hat ein Benutzer mehrere Fenster ge=ffnet, so wird ihm die Auswahl eines
konkreten ge=ffneten Dokuments nicht leicht gemacht, wenn es „Untitled“ ist. Wie das
bei vier offenen Fenstern, von denen nur eines ein Dokument mit aussagef@higem Titel
enth@lt, aussehen kann, zeigt das folgende Bild (hier Internet Explorer 5 unter Mac OS):
Aus Grnden der Zug@nglichkeit mssen Benutzerprogramme den Inhalt des TITLE-Elements
fr Benutzer immer verfgbar machen (TITLE-Elemente, die in einem Frame erscheinen, einge-
schlossen). Der Mechanismus dafr h@ngt vom Benutzerprogramm ab (z. B. als berschrift,
gesprochen).
Titel drfen Zeichen-Entities enthalten (fr Zeichen mit Akzentzeichen, Sonderzeichen usw.),
k=nnen aber keine andere Auszeichnung enthalten (Kommentare eingeschlossen). Hier ist ein
Beispiel fr einen Dokument-Titel:
Attributdefinition
Anders als das TITLE-Element, das Informationen ber ein ganzes Dokument bietet und nur ein-
mal vorkommen darf, kann das title-Attribut eine beliebige Anzahl von Elementen mit Kom-
mentaren versehen. Bitte sehen Sie in der Definition eines Elements nach, um zu berprfen,
ob es dieses Attribut untersttzt.
Werte des title-Attributs k=nnen von Benutzerprogrammen auf verschiedenste Art dar-
gestellt werden. Zum Beispiel zeigen visuelle Browser „title“ oft als „Tooltip“ (eine kurze
Nachricht, die erscheint, wenn das Zeigeger@t ber einem Objekt inneh@lt). Audio-Benutzer-
programme k=nnen die „title“-Information in entsprechendem Kontext sprechen. Zum Beispiel
erm=glicht das Setzen dieses Attributs fr einen Link Benutzerprogrammen (visuellen und nicht
visuellen), Benutzern etwas ber die Beschaffenheit der verlinkten Ressource zu sagen:
Das title-Attribut hat keine zus@tzliche Funktion, wenn es mit dem LINK-Element benutzt wird,
um ein externes Stylesheet zu benennen. Details finden Sie in Abschnitt 12.3.2, „Links und
externe Stylesheets“.
<img src="[Link]"
alt="Foto vom Klassentreffen"
title="Klassentreffen am 15.06.2002,
festgehalten von Peter Meier">
<edition
[Link]>
Kann das Bild nicht angezeigt werden, k=nnte eine sinnvolle visuelle Pr@sentation so wie
im folgenden Bild aussehen; der Text aus dem Wert des alt-Attributs ersetzt das Bild.
Anderenfalls wrde das Bild gezeigt und dazu der Text aus dem title-Attribut.
Die HTML 4.01- Spezifikation
Anmerkung: Um die Qualit,t der Sprachsynthese fr F,lle, die durch Standardtechniken mangelhaft
behandelt werden, zu verbessern, k nnen knftige HTML-Versionen ein Attribut fr Kodierung phoneti-
scher und prosodischer Informationen beinhalten. n
7.4.4 Meta-Daten
Anmerkung: Das Resource Description Framework des W3C (siehe [RDF10]) wurde im Februar
1999 W3C-Recommendation. RDF erlaubt Autoren, maschinenlesbare Meta-Daten ber HTML-Doku-
mente und andere ber ein Netzwerk erreichbare Ressourcen zu spezifizieren. n
HTML l@sst Autoren Meta-Daten – Informationen ber ein Dokument im Gegensatz zum Inhalt
des Dokuments – auf unterschiedliche Art spezifizieren.
Um zum Beispiel den Autor eines Dokuments anzugeben, kann man das META-Element wie folgt
benutzen:
Das META-Element spezifiziert eine Eigenschaft (hier „Author“) und ordnet ihr einen Wert zu
(hier „Dave Raggett“).
Diese Spezifikation definiert keine Sammlung gltiger Eigenschaften fr Meta-Daten. Die Bedeu-
tung einer Eigenschaft und der Satz gltiger Werte fr diese Eigenschaft sollten in einem Refe-
renz-Lexikon, Profil genannt, definiert werden. Beispielsweise wrde ein Profil, das entworfen
wurde, um Suchmaschinen bei der Indizierung von Dokumenten zu helfen, Eigenschaften wie
„author“, „copyright“, „keywords“ usw. definieren.
Das META-Element
<!ELEMENT META - O EMPTY - - generic metainformation - ->
<!ATTLIST META
%i18n; -- lang, dir, for use with content - -
http-equiv NAME #IMPLIED -- HTTP response header name - -
name NAME #IMPLIED -- metainformation name - -
content CDATA #REQUIRED -- associated information - -
scheme CDATA #IMPLIED -- select form of content - -
>
Attributdefinitionen
Die erlaubten Werte und ihre Interpretation fr die folgenden Attribute sind abh@ngig vom
Profile:
<edition
[Link]>
Werte zuzuweisen. Diese Spezifikation definiert keinen normativen Satz von Eigenschaften.
Jedes META-Element spezifiziert ein Eigenschaft/Wert-Paar. Das name-Attribute identifiziert die
Eigenschaft und das content-Attribut spezifiziert den Wert der Eigenschaft.
Zum Beispiel setzt die folgende Deklaration einen Wert fr die Author-Eigenschaft:
Das lang-Attribut kann zusammen mit META verwendet werden, um die Sprache fr den Wert
des content-Attributs zu spezifizieren. Das gestattet Sprachsynthesizern sprachabh@ngige Aus-
spracheregeln anzuwenden.
In diesem Beispiel ist der Name des Autors als franz=sisch deklariert:
Anmerkung: Das META-Element ist ein allgemeiner Mechanismus zur Spezifizierung von Meta-Da-
ten. Jedoch handhaben einige HTML-Elemente und -Attribute bereits bestimmte Teile von Meta-Daten
und k nnen von Autoren anstelle von META benutzt werden, um diese Teile zu spezifizieren: das TITLE-
Element, das ADDRESS-Element, die Elemente INS und DEL, das title-Attribut und das cite-Attribut. n
Anmerkung: Wenn eine durch ein META-Element spezifizierte Eigenschaft einen Wert annimmt, der
ein URI ist, ziehen es manche Autoren vor, die Meta-Daten ber das LINK-Element zu spezifizieren. So
kann die folgende Deklaration von Meta-Daten:
<META name="[Link]"
content="[Link]
<LINK rel="[Link]"
type="text/plain"
href="[Link] n
Das Meta-Element tritt hier an die Stelle des HTTP-Headers refresh. Nach null (0)
Sekunden soll die neue Seite [Link] geladen werden. Falls ein Programm
mit der Anweisung nichts anfangen kann, erkl@rt der Dokumentrumpf, dass sich die
gesuchte Seite unter einer neuen Adresse befindet. Auf diese Art kann jeder mit der
Information etwas anfangen.
<edition
[Link]>
Zum Beispiel:
Die Effektivit@t von Suchmaschinen kann auch dadurch erh=ht werden, dass das LINK-Element
verwendet wird, um Links zu spezifizieren hin zu bersetzungen des Dokuments in andere
Sprachen, zu Versionen des Dokuments in anderen Formaten (z. B. PDF) und, wenn das Doku-
ment Teil einer Sammlung ist, zu einem geeigneten Startpunkt zum Bl@ttern in der Sammlung.
Mehr Hilfe bietet der Abschnitt „Suchmaschinen helfen, die eigene Website zu indexieren“ im
Anhang B.
<HEAD>
<META http-equiv="PICS-Label" content='
(PICS-1.1 "[Link]
labels on "1994.11.05T08:15-0500"
until "1995.12.31T23:59-0000"
for "[Link]
ratings (suds 0.5 density 0 color/hue 1))
'>
<TITLE>... document title ...</TITLE>
</HEAD>
Meta-Daten-Profil
Das profile-Attribut des HEAD gibt den Fundort eines Meta-Daten-Profils an. Der Wert des
profile-Attributs ist ein URI. Benutzerprogramme k=nnen diesen URI auf zwei Arten benut-
zen:
<HEAD profile="[Link]
<TITLE>How to complete Memorandum cover sheets</TITLE>
<META name="author" content="John Doe">
<META name="copyright" content="© 1997 Acme Corp.">
<META name="keywords" content="corporate,guidelines,cataloging">
<META name="date" content="1994-11-06T08:49:37+00:00">
</HEAD>
Anmerkung: W,hrend diese Spezifikation geschrieben wird, ist es g,ngige Praxis, die in in
[RFC2616], Abschnitt 3.3. beschriebenen Datums-Formate zu verwenden. Weil diese Formate relativ
schwer zu verarbeiten sind, empfehlen wir Autoren, das [ISO8601]-Datums-Format zu benutzen.
Mehr Informationen finden Sie in Abschnitt 9.4 zum INS- und DEL-Element. n
Das scheme-Attribut erlaubt Autoren, Benutzerprogrammen mehr Kontext fr die korrekte
Interpretation von Meta-Daten anzubieten. Gelegentlich kann so eine Zusatzinformation kri-
tisch sein, n@mlich dann, wenn Meta-Daten in unterschiedlichen Formaten spezifiziert sein k=n-
nen. Zum Beispiel k=nnte ein Autor ein Datum im (nicht eindeutigen) Format „10-9-97“ spezifi-
zieren. Ist damit der 9. Oktober 1997 oder der 10. September 1997 gemeint? Der Wert
„Month-Day-Year“ des scheme-Attributs wrde die Mehrdeutigkeit des Datums-Wertes ver-
meiden.
Bei anderen Gelegenheiten kann das scheme-Attribut dem Benutzerprogramm hilfreiche, aber
unkritische Informationen bieten.
Zum Beispiel kann die folgende scheme-Deklaration Benutzerprogrammen helfen, festzustellen,
dass es sich bei dem Wert der „identifier“-Eigenschaft um einen ISBN-Code handelt:
Die Werte eines scheme-Attributs sind abh@ngig von der name-Eigenschaft und dem zugeh=rigen
Profile.
<edition
[Link]>
Anmerkung: Ein Beispiel fr ein Profil ist das Dublin Core (siehe [DCORE]). Dieses Profil definiert
einen Satz empfohlener Eigenschaften, bibliografische Beschreibungen in elektronischer Form und ist
dafr vorgesehen. die Interoperabilit,t zwischen unterschiedlichen Beschreibungsmodellen zu f r-
dern. n
Die HTML 4.01- Spezifikation
Attributdefinitionen
·· bgcolor (Hintergrundfarbe)
onload, onunload (eingebettete Ereignisse)
Der Rumpf eines Dokuments enth@lt den Inhalt des Dokuments. Ein Benutzerprogramm kann
den Inhalt auf unterschiedlichste Art pr@sentieren. Fr visuelle Browser zum Beispiel kann man
sich den Rumpf als Leinwand vorstellen, auf der der Inhalt erscheint: Text, Bilder, Farben, gra-
phische Darstellungen usw. Fr akustische Benutzerprogramme kann derselbe Inhalt gespro-
MISSBILLIGTES BEISPIEL:
Das folgende HTML-Fragment zeigt die Verwendung der missbilligten Attribute. Es setzt die
Hintergrundfarbe der Zeichenfl@che auf Weiß, die Vordergrundfarbe des Textes auf Schwarz
und die Farbe der Hyperlinks zun@chst auf Rot, fr den Moment der Aktivierung auf Fuchsia
und auf Maroon, wenn erst einmal besucht.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]
<HTML>
<HEAD>
<TITLE>Eine Studie der Entwicklung der Population</TITLE>
</HEAD>
<BODY bgcolor="white" text="black"
link="red" alink="fuchsia" vlink="maroon">
... Dokumentrumpf ...
</BODY>
</HTML> n
Mit Hilfe von Stylesheets k=nnte derselbe Effekt folgendermaßen erreicht werden:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"[Link]
<HTML>
<HEAD>
<TITLE>Eine Studie der Entwicklung der Population</TITLE>
<STYLE type="text/css">
BODY { background: white; color: black}
A:link { color: red }
A:visited { color: maroon }
A:active { color: fuchsia }
</STYLE>
</HEAD>
<BODY>
... Dokumentrumpf ...
</BODY>
</HTML>
Die Verwendung externer (linked) Stylesheets gibt Ihnen die Flexibilit@t, die Darstellung ohne
berarbeitung des Ursprungs-HTML-Dokuments zu @ndern:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"[Link]
<HTML>
<HEAD>
<TITLE>Eine Studie der Entwicklung der Population</TITLE>
<LINK rel="stylesheet" type="text/css" href="[Link]">
<edition
[Link]>
</HEAD>
<BODY>
... Dokumentrumpf ...
</BODY>
</HTML>
Die HTML 4.01- Spezifikation
Framesets und HTML-R-mpfe: Dokumente, die Framesets enthalten, ersetzen das BODY-Ele-
ment durch das FRAMESET-Element. Mehr Informationen finden Sie im Abschnitt ber Frames. n
Attributdefinitionen
id = name [CS]
Dieses Attribut ordnet dem Element einen Namen zu. Innerhalb des Dokuments muss die-
ser Name eindeutig sein.
class = cdata-list [CS]
Dieses Attribut ordnet einem Element einen Klassennamen oder einen Satz von Klassen-
namen zu. Dem- oder denselben Klassennamen kann eine beliebige Anzahl von Elementen
zugeordnet werden. Multiple Klassennamen mssen durch Leerzeichen voneinander
getrennt werden.
Das id-Attribut ordnet einem Element einen eindeutigen Identifikator zu (der durch einen
SGML-Parser verifiziert werden kann). Zum Beispiel unterscheiden sich die folgenden Abs@tze
durch ihre id-Werte:
<img src="[Link]"
id="foto"
alt="Foto vom Klassentreffen"
title="Klassentreffen am 15.06.2002,
festgehalten von Peter Meier">
<form>
Beachten Sie, dass das deutsche „msg1“ und das englische „msg1“ nicht im selben Dokument
erscheinen k=nnen, da sie denselben id-Wert haben. Vom id-Attribut k=nnen Autoren außer-
dem Gebrauch machen, um die Pr@sentation individueller Meldungen zu verfeinern, sie zu Ziel-
ankern zu machen usw.
Fast jedem HTML-Element k=nnen Identifikator und Klasseninformation zugeordnet werden.
Stellen Sie sich zum Beispiel vor, dass wir ein Dokument ber eine Programmiersprache erstel-
len. In das Dokument ist eine Anzahl formatierter (preformatted) Beispiele aufzunehmen. Zur
Formatierung der Beispiele verwenden wir das PRE-Element. Darber hinaus weisen wir allen
Instanzen des PRE-Elements, die zur Klasse „example“ geh=ren, eine Hintergrundfarbe (green) zu.
<HEAD>
<TITLE>... Dokumenttitel ...</TITLE>
<STYLE type="text/css">
[Link] { background : green }
</STYLE>
</HEAD>
<edition
[Link]>
<BODY>
<PRE class="example" id="example-1">
... Code ...
</PRE>
</BODY>
Die HTML 4.01- Spezifikation
Durch Setzen des id-Attributs fr dieses Beispiel k=nnen wir (1) einen Hyperlink darauf erzeu-
gen und (2) Formatierungsinformationen der Klasse durch Formatierungsinformationen fr die
Instanz berschreiben.
Anmerkung: Das id-Attribut benutzt denselben Namensraum wie das name-Attribut, wenn es fr
Ankernamen verwendet wird. Im Abschnitt 12.2.3, „Anker mit id-Attribut“ finden Sie mehr Informa-
tionen. n
Stylesheets stellen Werkzeuge zur Verfgung, die Wiedergabe beliebiger Elemente zu spezifi-
zieren, unter anderem auch, ob ein Element als Block oder inzeilig dargestellt wird. In manchen
F@llen, wie etwa die inzeilige Darstellung von Listenelementen, kann das angemessen sein, all-
gemein wird Autoren jedoch davon abgeraten, die konventionelle Interpretation von HTML-
Elementen auf diese Art zu berschreiben.
Die Onderung traditioneller Pr@sentationsgepflogenheiten fr Block- und Inline-Elemente hat
auch starke Auswirkungen auf den Bidirektional-Textalgorithmus. Mehr Informationen finden
Sie in Abschnitt 8.2.6, „Die Wirkung von Stylesheets auf die Bidirektionalit@t“.
·· title (Elementtitel)
style (Inzeilige Formatierungsinformation)
·· align (Ausrichtung)
onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress,
onkeydown, onkeyup (eingebettete Ereignisse)
Das DIV- und das SPAN-Element bieten zusammen mit dem id- und dem class-Attribute einen all-
gemeinen Mechanismus, Dokumenten Struktur hinzuzufgen. Diese Elemente definieren Inhalt als
inzeilige (SPAN) oder Block-Elemente (DIV), erlegen dem Inhalt aber keine anderen Darstellungs-
vorgaben auf. So k=nnen Autoren diese Elemente zusammen mit Stylesheets, dem lang-Attribut
usw. dafr verwenden, HTML auf ihre eigenen Bedrfnisse und ihren Geschmack zuzuschneiden.
Nehmen wir zum Beispiel an, dass wir basierend auf einer Datenbank mit Client-Informationen
ein HTML-Dokument generieren wollten. Da HTML keine Elemente zur Identifikation solcher
Objekte wie „Client“, „Telefonnummer“, „Mailadresse“ usw. enth@lt, benutzen wir DIV und
SPAN, um die gewnschten Strukturierungs- und Pr@sentationsergebnisse zu erzielen. Um die
Information zu strukturieren, k=nnten wir das TABLE-Element wie folgt verwenden:
<edition
[Link]>
<TR><TH>Email:<TD>yves@[Link]</TR>
</TABLE>
</DIV>
Fr das Finetuning der Pr@sentation der Datenbankeintr@ge k=nnen wir sp@ter einfach Style-
Die HTML 4.01- Spezifikation
sheet-Deklarationen hinzufgen.
Ein weiteres Anwendungsbeispiel finden Sie weiter oben im Abschnitt ber die Attribute class und id.
Visuelle Benutzerprogramme fgen im Allgemeinen vor und nach dem DIV-Element einen Zei-
lenumbruch ein, zum Beispiel ist fr
<P>aaaaaaaaa<DIV>bbbbbbbbb</DIV><DIV>ccccc<P>ccccc</DIV>
aaaaaaaaa
bbbbbbbbb
ccccc
ccccc
·· title (Elementtitel)
style (Inzeilige Formatierungsinformation)
·· align (Ausrichtung)
onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress,
onkeydown, onkeyup (eingebettete Ereignisse)
Ein berschrift-Element beschreibt kurz das Thema des Abschnittes, den es er=ffnet. ber-
schriftsinformationen k=nnen von Benutzerprogrammen zum Beispiel dafr verwendet wer-
den, fr ein Dokument automatisch ein Inhaltsverzeichnis zu erstellen.
In HTML gibt es sechs berschriftebenen, von denen H1 die oberste und H6 die unterste ist.
Visuelle Benutzerprogramme stellen wichtigere berschriften meist in gr=ßerer Schrift dar als
weniger wichtige.
Das folgende Beispiel zeigt, wie man das DIV-Element einsetzt, um die berschrift mit dem
darauffolgenden Abschnitt des Dokuments zu verbinden. Dieses Vorgehen erm=glicht es Ihnen,
fr den Abschnitt mit Hilfe von Stylesheets einen Stil (style) zu definieren (dem Hintergrund
eine Farbe zu geben, die Schriftart festzulegen usw.).
<HEAD>
<TITLE>... document title ...</TITLE>
<STYLE type="text/css">
[Link] { text-align: justify; font-size: 12pt}
[Link] { text-indent: 2em }
H1 { font-style: italic; color: green }
H2 { color: green }
</STYLE>
</HEAD>
Manche werten das Hberspringen von Hberschriftsebenen als schlechten Stil. Sie akzeptieren H1 H2 H1,
aber nicht H1 H3 H1, weil die Hberschriftsebene H2 bersprungen wird. n
· title (Elementtitel)
<edition
[Link]>
oder fr einen bedeutenden Teil eines Dokuments, wie zum Beispiel ein Formular, bereitzustel-
len. Dieses Element erscheint oft am Anfang oder Ende eines Dokuments.
Zum Beispiel k=nnte eine Seite der Website des W3C, die Bezug hat zu HTML, die folgende
Kontaktinformation enthalten:
<ADDRESS>
<A href="../People/Raggett/">Dave Raggett</A>,
<A href="../People/Arnaud/">Arnaud Le Hors</A>,
contact persons for the <A href="Activity">W3C HTML Activity</A><BR>
$Date: 1999/12/24 23:07:14 $
</ADDRESS>
Das lang-Attribut spezifiziert die Sprache des Elementinhalts und der Attributwerte; ob es fr
ein gegebenes Attribut relevant ist, h@ngt von Syntax und Semantik des Attributs und der
daraus resultierenden Operation ab.
Anliegen des lang-Attributs ist es, Benutzerprogrammen zu gestatten, Inhalt auf der Basis bli-
sollten Benutzerprogramme (1) versuchen, den englischen Inhalt in angemessener Art und
Weise darzustellen (z. B. in seiner Behandlung der Anfhrungszeichen) und mssen (2) ver-
suchen, g – obgleich kein englischer Buchstabe – darzustellen.
Hiermit in Zusammenhang stehende Informationen finden Sie im Abschnitt 5.4, „Nicht darstell-
bare Zeichen“.
8.1.1 Sprachcodes
Der Wert des lang-Attributs ist ein Sprachcode, der eine natrliche gesprochene, geschriebene
oder auf andere Art zur Verst@ndigung von Menschen verwendete Sprache kennzeichnet.
Computer-Sprachen sind explizit von Sprachcodes ausgeschlossen.
[RFC1766] definiert und erkl@rt die Sprachcodes, die in HTML-Dokumenten verwendet wer-
den mssen.
Kurz gefasst, bestehen Sprachcodes aus einem prim@ren Code und einer – m=glicherweise lee-
ren – Serie von Unter-Codes:
<edition
[Link]>
den Reaktion fhren, drfte aber weniger gef@hrlich sein als gegenber einem Klingo-
nen. Wer es ausprobieren m=chte, sollte also mit einem Cineasten anfangen. ;-)
Da Sie in Mitteleuropa vermutlich h@ufiger mit Deutschen und Schweizern als mit Klin-
gonen zusammentreffen, sehen Sie nachfolgend noch ein Beispiel fr einen deutschen
Satz. Er stammt (hinsichtlich der Auszeichnungen leicht abgewandelt) aus der deutschen
XML-Spezifikation:
Beachten Sie bitte, dass die Sprachauszeichnung nicht fr Dialekte verwendet wird.
Aus zwei Zeichen bestehende Sprachcodes sind fr [ISO639] Sprachkrzel reserviert. Zwei-
Zeichen-Codes beinhalten fr (Franz=sisch), de (Deutsch), it (Italienisch), nl (Niederl@ndisch), el
(Griechisch), es (Spanisch), pt (Portugiesisch), ar (Arabisch), he (Hebr@isch), ru (Russisch), zh
(Chinesisch), ja (Japanisch), hi (Hindi), ur (Urdu), und sa (Sanskrit).
Jeder Zwei-Zeichen-Subcode wird als [ISO3166] L@ndercode (country code) aufgefasst.
Content-Language: en-cockney
Anmerkung: Tabellenzellen k nnen lang-Werte nicht von Eltern-Elementen erben, sondern erhalten
sie von der ersten Zelle eines Bereiches. Einzelheiten finden Sie im Abschnitt 11.3.2 unter „Vererbung
von Ausrichtungsangaben“. n
Anmerkung: Sprachcode-Hierarchien garantieren nicht, dass alle Sprachen mit einem allgemeinen
Pr,fix von denen ["von den Menschen"] verstanden werden, die eine oder mehrere dieser Sprachen
beherrschen. Sie erlauben einem Benutzer, die allgemeinere Form anzufordern, falls dieser Fall [Nicht-
Verstehen der Sprache] fr den Benutzer vorliegt. n
Anmerkung der bersetzer: Cockney ist eine Sprache, die in einigen Teilen von
London gesprochen wurde beziehungsweise wird. Ein Benutzer, der „en-US“ beherrscht,
muss „en-cockney“ nicht unbedingt verstehen. (Man stelle sich den Klischee-Texaner vor,
der London besucht.) Der Benutzer sollte dann aber „en“ anfordern k=nnen.
Die g@ngigen Web-Browser erlauben, eine sortierte Vorgabe der bevorzugten Sprachen
anzugeben. Zum Beispiel Mozilla:
<edition
[Link]>
Die HTML 4.01- Spezifikation
Zus@tzlich zur Spezifizierung der Sprache eines Dokuments mit Hilfe des lang-Attributs kann es
notwendig sein, dass Autoren die Basisrichtung (von links nach rechts oder von rechts nach
links) fr Teile des Textes eines Dokuments oder eine Tabellenstruktur usw. spezifizieren. Dies
wird mit Hilfe des dir-Attributs erledigt.
Die [UNICODE]-Spezifikation ordnet Zeichen Richtung zu und definiert einen (komplexen)
Algorithmus zur Bestimmung der geeigneten Richtung von Text. Wenn ein Dokument kein
darstellbares von rechts nach links zu lesendes Zeichen (right-to-left character) enth@lt, ist es
nicht erforderlich, dass ein konformes Benutzerprogramm den [UNICODE]-Bidirektional-Al-
gorithmus anwendet. Wenn ein Dokument von rechts nach links zu lesende Zeichen enth@lt
und das Benutzerprogramm diese Zeichen anzeigt, muss das Benutzerprogramm den Bidirek-
tional-Algorithmus verwenden.
Obgleich Unicode spezielle Zeichen spezifiziert, die sich mit der Leserichtung befassen, bietet
HTML h=herwertige Auszeichnungskonstrukte an, die dasselbe tun: das dir-Attribut (nicht zu
verwechseln mit dem DIR-Element) und das BDO-Element. Um ein hebr@isches Zitat auszudr-
cken, ist es somit intuitiver, zu schreiben:
Die Zeichen in diesem Beispiel (und in allen verwandten Beispielen) sind im Computer so
gespeichert, wie sie hier gezeigt werden: Das erste Zeichen in der Datei ist „e“, das zweite „n“
und das letzte „6“.
Wir setzen voraus, die vorherrschende Sprache des Dokuments, das diesen Absatz enth@lt, ist
Englisch. Das bedeutet, die Basisrichtung verl@uft von links nach rechts. Die korrekte Pr@senta-
tion dieser Zeile w@re:
Die gestrichelten Linien kennzeichnen die Struktur dieses Satzes: Englisch herrscht vor, etwas
hebr@ischer Text ist eingebettet. Um die korrekte Pr@sentation zu erzielen, ist keine zus@tzliche
Auszeichnung erforderlich, weil die hebr@ischen Passagen von Benutzerprogrammen durch
Anwendung des Bidirektional-Algorithmus korrekt umgekehrt werden.
Wenn andererseits hebr@isch die vorherrschende Sprache des Dokuments ist, ist die Basisrich-
tung von rechts nach links. Die korrekte Pr@sentation hierfr:
<edition
[Link]>
In diesem Fall wurde der ganze Satz von rechts nach links darestellt und die eingebetteten eng-
lischen Passagen vom Bidirektional-Algorithmus richtig umgekehrt.
Andererseits erben Inline-Elemente das dir-Attribut nicht. Das heißt, ein Inline-Element ohne
dir-Attribut er=ffnet hinsichtlich des Bidirektional-Algorithmus keine zus@tzliche Einbettungs-
ebene. (Ein Element wird hier in Abh@ngigkeit von seiner Standardpr@sentation als Block-Level-
oder Inline-Element betrachtet. Beachten Sie, dass das INS- und das and DEL-Element in Abh@n-
gigkeit vom Kontext Block-Level- oder Inline-Elemente sein k=nnen.)
Wir setzen voraus, die vorherrschende Sprache des Dokuments, das diesen Absatz enth@lt, ist
englisch. Außerdem enth@lt der obige englische Satz einen hebr@ischen Abschnitt, der sich von
HEBREW2 bis HEBREW4 erstreckt, und der hebr@ische Abschnitt enth@lt ein englisches Zitat
(english3). Die gewnschte Darstellung des Textes ist diese:
Anmerkung der bersetzer: Der oben erw@hnte Konflikt besteht in dem Wider-
spruch, der auftreten kann, wenn auf Zeichenebene die Richtung links-nach-rechts (zum
Beispiel mit dem genannten Zeichen an Position 202A) angegeben wird, gleichzeitig das
dir-Attribut den Wert „RTL“ besitzt.
<edition
[Link]>
<!ATTLIST BDO
%coreattrs; - - id, class, style, title - -
lang %LanguageCode; #IMPLIED - - language code - -
dir (ltr|rtl) #REQUIRED - - directionality - -
>
Attributdefinitionen
nehmen jedoch an, dass dieser Text bereits in visueller Reihenfolge vorliegt. Ein Grund dafr
kann sein, dass der MIME-Standard ([RFC2045], [RFC1556]) visuelle Reihenfolge begnstigt,
z. B., dass von rechts nach links zu lesende Zeichenfolgen von rechts nach links in den Byte-
strom aufgenommen werden. In EMail k=nnte der obige Text – Zeilenwechsel einbezogen – so
formatiert werden:
<PRE>
<BDO dir="LTR">english1 2WERBEH english3</BDO>
<BDO dir="LTR">4WERBEH english5 6WERBEH</BDO>
</PRE>
Das BDO-Element sollte in Szenarien verwendet werden, in denen absolute Kontrolle ber die
Reihenfolge gefordert ist (z. B. mehrsprachige part numbers). Das dir-Attribut ist zwingend fr
dieses Element.
Autoren k=nne auch spezielle Unicode-Zeichen verwenden, um den Bidirektional-Algorithmus
zu berschreiben – LEFT-TO-RIGHT OVERRIDE (202D) oder RIGHT-TO-LEFT OVERRIDE
(hexadecimal 202E). In beiden F@llen beendet das Zeichen POP DIRECTIONAL FORMAT-
TING (hexadecimal 202C) das berschreiben.
Anmerkung: Erinnern Sie sich, dass Konflikte auftreten k nnen, wenn das dir-Attribut in Inline-Ele-
menten (einschl. BDO) gleichzeitig mit den entsprechenden [UNICODE]-Formatierungszeichen einge-
setzt wird. n
Bidirektionalit.t und Zeichenkodierung: Gem,ß [RFC1555] und [RFC1556] gibt es spezielle
Konventionen fr die Verwendung von „Zeichensatz“-Parameterwerten, um bidirektionale Behandlung
in MIME-Mail zu kennzeichen, insbesondere zur Unterscheidung zwischen visueller, impliziter und
expliziter Richtung. Der Parameterwert „ISO-8859-8“ (fr Hebr,isch) heißt visuelle Kodierung,
„ISO-8859-8-i“ heißt implizite Bidirektionalit,t und „ISO-8859-8-e“ heißt explizite Richtung.
Weil HTML den Unicode-Bidirektional-Algorithmus verwendet, mssen unter Verwendung von ISO
8859-8 kodierte konforme Dokumente als „ISO-8859-8-i“ ausgewiesen sein. Explizite Kontrolle der
Richtung ist auch mit HTML m glich, kann aber nicht mit ISO 8859-8 ausgedrckt werden, deswegen
sollte „ISO-8859-8-e“ nicht verwendet werden.
Der Wert „ISO-8859-8“ impliziert, dass das Dokument visuell formatiert ist, einige Auszeichnungen
dabei missbrauchend (wie TABLE mit Rechtsbndigkeit und ohne Zeilenumbruch), um eine verst,ndliche
Darstellung durch ,ltere Benutzerprogramme, die Bidirektionalit,t nicht behandeln, zu gew,hrleisten.
Solche Dokumente entsprechen nicht der gegenw,rtigen Spezifikation. Wenn erforderlich, k nnen sie
zur aktuellen Spezifikation konform gemacht werden (und gleichzeitig werden sie von ,lteren Benut-
zerprogrammen korrekt dargestellt werden), indem, wo n tig, BDO-Auszeichnungen hinzugefgt wer-
[Link] Gegensatz zu dem, was in [RFC1555] und [RFC1556] gesagt wird, kommt bei ISO-8859-6
(Arabisch) keine „Visual“-Reihenfolge zum Einsatz. n
<edition
[Link]>
den die Texte also „von hinten nach vorne“ (links nach rechts) angezeigt. Das Autoren-
werkzeug muss sich darum kmmern, die von rechts nach links eingegebenen Zeichen
in anderer Reihenfolge abzuspeichern.
Die HTML 4.01- Spezifikation
8.2.5 Zeichenreferenzen f-r die Richtung und f-r die Steuerung von
Verbindungen (joining control)
Im Allgemeinen ist die Verwendung von Stylesheets zur Onderung der visuellen Wiedergabe
eines Elements von Block-Level zu Inline oder umgekehrt unkompliziert. Da der Bidirektional-
9 Text
Die folgenden Abschnitte behandeln Fragen rund um die Strukturierung von Text. Elemente,
die Text darstellen (Ausrichtungselemente, Font-Elemente, Stylesheets und so weiter) werden
an anderen Stellen der Spezifikation behandelt (siehe Abschnitte 14 und 15). Informationen zu
Zeichen finden Sie im Abschnitt 5.1, „Der Dokumentzeichensatz“.
<edition
[Link]>
Dieses Layout kann beinhalten, dass Worte durch Abst@nde getrennt werden (genannt Wort-
zwischenraum) (inter-word space); die Konventionen fr Wortzwischenr@ume variieren
jedoch von Schrift zu Schrift. Zum Beispiel wird in lateinischen Schriften Wortzwischenraum
blicherweise als ASCII-Leeraum ( ) dargestellt, w@hrend es in Thai ein Wordtrenner
Die HTML 4.01- Spezifikation
mit Null-Breite (​) ist. In japanischer und chinesischer Schrift wird Wortzwischenraum
berhaupt nicht besonders dargestellt.
Beachten Sie, dass eine Folge von Leerr@umen zwische Worten im Quelldokument v=llig unter-
schiedliche Darstellungen des Wortzwischenraumes ergeben kann (außer beim PRE-Element).
Insbesondere sollten Benutzerprogramme eingelesene Leerraumfolgen bei der Erzeugung des
Wortzwischenraumes fr die Ausgabe reduzieren (collapse). Das kann und soll sogar bei feh-
lender Sprachinformation (aus dem lang-Attribute, dem HTTP-„Content-Language“-Header-
Feld (siehe [RFC2616], Abschnitt 14.12), Einstellungen im Benutzerprogramm und so weiter)
erfolgen.
Das PRE-Element wird fr vorformatierten Text (preformatted text) verwendet, in dem Leer-
@ume signifikant sind (siehe Abschnitt 9.3.4).
Um Probleme mit SGML-Regeln fr Zeilenumbruch (SGML line break rules) und Inkonsisten-
zen zwischen bestehenden Implementationen zu vermeiden, sollten Autoren sich nicht darauf
verlassen, dass Benutzerprogramme Leeraum unmittelbar nach einem Start-Tag oder direkt
vor einem End-Tag anzeigen (siehe auch Abschnitt „Zeilenumbrche“ in Anhang B). So sollten
Autoren und insbesondere Autorenwerkzeuge schreiben:
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
EM:
<edition
[Link]>
Der Inhalt des ABBR- bzw. ACRONYM-Elements spezifiziert den Abkrzungsausdruck selbst, so, wie
er normal im Fließtext erscheinen wrde. Das title-Attribut dieser Elemente kann verwendet
werden, um die Langform des Ausdrucks anzubieten.
Beispiele fr die Verwendung von ABBR sind:
Die HTML 4.01- Spezifikation
<P>
<ABBR title="World Wide Web">WWW</ABBR>
<ABBR lang="fr"
title="Société Nationale des Chemins de Fer">
SNCF
</ABBR>
<ABBR lang="es" title="Doña">Doña</ABBR>
<ABBR title="Abbreviation">abbr.</ABBR>
Beachten Sie, dass Abkrzungen und Akronyme oft ihre eigene gesprochene Form haben. Zum
Beispiel werden „IRS“ und „BBC“ im allgemeinen Buchstabe fr Buchstabe gesprochen und
„NATO“ und „UNESCO“ phonetisch. Wieder andere abgekrzte Formen (zum Beispiel „URI“
and „SQL“) werden von einigen buchstabiert und von anderen als Worte gesprochen. Wenn
notwendig, sollten Autoren Stylesheets verwenden, um die Aussprache der abgekrzten Form
anzugeben.
Attributdefinitionen
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Diese beiden Elemente kennzeichnen zitierten [Link] ist vorgesehen fr lange Zitate
(Block-Level-Inhalt) und Q fr kurze Zitate, der keine Absatzwechsel erfordert (inzeiliger
Inhalt).
Dieses Beispiel zeichnet einen Auszug aus „Die zwei Trme“ von J.R.R. Tolkien als BLOCKQUOTE aus.
<BLOCKQUOTE cite="[Link]
<P>Einer hinter dem anderen liefen sie wie Jagdhunde auf einer
frischen F]hrte, und ihre Augen leuchteten vor Ungeduld. Fast genau
nach Westen hatten die marschierenden Orks ihre h]ßliche, breite Spur
getrampelt; das duftige Gras von Rohan war zertreten und schwarz
geworden, als sie vorUbergingen.</P>
</BLOCKQUOTE>
<edition
[Link]>
Anmerkung der bersetzer: Leider sind nicht alle zur Zeit g@ngigen Browser
dazu in der Lage. In folgendem Beispielcode ignorieren einige „Q“ vollst@ndig.
Die HTML 4.01- Spezifikation
Da die Sprache beider Zitate „American English“ ist, sollten Benutzerprgramme sie entspre-
chend rendern, zum Beispiel durch einfache Anfhrungszeichen fr das innere Zitat und dop-
pelte Anfhrungszeichen fr das @ußere Zitat:
John said, "I saw Lucy at lunch, she told me 'Mary wants you
to get some ice cream on your way home.' I think I will get some
at Ben and Jerry's, on Gloucester Road."
Anmerkung der bersetzer: Diese „Hrde“ bew@ltigen leider noch weniger der
derzeit gebr@uchlichen Browser. Auch diejenigen, die Anfhrungszeichen fr Zitate set-
zen, bercksichtigen das lang-Attribut dabei meistens nicht.
So sollte es aussehen:
Anmerkung: Wir empfehlen, dass Stylesheet-Implementationen einen Mechanismus fr das Einset-
zen von Anfhrungszeichen vor und nach einem durch BLOCKQUOTE begrenzten Zitat anbieten, der der
aktuellen Sprache und dem Grad der Verschachtelung entspricht.
<edition
[Link]>
Weil jedoch einge Autoren BLOCKQUOTE lediglich als Mechanismus zum Einrcken von Text benutzt
haben, sollten Benutzerprogramme, um die Absicht der Autoren zu wahren, im Standard-Style keine
Anfhrungszeichen einsetzen.
Die Verwendung von BLOCKQUOTE fr das Einrcken von Text ist zu Gunsten von Stylesheets missbilligt. n
Die HTML 4.01- Spezifikation
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Viele Schriften (zum Beispiel franz=sisch) erfordern Hoch- oder Tiefstellungen fr eine saubere
Darstellung. Um Text in solchen F@llen auszuzeichnen, sollten das SUB- und das SUP-Element
benutzt werden.
H<SUB>2</SUB>O
E = mc<SUP>2</SUP>
<SPAN lang="fr">M<SUP>lle</SUP> Dupont</SPAN>
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
·· align (Ausrichtung)
onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress,
onkeydown, onkeyup (eingebettete Ereignisse)
Das P-Element repr@sentiert einen Absatz. Es kann keine Block-Level-Elemente enthalten (ein-
schließlich P selbst).
Wir raten Autoren von der Verwendung leerer P-Elemente ab. Benutzerprogramme sollten
leere P-Elemente ignorieren.
Ein Zeilenumbruch ist definiert als Wagenrcklauf (carriage return, 
), ein Zeilenvor-
schub (line feed, 
) oder ein Wagenrcklauf/Zeilenvorschub-Paar. Alle Zeilenumbr-
che sind Leerraum.
Mehr Informationen ber die Spezifikation von Zeilenumbrchen in SGML finden Sie in Anhang
B unter „Zeilenumbrche“.
<edition
[Link]>
Zeilenumbruch verhindern
Manchmal wollen Autoren verhindern, dass ein Zeilenumbruch zwischen zwei Worten
erscheint. Das -Entity (  oder  ) fungiert als Zwischenraum, an dem Benut-
zerprogramme keinen Zeilenumbruch veranlassen.
9.3.3 Silbentrennung
In HTML gibt es zwei Typen von Trennzeichen: den normalen Trennstrich und das weiche
Trennzeichen (soft hyphen). Der normale Trennstrich sollte von den Benutzerprogrammen
wie jedes andere Zeichen behandelt werden. Das weiche Trennzeichen zeigt dem Benutzer-
programm wo, ein Zeilenumbruch auftreten kann.
Diejenigen Browser, die weiche Trennzeichen interpretieren, mssen folgende Semantik
beachten: Wenn eine Zeile an einem weichen Trennzeichen umgebrochen wird, muss ein
Trennstrich am Ende der ersten Zeile stehen. Wenn eine Zeile an einem weichen Trennzei-
chen nicht umgebrochen wird, darf das Benutzerprogramm keinen Trennstrich ausgeben. Bei
Operationen wie Suchen und Sortieren sollte das weiche Trennzeichen immer ignoriert wer-
den.
In HTML wird der normale Trennstrich durch das „-“-Zeichen (- or -) repr@sen-
tiert. Das weiche Trennzeichen wird repr@sentiert durch die Zeichen-Entity-Referenz ­
(soft hyphen, ­ oder ­)
Attributdefinitionen
<edition
[Link]>
·· title (Elementtitel)
Die HTML 4.01- Spezifikation
Das PRE-Element sagt visuellen Benutzerprogrammen, dass der enthaltene Text „vorformatiert“. ist.
Bei der Behandlung vorformatierten Textes k=nnen Benutzerprogramme Folgendes tun:
·· Leerraum intakt lassen
Text in einer Nichtproportionalschrift rendern
· Automatischen Umbruch verhindern
Bei der Behandlung vorformatierten Textes drfen Benutzerprogramme die Durchfhrung des
Bidirektionalalgorithmus jedoch nicht verhindern. Nicht-visuelle Benutzerprogramme mssen
zus@tzlichen Leerraum im Inhalt eines PRE-Elements nicht bercksichtigen.
Mehr Informationen ber die Spezifikation von Zeilenumbrchen in SGML finden Sie im Anhang
B unter „Zeilenumbrche“.
Der obenstehende DTD-Auszug zeigt an, welche Elemente nicht innerhalb einer PRE-Deklara-
tion stehen k=nnen. Dies ist dasselbe wie in HTML 3.2 und dafr bestimmt, konstante Zeilen-
abst@nde und Spaltenausrichtung fr in Festbreitenschrift gerenderten Text zu erhalten. Auto-
ren wird abgeraten, dieses Verhalten durch Stylesheets zu ver@ndern.
Das folgende Beispiel zeigt eine vorformatierte Strophe aus dem Gedicht „To a Skylark“ von
Shelley:
<PRE>
Higher still and higher
From the earth thou springest
Like a cloud of fire;
The blue deep thou wingest,
And singing still dost soar, and soaring ever singest.
</PRE>
Anmerkung: Der folgende Abschnitt ist eine informelle Beschreibung des Verhaltens einiger gegen-
w,rtiger visueller Benutzerprogramme bei der Formatierung von Abs,tzen. Stylesheets erlauben bes-
Dies steht im Gegensatz zum in Romanen verwendeten Stil, der die erste Zeile eines Absatzes
einrckt und zwischen der letzten Zeile des aktuellen Absatzes und der ersten Zeile des folgen-
den den normalen Zeilenabst@nd verwendet, zum Beispiel:
Dem ursprnglichen Satzstil des NCSA Mosaic-Browsers von 1993 folgend richten Benutzer-
programme im Allgemeinen nicht beide R@nder aus, zum Teil weil das ohne anspruchsvolle Sil-
bentrennungsroutinen schwer effektiv zu realisieren ist. Das Auftauchen von Stylesheets und
von gegl@tteten Schriften mit Sub-Pixel-Positionierung wird HTML-Autoren vermutlich mehr
M=glichkeiten an die Hand geben, als sie zuvor besaßen.
Stylesheets bieten weitgehende Kontrolle ber Gr=ße und Stil einer Schrift, ber R@nder,
Abst@nde vor und nach einem Absatz, Einrckung der ersten Zeile, Ausrichtung und viele
andere Details. Das Standard-Stylesheet des Benutzerprogramms formatiert P-Elemente auf
vertraute Art, wie oben beschrieben. Man k=nnte das im Prinzip so berschreiben, dass
Abs@tze ohne die Zwischenr@ume, die blicherweise aufeinanderfolgende Abs@tze trennen,
dargestellt werden. Weil das Leser verwirren kann, raten wir gemeinhin von dieser Praxis ab.
Es ist eine g@ngige Konvention, dass visuelle HTML-Benutzerprogramme Textzeilen umbre-
chen, um sie innerhalb der verfgbaren R@nder einzupassen. Der Algorithmus fr den Umbruch
h@ngt von der zu formatierenden Schrift (script) ab.
<edition
[Link]>
In westlichen Schriften zum Beispiel sollte Text nur an Lerr@umen (white space) umgebrochen
werden. Frhere Benutzerprogramme haben Zeilen inkorrekt genau hinter dem Start-Tag oder
genau vor dem End-Tag eines Elements umgebrochen, was zu h@ngender Interpunktion fhrte.
Betrachten Sie zum Beispiel diesen Satz:
Die HTML 4.01- Spezifikation
Wird die Zeile genau vor dem End-Tag des A-Elements umgebrochen, fhrt das dazu, dass das
Komma an den Anfang der n@chsten Zeile rutscht:
Das ist ein Fehler, da im Markup an dieser Stelle kein Leerraum steht.
Attributdefinitionen
Diese beiden Elemente sind außergew=hnlich fr HTML, k=nnen entweder als Block-Level-
oder inzeilige Elemente dienen (jedoch nicht beides). Sie k=nnen ein oder mehr Worte inner-
halb eines Absatzes enthalten oder ein oder mehr Block-Level-Elemente wie Abs@tze, Listen
und Tabellen.
<P>
Ein BUrgermeister kann <DEL>3</DEL><INS>5</INS>
Stellvertreter bestimmen.
</P>
Das INS- und das DEL-Element drfen keinen Block-Level-Inhalt haben, wenn diese Elemente als
als inzeilige Elemente fungieren.
<P>
<INS><DIV>...Block-Inhalt...</DIV></INS>
</P> n
Benutzerprogramme sollten eingefgten und gel=schten Text so darstellen, dass die Onderung
deutlich wird. Zum Beispiel kann eingefgter Text in spezieller Schrift erscheinen, gel=schter
Text kann gar nicht gezeigt oder durchgestrichen oder mit speziellen Markierungen versehen
werden und so weiter.
Anmerkung der bersetzer: Eine m=gliche Pr@sentation des Beispiels von oben
ist folgende:
Die beiden folgenden Beispiele passen auf „November 5, 1994, 8:15:30 am, US Eastern Stan-
dard Time.“
1994-11-05T13:15:30Z
1994-11-05T08:15:30-05:00
<INS datetime="1994-11-05T08:15:30-05:00"
cite="[Link]
Furthermore, the latest figures from the marketing department
suggest that such practice is on the rise.
</INS>
<edition
[Link]>
<INS datetime="1994-11-05T08:15:30-05:00"
title="Changed as a result of Steve B's comments in meeting.">
Furthermore, the latest figures from the marketing department
suggest that such practice is on the rise.
</INS>
10 Listen
10.1 Einf-hrung in Listen
HTML bietet Autoren verschiedene Mechanismen, Auflistungen von Informationen zu spezifi-
zieren. Alle Listen mssen ein oder mehr Listenelemente haben. Listen k=nnen Folgendes ent-
halten:
·· Ungeordnete Informationen
Geordnete Informationen
· Definitionen
Zum Beispiel ist die vorstehende Liste eine mit dem UL-Element erstellte ungeordnete Liste:
<UL>
<LI>Ungeordnete Informationen
<LI>Geordnete Informationen
<LI>Definitionen
</UL>
Eine geordnete Liste, erstellt mit Hilfe des OL-Elements, sollte Informationen enthalten, deren
Ordnung wie in einem Rezept hervorgehoben werden soll:
1. Die trockenen Zutaten vermischen.
2. Die flssigen Zutaten dazugeben.
3. 10 Minuten rhren.
4. Eine Stunde bei 300 Grad backen.
Definitionslisten, die mit Hilfe des Elements DL erstellt werden, bestehen im Allgemeinen aus
einer Reihe von Ausdrucks/Definitions-Paaren (Definitionslisten k=nnen auch anders verwen-
det werden). So k=nnte man bei der Werbung fr ein Produkt eine Definitionsliste benutzen:
Niedrigere Kosten
Die neue Version dieses Produktes kostet deutlich weniger als die vorherige!
Einfachere Verwendung
Wir haben das Produkt so ver@ndert, dass es jetzt noch einfacher einzusetzen ist!
Kindersicher
Sie k=nnen Ihre Kinder mit diesem Produkt allein im Zimmer lassen, sie werden sich nicht
verletzen (ohne Garantie).
<DL>
<DT><STRONG>Niedrigere Kosten</STRONG>
<DD>Die neue Version dieses Produktes kostet deutlich weniger als die vorherige!
<DT><STRONG>Einfachere Verwendung</STRONG>
<DD>Wir haben das Produkt so ver]ndert, dass es jetzt noch einfacher einzusetzen
ist!
<DT><STRONG>Kindersicher</STRONG>
<DD>Sie k^nnen Ihre Kinder mit diesem Produkt allein im Zimmer lassen,
sie werden sich nicht verletzen (ohne Garantie).
</DL>
Anmerkung der bersetzer: Falls alle DT-Elemente gleich dargestellt werden sol-
len (was im Allgemeinen sinnvoll ist), sollte man sich im obigen Beispiel die STRONG-Aus-
zeichnung sparen und die Formatierung besser durch eine CSS-Anweisung vornehmen:
dt { font-weight: bold; }
Listen k=nnen auch verschachtelt werden und verschiedene Listentypen k=nnen gemeinsam
verwendet werden. Das folgende Beispiel besteht aus einer Definitionsliste, die eine ungeord-
nete Liste (die Zutaten) und eine geordnete Liste (die Zubereitung) enth@lt:
<edition
[Link]>
Zutaten:
·· 100g Mehl
10g Zucker
··1 Tasse Wasser
Die HTML 4.01- Spezifikation
2 Eier
·Salz, Pfeffer
Zubereitung:
1. Die trockene Zutaten grndlich vermischen.
2. Die flssigen Zutaten dazugeben.
3. 10 Minuten rhren.
4. Eine Stunde bei 300 Grad backen.
Tipp:
Das Rezept kann durch Zugabe von Rosinen verfeinert werden.
Die genaue Darstellung der drei Listenarten h@ngt vom Benutzerprogramm ab. Wir raten
Autoren davon ab, Listen lediglich zum Einrcken von Text zu benutzen. Das ist eine stilistische
Angelegenheit, die besser mit Hilfe von Stylesheets erledigt wird.
Attributdefinitionen
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Geordnete und ungeordnete Listen werden identisch dargestellt und unterscheiden sich nur
darin, dass visuelle Benutzerprogramme geordnete Listeintr@ge nummerieren. Benutzerpro-
gramme k=nnen diese Zahlen auf unterschiedliche Art darstellen. Ungeordnete Listenelemente
sind nicht nummeriert.
Beide Listenarten werden aus einer Folgen von Listeneintr@gen gebildet, definiert durch das
LI-Element (dessen abschließender Tag weggelassen werden kann).
Dieses Beispiel veranschaulicht die Grundstruktur einer Liste.
<UL>
<LI> ... erster Listeneintrag...
<LI> ... zweiter Listeneintrag...
...
</UL>
MISSBILLIGTES BEISPIEL:
<UL>
<LI> ... Ebene eins, Nummer eins...
<OL>
<LI> ... Ebene zwei, Nummer eins...
<LI> ... Ebene zwei, Nummer zwei...
<OL start="10">
<LI> ... Ebene drei, Nummer eins...
</OL>
<edition
[Link]>
Details -ber die Reihenfolge der Zahlen: In geordneten Listen ist es nicht m glich, Listennum-
merierungen aus einer vorherigen Liste automatisch fortzusetzen oder die Nummerierung einiger Lis-
teneintr,ge zu verbergen. Autoren k nnen aber die Nummer eines Listeneintrags ber das value-Attri-
but neu setzen. Die Nummerierung fr die nachfolgenden Listeneintr,ge wird vom neuen Wert aus
fortgesetzt. Zum Beispiel:
<ol>
<li value="30"> Dieser Eintrag wird zu Nummer 30.
<li value="40"> Dieser Eintrag wird zu Nummer 40.
<li> Dieser Eintrag wird zu Nummer 41.
</ol> n
Anmerkung der bersetzer: So oder @hnlich kann diese Liste vom Browser
gezeigt werden:
·· title (Elementtitel)
Definitionslisten unterscheiden sich von anderen Listenarten nur insoweit, dass Listeneintr@ge
aus zwei Teilen bestehen: einer Bezeichnung und einer Beschreibung. Die Bezeichnung wird
durch das DT-Element zugewiesen und ist auf Elemente auf Zeilenebene beschr@nkt. Die
Beschreibung wird mit dem Element DD angegeben, das Blockelemente enth@lt.
Ein Beispiel:
<DL>
<DT>Dweeb
<DD>young excitable person who may mature
into a <EM>Nerd</EM> or <EM>Geek</EM>
<DT>Hacker
<DD>a clever programmer
<DT>Nerd
<DD>technically bright but socially inept person
</DL>
<DL>
<DT>Center
<DT>Centre
<DD> A point equidistant from all points
on the surface of a sphere.
<DD> In some field sports, the player who
holds the middle position on the field, court,
or forward line.
</DL>
Eine andere Anwendungsm=glichkeit fr DL ist beispielsweise die Auszeichnung von Dialogen,
in der jedes DT einen Sprecher bezeichnet und jedes DD ihre oder seine Worte enth@lt.
Anmerkung der bersetzer: Wie die Beispiele zeigen, ist die obige Aussage, dass
in DD Blockelemente stehen nicht korrekt. DD kann entweder Block- oder inzeilige Ele-
mente, auch Text, aufnehmen.
Die Beispiele zeigen eine saubere Verwendung der Definitionslisten. Die anschließend
gemachte Bemerkung zeigt aber auch, dass ein DT (Definition Term) nicht immer einen
Ausdruck (Term) enth@lt, der im nachfolgenden DD (Definition) definiert wird. Trotz der
semantisch anmutenden Elementtypnamen handelt es sich in der Praxis doch oft um
eine Liste, die (auch) gestalterischen Zwecken dient.
<edition
[Link]>
Anmerkung: Nachfolgend eine informelle Beschreibung zum Verhalten einiger aktueller visueller
Benutzerprogramme bei der Listenformatierung. Stylesheets erlauben eine bessere Kontrolle der For-
Die HTML 4.01- Spezifikation
M=gliche Werte des type-Attributs fr das OL-Element sind in der folgenden Tabelle zusammen-
gestellt (zwischen Groß- und Kleinschreibung wird unterschieden):
Beachten Sie, dass das Attribut type missbilligt ist und der Stil von Listen durch Stylesheets
behandelt werden sollte.
den, die prinzipiell dafr sprechen, Formatierung per Stylesheet zu steuern, erh@lt man
in diesem Fall mit CSS auch viel mehr M=glichkeiten als mit HTML.
<STYLE type="text/css">
[Link] { list-style-type: lower-roman }
</STYLE>
<BODY>
<OL class="withroman">
<LI> Schritt eins ...
<LI> Schritt zwei ...
</OL>
</BODY>
Die Wiedergabe einer Definitionsliste ist ebenfalls abh@ngig vom Benutzerprogramm. Das Bei-
spiel
<DL>
<DT>Dweeb
<DD>young excitable person who may mature
into a <EM>Nerd</EM> or <EM>Geek</EM>
<DT>Hacker
<DD>a clever programmer
<DT>Nerd
<DD>technically bright but socially inept person
</DL>
Dweeb
young excitable person who may mature into a Nerd or Geek
Hacker
a clever programmer
Nerd
technically bright but socially inept person
<edition
[Link]>
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Das DIR-Element wurde fr das Erstellen von mehrspaltigen Verzeichnislisten entworfen. Das
MENU-Element wurde fr einspaltige Menlisten entworfen. Beide Elemente haben dieselbe
Struktur wie UL, unterscheiden sich jedoch in der Darstellung. In der Praxis wird ein Benutzer-
programm eine DIR- oder MENU-Liste genau wie eine UL-Liste wiedergeben.
Wir empfehlen dringend, anstelle dieser Elemente UL zu verwenden.
11 Tabellen
11.1 Einf-hrung in Tabellen
Das Tabellenmodell von HTML gestattet Autoren die Anordnung von Daten – Text, vorforma-
tierter Text, Bilder, Links, Formulare, Formularfelder, andere Tabellen und so weiter – in Zel-
len, die in Zeilen und Spalten angeordnet sind.
Jeder Tabelle kann eine Beschriftung zugewiesen werden (siehe das Element CAPTION), die eine
kurze Beschreibung der Intention der Tabelle enth@lt. Zum Nutzen der Leute, die sprach- oder
braille-basierte Benutzerprogramme verwenden, kann auch eine l@ngere Beschreibung angege-
ben werden (ber das Attribut summary).
Tabellenzeilen k=nnen in Kopf-, Fuß- und Rumpfbereiche geordnet werden (ber die Elemente
THEAD, TFOOT bzw. TBODY). Zeilengruppen vermitteln zus@tzliche Strukturinformationen und k=n-
nen von Benutzerprogrammen auf eine Weise dargestellt werden, die diese Struktur unter-
sttzt. Benutzerprogramme k=nnen die Bereiche Kopf, Rumpf und Fuß ausnutzen, um das von
den Kopf- und Fußbereichen unabh@ngige Scrollen von Rumpf-Bereichen zu untersttzen. Wer-
den lange Tabellen gedruckt, k=nnen die Kopf- und Fußinformationen auf jeder Seite, die Tabel-
lendaten enth@lt, wiederholt werden.
Autoren k=nnen auch Spalten gruppieren, um zus@tzliche Strukturinformationen anzubieten,
die von Benutzerprogrammen verwertet werden k=nnen. Des Weiteren k=nnen Autoren Spal-
teneigenschaften zu Beginn einer Tabellendefinition deklarieren (ber die Elemente COLGROUP
und COL), damit Benutzerprogramme die Tabelle inkrementell darstellen k=nnen, anstatt vor
der Darstellung auf die bertragung aller Tabellendaten zu warten.
Tabellenzellen k=nnen entweder „Kopfinformationen“ (siehe Element TH) oder „Daten“ (siehe
Element TD) enthalten. Zellen k=nnen sich ber mehrere Reihen oder Spalten erstrecken. Das
Tabellenmodell von HTML 4 gestattet es Autoren, jede Zelle so zu beschriften, dass nicht visu-
elle Benutzerprogramme Kopfinformationen ber die Zelle einfacher an den Benutzer weiter-
geben k=nnen. Diese Mechanismen untersttzen nicht nur Benutzer mit Sehbehinderungen
immens, sie erm=glichen es multimodalen kabellosen Browsern mit begrenzten Anzeigem=g-
lichkeiten (z. B. web-f@hige Pager und Telefone) Tabellen zu verarbeiten.
Anmerkung der bersetzer: Diese Aussagen mssen wir – so richtig sie in ihrem
Anliegen sind – unter praktischen Gesichtspunkten etwas relativieren.
Richtig und wichtig ist: Tabellen sind ein Struktur-, kein Layoutmittel. Mangels Alternati-
ven wurden und werden sie h@ufig fr Layoutzwecke „missbraucht“ und fhren zu den
erw@hnten Problemen bei nicht visueller Darstellung. Leider scheitert die vorgeschla-
gene Alternative, Stylesheets zu verwenden, im Moment oft noch in der Praxis, mindes-
tens dann, wenn etwas komplexere Layouts realisiert werden sollen. Die Ursache liegt
in den visuellen Benutzerprogrammen, von denen selbst aktuelle Versionen mit Style-
sheets nicht so umgehen, wie es erforderlich w@re, sei es nun durch Bugs oder unvoll-
st@ndige Untersttzung von Stylesheets.
Um es noch einmal deutlich zu sagen: Wir untersttzen hier nicht die Verwendung von
Tabellen fr Layoutzwecke, weisen nur auf die praktischen Schwierigkeiten hin, die
Alternativen zurzeit noch mit sich bringen.
Die erg@nzende Aussage, dass Tabellen zum horizontalen Scrollen zwingen k=nnen, ist
ebenfalls richtig, jedoch nicht so absolut, wie sie sich vielleicht liest. Nicht die Erstellung
auf gr=ßeren Bildschirmen ist die Ursache, sondern mangelndes Bewusstsein dafr bei
so manchem Autor, der ihnen ein zu starres Layout aufzwingt – brigens auch da, wo
Tabellen nicht „missbraucht“, sondern ihrer Intention entsprechend zur strukturierten
Pr@sentation von Informationen eingesetzt werden. Mehr dazu lesen Sie in unseren
Anmerkungen weiter unten in diesem Kapitel, in den Abschnitten, die sich mit Breiten-
vorgaben besch@ftigen.
Der vorgeschlagene Einsatz von Stylesheets l=st das Problem der zu großen Breiten
brigens nicht. Sie bieten zwar deutlich umfangreichere M=glichkeiten der visuellen
Gestaltung, haben den wichtigen Vorteil, dass sich mit ihrer Hilfe die Pr@sentation vom
Inhalt trennen l@sst, fhren aber ansonsten zu durchaus @hnlichen Problemen bei allzu
starren Vorgaben. Ob feste Positionen durch Dummy-Graphiken – dem meistgehassten
beliebten Hilfsmittel der Tabellenlayouts – erreicht werden, durch unflexible Breiten-
vorgaben oder durch Positionierung mit Hilfe von Stylesheets, macht im Ergebnis nicht
wirklich einen Unterschied. Vermeiden oder wenigstens minimieren l@sst sich des Prob-
lems nur durch bewusstes Herangehen seitens der Autoren.
Das eben Gesagte @ndert natrlich nichts daran, dass Stylesheets das Mittel der Wahl
sein sollten, wenn es um Layoutfragen geht. Ein Beispiel, wie man ein h@ufig verwende-
tes – heute vielfach noch mit Hilfe von Tabellen erreichtes – Layout mittels Stylesheets
realisieren kann, finden Sie am Ende dieses Kapitels.
<edition
[Link]>
tel zahlreich zu finden. Sind die Daten aber gar nicht tabellarischer Natur, dann dient
eine Tabelle vermutlich automatisch als Layout-Werkzeug.
Eine Alternative zu HTML-Tabellen bietet sich dank XML: Tabellarische Daten lassen
sich mit solchen Elementnamen strukturieren, die eine Aussage ber den Inhalt der
Daten machen. Im Abschnitt 17.1 der kommentierten CSS2- bersetzung finden Sie ein
Beispiel fr eine Tabelle mit den Elementnamen liga, verein, punkte, tore und so weiter.
Es ist unmittelbar klar, dass es um irgendwelche Sportdaten geht. Die Formatierung als
Tabelle erfolgt dort mit CSS. Bei dieser Vorgehensweise hat sich dann endgltig die
Frage erledigt: „Struktur oder Layout?“
Dank der Modularisierung von XHTML l@sst sich so etwas einfach mit XHTML kom-
binieren: Ein „liga“-Modul fr die Sportdaten k=nnte den XHTML-Modulen hinzugefgt
werden.
Anmerkung: Diese Spezifikation enth,lt detailliertere Informationen ber Tabellen in den Abschnit-
ten ber Begrndung des Tabellenentwurfs und Implementierungsaspekte (siehe Anhang B). n
Hier folgt eine einfache Tabelle, die einige Eigenschaften des HTML-Tabellenmodells illustriert.
Die folgende Tabellendefinition:
<TABLE border="1"
summary="Diese Tabelle zeigt einige Statistiken Uber
Fruchtfliegen: durchschnittliche H^he und
Gewicht und Anteil derjenigen mit roten Augen
(fUr M]nnchen und Weibchen).">
<CAPTION><EM>Eine Testtabelle mit zusammengefassten Zellen</EM></CAPTION>
<TR><TH rowspan="2"><TH colspan="2">Durchschnitt
<TH rowspan="2">Rote<BR>Augen
<TR><TH>H^he<TH>Gewicht
<TR><TH>M]nnchen<TD>1.9<TD>0.003<TD>40%
<TR><TH>Weibchen<TD>1.7<TD>0.002<TD>43%
</TABLE>
<!ELEMENT TABLE - -
(CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ATTLIST TABLE -- table element - -
%attrs; -- %coreattrs, %i18n, %events - -
summary %Text; #IMPLIED - - purpose/structure for speech output- -
width %Length; #IMPLIED - - table width - -
border %Pixels; #IMPLIED - - controls frame width around table - -
frame %TFrame; #IMPLIED - - which parts of frame to render - -
rules %TRules; #IMPLIED - - rulings between rows and cols - -
cellspacing %Length; #IMPLIED - - spacing between cells - -
cellpadding %Length; #IMPLIED - - spacing within cells - -
>
Attributdefinitionen
<edition
[Link]>
Anmerkung der bersetzer: Genauer gesagt gibt das Attribut align die Posi-
tion der Tabelle in Bezug auf den beinhaltenden Container an. Dieser Container
kann zum Beispiel auch eine Tabellenzelle einer bergeordneten Tabelle sein, und
nicht unbedingt das Dokument selbst. Die Tabelle wird dann folglich innerhalb der
Tabellenzelle ausgerichtet.
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
·· bgcolor (Hintergrundfarbe)
frame, rules, border (Rahmen und Linien)
Das Element TABLE enth@lt alle anderen Elemente, die Beschriftung, Zeilen, Inhalt und Format
angeben.
Die folgende informelle Liste zeigt, welche Operationen Benutzerprogramme ausfhren k=n-
nen, wenn sie eine Tabelle darstellen:
· Dem Benutzer die Tabellenzusammenfassung (summary) zur Verfgung stellen. Autoren soll-
ten eine Zusammenfassung des Tabelleninhalts und der Struktur anbieten, damit Nutzer
nicht visueller Benutzerprogramme die Tabelle besser verstehen k=nnen.
·· Die berschrift darstellen, sofern eine definiert ist.
Den Tabellenkopf darstellen, sofern einer angegeben ist. Den Tabellenfuß darstellen, sofern
einer angegeben ist. Benutzerprogramme mssen wissen, wo Kopf und Fuß darzustellen
sind. Ist das Ausgabemedium zum Beispiel seitenorientiert, mssen Benutzerprogramme
den Kopf an den Beginn und den Fuß an das Ende jeder Seite stellen. Ohnlich verh@lt es sich,
wenn das Benutzerprogramm einen Mechanismus zum Scrollen von Zeilen besitzt; dann
kann der Kopf am Anfang des Scrollbereichs und der Fuß an dessen Ende stehen.
· Die Anzahl der Spalten in der Tabelle berechnen. Beachten Sie, dass die Anzahl der Zeilen
in einer Tabelle gleich der Anzahl der TR-Elemente innerhalb des Elements TABLE ist.
·· Die Spalten entsprechend jeder Spaltengruppenangabe anordnen.
Die Zellen Zeile fr Zeile und angeordnet in entsprechenden Spalten zwischen dem Kopf
und dem Fuß darstellen. Visuelle Benutzerprogramme sollten die Tabelle so formatieren
wie HTML-Attribute und Stylesheet-Angaben es vorgeben.
Tabellenrichtung
Die Richtung einer Tabelle ist entweder die geerbte Richtung (Standard ist von links nach
rechts) oder die vom Attribut dir angegebene Richtung fr das Element TABLE.
Fr eine Tabelle von links nach rechts ist die Spalte Null auf der linken Seite und die Zeile Null
befindet sich oben. Fr eine Tabelle von rechts nach links ist die Spalte Null auf der rechten
Seite und die Zeile Null befindet sich oben.
Teilt ein Benutzerprogramm einer Zeile zus@tzliche Zellen zu (siehe Abschnitt „Berechnen der
Spaltenanzahl einer Tabelle“), werden zus@tzliche Zellen fr „links-nach-rechts“-Tabellen an
der rechten Seite und und fr „rechts-nach-links“-Tabellen auf der linken Seite hinzugefgt.
Beachten Sie, dass TABLE das einzige Element ist, fr welches das Attribut dir die visuelle Rei-
henfolge der Spalten umkehrt; eine einzelne Tabellenzeile (TR) oder eine Spaltengruppe (COL-
GROUP) kann nicht unabh@ngig umgekehrt werden.
Ist das Attribut dir fr das Element TABLE angegeben, wirkt sich das Attribut ebenfalls auf den
Text innerhalb der Tabellenzellen aus (weil das dir-Attribut von Block-Level-Elementen ver-
erbt wird).
Um eine Tabelle von rechts nach links festzulegen, verwenden Sie das Attribut dir wie folgt:
<TABLE dir="RTL">
...der Rest der Tabelle...
</TABLE>
Die Richtung des Texts in individuellen Zellen kann durch die Angabe des Attributs dir in dem
Element ver@ndert werden, das die Zelle definiert. Bitte lesen Sie den Abschnitt 8.2, „Spezifizie-
rung der Richtung von Text und Tabellen“ fr weiterfhrende Informationen zum Thema Text-
flussrichtung.
<edition
[Link]>
<!ATTLIST CAPTION
Die HTML 4.01- Spezifikation
Attributdefinitionen
··
left: Die berschrift befindet sich zur Linken der Tabelle.
right: Die berschrift befindet sich zur Rechten der Tabelle.
Anmerkung der bersetzer: Die Werte left und right werden von einigen g@n-
gigen Browsern ignoriert.
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Wenn das Element CAPTION angegeben ist, sollte sein Text die Natur der Tabelle beschreiben.
Das Element CAPTION ist nur direkt hinter dem Start-Tag TABLE gestattet. Ein TABLE-Element kann
nur ein CAPTION-Element enthalten.
Visuelle Benutzerprogramme erlauben sehenden Benutzern sowohl durch die Kopfzeilen als
auch durch die berschrift, die Struktur der Tabelle schnell zu erfassen. Folglich werden ber-
schriften oft nicht als Zusammenfassung der Intention und der Struktur der Tabelle ausreichen,
wenn Benutzer darauf zugreifen, die auf nicht visuelle Benutzerprogramme angewiesen sind.
Autoren sollten deshalb darauf achten, zus@tzliche Informationen anzubieten, die die Intention
und die Struktur zusammenfassen, und zwar mit Hilfe des Attributs summary des Elements TABLE.
Dies ist besonders wichtig fr Tabellen ohne berschriften. Beispiele weiter unten zeigen die
Verwendung des Attributs summary.
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Tabellenzeilen k=nnen mit den Elementen THEAD, TFOOT und TBODY in einen Tabellenkopf, einen
Tabellenfuß und in einen oder mehrere Rumpfbereiche unterteilt werden. Diese Teilung
erm=glicht Benutzerprogrammen, das Scrollen vom Tabellenrmpfen unabh@ngig vom Tabel-
lenkopf und -fuß zu untersttzen. Werden lange Tabellen gedruckt, k=nnen Informationen des
Tabellenkopfes und -fußes auf jeder Seite mit Tabellendaten wiederholt werden.
Tabellenkopf und -fuß sollten Informationen ber die Tabellenspalten enthalten. Der Tabellen-
rumpf sollte Zeilen mit Tabellendaten enthalten.
<edition
[Link]>
der Tabellenfuß) bei mehrseitigem Druck auf jeder Seite wiederholt werden. Ein Test
mit aktuellen Browsern zeigt, dass sich einige tats@chlich so verhalten, falls die CSS-An-
gabe vorhanden ist. Interessanterweise wiederholen diese Programme den Kopf und
Die HTML 4.01- Spezifikation
Fuß beim Ausdruck nicht, wenn die CSS-Anweisungen fehlen; obwohl die Einstellungen
fr HTML automatisch gelten sollten. Es empfiehlt sich also, die gezeigten CSS-Anwei-
sungen in eigene Stylesheets aufzunehmen.
Wenn vorhanden, enth@lt jedes THEAD, TFOOT und TBODY eine Zeilengruppe. Jede Zeilengruppe
muss mindestens eine Zeile, definiert durch das Element TR, enthalten.
Dieses Beispiel beschreibt die Reihenfolge und Struktur von Tabellenkopf, -fuß und -rmpfen.
<TABLE>
<THEAD>
<TR> ...Kopfinformation...
</THEAD>
<TFOOT>
<TR> ...Fußinformation...
</TFOOT>
<TBODY>
<TR> ...erste Zeile mit Daten von Block eins...
<TR> ...zweite Zeile mit Daten von Block eins...
</TBODY>
<TBODY>
<TR> ...erste Zeile mit Daten von Block zwei...
<TR> ...zweite Zeile mit Daten von Block zwei...
<TR> ...dritte Zeile mit Daten von Block zwei...
</TBODY>
</TABLE>
TFOOT muss vor TBODY innerhalb einer TABLE-Definition stehen, so dass Benutzerprogramme den
Fuß darstellen k=nnen, bevor alle (der eventuell zahlreichen) Datenzeilen empfangen werden.
Das Folgende fasst zusammen, welche Tags erforderlich sind und welche weggelassen werden
k=nnen:
· Der Start-Tag TBODY ist immer erforderlich, außer die Tabelle enth@lt nur einen Tabellen-
rumpf und keinen Tabellenkopf oder -fuß. Das End-Tag TBODY kann immer problemlos weg-
gelassen werden.
· Die Start-Tags fr THEAD und TFOOT sind erforderlich, wenn Tabellenkopf bzw. -fuß vorhan-
den sind, jedoch k=nnen die End-Tags immer problemlos weggelassen werden.
Konforme Parser von Benutzerprogrammen mssen diese Regeln aus Grnden der Abw@rts-
kompatibilit@t immer befolgen.
Die Tabelle des vorherigen Beispiels k=nnte durch Weglassen bestimmter End-Tags verkrzt
werden:
<TABLE>
<THEAD>
<TR> ...Kopfinformation...
<TFOOT>
<TR> ...Fußinformation...
<TBODY>
<TR> ...erste Zeile mit Daten von Block eins...
<TR> ...zweite Zeile mit Daten von Block eins...
<TBODY>
<TR> ...erste Zeile mit Daten von Block zwei...
Die Bereiche THEAD, TFOOT und TBODY mssen die gleiche Spaltenanzahl enthalten.
Spaltengruppen gestatten Autoren die Erzeugung von strukturellen Bereichen innerhalb einer
Tabelle. Autoren k=nnen diese Struktur durch Stylesheets oder HTML-Attribute (z. B. das
Attribut rules fr das TABLE-Element) hervorheben. Ein Beispiel der visuellen Darstellung von
Spaltengruppen enth@lt die Beispieltabelle in Abschnitt 11.5.
Eine Tabelle kann entweder eine einzige implizite Spaltengruppe (kein COLGROUP-Element
begrenzt die Spalten) oder eine beliebige Anzahl expliziter Spaltengruppen (jede begrenzt durch
die Instanz eines COLGROUP-Elements) enthalten.
Das Element COL gestattet Autoren, ein Attribut fr mehreren Spalten gemeinsam zu verwen-
den, ohne irgendeine strukturelle Gruppierung damit zu verbinden. Das Element COL erstreckt
sich ber die Anzahl der Spalten, die sich die Attribute des Elements teilen werden.
Attributdefinitionen
<edition
[Link]>
die minimale Breite ist, die notwendig ist, um den Spalteninhalt darzustellen. Dies bedeutet,
der gesamte Inhalt einer Spalte muss bekannt sein, bevor ihre Breite richtig errechnet wer-
den kann. Autoren sollten sich dessen bewusst sein, dass die Angabe von „0*“ Benutzerpro-
gramme daran hindert, eine Tabelle imkrementell darzustellen.
Dieses Attribut wird in jeder Spalte in der Spaltengruppe berschrieben, in der width ber
ein COL-Element spezifiziert ist.
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Das Element COLGROUP erzeugt eine explizite Spaltengruppe. Fr die Angabe der Anzahl der
Spalten in der Spaltengruppe gibt es zwei, sich gegenseitig ausschließende M=glichkeiten:
1. Das span-Attribut des Elements (Standardwert 1) gibt die Anzahl der Spalten in der Gruppe
an.
2. Jedes COL-Element in der COLGROUP rep@sentiert eine oder mehrere Spalten in der Gruppe.
Der Vorteil des span-Attributs ist es, dass Autoren Informationen ber Spaltenbreiten zusam-
menfassen k=nnen. Enth@lt eine Tabelle vierzig Spalten, jede mit einer Breite von 20 Pixeln, ist
es einfacher, Folgendes zu schreiben:
als:
<COLGROUP>
<COL width="20">
<COL width="20">
... im Ganzen vierzig COL-Elemente ...
</COLGROUP>
Ist es notwendig, eine einzelne Spalte innerhalb einer Gruppe auszugrenzen (z. B. fr Format-
informationen, um eine Breite anzugeben usw.), mssen Autoren diese Spalte mit einem COL-
Element identifizieren. Um in einem solchen Fall der letzten Spalte der vorhergehenden Tabelle
ein bestimmtes Format zuzuweisen, grenzen wir sie wie folgt aus:
<COLGROUP width="20">
<COL span="39">
<COL id="formatier-mich-anders">
</COLGROUP>
Das Attribut width des Elements COLGROUP wird an alle 40 Spalten vererbt. Das erste COL-Element
bezieht sich auf die ersten 39 Spalten (ohne ihnen etwas Besonderes zuzuweisen) und das zweite
weist der vierzigsten Spalte einen id Wert zu, so dass Stylesheets sich darauf beziehen k=nnen.
Die Tabelle im folgenden Beispiel enth@lt zwei Spaltengruppen. Die erste Spaltengruppe enth@lt
<TABLE>
<COLGROUP span="10" width="50">
<COLGROUP span="5" width="0*">
<THEAD>
<TR><TD> ...
</TABLE>
Das COL-Element
<!ELEMENT COL - O EMPTY -- table column - ->
<!ATTLIST COL -- column groups and properties - -
%attrs; -- %coreattrs, %i18n, %events - -
span NUMBER 1 -- COL attributes affect N columns - -
width %MultiLength; #IMPLIED -- column width specification - -
%cellhalign; -- horizontal alignment in cells - -
%cellvalign; -- vertical alignment in cells - -
>
Attributdefinitionen
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
<edition
[Link]>
Das Element COL gestattet Autoren, Attributangaben fr Tabellenspalten (in Gruppen) zusam-
menzufassen. COL gruppiert Spalten nicht strukturell, denn das ist Aufgabe des Elements
COLGROUP. COL-Elemente sind leer und dienen nur als Untersttzung fr Attribute. Sie k=nnen
innerhalb oder außerhalb einer expliziten Spaltengruppe (d. h., dem COLGROUP-Element) erschei-
Die HTML 4.01- Spezifikation
nen.
Das Attribut width des Elements COL bezieht sich auf die Breite jeder Spalte innerhalb der
Spannweite des Elements.
<TABLE>
<COLGROUP span="3"></COLGROUP>
<TR><TD> ...
...Zeilen...
</TABLE>
<TABLE>
<COLGROUP>
<COL>
<COL span="2">
</COLGROUP>
<TR><TD> ...
...Zeilen...
</TABLE>
<TABLE>
<COLGROUP>
<COL>
</COLGROUP>
<COLGROUP span="2">
<TR><TD> ...
...Zeilen...
</TABLE>
Fest
Eine feste Breitenangabe wird in Pixeln angegeben (z. B. width=„30“). Eine feste Breiten-
angabe erm=glicht einen inkrementellen Aufbau.
Prozentual
Eine prozentuale Angabe (z. B. width=„20%“) basiert auf dem Prozentsatz des horizontalen
Raums, der fr die Tabelle zur Verfgung steht (zwischen dem aktuellen linken und rechten
Rand, gleitende Objekte eingeschlossen). Beachten Sie, dass dieser Raum nicht von der
Tabelle selbst abh@ngig ist, und prozentuale Angaben deshalb einen inkrementellen Aufbau
gestatten.
Proportional
Proportionale Angaben (z. B. width=„3*“) beziehen sich auf den horizontalen Raum, der
von der Tabelle gefordert wird. Wird der Tabellenbreite ber das Attribut width des Ele-
ments TABLE ein fester Wert zugewiesen, k=nnen Benutzerprogramme die Tabelle sogar
mit proportionalen Spalten inkrementell aufbauen.
Hat die Tabelle jedoch keine feste Breite, mssen Benutzerprogramme alle Tabellendaten
empfangen, bevor sie den horizontalen Raum ermitteln k=nnen, der von der Tabelle ben=-
tigt wird. Nur dann kann dieser Raum den proportionalen Spalten zugeordnet werden.
Gibt ein Autor keine Informationen zur Breite einer Spalte an, ist ein Benutzerprogramm even-
tuell nicht in der Lage, die Tabelle inkrementell zu formatieren, weil es auf die bertragung der
gesamten Spaltendaten warten muss, um die entsprechenden Breiten zuzuordnen.
Erweisen sich Spaltenbreiten als zu eng fr den Inhalt einer bestimmten Tabellenzelle, mssen
Benutzerprogramme die Tabelle eventuell neu aufbauen.
Anmerkung der bersetzer: Die M=glichkeit, dass eine Tabelle inkrementell auf-
gebaut werden kann, ist ein wichtiger, aber nicht der einzige Aspekt, den Autoren bei
Vorgaben zu Tabellen- bzw. Spaltenbreiten beachten sollten. Eine feste Vorgabe in
Pixeln etwa kann Tabellen sehr „starr“ werden lassen. Im Extremfall wrde dies zu dem
Ergebnis fhren, dass vorhandene Fenster- oder Frame-Breiten nicht ausreichen; die
Nutzer mssten dann scrollen. Wenn diese Gefahr besteht und es sich nicht gerade um
sehr lange Tabellen handelt, ist es daher im Interesse einer benutzerfreundlichen Dar-
stellung sicher legitim, auch einmal auf inkrementellen Aufbau zu verzichten. Besonders
<edition
[Link]>
wichtig ist dann jedoch, dass der Platzbedarf fr eventuell enthaltene Objekte und Gra-
phiken, deren Ladezeiten naturgem@ß gr=ßer sind, angegeben wird (zum Beispiel ber
width- und height-Attribute).
Die HTML 4.01- Spezifikation
Die Tabelle in diesem Beispiel enth@lt sechs Spalten. Die erste geh=rt nicht zu einer expliziten
Spaltengruppe. Die n@chsten drei geh=ren zur ersten expliziten Spaltengruppe, und die letzten
beiden geh=ren zur zweiten expliziten Spaltengruppe. Diese Tabelle kann nicht inkrementell
formatiert werden, weil sie proportionale Breitenangaben fr Spalten enth@lt und keinen Wert
fr das width-Attribut des TABLE-Elements.
Wenn das (visuelle) Benutzerprogramm die Tabellendaten empfangen hat, wird der verfgbare
horizontale Raum vom Benutzerprogramm wie folgt zugewiesen: Zuerst wird das Benutzerpro-
gramm den Spalten eins und zwei je 30 Pixel zuweisen, dann wird der minimal n=tige Raum fr
die dritte Spalte reserviert. Der verbleibende horizontale Raum wird in sechs gleich Teile
geteilt (weil 2* + 1* + 3* = 6 Teile). Spalte vier (2*) bekommt zwei dieser Teile, Spalte fnf (1*)
bekommt einen Teil und Spalte sechs (3*) erh@lt drei.
<TABLE>
<COLGROUP>
<COL width="30">
<COLGROUP>
<COL width="30">
<COL width="0*">
<COL width="2*">
<COLGROUP align="center">
<COL width="1*">
<COL width="3*" align="char" char=":">
<THEAD>
<TR><TD> ...
...Zeilen...
</TABLE>
Wir haben den Wert des Attributs align in der dritten Spaltengruppe auf „center“ gesetzt. Alle
Zellen in jeder Spalte dieser Gruppe erben diesen Wert, k=nnen ihn jedoch auch berschrei-
ben. In der Tat tut das letzte COL genau das, indem es angibt, dass jede Zelle in der Spalte, fr
die es gilt, am Zeichen „:“ ausgerichtet wird.
In der folgenden Tabelle gestattet die Spaltenbreitenangabe dem Benutzerprogramm, die
Tabelle inkrementell zu formatieren:
<TABLE width="200">
<COLGROUP span="10" width="15">
<COLGROUP width="*">
<COL id="penultimate-column">
<COL id="last-column">
<THEAD>
<TR><TD> ...
...Zeilen...
</TABLE>
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
·· bgcolor (Hintergrundfarbe)
align, char, charoff, valign (Zellausrichtung)
Das Element TR fungiert als Beh@lter fr eine Zeile von Tabellenzellen. Der End-Tag kann weg-
gelassen werden.
Diese Beispieltabelle enth@lt drei Zeilen, jede eingeleitet durch ein TR-Element:
<edition
[Link]>
<!ELEMENT (TH|TD) - O (%flow;)* - - table header cell, table data cell- ->
<!- - Scope is simpler than headers attribute for common tables - ->
Die HTML 4.01- Spezifikation
<!- - TH is for headers, TD for data, but for cells acting as both use TD - ->
<!ATTLIST (TH|TD) - - header or data cell - -
%attrs; - - %coreattrs, %i18n, %events - -
abbr %Text; #IMPLIED - - abbreviation for header cell - -
axis CDATA #IMPLIED - - comma-separated list of related headers- -
headers IDREFS #IMPLIED - - list of id's for header cells - -
scope %Scope; #IMPLIED - - scope covered by header cells - -
rowspan NUMBER 1 - - number of rows spanned by cell - -
colspan NUMBER 1 - - number of cols spanned by cell - -
%cellhalign; - - horizontal alignment in cells - -
%cellvalign; - - vertical alignment in cells - -
>
Attributdefinitionen
gramme sie wiederholt darstellen k=nnten. Zum Beispiel k=nnten Sprachsythesizer den
abgekrzten Kopf wiedergeben, der zu einer bestimmten Zelle geh=rt, bevor dieser Zell-
inhalt selbst wiedergegeben wird.
axis = cdata [CI]
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
·· bgcolor (Hintergrundfarbe)
align, char, charoff, valign (Zellausrichtung)
<edition
[Link]>
Ein Benutzerprogramm, das die Tabelle ber ein tty-Ger@t ausgibt, k=nnte dies wie folgt dar-
stellen:
<TABLE border="1">
<CAPTION>Von jedem Senator konsumierte Tassen Kaffee</CAPTION>
<TR><TH>Name<TH>Tassen<TH>Kaffeesorte<TH>Zucker?
<TR><TD>T. Sexton<TD>10<TD>Espresso<TD>Nein
<TR><TD>J. Dinnen<TD>5<TD>Koffeinfrei<TD>Ja
<TR><TD>A. Soria<TD colspan="3"><em>Nicht verfUgbar</em>
</TABLE>
Diese Tabelle k=nnte von einem visuellen Benutzerprogramm auf tty-Ger@t wie folgt ausgege-
ben werden:
Das n@chste Beispiel zeigt (mit Hilfe von Tabellenrahmen) wie Zelldefinitionen, die sich ber
mehr als eine Zeile oder Spalte erstrecken, die Definitionen der weiteren Zellen beeinflussen:
<TABLE border="1">
<TR><TD>1 <TD rowspan="2">2 <TD>3
<TR><TD>4 <TD>6
<TR><TD>7 <TD>8 <TD>9
</TABLE>
Weil sich Zelle „2“ ber die erste und zweite Zeile erstreckt, wird die Definition der zweiten
Zeile dies bercksichtigen. Deshalb definiert das zweite TD in Zeile zwei in diesem Fall die dritte
Zelle der Zeile. Visuell k=nnte die Tabelle von einem tty-Ger@t wie folgt dargestellt werden:
-------------
| 1 | 2 | 3 |
----| |----
| 4 | | 6 |
----|---|----
| 7 | 8 | 9 |
-------------
<edition
[Link]>
Beachten Sie: Wenn das TD, welches Zelle „6“ definiert, weggelassen worden w@re, w@re eine
zus@tzliche leere Zelle durch das Benutzerprogramm hinzugefgt worden, um die Zeile zu ver-
vollst@ndigen.
Ohnlich erstreckt sich Zelle „4“ in der folgenden Tabellendefinition:
<TABLE border="1">
<TR><TD>1 <TD>2 <TD>3
<TR><TD colspan="2">4 <TD>6
<TR><TD>7 <TD>8 <TD>9
</TABLE>
ber zwei Spalten, so dass das zweite TD in der Zeile in diesem Fall die dritte Zelle („6“) defi-
niert:
-------------
| 1 | 2 | 3 |
--------|----
| 4 | 6 |
--------|----
| 7 | 8 | 9 |
-------------
bereinander liegende Zellen zu definieren, ist ein Fehler. Benutzerprogramme k=nnen sich in
der Behandlung dieses Fehlers unterscheiden (zum Beispiel kann die Darstellung variieren).
Das folgende nicht gltige Beispiel zeigt, wie jemand bereinander liegende Zellen erzeugen
k=nnte. In dieser Tabelle erstreckt sich Zelle „5“ ber zwei Zeilen und Zelle „7“ erstreckt sich
ber zwei Spalten, so gibt es eine berlappung in der Zelle zwischen „7“ und „9“:
<TABLE border="1">
<TR><TD>1 <TD>2 <TD>3
<TR><TD>4 <TD rowspan="2">5 <TD>6
<TR><TD colspan="2">7 <TD>9
</TABLE>
Die folgenden Attribute betreffen den @ußeren Rahmen und die inneren Linien.
Attributdefinitionen
··
below: Nur die untere Seite.
hsides: Nur die obere und untere Seite.
··
vsides: Nur die rechte und die linke Seite.
lhs: Nur die linke Seite.
··
rhs: Nur die rechte Seite.
box: Alle vier Seiten.
·
border: Alle vier Seiten.
<edition
[Link]>
Dieses Attribut gibt die Breite (nur in Pixeln) des Rahmens um eine Tabelle an (siehe
Anmerkung unten fr weitere Informationen ber dieses Attribut).
Um die Zellen einer Tabelle auseinander zu halten, k=nnen wir das Attribut border des Ele-
ments TABLE verwenden. Betrachten wir ein vorhergehendes Beispiel:
<TABLE border="1"
summary="Diese Tabelle zeigt die Anzahl der
Tassen Kaffee, die von jedem Senator
konsumiert werden, die Art des Kaffees
(koffeinfrei oder normal) und, ob er mit
Zucker getrunken wird.">
<CAPTION>Von jedem Senator konsumierte Tassen Kaffee</CAPTION>
<TR>
<TH>Name</TH>
<TH>Tassen</TH>
<TH>Kaffeesorte</TH>
<TH>Zucker?</TH>
<TR>
<TD>T. Sexton</TD>
<TD>10</TD>
<TD>Espresso</TD>
<TD>Nein</TD>
<TR>
<TD>J. Dinnen</TD>
<TD>5</TD>
<TD>Koffeinfrei</TD>
<TD>Ja</TD>
</TABLE>
Im folgenden Beispiel sollte das Benutzerprogramm einen fnf Pixel breiten Rand auf der linken
und auf der rechten Seite der Tabelle darstellen und Linien zwischen jeder Spalte.
· Andere Werte fr border implizieren frame=„border“ und, wenn nicht anders angegeben,
rules=„all“.
· Der Wert „border“ im Start-Tag des Elements TABLE sollte wie der Wert des Attributs
frame interpretiert werden. Er impliziert rules=„all“ und irgendwelche Standardwerte (un-
gleich Null) fr das Attribut border.
Zum Beispiel sind die folgenden Definitionen @quivalent:
<TABLE border="2">
<TABLE border="2" frame="border" rules="all">
<TABLE border>
<TABLE frame="border" rules="all">
Anmerkung: Das Attribut border definiert auch das Erscheinungsbild der Rahmen fr die Elemente
OBJECT und IMG, verwendet jedoch andere Werte fr diese Elemente. n
Die folgenden Attribute k=nnen fr verschiedene Tabellenelemente verwendet werden (siehe
deren Definition):
<edition
[Link]>
<!ENTITY % cellvalign
"valign (top|middle|bottom|baseline) #IMPLIED"
>
Attributdefinitionen
Die HTML 4.01- Spezifikation
<TABLE border="1">
<COLGROUP>
<COL><COL align="char" char=".">
<THEAD>
<TR><TH>GemUse <TH>Preis pro Kilo
<TBODY>
<TR><TD>Kopfsalat <TD>$1
<TR><TD>Silberne Karotten <TD>$10.50
<TR><TD>Goldene RUben <TD>$100.30
</TABLE>
-----------------------------------
| GemUse |Preis pro Kilo|
|----------------- -|--------------|
|Kopfsalat | $1 |
|----------------- -|--------------|
|Silberne Karotten | $10.50|
|----------------- -|--------------|
|Goldene RUben | $100.30|
-----------------------------------
Enth@lt der Inhalt einer Zelle mehr als eine Instanz des Ausrichtungszeichens, das durch char
angegeben ist und der Inhalt bricht um, ist das Verhalten von Benutzerprogrammen nicht defi-
niert. Autoren sollten deshalb achtsam mit char umgehen.
<edition
[Link]>
4. Ein fr eine Zeile oder ein Zeilengruppen-Element gesetztes Ausrichtungsattribut (TR,
THEAD, TFOOT und TBODY). Ist eine Zelle Teil eines mehrzeiligen Bereiches, wird die Ausrich-
tungseigenschaft von der Zelldefinition am Anfang des Bereiches vererbt.
5. Ein fr die Tabelle gesetztes Ausrichtungsattribut (TABLE).
Die HTML 4.01- Spezifikation
6. Der Standardausrichtungswert.
Die Rangfolge (vom h=chsten zum niedrigsten Rang) fr die Attribute valign (wie auch fr die
anderen vererbten Attribute lang, dir und style) ist die folgende:
1. Ein fr ein Element innerhalb der Zelldaten gesetztes Attribut (z. B. P).
2. Ein fr eine Zelle gesetztes Attribut (TH und TD).
3. Ein fr eine Zeile oder ein Zeilengruppen-Element gesetztes Attribut (TR, THEAD, TFOOT und
TBODY). Ist eine Zelle Teil eines mehrzeiligen Bereiches, wird die Ausrichtungseigenschaft
von der Zelldefinition am Anfang des Bereiches vererbt.
4. Ein fr ein Spaltengruppen-Elements gesetztes Attribut (COL und COLGROUP). Ist eine Zelle
Teil eines mehrspaltigen Bereiches, wird die Ausrichtungseigenschaft von der Zelldefinition
am Anfang des Bereiches vererbt.
5. Ein fr die Tabelle gesetztes Attribut (TABLE).
6. Der Standardattributwert.
Außerdem bestimmen bei der Darstellung von Zellen Spalten bevorzugt vor Zeilen die hori-
zontale Ausrichtung, w@hrend bei vertikaler Ausrichtung Zeilen Vorrang vor Spalten haben.
Die Standardausrichtung fr Zellen ist abh@ngig vom Benutzerprogramm. Jedoch sollten Benut-
zerprogramme den voreingestellten Wert der aktuellen Textflussrichtung anpassen (d. h., nicht
nur „left“ in allen F@llen).
Benutzerprogramme, die den Wert „justify“ des Attributs align nicht untersttzen, sollten den
Wert der vererbten Textflussrichtung an seiner Stelle verwenden.
Anmerkung: Beachten Sie, dass eine Zelle ein Attribut nicht von seinem Elternelement erben kann,
sondern von der ersten Zelle in einem Bereich. Dies ist eine Ausnahme von den allgemeinen Ver-
erbungsregeln fr Attribute. n
11.3.3 [Link]
Attributdefinitionen
cellspacing = length [CN]
Dieses Attribut gibt an, wie viel Leerraum das Benutzerprogramm stehen lassen soll zwi-
schen der linken Seite der Tabelle und der linken Seite der am weitesten links stehenden
Spalte, der oberen Kante der Tabelle und der Oberkante der obersten Zeile und so fort
fr die rechte Seite und die Unterkante. Das Attribut gibt ebenfalls an, wieviel Freiraum
zwischen Zellen bleiben soll.
cellpadding = length [CN]
Dieses Attribut gibt die Gr=ße des Leerraums zwischen dem Rand der Zelle und ihrem
Inhalt an. Ist der Wert dieses Attributs eine Pixelmaß, sollten alle vier R@nder diesen
Abstand vom Inhalt haben. Ist der Wert des Attributs ein prozentuales Maß, sollten der
obere und untere Rand gleichermaßen vom Inhalt abgesetzt werden, basierend auf einem
prozentualen Anteil des zur Verfgung stehenden vertikalen Raums, der linke und der
rechte Rand sollten gleichermaßen vom Inhalt abgesetzt werden, basierend auf einem pro-
zentualen Anteil des zur Verfgung stehenden horizontalen Raums.
Diese beiden Attribute kontrollieren die Abst@nde zwischen und innerhalb von Zellen. Die fol-
gende Darstellung illustriert die Beziehung zwischen ihnen:
Hat eine Tabelle oder eine gegebene Spalte eine feste Breite, k=nnten cellspacing und
cellpadding mehr Raum fordern als zugewiesen ist. Benutzerprogramme k=nnen diesen Attri-
buten Vorrang vor dem Attribut width gew@hren, wenn Konflikte auftreten, jedoch sie sind
nicht dazu verpflichtet.
<edition
[Link]>
· Fr eine gegebene Kopfzelle teilt das Attribut scope dem Benutzerprogramm mit, fr wel-
che Datenzellen dieser Kopf Informationen bereith@lt. Autoren w@hlen vielleicht dieses
Attribut anstatt headers, je nachdem, welches gnstiger ist; beide Attribute erfllen die glei-
che Funktion. Das Attribut headers wird im Allgemeinen ben=tigt, wenn Kopfinformationen
Die HTML 4.01- Spezifikation
an ungew=hnlichen Positionen in Bezug auf die Daten stehen, fr die sie gelten.
· Das Attribut abbr gibt einen abgekrzten Kopfinhalt fr Kopfzellen an, so dass Benutzerpro-
gramme Kopfinformationen schneller darstellen k=nnen.
Im folgenden Beispiel weisen wir Zellen Kopfinformationen durch die Angabe des Attributs
headers zu. Jede Zelle in derselben Spalte bezieht sich auf dieselbe Kopfzelle (ber das id-Attri-
but).
<TABLE border="1"
summary="Diese Tabelle zeigt die Anzahl der
Tassen Kaffee, die von jedem Senator
konsumiert werden, die Art des Kaffees
(koffeinfrei oder normal) und, ob er mit
Zucker getrunken wird.">
<CAPTION>Von jedem Senator konsumierte Tassen Kaffee</CAPTION>
<TR>
<TH id="t1">Name</TH>
<TH id="t2">Tassen</TH>
<TH id="t3" abbr="Sorte">Kaffeesorte</TH>
<TH id="t4">Zucker?</TH>
<TR>
<TD headers="t1">T. Sexton</TD>
<TD headers="t2">10</TD>
<TD headers="t3">Espresso</TD>
<TD headers="t4">Nein</TD>
<TR>
<TD headers="t1">J. Dinnen</TD>
<TD headers="t2">5</TD>
<TD headers="t3">Koffeinfrei</TD>
<TD headers="t4">Ja</TD>
</TABLE>
Beachten Sie, dass der Kopf „Kaffeesorte“ mit Hilfe des Attributs abbr abgekrzt wird zu „Sor-
te“.
Hier ist das gleiche Beispiel mit dem Attribut scope anstelle des Attributs headers. Beachten Sie
den Wert „col“ fr das scope-Attribut, das besagt „alle Zellen in der aktuellen Spalte“:
<TABLE border="1"
summary="Diese Tabelle zeigt die Anzahl der
Tassen Kaffee, die von jedem Senator
konsumiert werden, die Art des Kaffees
(koffeinfrei oder normal) und, ob er mit
Hier ist ein etwas komplexeres Beispiel zu Illustration anderer Werte des scope-Attributs:
<edition
[Link]>
<TD>£18</TD>
</TR>
<TR>
<TD scope="row">Der Ruhm gebUhrt den Griechen</TD>
<TD>Valerie Lorenz</TD>
<TD>
Die Geburtsst]tte der Demokratie und Philosophie, Kernland
des Theaters, Heimat der Argumentation. Die R^mer m^gen
es vollendet haben, doch die Griechen waren die Ersten.
<EM>Samstag 25. Oktober 1997</EM>
</TD>
<TD>H30</TD>
<TD>£18</TD>
</TR>
</TABLE>
Achten Sie auf die Verwendung des scope-Attributs mit dem Wert „row“. Auch wenn die erste
Zelle in jeder Zeile Daten enth@lt, und keine Kopfinformationen, sorgt das das Attribut scope
dafr, dass die Datenzelle sich wie eine Zeilen-Kopfzelle verh@lt. Dadurch k=nnen Sprachsyn-
thesizer auf Anfrage den relevanten Kursnamen angeben oder ihn direkt vor jedem Zellinhalt
vortragen.
Benutzer, die eine Tabelle mit einem sprachbasierten Benutzerprogramm lesen, m=chten viel-
leicht zus@tzlich zum Zelleninhalt selbst eine Erkl@rung h=ren. Eine M=glichkeit, dem Benutzer
eine Erkl@rung anzubieten besteht darin, zugeh=rige Kopfinformationen vor dem Inhalt der
Datenzelle zu sprechen (siehe Abschnitt „Kopfinformationen mit Datenzellen verknpfen“).
Benutzer m=chten vielleicht auch Informationen ber mehr als eine Zelle erhalten. In diesem
Fall k=nnten Kopfinformationen auf Zellenebene (durch headers, scope und abbr) nicht den pas-
senden Kontext bieten. Betrachten Sie die folgende Tabelle, die Unkosten fr Mahlzeiten,
Hotels und den Transport in zwei St@dten (San Jose und Seattle) ber einige Tage einstuft:
<edition
[Link]>
Jede Zelle, die Informationen bezglich „San Jose“ enth@lt, sollte sich auf diese Kopfzelle entwe-
der ber das headers- oder das scope-Attribut beziehen. Deshalb sollten Ausgaben fr Mahlzei-
ten am 25. August so ausgezeichnet werden, das sie sich auf das id-Attribute (dessen Wert hier
„a6“ ist) der „San Jose“-Kopfzelle beziehen:
Die HTML 4.01- Spezifikation
<TD headers="a6">37.74</TD>
Jedes headers-Attribut enth@lt eine Liste von id-Referenzen. Autoren k=nnen eine gegebene
Zelle so auf unz@hlige Weise kategorisieren (oder entlang unz@hliger "K=pfe" (engl. headers),
daher der Name).
Im Folgenden zeichnen wir die Reisekostentabelle mit Kategorieinformationen aus:
<TABLE border="1"
summary="Diese Tabelle berechnet Reisekosten,
die w]hrend der Reise nach
San Jose und Seattle angefallen sind.">
<CAPTION>
Reisekostenreport
</CAPTION>
<TR>
<TH></TH>
<TH id="a2" axis="ausgaben">Mahlzeiten</TH>
<TH id="a3" axis="ausgaben">Hotels</TH>
<TH id="a4" axis="ausgaben">Transport</TH>
<TD>Zwischensumme</TD>
</TR>
<TR>
<TH id="a6" axis="ort">San Jose</TH>
<TH></TH>
<TH></TH>
<TH></TH>
<TD></TD>
</TR>
<TR>
<TD id="a7" axis="datum">25-Aug-97</TD>
<TD headers="a6 a7 a2">37.74</TD>
<TD headers="a6 a7 a3">112.00</TD>
<TD headers="a6 a7 a4">45.00</TD>
<TD></TD>
</TR>
<TR>
<TD id="a8" axis="datum">26-Aug-97</TD>
<TD headers="a6 a8 a2">27.28</TD>
<TD headers="a6 a8 a3">112.00</TD>
<TD headers="a6 a8 a4">45.00</TD>
<TD></TD>
</TR>
<TR>
<TD>Zwischensumme</TD>
<TD>65.02</TD>
<TD>224.00</TD>
<TD>90.00</TD>
<TD>379.02</TD>
</TR>
<TR>
<TH id="a10" axis="ort">Seattle</TH>
<TH></TH>
<TH></TH>
<TH></TH>
Beachten Sie, dass Benutzerprogramme durch die Auszeichnung einer Tabelle auf diese Weise
auch vermeiden k=nnen, Benutzer mit ungewollten Informationen zu verwirren. Sollte zum Bei-
spiel ein Sprachsynthesizer alle Angaben in der Spalte „Mahlzeiten“ der Tabelle auf die Anfrage
„Wie hoch waren all meine Ausgaben fr Mahlzeiten?“ sprechen, w@re ein Benutzer nicht in
der Lage, Tagesausgaben von Zwischensummen oder Gesamtsummen zu unterscheiden. Durch
die sorgf@ltige Kategorisierung der Datenzellen gestatten Autoren den Benutzerprogrammen,
wichtige semantische Unterschiede bei der Darstellung zu machen.
Natrlich gibt es kein Grenze, inwieweit Autoren Informationen in einer Tabelle kategorisieren
k=nnen. In der Reisekostentabelle k=nnten wir zum Beispiel die zus@tzlichen Kategorien „Zwi-
schensummen“ und „Gesamtsummen“ hinzufgen.
Diese Spezifikation verlangt von Benutzerprogrammen weder, axis-Attribut angegebene Infor-
mationen zu verarbeiten, noch gibt sie irgendwelche Empfehlungen darber, wie Benutzerpro-
gramme dem Nutzer die axis -Informationen pr@sentieren sollten, oder wie Nutzer diese
Informationen beim Benutzerprogramm erfragen k=nnten.
<edition
[Link]>
oder kompakter:
Benutzerprogramme, die diese Art der Darstellung untersttzen, sollten eine M=glichkeit bie-
ten, die Darstellung anzupassen (z. B. durch Stylesheets).
Werden keine Kopfinformationen durch das scope- oder das headers-Attribut angegeben, k=n-
nen Benutzerprogramme nach dem folgenden Algorithmus Kopfinformationen erzeugen. Das
Ziel des Algorithmus ist, eine geordnete Liste mit Kopfinformationen zu ermitteln. (In der fol-
genden Beschreibung des Algorithmus wird die Tabellenrichtung von links nach rechts ange-
nommen.)
· Suche zuerst links der Zellposition, um Kopfzellen fr Zeilen zu finden. Dann suche auf-
w@rts, um Spaltenkopfzellen zu finden. Die Suche in eine gegebene Richtung stoppt, wenn
die Ecke der Tabelle erreicht ist oder wenn eine Datenzelle nach einer Kopfzelle gefunden
wurde.
· Zeilenk=pfe werden in der Reihenfolge in die Liste eingefgt, in der sie in der Tabelle
erscheinen. In Tabellen der Richtung links nach rechts werden die K=pfe von links nach
rechts eingefgt.
· Spaltenk=pfe werden nach Zeilenk=pfen in der Reihenfolge eingefgt, in der sie in der
Tabelle erscheinen, von oben nach unten.
· Ist das headers-Attribut fr eine Kopfzelle angegeben, dann werden die Header, die von die-
sem Attribut referenziert werden, in die Liste eingefgt und die Suche stoppt fr die aktu-
elle Richtung.
· TD-Zellen mit dem Attribut axis werden ebenfalls als Kopfzellen behandelt.
11.5 Beispieltabelle
Dieses Beispiel zeigt gruppierte Zeilen und Spalten. Das Beispiel ist bernommen aus „Develo-
ping International Software“ von Nadine Kano.
ungef@hr so dargestellt:
<edition
[Link]>
1255 | Hebrew | X | X
1256 | Arabic | X | X
1257 | Baltic | X | X
1361 | Korean (Johab) | X | ** X
----------------------------------------------------------------------------- --
Die HTML 4.01- Spezifikation
Dieses Beispiel zeigt, wie COLGROUP verwendet werden kann, um die Spalten zu gruppieren und
die Standard-Spaltenausrichtung zu setzen. Ohnlich wird TBODY verwendet, um Zeilen zu grup-
pieren. Die Attribute frame und rules geben dem Benutzerprogramm an, welche Rahmen und
Linien gezeichnet werden sollen.
Anmerkung der bersetzer: Abschließend zum Thema „Tabellen“ hier ein Bei-
spiel, wie man ein h@ufig verwendetes – heute vielfach noch mit Hilfe von Tabellen
erreichtes – Layout mittels Stylesheets realisieren kann:
Stellen wir uns ein dreispaltiges Layout vor, in dem links die Navigation zu anderen Sei-
ten der Web-Site zu finden ist, in der Mitte der eigentliche Inhalt steht und rechts sons-
tige Informationen untergebracht werden. In der Regel wurden und werden derartige
Seiten durch den Einsatz einer dreispaltige Tabelle realisiert. Unter Nutzung von Style-
sheets (ohne Tabelle) k=nnte so eine Seite etwa so aussehen:
<html>
<head>
<title>Dornr^schen</title>
<style type="text/css">
body {
background-color: #999999;
font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;
font-size: 80%;
color: #ffffff;
}
#kopf {
width: 100%;
text-align: center;
}
#navigation {
background: #000000;
color: #ffffff;
width: 20%;
float: left;
}
#haupttext {
background: #ffffff;
color: #000000;
float: left;
width: 60%;
}
#hinweise {
background: #cccccc;
color: #ffffff;
float: left;
width: 20%;
}
H1 {
font-size: 180%;
<edition
[Link]>
font-weight: bold;
margin: 0.5em 0em 1.5em 0em;
}
H2 {
Die HTML 4.01- Spezifikation
font-size: 140%;
font-weight: bold;
padding: 1.5em 1em 0.5em 1em;
}
#navigation P {
color: #ffffff;
padding: 0.1em 1em 0.1em 1em;
}
#haupttext P {
color: #000000;
padding: 0.1em 1em 0.1em 1em;
}
#hinweise P {
color: #ffffff;
padding: 0.1em 1em 0.1em 1em;
}
#navigation P A:link {
color: #cccccc;
}
#navigation P A:visited {
color: #999999;
}
#hinweise P A:link {
color: #000000;
}
#hinweise P A:visited {
color: #333333;
}
</style>
</head>
<body>
<div id="kopf">
<h1>Die M]rchen der GebrUder Grimm</h1>
</div>
<div id="navigation">
<p><a href="[Link]">Allerleirauh</a></p>
<p><a href="[Link]">Bruder Lustig</a></p>
<p><a href="[Link]">BrUderchen und
Schwesterchen</a></p>
<p><a href="[Link]">Das tapfere Schneiderlein</a></p>
<p><a href="[Link]">Der Froschk^nig</a></p>
Die Links zu den Ubrigen M]rchen...
</div>
<div id="haupttext">
<h2>Dornr^schen</h2>
<p>Vorzeiten war ein K^nig und eine K^nigin...</p>
Der Rest des M]rchens...
</div>
<div id="hinweise">
<p><a href="[Link] M]rchen</a></p>
<p><a href="[Link]">M]rchenbUcher</a></p>
<p><a href="[Link]">M]rchenlinks</a></p>
<p><a href="[Link]">Impressum</a></p>
<p><a href="[Link]">Kontakt</a></p>
</div>
So sollte es aussehen, denn bereits bei der L=sung dieser vergleichsweise einfachen Auf-
gabe haben einige der getesteten aktuellen Browser leichte Schwierigkeiten, sie stellen
nicht wirklich sauber dar oder verschieben das Layout bei geringfgigen Onderungen
der Benutzereinstellungen, zum Beispiel der Schriftgr=ße – kein wirklich zufriedenstel-
lendes Ergebnis also, denn so simpel wie dieses sind Layouts in der Praxis oft nicht.
Weniger Probleme entstehen bei festen Positionierungen und starren Vorgaben fr
Schriftgr=ßen (px), nur ist der Preis dafr, n@mlich die Aufgabe jeglicher Anpassungs-
f@hgkeit, zu hoch.
Fazit: Stylesheets sind die anzustrebende Alternative fr Tabellenlayouts, aber erst dann
eine wirkliche, wenn die Browserlandschaft ihr gewachsen ist. Bis dahin werden Auto-
ren und Benutzer mit Einschr@nkungen und eventuell mit Kompromissen leben.
<edition
[Link]>
Manchmal kann diese Zeilenorientierung unbequem sein, und man wrde sich eine Spal-
tenorientierung wnschen. In einem solchen Fall muss die Tabelle „nur“ transponiert
werden (das heißt, Spiegelung an der Hauptdiagonalen). So fern es sich um eine regel-
m@ßig aufgebaute Tabelle handelt (das heißt, alle Zeilen haben die gleiche L@nge, und es
werden keine colspan- und rowspan-Attribute verwendet), l@sst sich eine Transponie-
rung sehr einfach durchfhren. Da einer der bersetzer krzlich selbst vor diesem
Problem stand, finden Sie unter [Link]/xslt/ ein kleines XSLT-Programm,
das die Transponierung fr eine solche XHTML-Tabelle durchfhrt.
12 Links
12.1 Einf-hrung in Links und Anker
HTML bietet viele der herk=mmlichen Publikationsm=glichkeiten fr Rich-Text und struktu-
rierte Dokumente. Was den Unterschied zu den meisten anderen Auszeichnungssprachen aus-
macht, sind die Merkmale: Hypertext und interaktive Dokumente. Dieser Abschnitt stellt den
Link (auch Hyperlink oder Web-Link), das grundlegende Hypertext-Konstrukt, vor. Ein Link ist
eine Verbindung von einer Web-Ressource zur anderen. Wenngleich ein einfaches Konzept,
war der Link eine der wichtigsten Kr@fte, die den Erfolg des Webs vorangetrieben haben.
Ein Link hat zwei Enden – genannt Anker – und eine Richtung. Der Link beginnt beim
„Quell“-Anker und zeigt auf den „Ziel“-Anker, der eine beliebige Web-Ressource sein kann
(zum Beispiel ein Bild, ein Videoclip, ein Klangschnipsel, ein Programm, ein HTML-Dokument,
ein Element innerhalb eines HTML-Dokuments und so weiter).
Standardm@ßig wird ber einen Link eine andere Web-Ressource gefunden. Dieses Verhalten
wird gew=hnlich ohne weiteres durch Auswahl eines Links (zum Beispiel durch Anklicken,
durch eine Tastatureingabe usw.) erreicht.
Der folgende HTML-Auszug enth@lt zwei Links, einen, dessen Zielanker ein HTML Dokument
namens „[Link]“ ist, und einen anderen, dessen Zielanker ein GIF-Bild in der Datei
„[Link]“ ist:
<BODY>
...Text...
<P>Sie k^nnen eine Menge mehr in <A href="[Link]">Kapitel zwei</A> finden.
Schauen Sie bitte auch diese <A href="../images/[Link]">Karte des
Zauberwaldes</A> an.
</BODY>
Bei der Aktivierung dieser Links (durch Anklicken mit der Maus, Tastatureingabe, Sprach-
befehle usw.) k=nnen Benutzer diese Ressourcen aufsuchen. Beachten Sie, dass das href-Attri-
but in jedem Quellanker die Adresse des Zielankers durch einen URI spezifiziert.
Der Zielanker eines Links kann ein Element innerhalb eines HTML-Dokuments sein. Der Ziel-
<H1>Inhaltsverzeichnis</H1>
<P><A href="#section1">EinfUhrung</A><BR>
<A href="#section2">Etwas zum Hintergrund</A><BR>
<A href="#section2.1">Eine pers^nliche Anmerkung</A><BR>
...Der Rest des Inhaltsverzeichnisses...
...Der Dokumentrumpf...
<H2><A name="section1">EinfUhrung</A></H2>
...Abschnitt 1...
<H2><A name="section2">Etwas zum Hintergrund</A></H2>
...Abschnitt 2...
<H3><A name="section2.1">Eine pers^nliche Anmerkung</A></H3>
...Abschnitt 2.1...
Wir k=nnen denselben Effekt erreichen, wenn wir die berschriften-Elemente selbst zu
Ankern machen:
<H1>Inhaltsverzeichniss</H1>
<P><A href="#section1">EinfUhrung</A><BR>
<A href="#section2">Etwas zum Hintergrund</A><BR>
<A href="#section2.1">Eine pers^nliche Anmerkung</A><BR>
...Der Rest des Inhaltsverzeichnisses...
...Der Dokumentrumpf...
<H2 id="section1">EinfUhrung</H2>
...Abschnitt 1...
<H2 id="section2">Etwas zum Hintergrund</H2>
...Abschnitt 2...
<H3 id="section2.1">Eine pers^nliche Anmerkung</H3>
...Abschnitt 2.1...
Die bei weitem h@ufigste Nutzungsart von Links ist die, wie in dem vorigen Beispiel dargestellt,
andere Web-Ressourcen aufzurufen. Autoren k=nnen jedoch auch Links in ihre Dokumente
aufnehmen, die andere Beziehungen zwischen den Ressourcen ausdrcken als einfach nur „akti-
viere diesen Link, um die betreffende Ressource aufzusuchen“. In Quellankern von Links, die
andere Arten von Beziehungen ausdrcken, sind ein oder mehr Linktypen spezifiziert.
Die Rolle eines durch A oder LINK definierten Links wird durch die rel und rev-Attribute
bestimmt.
<edition
[Link]>
Beispielsweise k=nnen Links, die mit mit Hilfe des LINK-Elements definiert sind, die Position
eines Dokuments innerhalb einer Serie von Dokumenten beschreiben. Im folgenden Auszug
verweisen Links innerhalb des mit „Kapitel 5“ betitelten Dokuments auf das vorhergehende
und das nachfolgende Kapitel:
Die HTML 4.01- Spezifikation
<HEAD>
...andere Kopfinformation...
<TITLE>Kapitel 5</TITLE>
<LINK rel="prev" href="[Link]">
<LINK rel="next" href="[Link]">
</HEAD>
Der Linktyp des ersten Links ist „prev“ und der des zweiten ist „next“ (zwei von mehreren
erkannten Linktypen). Durch LINK spezifizierte Links werden nicht mit dem Dokumentinhalt
dargestellt. Benutzerprogramme k=nnen sie jedoch auf andere Weise wiedergeben (zum Bei-
spiel als Navigationswerkzeuge).
Anmerkung der bersetzer: Der Mozilla-Browser zum Beispiel nutzt diese Links,
so sie in einem Dokument vorhanden sind, um dem Benutzer ein bequemes Navigations-
instrument anzubieten. Schauen wir als Beispiel die Originalfassung dieses Kapitels der
HTML-Spezifikation unter [Link]
[Link] an. Sie enth@lt folgende Links:
Wird die Seite im Browser geladen, so zeigt er eine Navigationsleiste, ber die man in
Fall unserer Beispielseite zur vorhergehenden Seite (das ist Kapitel 11, „Tables“,
[Link]), zur n@chsten Seite (das ist Kapitel 13, „Objects, Images, and Applets“,
[Link]) und zum Inhaltsverzeichnis ([Link]) gelangen kann.
<edition
[Link]>
12.1.4 Linktitel
Das title-Attribut kann sowohl fr A als auch fr LINK gesetzt werden, um Informationen ber
ber den Link hinzuzufgen. Diese Information k=nnen vom Benutzerprogramm gesprochen
Die HTML 4.01- Spezifikation
werden, als Tooltip wiedergegeben werden, eine Onderung der Cursordarstellung bewirken
und vieles mehr.
Damit k=nnen wir ein vorangehendes Beispiel erweitern, indem wir fr jeden Link einen Titel
anbieten:
<BODY>
...Text...
<P>Sie k^nnen eine Menge mehr in <A href="[Link]"
title="Gehe zu Kapitel zwei">Kapitel zwei</A> finden.
<A href="./[Link]"
title="Hole Kapitel zwei.">chapter two</A>.
Schauen Sie bitte auch diese <A href="../images/[Link]"
title="GIF-Bild des Zauberwaldes">Karte
des Zauberwaldes</A> an.
</BODY>
Da Links auf Dokumente mit anderer Zeichenkodierung (siehe Abschnitt 5.1) weisen k=nnen,
untersttzen A- und LINK-Element das charset-Attribut. Dieses Attribut erlaubt es Autoren, das
Benutzerprogramm ber die Datenkodierung am anderen Ende des Links zu informieren.
Das hreflang-Attribut versorgt das Benutzerprogramm mit Informationen ber die Sprache
der Ressource am Ende eines Links, so, wie das lang-Attribut Information ber die Sprache des
Inhalts eines Elements oder den Wert eines Attributs zur Verfgung stellt.
Ausgerstet mit diesem zus@tzlichen Wissen sollten es Benutzerprogramme vermeiden k=n-
nen, dem Benutzer „Mll“ zu pr@sentieren. Statt dessen k=nnen sie entweder Ressourcen aus-
findig machen, die fr die korrekte Pr@sentation des Dokuments notwendig sind, oder sie soll-
ten, so sie die Ressourcen nicht finden k=nnen, den Benutzer wenigstens warnen, dass das
Dokument unlesbar sein wird, und den Grund erkl@ren.
·· title (Elementtitel)
style (inzeilige Formatierungsinformationen)
<edition
[Link]>
·· target (Ziel-Frame-Angabe)
tabindex (Tabulatornavigation)
· accesskey (Zugriffstaste)
Im folgenden Beispiel definiert das A-Element einen Link. Quellanker ist der Text „W3C Web-
Site“ und Zielanker ist „[Link]
Dieser Link weist auf die Homepage des World Wide Web Consortium. Wenn ein Benutzer
den Verweis in einem Benutzerprogramm aktiviert, wird das Benutzerprogramm die Ressour-
ce, die in diesem Fall ein HTML-Dokument ist, abrufen.
Benutzerprogramme stellen Links gew=hnlich so dar, dass sie fr den Benutzer augenf@llig sind
(unterstrichen, invertiert usw.). Die exakte Wiedergabe h@ngt vom Benutzerprogramm ab. Die
Wiedergabe kann abh@ngig davon, ob der Benutzer den Link bereits besucht hat oder nicht,
variieren. Eine m=gliche visuelle Wiedergabe des vorigen Links k=nnte so aussehen:
Mehr Informationen Uber das W3C bekommen Sie auf der Web-Site des W3C.
~~~~~~~~~~~~~~~~
Angenommen, wir definieren einen Anker namens „anker-one“ in der Datei „[Link]“.
Es wird ein Anker um den Text „Hier befindest sich anker-one.“ erstellt. blicherweise wird
der Inhalt von A nicht auf spezielle Art dargestellt, wenn A lediglich einen Anker definiert.
Nachdem wir den Anker definiert haben, k=nnen wir vom gleichen oder einem anderen Doku-
ment aus auf ihn verweisen. URIs, die Anker kennzeichnen, enthalten ein „#“-Zeichen gefolgt
vom Namen des Ankers (dem Fragmentbezeichner). Hier folgen einige Beispiele fr solche
URIs:
·· Ein absoluter URI: [Link]
Ein relativer URI: ./[Link]#anchor-one oder [Link]#anchor-one
· Wenn der Verweis im gleichen Dokument definiert ist: #anchor-one
Ein Link, der in der in demselben Verzeichnis wie „[Link]“ befindlichen Datei „[Link]“
definiert ist, wrde folgendermaßen auf den Anker verweisen:
Das A-Element im folgenden Beispiel spezifiziert gleichzeitig einen Verweis (mittels href) und
erstellt einen benannten Anker (mittels name):
Ich bin gerade aus dem Urlaub zurUck! Hier ist ein
<A name="anchor-two"
href="[Link]
Foto meiner familie am See.</A>.
Dieses Beispiel enth@lt einen Link auf eine andere Art Web-Ressource (einem PNG-Bild). Die
Aktivierung des Links sollte bewirken, dass die Bildquelle aus dem Web abgerufen wird (und,
falls das System konfiguriert wurde, dies zu tun, dargestellt wird).
Anmerkung: Benutzerprogramme sollten in der Lage sein, von leeren A-Elementen erstellte Anker
zu finden; manche versagen jedoch dabei. Zum Beispiel k nnen einige Benutzerprogramme den Anker
„empty-anchor“ im folgenden HTML-Auszug nicht finden:
<A name="empty-anchor"></A>
<EM>...etwas HTML...</EM>
<A href="#empty-anchor">Link auf empty-anchor</A> n
<edition
[Link]>
Anmerkung der bersetzer: Von der Verwendung leerer A-Elemente raten auch
die bersetzer dieser Spezifikation ab, da zum Zeitpunkt der bersetzung g@ngige
Browser dieses unerwnschte Verhalten noch immer zeigen.
Die HTML 4.01- Spezifikation
Ein Ankername ist entweder der Wert des name- oder des id-Attributs, wenn diese im Kontext
von Ankern verwendet werden. Ankernamen mssen die folgenden Regeln beachten:
· Eindeutigkeit: Ankernamen mssen innerhalb eines Dokuments eindeutig sein. Anker-
namen, die sich nur in Groß- und Kleinschreibung unterscheiden, k=nnen nicht im selben
Dokument vorkommen.
· Zeichenfolgenabgleich: Vergleiche zwischen Fragmentbezeichner und Ankernamen
mssen auf genaue bereinstimmung hin (Groß- und Kleinschreibung) durchgefhrt wer-
den.
Damit ist das folgende Beispiel hinsichtlich des Zeichenfolgenabgleiches korrekt und muss von
Benutzerprogramm als zutreffend angesehen werden:
<P><A href="#xxx">...</A>
...mehr Dokument...
<P><A name="xxx">...</A>
<P><A name="xxx">...</A>
<P><A name="XXX">...</A>
Obwohl der folgende Auszug gltiges HTML darstellt, ist das Verhalten von Benutzerprogram-
men nicht definiert; einige Benutzerprogramme k=nnten dies (f@lschlicherweise) als zutreffend
betrachten und andere nicht.
<P><A href="#xxx">...</A>
...Mehr Dokument...
<P><A name="XXX">...</A>
Ankernamen sollten auf ASCII-Zeichen beschr@nkt sein. Im Anhang B finden Sie weitere Infor-
mationen unter „Nicht-ASCII-Zeichen in URI-Attributwerten“.
Durch das A-Element definierte Anker und Verweise drfen nicht verschachtelt werden; ein
A-Element darf kein anderes A-Elemente enthalten.
Da die DTD das Element LINK als leer definiert, k=nnen LINK-Elemente auch nicht verschachtelt
werden.
Das id-Attribut kann verwendet werden, um einen Anker am Start-Tag eines beliebigen Ele-
ments (einschließlich des A-Elements) zu erstellen.
Ich bin gerade aus dem Urlaub zurUck! Hier ist ein
<A id="anchor-two">Foto meiner Famile am See.</A>.
Das id und das name-Attribut benutzen denselben Namensraum. Das bedeutet, sie k=nnen
nicht beide einen Anker mit demselben Namen im selben Dokument definieren. Es ist zul@ssig,
beide Attribute zu benutzen, um einen eindeutigen Bezeichner fr die folgenden Elemente
anzugeben: A, APPLET, FORM, FRAME, IFRAME, IMG, und MAP. Wenn beide Attribute bei einem Element
benutzt werden, mssen ihre Werte identisch sein.
<p>Absatz 1:
<br><a href="#ziel">Der Link zum Ziel</a></p>
<p id="ziel">Absatz 2:
<br>... Text ...</p>
<p><a name="ziel">Absatz 3</a>:
<br>...noch mehr Text ...</p>
Wo befindet sich der Zielanker des Links, in Absatz 2 oder in Absatz 3? Er ist nicht ein-
deutig bestimmbar; damit ist der obige Code ungltig.
Anders hier:
<p>Absatz 1:
<br><a href="#ziel">Der Link zum Ziel</a></p>
<p>Absatz 2:
<br>... Text ...</p>
<p><a name="ziel" id="ziel">Absatz 3</a>:
<br>...noch mehr Text ...</p>
<edition
[Link]>
<A href="#a1">...</A>
...
<H1 id="a1">
...Seiten und Seiten...
<A name="a1"></A>
Das folgende Beispiel veranschaulicht, dass id und name identisch sein mssen, wenn beide im
Start-Tag des Elements stehen:
Seiner Spezifizierung in der HTML-DTD folgend kann das name-Attribut Zeichenreferenzen ent-
halten. Damit sind sowohl Dürst als auch Dürst gltige Werte fr ein name-Attribut.
Im Unterschied dazu darf das id-Attribut keine Zeichenreferenzen enthalten.
id oder name benutzen? Autoren sollten die folgenden Punkte beachten, wenn sie sich zwischen
id und name fr einen Ankernamen entscheiden:
· Das id-Attribut kann als mehr, denn nur als ein Ankername fungieren (zum Beispiel als Style-
sheet-Selektor, als Bezeichner fr die Verarbeitung usw.).
·· Einige ,ltere Benutzerprogramme untersttzen mit Hilfe des id-Attributs erstellte Anker nicht.
Das name-Attribut erlaubt ein gr ßeres Spektrum an Ankernamen (mit Entities). n
Eine Referenz auf eine nicht verfgbare oder eine nicht identifizierbare Ressource ist ein Fehler.
Wenngleich Benutzerprogramme solch einen Fehler auf unterschiedliche Weise behandeln
k=nnen, empfehlen wir folgendes Verhalten:
· Wenn ein Benutzerprogramm eine verlinkte Ressource nicht lokalisieren kann, sollte es
den Benutzer darauf aufmerksam machen.
· Wenn ein Benutzerprogramm den Typ einer verlinkten Ressource nicht identifizieren kann,
sollte es dennoch versuchen, sie zu bearbeiten. Es sollte den Benutzer warnen und kann
ihm gestatten, einzugreifen und den Dokumenttyp zu identifizieren.
Anmerkung der bersetzer: Hier sind Beispiele von zur Zeit verwendeten
Browsern fr
· eine Browsermeldung nach dem Versuch, einen nicht erreichbaren Server bzw. eine
nicht identifizierbare Domain zu lokalisieren:
Anmerkung: Die Auswahlm=glichkeit „Sffnen“ fhrt bei der Word-Datei auf dem
hier verwendeten Linux-System lediglich zur n@chsten Frage, womit ge=ffnet werden
soll.
·· title (Elementtitel)
style (inzeilige Formatierungsinformation )
<edition
[Link]>
·· target (Ziel-Frame-Angabe)
media (Kopf-Style-Information)
· charset(Zeichenkodierung)
Dieses Element definiert einen Verweis. Anders als A kann es nur im HEAD-Abschnitt des Doku-
Die HTML 4.01- Spezifikation
ments stehen, kann jedoch mehrfach vorkommen. Obgleich LINK keinen Inhalt besitzt, vermit-
telt es Informationen ber die Beziehungen zweier Ressourcen, die von Benutzerprogrammen
auf vielf@ltige Weise wiedergegeben werden k=nnen (zum Beispiel als Toolbar, durch ein aus
Links bestehendes Drop-Down-Men).
Dieses Beispiel veranschaulicht das Auftreten mehrerer LINK-Definitionen im HEAD-Abschnitt
des Dokuments. Das aktuelle Dokument ist „[Link]“. Das rel-Attribut gibt die Bezie-
hung des verlinkten Dokuments zum aktuellen Dokument an. Die Werte „Index“, „Next“, und
„Prev“ werden in Abschnitt 6.12, „Linktypen“ erkl@rt.
Die rel- und rev-Attribute spielen entgegengesetzte Rollen – das rel-Attribut spezifiziert einen
Vorw@rts-Link und das rev-Attribut einen Rckw@rts-Link.
Betrachten Sie die beiden Dokumente A und B.
Wenn das LINK-Element ein externes Stylesheet mit dem Dokument verbindet, spezifiziert das
type-Attribut die Stylesheet Sprache an und das media-Attribut das vorgesehene Ausgabemedi-
um. Benutzerprogramme k=nnen Zeit sparen, indem sie nur diejenigen Stylesheets aus dem
Netz laden, die fr das aktuelle Ger@t passend sind.
Medientypen werden in Abschnitt 14, „Stylesheets“ genauer behandelt.
<HEAD>
<TITLE>Das Handbuch auf englisch</TITLE>
<LINK title="Das Handbuch auf niederl]ndisch"
type="text/html"
rel="alternate"
hreflang="nl"
href="[Link]
<LINK title="Das Handbuch auf portugiesisch"
type="text/html"
rel="alternate"
hreflang="pt"
href="[Link]
<LINK title="Das Handbuch auf arabisch"
type="text/html"
rel="alternate"
charset="ISO-8859-6"
hreflang="ar"
href="[Link]
<LINK lang="fr" title="La documentation en Français"
type="text/html"
rel="alternate"
hreflang="fr"
href="[Link]
</HEAD>
In dem folgenden Beispiel sagen wir Suchmaschinen, wo die druckbare Version des Handbuchs
zu finden ist.
<HEAD>
<TITLE>Handbuch</TITLE>
<LINK media="print" title="Das Handbuch in Postscript"
type="application/postscript"
<edition
[Link]>
rel="alternate"
href="[Link]
</HEAD>
In dem folgenden Beispiel sagen wir Suchmaschinen, wo die Titelseite einer Sammlung von
Die HTML 4.01- Spezifikation
<HEAD>
<TITLE>Handbuch -- Seite 5</TITLE>
<LINK rel="Start" title="Die erste Seite des Handbuchs"
type="text/html"
href="[Link]
</HEAD>
Attributdefinitionen
</HEAD>
<BODY>
<P>Haben Sie unsere <A href="../cages/[Link]">Vogelk]fige</A> gesehen?
</BODY>
</HTML>
[Link]
Benutzerprogramme mssen den Basis-URI fr die Aufl=sung relativer URIs gem@ß [RFC1808],
Abschnitt 3 ermitteln. Nachfolgend ist beschrieben, wie [RFC1808] speziell in HTML angewen-
det wird.
Benutzeragenten mssen den Basis-URI gem@ß folgender Rangfolge (von h=chster Priorit@t zu
niedrigster) ermitteln:
1. Der Basis-URI ist durch das BASE-Element gesetzt.
2. Der Basis-URI wird durch Meta-Daten angegeben, die w@hrend einer Protokoll-Interaktion
gefunden wurden, wie zum Beispiel einem HTTP-Header (siehe auch [RFC2616]).
3. Standardm@ßig ist der Basis-URI der des aktuellen Dokuments. Nicht alle HTML-Doku-
mente haben einen Basis-URI (zum Beispiel kann ein gltiges HTML-Dokument in einer
E-Mail vorkommen und nicht durch einen URI bezeichnet werden). Solche HTML-Doku-
mente werden als fehlerhaft angesehen, wenn sie relative URIs enthalten und sich auf einen
Standard-Basis-URI beziehen.
Zus@tzlich definieren OBJECT- und APPLET-Elemente Attribute, die Vorrang vor dem durch das
BASE-Element gesetzten Wert haben. Weitere Informationen ber speziell fr diese geltende
URI-Punkte finden Sie in den Definition der Elemente.
Anmerkung. Bei Versionen von HTTP, die einen Link-Header definieren, sollten Benutzerpro-
gramme diese Header genau wie LINK-Elemente im Dokument behandeln. HTTP 1.1, wie in
[RFC2616] definiert, enth,lt kein Link-Header-Feld (bezieht sich auf Abschnitt 19.6.3). n
<edition
[Link]>
<BODY>
<P>Hier ist eine Großaufnahme des Grand Canyon:
<OBJECT data="[Link]" type="image/png">
Dies ist eine <EM>Großaufnahme</EM> des Grand Canyon.
</OBJECT>
Die HTML 4.01- Spezifikation
</BODY>
Frhere Versionen von HTML gestatteten Autoren die Einbindung von Bildern (ber IMG) und
Applets (ber APPLET). Diese Elemente haben mehrere Einschr@nkungen:
· Sie l=sen das eher allgemeine Problem nicht, wie neue und zuknftige Medientypen ein-
zubinden sind.
· Das Element APPLET arbeitet nur mit Java-basierten Applets zusammen. Dieses Element
wird zu Gunsten des OBJECT-Elements missbilligt.
· Sie bringen Zug@nglichkeitsprobleme mit sich.
Um diese Probleme anzugehen, fhrt HTML 4 das Element OBJECT ein, das eine universelle
L=sung fr die allgemeine Objekteinbindung anbietet. Das OBJECT-Element erlaubt HTML-Auto-
ren, alle fr die Darstellung im Benutzerprogramm erforderlichen Informationen des Objekts
anzugeben: Quelltext, Anfangswerte und Laufzeitdaten. In dieser Spezifikation wird der Begriff
„Objekt“ in dem Sinn verwendet, dass er alle Dinge beschreibt, die jemand in einem HTML-Do-
kument unterbringen m=chte; andere allgemein verwendete Begriffe fr diese Dinge sind: App-
lets, Plug-Ins, Medien-Handler usw.
Das neue Element OBJECT bernimmt so einige Aufgaben, die von bestehenden Elementen aus-
gefhrt werden. Stellen Sie sich die folgenden Funktionalit@ten vor:
Die Tabelle zeigt, dass jede Art der Einbindung eine spezielle und eine allgemeine L=sung hat.
Das allgemeine Element OBJECT wird als L=sung fr die Implementierung zuknftiger Medien-
typen fungieren.
Zur Einbindung von Bildern k=nnen Autoren das Element OBJECT oder das Element IMG verwen-
den.
Zur Einbindung von Applets sollten Autoren das Element OBJECT verwenden, weil das APPLET-
Element missbilligt wird.
Zur Einbindung eines HTML-Dokuments in ein anderes, k=nnen Autoren entweder das neue
Element IFRAME oder das Element OBJECT verwenden. In beiden F@llen bleibt das eingebettete
Dokument unabh@ngig vom Hauptdokument. Visuelle Benutzerprogramme k=nnen das einge-
schlossene Dokument in einem separaten Fenster innerhalb des Hauptdokuments darstellen.
Bitte lesen Sie zum Vergleich zwischen OBJECT und IFRAME in Bezug auf die Dokumenteinbindung
die „Anmerkungen zu eingebetteten Dokumenten“ weiter unten.
Bilder und andere eingebundene Objekte k=nnen mit ihnen verbundene Hyperlinks haben,
beide durch den Standard-Link-Mechanismus, aber auch ber Imagemaps. Eine Imagemap gibt
aktive geometrische Bereiche eines eingebetteten Objekts an und verbindet jeden Bereiche mit
einem Link. Bei ihrer Aktivierung k=nnen diese Links den Empfang eines Dokuments veranlas-
sen, ein Programm auf dem Server starten usw.
In den folgenden Abschnitten behandeln wir die verschiedenen Mechanismen, die Autoren fr
<!ATTLIST IMG
%attrs; - - %coreattrs, %i18n, %events - -
src %URI; #REQUIRED - - URI of image to embed - -
alt %Text; #REQUIRED - - short description - -
longdesc %URI; #IMPLIED - - link to long description
(complements alt) - -
name CDATA #IMPLIED - - name of image for scripting - -
height %Length; #IMPLIED - - override height - -
width %Length; #IMPLIED - - override width - -
usemap %URI; #IMPLIED - - use client-side image map - -
ismap (ismap) #IMPLIED - - use server-side image map - -
>
Attributdefinitionen
<edition
[Link]>
title (Elementtitel)
<BODY>
<P>Ich komme gerade aus dem Urlaub nach Hause! Hier ist ein Foto meiner Familie am
See:
<IMG src="[Link]
alt="Ein Foto meiner Familie am See.">
</BODY>
Diese Einbindung k=nnte auch mit dem OBJECT-Element wie folgt geschehen:
<BODY>
<P>Ich komme gerade aus dem Urlaub nach Hause! Hier ist ein Foto meiner Familie am
See:
<OBJECT data="[Link]
type="image/png">
Ein Foto meiner Familie am See.
</OBJECT>
</BODY>
Das Attribut alt gibt alternativen Text an, der dargestellt wird, wenn das Bild nicht angezeigt
werden kann (mehr Informationen finden sie in Abschnitt „Wie alternativer Text angegeben
wird“ weiter unten). Benutzerprogramme mssen alternativen Text darstellen, wenn sie keine
Bilder untersttzen, bestimmte Bildtypen nicht untersttzen oder wenn sie so konfiguriert sind,
dass sie Bilder nicht anzeigen.
Das folgende Beispiel zeigt, wie das longdesc-Attribut verwendet werden kann, um auf eine aus-
fhrlichere Beschreibung zu verweisen:
<BODY>
<P>
<IMG src="[Link]"
alt="HP Labs Site Map"
longdesc="[Link]">
</BODY>
<edition
[Link]>
Attributdefinitionen
einen URI anzugeben. Es kann abh@ngig vom Typ des beteiligten Objekts zusammen mit
oder als Alternative zum data-Attribut verwendet werden.
codebase = uri [CT]
Dieses Attribut gibt den Basispfad zur Aufl=sung relativer URIs an, die durch die Attribute
classid, data und archive angegeben sind. Ist das Attribut nicht angegeben, ist der Basis-URI
des aktuellen Dokuments der voreingestellte Wert.
codetype = content-type [CI]
Dieses Attribut gibt den Inhaltstyp der erwarteten Daten an, wenn ein Objekt herunter-
geladen wird, das durch das Attribut classid angegeben ist. Dieses Attribut ist optional,
jedoch empfohlen, wenn classid angegeben ist, weil es dem Benutzerprogramm gestattet,
das Laden von Informationen fr nicht untersttzte Inhaltstypen zu vermeiden. Ist es nicht
angegeben, ist seine Voreinstellung der Wert des type-Attributs.
data = uri [CT]
Dieses Attribut kann dazu verwendet werden, den Ort der Objektdaten anzugeben, zum
Beispiel Bilddaten fr Objekte, die Bilder definieren oder allgemeiner, eine serialisierte
Form eines Objekts, die verwendet werden kann, um es wiederherzustellen. Ist es als rela-
tiver URI gegeben, sollte es relativ zum codebase-Attribut aufgel=st werden.
type = content-type [CI]
Dieses Attribut gibt den Inhaltstyp der Daten an, die vom data-Attribut angegeben werden.
Dieses Attribut ist optional, jedoch empfohlen, wenn data angegeben ist, weil es dem
Benutzerprogramm gestattet, das Laden von Informationen fr nicht untersttzte Inhalts-
typen zu vermeiden. Unterscheidet sich der Wert dieses Attributs vom HTTP-Inhaltstyp,
der vom Server zurckgegeben wird, wenn das Objekt empfangen wird, ist der HTTP-
Inhaltstyp vorrangig.
archive = uri-list [CT]
Dieses Attribut kann dazu verwendet werden, eine durch Kommata getrennte Liste mit
URIs der Archive anzugeben, welche die relevanten Quellen fr das Objekt enthalten.
Darin eingeschlossen k=nnen die Quellen sein, die durch die Attribute classid und data
bezeichnet sind. Archive vorab herunterzuladen, fhrt im Allgemeinen zu einer verringerten
Ladezeit fr Objekte. Archive, die als relativer URI angegeben sind, sollten relativ zum
Attribut codebase aufgel=st werden.
declare [CI]
Sofern angegeben, wird die aktuelle OBJECT-Definition durch dieses Boolesche Attribut zu
einer Deklaration. Die Instanz des Objekts muss von einer folgenden OBJECT-Definition, die
sich auf diese Deklaration bezieht, erzeugt werden.
standby = text [CS]
Dieses Attribut stellt eine Nachricht zur Verfgung, die ein Benutzerprogramm darstellen
kann, w@hrend die Implementierung und die Daten des Objekts geladen werden.
· title (Elementtitel)
·· tabindex (Tabulatornavigation)
·· name (Formularbertragung)
align, width, height, border, hspace, vspace (visuelle Darstellung von Objekten, Bildern und
Applets)
Die meisten Benutzerprogramme haben einen eingebauten Mechanismus zur Darstellung von
allgemeinen Datentypen, dazu geh=ren Text, GIF-Bilder, Farben, Schriftarten und eine Handvoll
graphischer Elemente. Um Datentypen darzustellen, die sie nicht nativ untersttzen, verwen-
den Benutzerprogramme im Allgemeinen externe Anwendungen. Das Element OBJECT gestattet
dem Autor die Kontrolle darber, ob Daten extern dargestellt werden sollen oder durch ein
vom Autor angegebenes Programm, das Daten innerhalb eines Benutzerprogramms anzeigt.
Im allgemeinsten Fall hat ein Autor drei Infromationstypen anzugeben:
· Die Implementierung des eingebundenen Objekts. Ist das eingebundene Objekt zum Bei-
spiel ein Uhr-Applet, muss der Autor den Ort des ausfhrbaren Codes des Applets ange-
ben.
· Die Daten, die dargestellt werden sollen. Ist das eingebundene Objekt zum Beispiel ein Pro-
gramm, das Schriftdaten darstellt, muss der Autor den Ort dieser Daten angeben.
· Zus@tzliche Werte, die vom Objekt zur Laufzeit ben=tigt werden. Zum Beispiel k=nnten
einige Applets Anfangswerte fr Parameter fordern.
Das Element OBJECT gestattet zwar Autoren die Angabe aller drei Datentypen, jedoch mssen
Autoren nicht unbedingt alle drei Angaben zugleich machen. Zum Beispiel ben=tigen einige
Objekte vielleicht keine Daten (z. B. ein in sich geschlossenes Applet, das eine kurze Animation
zeigt). Andere ben=tigen eventuell keine Laufzeitinitialisierung. Wieder andere ben=tigen m=g-
licherweise keine zus@tzlichen Implementierungsinformationen, z. B. kann das das Benutzerpro-
gramm selbst schon wissen, wie dieser Datentyp darzustellen ist (z. B. GIF-Bilder).
Autoren geben eine Objektimplementierung und den Ort der darzustellenden Daten ber das
OBJECT-Element an. Um Laufzeitwerte anzugeben, verwenden Autoren jedoch das Element
PARAM, das im Abschnitt „Objektinitialisierung“ er=rtert wird.
Das OBJECT-Element kann auch im Inhalt des Elements HEAD stehen. Weil Benutzerprogramme
im Allgemeinen Elemente im HEAD nicht darstellen, sollten Autoren sicherstellen, dass kein
OBJECT-Element im HEAD Inhalt angibt, der dargestellt werden kann. Bitte lesen Sie unter „Daten
teilen mit anderen Frames“ im Abschnitt 16.2.1 nach, dort findet sich ein Beispiel fr die Einbin-
dung des OBJECT-Elements in das HEAD-Element.
Bitte lesen Sie den Abschnitt 17.2, „Steuerelemente“, dort finden Sie Informationen ber
OBJECT-Elemente in Formularen.
Dieses Dokument spezifiziert nicht das das Verhalten von OBJECT-Elementen, die sowohl das
Attribut classid zur Identifizierung einer Implementierung als auch das Attribut data zur
Angabe von Daten fr diese Implementierung verwenden. Um fr Portabilit@t zu sorgen, sollten
Autoren das Element PARAM verwenden, um Implementierungen mitzuteilen, woher sie zus@tzli-
che Daten beziehen k=nnen.
<edition
[Link]>
1. Das Benutzerprogramm muss zuerst versuchen, das Objekt darzustellen. Es sollte nicht
den Inhalt des Elements darstellen, aber es muss ihn untersuchen, falls das Element irgend-
welche direkte Kinder hat, die PARAM-Elemente (siehe Objektinitialisierung) oder MAP-Ele-
mente sind (siehe Client-seitige Imagemaps).
2. Ist ein Benutzerprogramm aus irgendeinem Grund nicht in der Lage, das Objekt darzustel-
len (so konfiguriert, zu wenig Quellen, falsche Architektur usw.), dann muss es versuchen,
dessen Inhalt darzustellen.
Autoren sollten keinen Inhalt in OBJECT-Elemente einschließen, die im HEAD-Element stehen.
Im folgenden Beispiel fgen wir das Applet einer analogen Uhr in ein Dokument ber das
OBJECT-Element ein. Das in der Sprache Python geschriebene Applet ben=tigt keine weiteren
Daten oder Laufzeitwerte. Das Attribut classid gibt den Ort des Applets an:
<P><OBJECT classid="[Link]
</OBJECT>
Beachten Sie, dass die Uhr dargestellt wird, sobald das Benutzerprogramm diese OBJECT-Dekla-
ration interpretiert. Es ist m=glich, die Darstellung eines Objekts zu verz=gern, indem man das
Objekt zuerst deklariert (weiter unten beschrieben).
Autoren sollten diese Deklaration durch Angabe eines alternativen Textes im Inhalt des
OBJECT-Elements vervollst@ndigen, falls das Benutzerprogramm die Uhr nicht anzeigen kann.
<P><OBJECT classid="[Link]
Eine animierte Uhr.
</OBJECT>
Eine signifikante Konsequenz des Aufbaus des OBJECT-Elements ist, dass er einen Mechanismus
bietet, alternative Objektdarstellungen anzugeben; jede eingebettete OBJECT-Deklaration kann
alternative Inhaltstypen deklarieren. Kann ein Benutzerprogramm das @ußere OBJECT nicht dar-
stellen, versucht es, den Inhalt darzustellen, der wiederum ein OBJECT-Element sein kann, usw.
Im folgenden Beispiel betten wir meherere OBJECT-Deklarationen ein, um zu zeigen, wie die
alternative Darstellung funktioniert. Ein Benutzerprogramm wird versuchen, das erste OBJECT-
Element darzustellen, das es kann, und zwar in der folgenden Reihenfolge: (1) Ein in der Spra-
che Python geschriebenes Erde-Applet, (2) eine MPEG-Animation der Erde, (3) ein GIF-Bild
der Erde, (4) alternativen Text.
</OBJECT>
</OBJECT>
</OBJECT>
Die @ußere Deklaration gibt ein Applet an, das keine Daten oder Anfangswerte erfordert. Die
<P>
<OBJECT id="uhr1"
classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
data="data:application/x-oleobject;base64, ...base64-Daten...">
Eine Uhr.
</OBJECT> n
Bitte lesen sie den Abschnitt „Visuelle Darstellung von Objekten, Bildern und Applets“. Hier
finden Sie Informationen zu Objektgr=ße, -ausrichtung und Rahmen.
<!ATTLIST PARAM
id ID #IMPLIED -- document-wide unique id - -
name CDATA #REQUIRED -- property name - -
value CDATA #IMPLIED -- property value - -
valuetype (DATA|REF|OBJECT) DATA -- How to interpret value - -
type %ContentType; #IMPLIED -- content type for value
when valuetype=ref - -
>
Attributdefinitionen
name = cdata
Dieses Attribut definiert den Namen eines Laufzeitparameters, von dem angenommen wird,
dass das eingebettete Objekt ihn kennt. Ob der Eigenschaftsname Unterschiede zwischen
Groß- und Kleinschreibung macht, ist abh@ngig von der jeweiligen Objekt-Implementierung.
<edition
[Link]>
value = cdata
Dieses Attribut gibt den Wert eines Laufzeitparameters an, der von name spezifiziert wird.
Eigenschaftswerte haben keine Bedeutung fr HTML; ihre Bedeutung wird durch das
betreffende Objekt festgelegt.
Die HTML 4.01- Spezifikation
PARAM-Elemente geben eine Wertemenge an, die von einem Objekt zur Laufzeit ben=tigt wer-
den kann. Eine beliebige Anzahl von PARAM-Elementen kann im Inhalt der Elemente OBJECT oder
APPLET in jeder erdenklichen Reihenfolge erscheinen, jedoch mssen sie zu Beginn des Inhalts
der einschließenden Elemente OBJECT oder APPLET stehen.
Es wird angenommen, dass die Syntax der Namen und Werte von der Implementierung des
Objekts verstanden wird. Dieses Dokument gibt weder an, wie Benutzerprogramme die
Name/Wert-Paare empfangen sollen, noch wie sie doppelt erscheinende Parameternamen
interpretieren sollen.
Kehren wir zum Uhr-Beispiel zurck, um die Verwendung des PARAM-Elements zu verdeutlichen:
Nehmen Sie an, dass ein Applet in der Lage ist, zwei Laufzeitparameter zu verarbeiten, die des-
sen Anfangsh=he und -breite definieren. Wir k=nnen die Anfangsabmessung mit zwei PARAM-
Elementen auf 40x40 Pixel festlegen.
<P><OBJECT classid="[Link]
<PARAM name="height" value="40" valuetype="data">
<PARAM name="width" value="40" valuetype="data">
Dieses Benutzerprogramm kann keine Python-Anwendungen darstellen.
</OBJECT>
Im folgenden Beispiel werden Laufzeitdaten fr den Objektparameter Init_values als externe
Quelle (eine GIF-Datei) angegeben. Der Wert des Attributs valuetype wird folglich auf „ref“
gesetzt, und value ist ein URI, der die Quelle angibt.
<P><OBJECT classid="[Link]
standby="Elvis wird geladen ...">
<PARAM name="Init_values"
value="./images/[Link]">
valuetype="ref">
Beachten Sie, dass wir das standby-Attribut so angegeben haben, dass ein Benutzerprogramm
eine Nachricht einblenden kann, solange der Darstellungsmechanismus geladen wird.
Wird ein OBJECT-Element dargestellt, mssen Benutzerprogramme den Inhalt nur nach PARAM-
Elementen durchsuchen, die direkte Kinder sind und das OBJECT damit „fttern“.
Daraus abgeleitet gilt fr das folgende Beispiel, dass „param1“ fr „obj1“ (und nicht fr „obj2“)
gilt, wenn „obj1“ dargestellt wird. Wird „obj1“ nicht dargestellt, jedoch „obj2“, dann wird „pa-
ram1“ ignoriert und „param2“ gilt fr „obj2“. Wird keines der beiden OBJECT-Elemente dar-
gestellt, gilt auch keines der beiden PARAM-Elemente.
<P>
<OBJECT id="obj1">
<PARAM name="param1">
<OBJECT id="obj2">
<PARAM name="param2">
</OBJECT>
</OBJECT>
Der Ort der Implementierung eines Objekts ist durch einen URI gegeben. Wie wir in Abschnitt
2.1.1, „Einfhrung zu URIs“ er=rtert haben, gibt das erste Segment eines absoluten URIs das
Namensschema an, das verwendet wird, um die Daten zu bertragen, die vom URI bestimmt
sind. Fr HTML-Dokumente ist das Schema h@ufig „http“. Einige Applets k=nnen andere
Namensschemata einsetzen. Wenn zum Beispiel ein Java-Applet angegeben wird, k=nnen Auto-
ren URIs verwenden, die mit „java“ beginnen oder fr ActiveX-Applets k=nnen Autoren das
„clsid“ verwenden.
Im folgenden Beispiel fgen wir ein Java-Applet in ein HTML-Dokument ein.
<P><OBJECT classid="java:[Link]">
</OBJECT>
Durch Angabe des codetype-Attributs kann ein Benutzerprogramm, abh@ngig von seiner F@hig-
keit Java zu verarbeiten, entscheiden, ob es die Java-Anwendung empfangen will.
<OBJECT codetype="application/java-archive"
classid="java:[Link]">
</OBJECT>
<edition
[Link]>
<OBJECT codetype="application/java-archive"
classid="java:[Link]">
codebase="[Link]
</OBJECT>
Die HTML 4.01- Spezifikation
Das folgende Beispiel gibt ber einen URI, der mit dem Namensschema „clsid“ beginnt, ein
ActiveX-Objekt an (mit dem classid-Attribut). Das Attribut data lokalisiert die Daten, die dar-
gestellt werden sollen (eine andere Uhr).
<P><OBJECT classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
data="[Link]
Diese Anwendung wird nicht unterstUtzt.
</OBJECT>
Die vorausgehenden Beispiele haben nur isolierte Objektdefinitionen gezeigt. Wenn ein Doku-
ment mehr als eine Instanz des gleichen Objekts enthalten soll, dann kann man die Deklaration
eines Objekts von seinen Instanzen trennen. Dies zu tun, bringt mehrere Vorteile:
· Daten k=nnen vom Benutzerprogramm einmal ber das Netzwerk empfangen werden
(w@hrend der Deklaration) und fr jede Instanz wieder verwendet werden.
· Es ist m=glich, von einem Objekt an einem anderen Ort als der Objektdeklaration eine
Instanz zu erzeugen, zum Beispiel von einem Verweis aus.
· Es ist m=glich, Objekte als Laufzeitdaten fr andere Objekte anzugeben.
Um ein Objekt zu deklarieren, ohne dass es ausgefhrt wird, wenn das Benutzerprogramm es
ausliest, setzt man das Boolesche Attribut declare im OBJECT-Element. Zur gleichen Zeit mssen
Autoren diese Deklaration dadurch kennzeichnen, dass sie den Wert des id-Attributs im
OBJECT-Element auf einen eindeutigen Wert setzen. Sp@ter werden sich Instanzen des Objekts
auf diesen Bezeichner beziehen.
Ein deklariertes OBJECT muss im Dokument vor der ersten Instanz dieses Objektes (OBJECT) ste-
hen.
Fr ein mit dem declare-Attribut definiertes Objekt wird jedesmal eine Instanz erzeugt, wenn
ein Element, das sich auf das Objekt bezieht, fordert, dass es dargestellt wird (z. B. ein Verweis
bezieht sich auf dieses Objekt und wird aktiviert oder ein Objekt bezieht sich auf dieses Objekt
und wird aktiviert usw.).
Im folgenden Beispiel deklarieren wir ein OBJECT und erzeugen eine Instanz des Objekts, indem
wir uns ber einen Verweis darauf beziehen. So kann das Objekt zum Beispiel durch Anklicken
eines abgesetzten Texts aktiviert werden.
<P><OBJECT declare
id="[Link]"
data="[Link]"
type="application/mpeg">
Die <STRONG>Erde</STRONG> aus dem All betrachtet.
</OBJECT>
...sp3ter im Dokument...
<P>Eine tolle <A href="#[Link]"> Animation der Erde!</A>
Anmerkung der bersetzer: Die Errata erg@nzen hierzu: Eine weitere M=glich-
keit, von einem in dieser Weise deklarierten Objekt eine Instanz zu erzeugen, ist Fol-
gendes:
Das folgende Beispiel zeigt, wie Laufzeitwerte angegeben werden, die wiederum andere
Objekte sind. In diesem Beispiel schicken wir einen Text (in der Tat ein Gedicht) an einen
hypothetischen Mechanismus zur Ansicht von Gedichten. Das Objekt erkennt einen Laufzeit-
parameter namens „font“ (sagen wir, um das Gedicht in einer bestimmten Schriftart darzustel-
len). Der Wert fr diesen Parameter ist seinerseits ein Objekt, welches das Schriftart-Objekt
einfgt (aber nicht darstellt). Die Beziehung zwischen dem Schriftart-Objekt und dem Gedicht-
betrachter-Objekt wird (1) durch Angabe der id„tribune“ in der Deklaration des Schriftart-
Objekts und (2) durch den Bezug darauf ber das PARAM-Element des Gedichtbetrachter-
Objekts (mit valuetype und value) hergestellt.
<P><OBJECT declare
id="tribune"
type="application/x-webfont"
data="[Link]">
</OBJECT>
...betrachte das Gedicht in [Link] hier...
<P><OBJECT classid="[Link]
data="[Link]">
<PARAM name="font" valuetype="object" value="#tribune">
<P>Ihnen fehlt ein wirklich cooler Gedichtbetrachter ...
</OBJECT>
Benutzerprogramme, die das Attribut declare nicht verstehen, mssen den Inhalt der OBJECT-
Deklaration darstellen.
Attributdefinitionen
<edition
[Link]>
Anmerkung: Obwohl die Beschr,nkung auf Unterverzeichnisse eine Abweichung von der allgemei-
nen Praxis und der HTML 3.2-Spezifikation darstellt, hat die HTML Working Group entschieden, die
Beschr,nkung in dieser Version der Spezifikation aus Sicherheitsgrnden zu belassen. n
code = cdata [CS]
Die HTML 4.01- Spezifikation
Dieses Attribut gibt entweder den Namen der Klassendatei an, die alle Applet-Unterklas-
sen des Applets enth@lt, oder den Pfad, um diese Klasse zu empfangen, eingeschlossen die
Klassendatei selbst. Es wird in unter Bercksichtigung von „codebase“ des Applets auf-
gel=st. Entweder muss code oder object vorhanden sein.
name = cdata [CS]
Dieses Attribut gibt einen Namen fr die Instanz des Applets an. Damit wird m=glich, dass
sich Applets im gleichen Dokument gegenseitig finden (und miteinander kommunizieren).
archive = uri-list [CT]
Dieses Attribut gibt eine durch Kommata getrennte Liste mit URIs fr Archive, die Klassen
und andere Ressourcen enthalten, die „vorgeladen“ werden. Die Klassen werden mit Hilfe
einer Instanz eines Applet-Klassenladers (AppletClassLoader) mit der gegebenen codebase
geladen. Relative URIs fr Archive werden in Bezug auf das codebase-Attribut des Applets
aufgel=st. Quellen vorab zu laden, kann die Performance eines Applets signifikant erh=hen.
object = cdata [CS]
Dieses Attribut gibt eine Ressource an, die in serialisierter Form den Zustand eines Applets ent-
h@lt. Es wird relativ zur Codebase des Applets interpretiert. Die serialisierten Daten enthalten
den Namen der Klasse des Applets, aber nicht deren Implementierung. Der Klassenname dient
dazu, die Implementierung aus einer Class-Datei oder einem Archiv zu bekommen.
Wenn das Applet „deserialisiert“ wird, wird die start()-Methode, aber nicht die init()-Me-
thode aufgerufen. Attributwerte, die zum Zeitpunkt gltig waren, als das Objekt serialisiert wur-
de, werden nicht wieder hergestellt. Jegliche Attribute, die an diese APPLET-Instanz bergeben
werden, werden fr das Applet zur Verfgung stehen. Autoren sollten dieses Feature mit gro-
ßer Vorsicht einsetzen. Ein Applet sollte vor der Serialisierung angehalten werden.
Entweder code oder object mssen vorhanden sein. Falls sowohl code als auch object ange-
geben sind, ist es ein Fehler, wenn sie verschiedene Klassennamen nennen.
width = length [CI]
Dieses Attribut gibt die Anfangsbreite des Anzeigebereichs eines Applets an (nicht davon
betroffen sind die Fenster und Dialogfelder, die das Applet erzeugt).
height = length [CI]
Dieses Attribut gibt die Anfangsh=he des Anzeigebereichs eines Applets an (nicht davon
betroffen sind die Fenster und Dialogfelder, die das Applet erzeugt).
An anderer Stelle definierte Attribute
·· id, class (dokumentweite Identifikatoren)
title (Elementtitel)
· align, hspace, vspace (visuelle Darstellung von Objekten, Bildern und Applets)
Dieses von allen Java-f@higen Browsern untersttzte Element, gestattet es Autoren, ein Java-App-
let in ein HTML-Dokument einzubetten. Es wird zu Gunsten des Elements OBJECTmissbilligt.
Der Inhalt des APPLET-Elements dient als alternative Information fr Benutzerprogramme, die
dieses Element nicht untersttzen oder so konfiguriert sind, dass sie Applets nicht zu unterstt-
zen. Andernfalls mssen Benutzerprogramme den Inhalt ignorieren.
MISSBILLIGTES BEISPIEL:
Im folgenden Beispiel fgt das APPLET-Element ein Java-Applet in das Dokument ein. Weil kein
codebase-Attribut angegeben ist, wird angenommen, dass sich dieses Applet im gleichen Ver-
zeichnis wie das aktuelle Dokument befindet.
Dieses Beispiel kann wie folgt mit einem OBJECT-Element erzeugt werden:
<P><OBJECT codetype="application/java"
classid="java:[Link]"
width="500" height="500">
Ein Java-Applet, das animierte Seifenblasen malt.
</OBJECT>
MISSBILLIGTES BEISPIEL:
Das folgende Beispiel eines Java-Applets:
<OBJECT codetype="application/java"
classid="AudioItem"
width="15" height="15">
<PARAM name="snd" value="[Link]|[Link]">
Ein Java-Applet, das eine Willkommensmusik spielt.
</OBJECT>
<edition
[Link]>
Ein eingebettetes Dokument ist vollkommen unabh@ngig vom Dokument, in das es eingebettet
ist. Zum Beispiel werden relative URIs im eingebetteten Dokument zu dem Base-URI des ein-
gebetteten Dokuments aufgel=st, nicht zu dem des Hauptdokuments. Ein eingebettetes Doku-
ment wird nur innerhalb eines anderen Dokuments dargestellt (z. B. in einem Unterfenster);
Die HTML 4.01- Spezifikation
...Text vorher...
<OBJECT data="embed_me.html">
Warnung: embed_me.html konnte nicht eingebettet werden.
</OBJECT>
...Text danach...
Rufen Sie sich in Erinnerung, dass der Inhalt von OBJECT nur dann dargestellt werden muss,
wenn die vom data-Attribut angegebene Datei nicht geladen werden kann.
In dem Fall, in dem eine Datei sich selbst enth@lt, ist das Verhalten eines Benutzerprogramms
nicht defniert.
13.6 Imagemaps
Imagemaps gestatten es Autoren, Bereiche eines Bildes oder Objekts anzugeben und weisen
jedem Bereich eine eigene Funktion zu (z. B. ein Dokument empfangen, ein Programm starten
usw.). Wird der Bereich durch den Benutzer aktiviert, wird die Funktion ausgefhrt.
Eine Imagemap wird erzeugt, indem einem Objekt sensitive geometrische Bereiche zugewiesen
werden.
Es gibt zwei Arten von Imagemaps:
· Client-seitig. Aktiviert der Benutzer mit der Maus einen Bereich der Client-seitigen Image-
map, werden die Koordinaten der Pixel vom Benutzerprogramm ausgewertet. Das Benut-
zerprogramm w@hlt den Link, der fr den aktivierten Bereich angegeben ist, und folgt ihm.
· Server-seitig. Aktiviert der Benutzer mit einer Maus einen Bereich der Server-seitigen Image-
map, werden die Koordinaten des angeklickten Pixels zu dem Server-seitigen Programm
gesendet, welches durch das href-Attribut des A-Elements angegeben ist. Das Server-seitige
Programm wertet die Koordinaten aus und fhrt irgendwelche Funktionen aus.
Client-seitige Imagemaps werden den Server-seitigen Imagemaps aus mindestens zwei Grnden vor-
gezogen: Sie sind zug@nglicher fr Menschen, die mit nicht visuellen Benutzerprogrammen surfen, und
sie geben eine direkte Rckmeldung, ob sich ein Zeiger ber einem aktiven Bereich befindet.
<!ATTLIST AREA
%attrs; -- %coreattrs, %i18n, %events - -
shape %Shape; rect -- controls interpretation of coords - -
<edition
[Link]>
MAP-Element definiert. Der Wert von usemap muss dem Wert des name-Attributs des zu ver-
bindenden MAP-Elements entsprechen.
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
··accesskey (Zugriffstaste)
shape (Imagemaps)
Anmerkung der bersetzer: Die Errata merken zu AREA an: „In der Spezifikation
ist unklar, ob x,y-Koordinaten die Basis 0 oder 1 verwenden. Ist die linke obere Ecke
(0,0) oder (1,1)?“ Eine Korrektur steht bisher (Stand 01/2003) nicht zur Verfgung.
Die Fassung von XHTML, an der zur Zeit gearbeitet wird (XHTML 2.0, Working Draft,
18. Dezember 2002), definiert die Koordinaten eindeutig. Dort heißt es in der „Samm-
lung der Imagemap-Attribute“: „Bildschirmkoordinaten werden als Pixelwerte aus-
gedrckt, die relativ zum Bild sind; ihr Ursprung ist (0,0) in der linken oberen Ecke.“
Das Element MAP gibt eine Client-seitige Imagemap an (oder einen anderen Navigationsmecha-
nismus), die mit anderen Elementen (IMG, OBJECT oder INPUT) verbunden werden kann. Eine
Imagemap wird mit einem Element ber das usemap-Attribut des Elements verknpft. Das Ele-
ment MAP kann als allgemeiner Navigationsmechanismus ohne ein verknpftes Bild verwendet
werden.
Die Gegenwart eines usemap-Attributs in einem OBJECT bedingt, dass dieses eingebettete Objekt
ein Bild ist. Wenn das Element OBJECT darber hinaus eine verknpfte Client-seitige Imagemap
hat, k=nnen Benutzerprogramme eine Interaktion des Benutzers mit dem OBJECT-Element nur
in Bezug auf die Client-seitige Imagemap implementieren. Dies gestattet Benutzerprogrammen
(wie einem Audio-Browser oder einem Robot) mit dem OBJECT-Element zu interagieren, ohne
es ausfhren zu mssen; das Benutzerprogramm kann sogar entscheiden, das referenzierte
Objekt nicht zu laden (oder auszufhren). Hat ein OBJECT-Element eine verknpfte Imagemap,
sollten Autoren nicht erwarten, dass dieses Objekt von jedem Benutzerprogramm empfangen
oder ausgefhrt wird.
Das Inhaltsmodell des MAP-Elements gestattet Autoren die Kombination des Folgenden:
1. Eines oder mehrere AREA-Elemente. Diese Elemente haben keinen Inhalt, aber sie geben die
geometrischen Bereiche der Imagemap an und den Link, der mit jedem Bereich verbunden
ist. Beachten Sie, dass Benutzerprogramme AREA-Elemente im Allgemeinen nicht darstellen.
Anmerkung: MAP ist nicht rckw,rtskompatibel zu Benutzerprogrammen, die fr HTML 2.0
geschrieben wurden. n
<HTML>
<HEAD>
<TITLE>Die coole Seite!</TITLE>
</HEAD>
<BODY>
<P><OBJECT data="[Link]" type="image/gif" usemap="#map1">
<MAP name="map1">
<P>Navigiere durch die Web-Seiten:
<A href="[Link]" shape="rect" coords="0,0,118,28">Hilfe</a> |
<A href="[Link]" shape="rect" coords="118,0,184,28">Gehe zu</A> |
<A href="[Link]" shape="circle" coords="184,200,60">Suchen</A> |
<A href="[Link]" shape="poly"
coords="276,0,276,28,100,200,50,50,276,0">Top 10</A>
<edition
[Link]>
</MAP>
</OBJECT>
</BODY>
</HTML>
Die HTML 4.01- Spezifikation
Vielleicht m=chten wir den Inhalt der Imagemap sogar dann darstellen, wenn ein Benutzerpro-
gramm das OBJECT wiedergeben kann. Zum Beispiel wollen wir vielleicht eine Imagemap mit
einem OBJECT-Element verknpfen und eine Textnavigation am Fuß der Seite anbringen. Um das
zu realisieren, definieren wir das MAP-Element außerhalb des OBJECT-Elements:
<HTML>
<HEAD>
<TITLE>Die coole Seite!</TITLE>
</HEAD>
<BODY>
<P><OBJECT data="[Link]" type="image/gif" usemap="#map1">
</OBJECT>
<MAP name="map1">
<P>Navigiere durch die Seite:
<A href="[Link]" shape="rect" coords="0,0,118,28">Hilfe</a> |
<A href="[Link]" shape="rect" coords="118,0,184,28">Gehe zu</A> |
<A href="[Link]" shape="circle" coords="184,200,60">Suchen</A> |
<A href="[Link]" shape="poly"
coords="276,0,276,28,100,200,50,50,276,0">Top 10</A>
</MAP>
</BODY>
</HTML>
Im folgenden Beispiel erzeugen wir eine @hnliche Imagemap, diesmal mit dem AREA-Element.
Beachten Sie die Verwendung des alternativen Texts mit Hilfe des Attributs alt:
<MAP name="map1">
<AREA href="[Link]"
alt="Hilfe"
shape="rect"
coords="0,0,118,28">
<AREA href="[Link]"
alt="Suchen"
shape="rect"
coords="184,0,276,28">
<AREA href="[Link]"
alt="Gehe zu"
shape="circle"
coords="184,200,60">
<AREA href="[Link]"
alt="Top 10"
shape="poly"
coords="276,0,276,28,100,200,50,50,276,0">
</MAP>
Hier ist eine @hnliche Version, die das IMG-Element statt des OBJECT-Elements verwendet (mit
Das folgende Beispiel zeigt, wie Imagemaps gemeinsam verwendet werden k=nnen.
Verschachtelte OBJECT-Elemente sind ntzlich, um Ausweichm=glichkeiten parat zu halten, falls
ein Benutzerprogramm ein bestimmtes Format nicht untersttzt. Zum Beispiel:
<P>
<OBJECT data="[Link]" type="image/png">
<OBJECT data="[Link]" type="image/gif">
Text, der das Bild beschreibt...
</OBJECT>
</OBJECT>
Untersttzt das Benutzerprogramm das PNG-Format nicht, versucht es, das GIF-Bild darzustel-
len. Wenn es GIF nicht untersttzt (z. B. ein sprachbasiertes Benutzerprogramm), dann stellt es
die Textbeschreibung dar, die als Inhalt des inneren OBJECT-Elements angegeben ist. Sind
OBJECT-Elemente auf diese Weise verschachtelt, k=nnen Autoren die Imagemaps fr diese Ele-
mente gemeinsam nutzen.
<P>
<OBJECT data="[Link]" type="image/png" usemap="#map1">
<OBJECT data="[Link]" type="image/gif" usemap="#map1">
<MAP name="map1">
<P>Navigate the site:
<A href="[Link]" shape="rect" coords="0,0,118,28">Hilfe</a> |
<A href="[Link]" shape="rect" coords="118,0,184,28">Gehe zu</A> |
<A href="[Link]" shape="circle" coords="184,200,60">Suchen</A> |
<A href="[Link]" shape="poly"
coords="276,0,276,28,100,200,50,50,276,0">Top 10</A>
</MAP>
</OBJECT>
</OBJECT>
Das folgende Beispiel zeigt, wie Anker angegeben werden k=nnen, um inaktive Bereiche inner-
halb einer Imagemap zu erzeugen. Der erste Anker gibt einen kleinen kreisf=rmigen Bereich
ohne verbundenen Verweis an. Der zweite Anker gibt einen gr=ßeren kreisf=rmigen Bereich
mit den gleichen Mittelpunktkoordinaten an. Zusammen formen die beiden einen Ring, dessen
Mitte inaktiv, und dessen Rand aktiv ist. Die Reihenfolge der Ankerdefinitionen ist wichtig, weil
der kleinere Kreis den gr=ßeren Kreis berschreiben muss.
<MAP name="map1">
<P>
<A shape="circle" coords="100,200,50">Ich bin inaktiv.</A>
<edition
[Link]>
Ohnlich dazu deklariert das Attribut nohref des AREA-Elements, dass ein geometrischer Bereich
Die HTML 4.01- Spezifikation
Server-seitige Imagemaps k=nnen in den F@llen interessant sein, in denen die Imagemap fr eine
client-seitige Imagemap zu kompliziert ist.
Eine server-seitige Imagemap kann nur fr die Elemente IMG und INPUT definiert werden. Im Fall
von IMG muss sich IMG innerhalb eines A-Elements befinden und das Boolesche Attribut ismap
([CI]) muss gesetzt sein. Im Fall von INPUT muss INPUT vom Typ „image“ sein.
Aktiviert der Benutzer den Link durch Anklicken der Graphik, werden die Bildschirmkoordina-
ten direkt zum Server geschickt, auf dem das Dokument vorliegt. Bildschirmkoordinaten wer-
den als Bildschirmpixelwerte relativ zur Graphik ausgedrckt. Normative Informationen ber
die Definition eines Pixels und wie seine Position bestimmt wird, finden Sie in [CSS1].
Im folgenden Beispiel definiert der aktive Bereich einen Server-seitigen Link. Durch einen Klick
auf irgendeine Stelle im Bild werden die Koordinaten des Klicks zum Server geschickt.
<P><A href="[Link]
<IMG src="[Link]" ismap alt="Ziel"></A>
Der angeklickte Punkt wird wie folgt zum Server weitergeleitet. Das Benutzerprogramm
erzeugt einen neuen URI aus dem URI, der vom href-Attribut des A-Elements angegeben ist.
Dies geschieht durch Anh@ngen eines „?“, gefolgt von den x- und y-Koordinaten, getrennt
durch ein Komma. Dem Link wird dann mit dem neuen URI nachgegangen. Klickt der Benutzer
im gegebenen Beispiel auf die Stelle mit den Koordinaten x=10 und y=27, dann ist der abgelei-
tete URI „[Link]
Benutzerprogramme, die dem Benutzer nicht die M=glichkeit bieten, bestimmte Koordinaten
auszuw@hlen (z. B. nicht graphische Benutzerprogramme, die auf Tastatureingaben angewiesen
sind, sprachbasierte Benutzerprogramme usw.), sollten die Koordinaten „0,0“ an den Server
senden, wenn der Link aktiviert wird.
Attributdefinitionen
Werden die Attribute width und height angegeben, weisen sie das Benutzerprogramm an, die
Attributdefinitionen
13.7.3 Rahmen
Ein Bild oder Objekt kann von einem Rahmens umgeben sein (z. B. wenn ein Rahmen vom
Benutzer vorgegeben wurde, oder wenn das Bild Inhalt eines A-Elements ist).
Attributdefinitionen
13.7.4 Ausrichtung
Attributdefinitionen
align = bottom|middle|top|left|right
Missbilligt. Dieses Attribut gibt die Position eines IMG, OBJECT oder APPLET in Bezug zu sei-
nem Kontext an.
<edition
[Link]>
Die folgenden Werte fr align betreffen die Position des Objekts in Bezug auf den umgeben-
den Text:
· bottom: bedeutet, dass der untere Rand des Objekts vertikal zur Grundlinie der aktuellen
Textzeile ausgerichtet werden soll. Dies ist die Voreinstellung.
·
Die HTML 4.01- Spezifikation
middle: bedeutet, dass die Mitte des Objekts vertikal zur Grundlinie der aktuellen Textzeile
ausgerichtet werden soll.
· top: bedeutet, dass der obere Rand des Objekts vertikal zu der Oberkante der aktuellen
Textzeile ausgerichtet werden soll.
Zwei weitere Werte, left und right, lassen das Bild zum aktuellen linken oder rechten Rand
fließen. Sie werden im Abschnitt 15.1.3, „Umflossene Objekte“ besprochen.
Anmerkung der bersetzer: Anstelle der missbilligten Atribute, die sich alle auf
die visuelle Darstellung beziehen, ist der Einsatz von Stylesheets zu empfehlen.
Die Attribute width und height, die auf den ersten Blick ebenfalls der visuellen Darstel-
lung dienen, sollten auch weiterhin benutzt werden. Wenn diese Werte bekannt sind
bevor die Bilddatei selbst geladen ist, gestatten sie auch neueren visuellen Browsern
einen „ruhigeren“ Aufbau der Darstellung.
Viele Elemente, die prim@r nicht darauf ausgelegt sind, Text darzustellen (IMG, AREA, APPLET und
INPUT), bieten Autoren die M=glichkeit, einen alternativen Text anzugeben, der als Inhalt dient,
wenn das Element nicht wie vorgesehen dargestellt werden kann. Die Angabe von alternativem
Text untersttzt Benutzer ohne graphische Anzeigeterminals, Benutzer, deren Browser keine
Formulare untersttzen, Benutzer mit Sehschw@chen, die Sprachsynthesizer verwenden, dieje-
nigen, die ihren graphischen Browser so konfiguriert haben, dass Bilder nicht angezeigt werden
usw.
Das alt-Attribut muss fr die Elemente IMG und AREA angegeben werden. Es ist optional fr die
Elemente INPUT und APPLET.
Auch wenn alternativer Text sehr hilfreich sein kann, so muss er doch mit Vorsicht verwendet
werden. Autoren sollten die folgenden Richtlinien beachten:
· Geben sie keinen belanglosen alternativen Text an, wenn sie Bilder verwenden, um eine
Seite zu formatieren. Zum Beispiel w@re alt="rote Kugel" unangebracht fr ein Bild, das eine
rote Kugel zur Dekoration einer berschrift oder eines Absatzes darstellt. In solchen F@llen
sollte der alternative Text eine leere Zeichenkette sein (""). Autoren werden nachdrcklich
14 Stylesheets
14.1 Einf-hrung in Stylesheets
Stylesheets bedeuten einen wichtigen Durchbruch fr Web-Designer. Stylesheets erweitern
die M=glichkeiten der Designer, das Erscheinungsbild ihrer Seiten zu verbessern. In der wissen-
schaftlichen Umgebung, in der das Web entwickelt wurde, hat man mehr Wert auf den Inhalt
als auf die Darstellung des Dokuments gelegt. Nachdem Menschen aus immer mehr Schichten
und Berufen das Web entdeckten, fhrten die Grenzen von HTML zu einer fortschreitenden
Frustration, und Autoren wurden gezwungen, diese stilistischen Einschr@nkungen von HTML
zu umgehen. Auch wenn die Absichten gut waren – die Darstellung von Web-Seiten zu verbes-
sern – hatten die verwendeten Techniken unsch=ne Nebenwirkungen. Diese Techniken funk-
tionieren fr einige Leuten manchmal, nicht fr alle Leuten fr immer. Diese Techniken sind es:
·· Propriet@re HTML-Erweiterungen
Text in Graphiken umwandeln
·· Graphiken fr die Gestaltung von Leerraum verwenden
Das Layout der Seiten mit Tabellen gestalten
· Eine Anwendung schreiben, statt HTML zu verwenden
Diese Techniken erh=hen die Komplexit@t von Web-Seiten erheblich, bieten begrenzte Flexibi-
lit@t, leiden an Interoperabilit@tsproblemen und erzeugen unangenehme Nachteile fr Men-
schen mit Behinderungen.
Stylesheets l=sen diese Probleme im gleichen Moment, in dem sie die begrenzten Darstellungs-
mechanismen in HTML berwinden. Stylesheets machen es einfach, den Leerraum zwischen
Textzeilen anzugeben, die Einrckung von Zeilen zu steuern, Farben fr Text und Hintergrund
festzulegen, Schriftgr=ße und -art und eine Flle weiterer Details zu steuern.
Zum Beispiel bestimmt das folgende kurze CSS-Stylesheet (gespeichert in der Datei [Link])
die grne Textfarbe des Absatzes und umrandet diesen mit einer geschlossenen roten Linie:
<edition
[Link]>
[Link] {
color : green;
border: solid red;
}
Die HTML 4.01- Spezifikation
Autoren k=nnen dieses Stylesheet mit Hilfe des LINK-Elements in ihr HTML-Quelldokument
einbinden:
OS und X11 laufen, mit Zusatzger@ten fr Fernseher, mit besonders ausgestatteten Telefo-
nen und PDA-basierten tragbaren Ger@ten, sowie mit sprachbasierten Browsern und Blin-
denschrift anzeigenden Tastger@ten.
Stylesheets richten sich im Gegensatz dazu an bestimmte Medien oder Mediengruppen. Ein
Anmerkung der bersetzer: Ein Beispiel fr ein CSS-Stylesheet, das Formatie-
rungen fr mehrere Ausgabemedien enth@lt, finden Sie in Abschnitt 7.2.1 der CSS2-Spe-
zifikation. In Anhang A von CSS2 finden Sie ein Stylesheet fr HTML 4-Dokumente.
Auch dieses Stylesheet besitzt Formatierungsregeln fr unterschiedliche Medien.
Alternative Stile
Autoren m=chten dem Leser eventuell verschiedene M=glichkeiten anbieten, ein Doku-
ment zu betrachten. Zum Beispiel mit einem Stylesheet, um kompakte Dokumente mit
kleinen Schriftarten darzustellen, oder mit einem Stylesheet, das gr=ßere Schriftarten zur
besseren Lesbarkeit bietet. Diese Spezifikation gestattet es Autoren, ein bevorzugtes Style-
sheet wie auch Alternativen fr bestimmmte Benutzer oder Medien anzugeben. Die Benut-
zerprogramme sollten Benutzern die M=glichkeit geben, zwischen alternativen Stylesheets
zu w@hlen oder diese ganz auszuschalten.
Leistungsbedenken
Einige Personen haben Bedenken ber die Leistungsf@higkeit von Stylesheets ausgespro-
chen. Zum Beispiel k=nnte der Empfang eines externen Stylesheets die vollst@ndige Darstel-
lung fr den Benutzer verlangsamen. Eine @hnliche Situation tritt ein, wenn der Dokument-
kopf eine lange Aufz@hlung mit Stilregeln enth@lt.
Der aktuelle Vorschlag tr@gt diesem Umstand insofern Rechnung, dass es Autoren gestattet
wird, die Darstellungsanweisungen innerhalb der HTML-Elemente anzugeben. Die Darstel-
lungsanweisung ist folglich immer dann verfgbar, wenn ein Benutzerprogramm die betref-
fenden Elemente darstellen m=chte.
In vielen F@llen werden Autoren den Vorteil eines gemeinsamen Stylesheets fr mehrere
Dokumente nutzen. In diesem Fall wird die Verwendung von Formatierungsregeln innerhalb
des Dokuments zu einer geringeren Leistung fhren, als wenn auf ein Stylesheet verwiesen
wrde, da fr die meisten Dokumente bereits ein Stylesheet im lokalen Cache vorhanden
sein wird. Die =ffentliche Verfgbarkeit von guten Stylesheets wird diesen Effekt verst@rken.
<edition
[Link]>
Jede Stylesheet-Sprache kann mit HTML verwendet werden. Eine einfache Stylesheet-Sprache
kann den Anforderungen der meisten Benutzer gengen, andere Sprachen k=nnen jedoch fr
hochspezialisierte Anforderungen eher geeignet sein. Diese Spezifikation verwendet fr Bei-
spiele die Formatierungssprache „Cascading Style Sheets“ ([CSS1]), kurz CSS.
Die HTML 4.01- Spezifikation
Die Syntax von Formatierungsangaben (siehe auch Abschnitt 6.15, „Stylesheet-Daten“) ist
abh@ngig von der verwendeten Stylesheet-Sprache.
Autoren mssen die Stylesheet-Sprache angeben, die fr die Formatierungsinformationen eines
HTML-Dokuments gelten soll.
Anmerkung der bersetzer: Die praktische Relevanz dieses Abschnitts ist ziem-
lich gering: Fr den Fall, dass Formatierungsinformationen im Element STYLE im Kopf
der HTML-Datei stehen, muss zwingend das Attribut type die Stylesheet-Sprache ange-
ben. Fr den Fall, dass die Formatierungsanweisungen in einer externen CSS-Datei ste-
hen, die von der HTML-Datei per LINK eingebunden wird, muss der Web-Server in der
HTTP-Antwort in der Zeile Content-type den Wert text/css angeben. Eine Typangabe
in der CSS-Datei ist nicht m=glich.
Der Sinn dieses Abschnitts beschr@nkt sich im brigen dann auf die inzeiligen Formatie-
rungsanweisungen, die im n@chsten Abschnitt erkl@rt werden. Allerdings ist gerade
diese inzeilige Platzierung von Formatierungsanweisungen diejenige, von der man m=g-
lichst Abstand nehmen soll.
Autoren sollten das Element META verwenden, um die voreingestellte Stylesheet-Sprache fr ein
Dokument zu bestimmen. Um die Voreinstellung zum Beispiel auf CSS zu setzen, sollten Auto-
ren die folgende Deklaration in den HEAD ihrer Dokumente einfgen:
Die voreingestellte Stylesheet-Sprache kann auch ber HTTP-Header festgelegt werden. Die
oben beschriebene META-Deklaration ist @quivalent zu dem HTTP-Header:
Content-Style-Type: text/css
Benutzerprogramme sollten die Voreinstellung fr die Stylesheet-Sprache fr ein Dokument
anhand der folgenden Schritte bestimmen (von h=chster zu niedrigster Priorit@t):
1. Geben META-Deklarationen den „Content-Style-Type“ an, bestimmt die letzte Deklaration
in der Dokumentzeichenfolge die Voreinstellung fr die Stylesheet-Sprache.
2. Anderenfalls, wenn irgendwelche HTTP-Header den „Content-Style-Type“ angeben,
bestimmt die letzte Angabe in der Dokumentzeichenfolge die Voreinstellung fr die Style-
sheet-Sprache.
3. Ansonsten ist die Voreinstellung fr die Stylesheet-Sprache „text/css“.
Dokumente, welche Elemente enthalten, die das Attribut style verwenden, die aber keine vor-
eingestellte Stylesheet-Sprache definieren, sind inkorrekt. Webseiten erzeugende Programme
sollten Voreinstellungen fr Stylesheet-Informationen generieren (blicherweise eine META-De-
klaration), so dass Benutzerprogramme sich nicht auf die Voreinstellung „text/css“ berufen
Attributdefinitionen
Die Syntax des Wertes des Attributs style wird von der voreingestellten Stylesheet-Sprache
festgelegt. Um zum Beispiel inzeilige Formatierangaben nach [CSS2] anzugeben, verwenden Sie
die Blocksyntax fr Deklarationen wie in Abschnitt 4.1.8 beschrieben (ohne die begrenzenden
geschweiften Klammern).
Anmerkung der bersetzer: Gemeint ist hier Abschnitt 4.1.8 der Spezifikation
fr „Cascading Style Sheets, Level 2“, der erkl@rt, dass Deklarationen fr denselben
Selektor in durch Semikolons (;) voneinander getrennten Gruppen angeordnet werden
k=nnen.
Dieses CSS-Beispiel legt die Farbe und die Schriftgr=ße fr den Text in einem bestimmten
Absatz fest.
In CSS haben die Eigenschaftsdeklarationen die Form „name: wert“ und werden durch ein
Semikolon getrennt.
Zur Angabe von Formatierungsinformationen fr mehr als ein Element, sollten Autoren das
Element STYLE verwenden. Um eine optimale Flexibilit@t zu erreichen, sollten Autoren die For-
matierungen in externen Stylesheets definieren.
<edition
[Link]>
Attributdefinitionen
Das Element STYLE gestattet Autoren, Stylesheet-Regeln in den Kopf des Dokuments zu stellen.
HTML erlaubt eine beliebige Anzahl von STYLE-Elementen im HEAD-Bereich eines Dokuments.
Benutzerprogramme, die keine Stylesheets untersttzen beziehungsweise die von einem STYLE-
Element verwendete spezifische Stylesheet-Sprache nicht untersttzen, mssen den Inhalt des
STYLE-Elements verbergen. Es ist ein Fehler, den Inhalt als Teil des Dokumenttextes darzustel-
len. Einige Stylesheet-Sprachen untersttzen die Syntax, den Inhalt vor nicht konformen Benut-
zerprogrammen zu verbergen.
Die Syntax der Formatierungsangaben ist abh@ngig von der Stylesheet-Sprache.
Einige Stylesheet-Implementierungen m=gen vielf@ltigere Regeln im STYLE-Element erlauben als
im style-Attribut. Zum Beispiel k=nnen mit CSS die Regeln in einem STYLE-Element bestimmt
werden fr:
· Alle Instanzen eines bestimmten HTML-Elements (zum Beispiel alle P-Elemente, alle H1-Ele-
mente usw.)
· Alle Instanzen eines HTML-Elements, das zu einer bestimmten Klasse geh=ren (d. h., dessen
class-Attribut auf einen Wert gesetzt ist)
· Einzelne Instanzen eines HTML-Elements (d. h., dessen id-Attribut auf einen Wert gesetzt
ist)
Vorgaben zur Verarbeitungsreihenfolge der Formatierungsregeln und zur Vererbung sind
abh@ngig von der Stylesheet-Sprache.
Die folgende CSS STYLE-Deklaration erzeugt einen Rahmen um jedes H1-Element im Dokument
und zentriert es auf der Seite:
<HEAD>
<HEAD>
<STYLE type="text/css">
[Link] {border-width: 1; border: solid; text-align: center}
</STYLE>
</HEAD>
<BODY>
<H1 class="myclass">Dieses H1 wird durch unsere Formatvorlage ver]ndert.</H1>
<H1>Dieses ist nicht von unserer Formatvorlage betroffen.</H1>
</BODY>
Zuletzt, um den Geltungsbereich der Formatierungsinformationen auf eine einzige Instanz von
H1 zu begrenzen, wird das id-Attribut gesetzt:
<HEAD>
<STYLE type="text/css">
#myid {border-width: 1; border: solid; text-align: center}
</STYLE>
</HEAD>
<BODY>
<H1 class="myclass">Dieses H1 ist nicht betroffen</H1>
<H1 id="myid">Diese H1 ist vom Stil betroffen</H1>
<H1>Dieses H1 ist nicht betroffen</H1>
</BODY>
Auch wenn Formatierungsinformationen fr fast jedes HTML-Element angegeben werden k=n-
nen, sind zwei Elemente, DIV und SPAN, dadurch besonders wertvoll, dass sie keiner darstel-
lungsrelevanten Semantik unterliegen (außer Block-Level versus inzeilig). Werden sie mit Style-
sheets kombiniert, erlauben diese Elemente dem Benutzer, HTML unbegrenzt zu erweitern,
speziell wenn sie mit den Attributen class und id verwendet werden.
Im folgenden Beispiel verwenden wir das Element SPAN, um das Schriftformat der ersten Worte
eines Absatzes auf klein geschriebene Großbuchstaben (small caps) zu setzen:
<HEAD>
<STYLE type="text/css">
[Link]-ex { font-variant: small-caps }
</STYLE>
</HEAD>
<BODY>
<P><SPAN class="sc-ex">Die ersten</SPAN> Worte
dieses Absatzes sind klein geschriebene Großbuchstaben.
</BODY>
<edition
[Link]>
Im folgenden Beispiel verwenden wir DIV und das class-Attribut, um die Textausrichtung fr
diejenigen Abs@tze festzulegen, die den zusammenfassenden Abschnitt eines wissenschaftlichen
Beitrags ausmachen. Diese Formatierungsinformation kann fr andere zusammenfassende
Abschnitte wiederverwendet werden, indem das class-Attribut an anderer Stelle im Doku-
Die HTML 4.01- Spezifikation
<HEAD>
<STYLE type="text/css">
[Link] { text-align: justify }
</STYLE>
</HEAD>
<BODY>
<DIV class="zusammenfassung">
<P>Die Produktgruppe Chieftain ist unser Marktgewinner fUr
das kommende Jahr. Dieser Bericht legt dar, wie Chieftain gegen
wettbewerbende Produkte plaziert wird.
14.2.4 Medientypen
HTML gestattet es Autoren, Dokumente zu entwerfen, die sich die Charakteristika der Medien
zunutze machen, auf denen sie dargestellt werden sollen (zum Beispiel graphische Displays,
Fernsehbildschirme, portable Ger@te, sprachbasierte Browser, Blindenschrift darstellende Tast-
ger@te usw.). Durch die Angabe des Attributs media gestatten Autoren den Benutzerprogram-
men, Stylesheets selektiv zu laden und anzuwenden. Bitte beachten Sie die Liste der anerkann-
ten Medien-Deskriptoren (siehe Abschnitt 6.13).
Die folgenden Beispiel-Deklarationen gelten fr H1-Elemente. Bei einer Projektion auf einem
Gesch@ftstreffen werden alle Instanzen blau dargestellt werden. Beim Druck werden sie alle
zentriert werden.
<HEAD>
<STYLE type="text/css" media="projection">
H1 { color: blue}
</STYLE>
Anmerkung der bersetzer: Der Medientyp „projection“ wird zum Beispiel vom
Opera-Browser verstanden. Damit ist eine PowerPoint-@hnliche Pr@sentation auf Basis
von HTML-Dateien m=glich. Sie eignen sich gleichzeitig fr den „normalen“ Einsatz im
Web (letzteres wird dann natrlich ber CSS-Anweisungen fr „screen“ formatiert).
Dieses Beispiel fgt Ankern Soundeffekte hinzu, wenn eine Sprachausgabe verwendet wird:
Mediensteuerung ist besonders interessant, wenn sie in Bezug auf externe Stylesheets verwen-
det wird. Benutzerprogramme k=nnen dadurch Zeit sparen, dass sie nur die relevanten Style-
sheets fr das aktuelle Ger@t aus dem Netz laden. Zum Beispiel k=nnen sprachbasierte
Browser den Download von Stylesheets vermeiden, die fr die optische Darstellung entworfen
worden sind. Beachten Sie den Abschnitt 14.4.1, „Medienabh@ngige Kaskaden“, fr weiterge-
hende Informationen.
HTML erlaubt Autoren, eine beliebige Anzahl externer Stylesheets mit einem Dokument zu
verknpfen. Die Stylesheet-Sprache definiert, wie sich mehrere externe Stylesheets gegenseitig
beeinflussen (zum Beispiel die CSS-Kaskadenregeln).
Autoren k=nnen eine beliebige Anzahl sich gegenseitig ausschließender Stylesheets angeben,
genannt alternative Stylesheets. Benutzer k=nnen das bevorzugte Stylesheet unter diesen
abh@ngig von ihren Benutzervorgaben w@hlen. Zum Beispiel kann ein Autor ein Stylesheet fr
kleine Displays angeben und ein anderes fr Benutzer mit verminderter Sehf@higkeit (zum Bei-
spiel große Schriftarten). Benutzerprogramme sollten Benutzern die Auswahl der alternativen
Stylesheets erm=glichen.
Der Autor kann angeben, dass eines der alternativen Stylesheets das bevorzugte ist. Benutzer-
programme sollten das bevorzugte Stylesheet des Autors anwenden, wenn der Benutzer keine
andere Alternative ausgew@hlt hat.
Autoren k=nnen mehrere alternative Stylesheets (eingeschlossen das bevorzugte Stylesheet
des Autors) unter einem einzigen Formatnamen zusammenfassen. Wenn der Benutzer eine
benannte Formatvorlage w@hlt, muss das Benutzerprogramm alle Stylesheets mit diesem
<edition
[Link]>
Namen anwenden. Benutzerprogramme drfen keine alternativen Stylesheets mit einem ande-
ren Formatnamen anwenden. Der Abschnitt „Aufruf externer Stylesheets“ erkl@rt, wie eine
Gruppe von Stylesheets benannt wird.
Autoren k=nnen auch best@ndige Stylesheets (persistent style sheets) angeben, die Benutzer-
Die HTML 4.01- Spezifikation
Autoren rufen externe Stylesheets mit den folgenden Attributen des Elements LINK auf:
· Setzen des Attributwertes von href auf den Ort der Stylesheet-Datei. Der Wert des Attri-
buts href ist ein URI.
· Setzen des Attributwertes von type, um die Sprache der referenzierten Stylesheet-Datei
anzugeben. Das Benutzerprogramm kann so den Download eines Stylesheets einer nicht
untersttzten Stylesheet-Sprache vermeiden.
·· Die Angabe, ob das Stylesheet st@ndig, bevorzugt oder alternativ ist:
Um einem Stylesheet den Status „st@ndig“ zuzuweisen, wird das Attribut rel auf „style-
sheet“ gesetzt und das Attribut title nicht angegeben.
· Um einem Stylesheet den Status „bevorzugt“ zuzuweisen, wird das Attribut rel auf
„stylesheet“ gesetzt und das Stylesheet mit dem Attribut title benannt.
· Um ein Stylesheet alternativ zu machen, wird das Attribut rel auf „alternate stylesheet“
gesetzt und das Stylesheet mit dem Attribut title benannt.
Benutzerprogramme sollten Benutzern ein Mittel zur Verfgung stellen, sich die Liste der alter-
nativen Formate anzusehen und aus ihr zu w@hlen. Der Wert des Attributs title wird als
Name jeder Auswahlm=glichkeit empfohlen.
In diesem Beispiel geben wir zuerst ein best@ndiges Stylesheet an, das in der Datei [Link]
abgelegt ist:
Die Angabe des Attributs title verwandelt dieses Stylesheet in das vom Autor bevorzugte
Stylesheet:
Der Zusatz des Schlsselworts „alternate“ zum Attribut rel verwandelt es in ein alternatives
Stylesheet:
Anmerkung der bersetzer: Betrachten Sie den folgenden Ausschnitt aus einer
(X)HTML-Datei:
<link href="[Link]"
title="Große Schrift"
rel="stylesheet"
type="text/css" />
<link href="[Link]"
title="kontrastreiches Layout"
rel="alternate stylesheet"
type="text/css" />
Wird diese Datei im Mozilla betrachtet, erlaubt der Browser ber ein Men die Aus-
wahl der gewnschten Formatierung (siehe Abbildung). Das unbenannte Stylesheet (das
best@ndige Stylesheet) wird in der englischen Version als „Basic Page Style“ bezeichnet.
Dessen Formatierungsregeln werden in jedem Fall angewendet. Außerdem ist das
bevorzugte Stylesheet ausgew@hlt (in diesem Fall „Große Schrift“) und die darin fest-
gelegte Formatierung gilt zus@tzlich.
Weitere Informationen ber externe Stylesheets finden Sie in Abschnitt 12.3.2, „Links und
externe Stylesheets“.
Autoren k=nnen auch das Element META verwenden, um das bevorzugte Stylesheet eines Doku-
ments zu bestimmen. Um zum Beispiel das Stylesheet „compact“ als bevorzugt zu bestimmen
(siehe vorausgegangenes Beispiel), k=nnen Autoren die folgende Zeile im HEAD einfgen:
<edition
[Link]>
Das bevorzugte Stylesheet kann ebenso mit Hilfe eines HTTP-Headers bestimmt werden. Die
META-Deklaration oben ist @quivalent zu dem HTTP-Header:
Default-Style: "compact"
Die HTML 4.01- Spezifikation
Geben zwei oder mehr META-Deklarationen oder HTTP-Header das bevorzugte Stylesheet an,
hat die letzte Angabe Vorrang. Aus diesem Grund wird erwartet, dass HTTP-Header vor dem
HEAD des Dokuments angegeben werden.
Geben zwei oder mehr LINK-Elemente das bevorzugte Stylesheet an, hat das erste den Vor-
rang.
Bevorzugte Stylesheets, die mit META oder mit HTTP-Headern bestimmt werden, haben Vor-
rang vor denen, die ber das Element LINK bestimmt werden.
Anmerkung: Diese Spezifikation gibt nicht an, wie Stylesheets von unterschiedlichen Formatierungs-
sprachen kaskadieren. Autoren sollten Stylesheet-Sprachen nicht vermischen. n
Im folgenden Beispiel geben wir zwei alternative Stylesheets mit Namen „compact“ an. W@hlt
der Benutzer das Format „compact“, muss das Benutzerprogramm die beiden externen Style-
sheets sowie das best@ndige Stylesheet „[Link]“ anwenden. W@hlt der Benutzer das For-
mat „big print“, werden nur das alternative Stylesheet „[Link]“ und das best@ndige „com-
[Link]“ verarbeitet.
Hier das Beispiel einer Kaskade. Es wird sowohl das LINK- als auch das STYLE-Element einbezo-
gen.
Eine Kaskade kann Stylesheets einschließen, die fr verschiedene Medien geeignet sind. Sowohl
LINK als auch STYLE k=nnen das Attribut media verwenden. Das Benutzerprogramm ist dann
M=chte das Benutzerprogramm ein Dokument darstellen, muss es Werte fr die Formateigen-
schaften finden, zum Beispiel fr die Schriftfamilie, Schriftart, -gr=ße, Zeilenh=he, Textfarbe
und so weiter. Der genaue Mechanismus ist abh@ngig von der Stylesheet-Sprache. Die folgende
Beschreibung ist jedoch allgemein anwendbar:
Der Mechanismus der Kaskade wird angewendet, wenn mehrere Formatierungsregeln direkt
fr ein Element gelten. Der Mechanismus gestattet es dem Benutzerprogramm, die Regeln nach
Spezifit@t zu sortieren, um festzustellen, welche Regel angewendet werden soll. Wird keine
Regel gefunden, h@ngt der weitere Ablauf davon ab, ob die Formateigenschaft vererbt werden
kann oder nicht. Nicht alle Eigenschaften k=nnen vererbt werden. Fr diese Eigenschaften bie-
tet die Stylesheet-Sprache voreingestellte Werte an, die angewendet werden, wenn keine
expliziten Regeln fr ein bestimmtes Element angegeben sind.
Kann die Eigenschaft vererbt werden, untersucht das Benutzerprogramm das n@chste umschlie-
ßende Element, um zu sehen, ob eine Regel dafr existiert. Dieser Vorgang wird fortgefhrt bis
eine geeignete Regel gefunden wird. Dieser Mechanismus erlaubt die kompakte Angabe von
Stylesheets. Zum Beispiel k=nnen Autoren die Schriftart fr alle Elemente innerhalb des BODY
durch eine einzige Regel festlegen, die fr das Element BODY gilt.
<edition
[Link]>
<STYLE type="text/css">
<!- -
H1 { color: red }
P { color: blue}
- ->
Die HTML 4.01- Spezifikation
</STYLE>
der Angabe
Es ist m=glich, mehrere alternative Formate mit Hilfe mehrerer Link Header anzugeben, und
dann das rel-Attribut zur Bestimmung des voreingestellten Formats heranzuziehen.
Im folgenden Beispiel wird „compact“ als Voreinstellung verwendet, weil das Schlsselwort
„alternate“ fr das rel-Attribut nicht gesetzt ist.
Dies sollte ebenfalls funktionieren, wenn HTML-Dokumente per E-Mail verschickt werden.
Einige E-Mail-Programme k=nnen die Reihenfolge von [RFC822]-Headern ver@ndern. Um sich
dagegen zu schtzen, dass die Kaskadierungsreihenfolge fr Stylesheets berhrt wird, die ber
Link Header angegeben werden, k=nnen Autoren die Header-Verkettung verwenden, um meh-
rere Instanzen eines Header-Feldes zusammenzulegen. Die Anfhrungszeichen sind nur not-
wendig, wenn der Attributwert Leerraum enth@lt. Verwenden Sie SGML-Entities, um Zeichen
zu referenzieren, die ansonsten in einem HTTP- oder E-Mail-Header nicht gestattet w@ren,
oder die m=glicherweise auf dem Weg durch Gateways ver@ndert werden k=nnten.
Die Elemente LINK und META, die durch HTTP-Header angegeben werden, sind so definiert, dass
sie vor irgendeinem expliziten LINK- und META-Element im Dokumentkopf angegeben werden
mssen.
15.1 Formatierung
15.1.1 Hintergrundfarbe
Attributdefinitionen
Dieses Attribut weist der Zeichenfl@che des Dokumentrumpfes (das BODY-Element) oder Tabel-
len (die Elemente TABLE, TR, TH und TD) die Hintergrundfarbe zu. Fr das Element BODY k=nnen
zus@tzliche Attribute zur Angabe der Textfarbe verwendet werden.
Dieses Attribut wird zu Gunsten der Stylesheets, die Angaben zur Farbe des Hintergrunds
machen, missbilligt.
15.1.2 Ausrichtung
Es ist m=glich, Blockelemente (Tabellen, Bilder, Objekte, Abs@tze usw.) mit Hilfe des Attributs
align auf der Zeichenfl@che auszurichten. Auch wenn dieses Attribut vielen HTML-Elementen
zugewiesen werden kann, unterscheiden sich die m=glichen Werte von Element zu Element.
Hier er=rtern wir nur die Bedeutung des align-Attributs in Bezug auf Text.
Attributdefinitionen
<edition
[Link]>
Die Voreinstellung h@ngt von der Textflussrichtung ab. Fr Text, der von links nach rechts ver-
l@uft, ist die Voreinstellung align=left, w@hrend fr von rechts nach links verlaufenden Text die
Voreinstellung align=right ist.
Die HTML 4.01- Spezifikation
MISSBILLIGTES BEISPIEL:
Dieses Beispiel zentriert die berschrift auf der Zeichenfl@che.
Mit CSS, zum Beispiel, kann der gleiche Effekt wie folgt erzielt werden:
<HEAD>
<TITLE>Wie Holz geschnitzt wird</TITLE>
<STYLE type="text/css">
H1 { text-align: center}
</STYLE>
<BODY>
<H1> Wie Holz geschnitzt wird </H1>
Beachten Sie, dass dies alle H1-Deklarationen ausrichten wrde. Sie k=nnen den Geltungs-
bereich der Formatinformation durch Angabe des Attributs class im Element reduzieren:
<HEAD>
<TITLE>Wie Holz geschnitzt wird</TITLE>
<STYLE type="text/css">
[Link] {text-align: center}
</STYLE>
<BODY>
<H1 class="wood"> Wie Holz geschnitzt wird </H1>
Anmerkung der bersetzer: class ist natrlich nur eine M=glichkeit, den Gel-
tungsbereich einzuschr@nken; id w@re zum Beispiel eine andere. Stylesheets bieten noch
weitaus mehr M=glichkeiten. Mehr dazu finden in Kapitel 5 der ebenfalls in diesem Buch in
deutscher bersetzung zu findenden Spezifikation der „Cascading Style Sheets, level 2“.
MISSBILLIGTES BEISPIEL:
Um einen Absatz mit dem HTML-Attribut align rechts auf der Zeichenfl@che auszurichten, zie-
hen Sie dies in Betracht:
<HEAD>
<TITLE>Wie Holz geschnitzt wird</TITLE>
<STYLE type="text/css">
[Link] {text-align: right}
</STYLE>
<BODY>
MISSBILLIGTES BEISPIEL:
Um mehrere Abs@tze rechts auszurichten, fassen Sie diese mit dem DIV-Element zusammen:
In CSS wird die Eigenschaft zur Textausrichtung vom Elternelement vererbt, weshalb Sie Fol-
gendes verwenden k=nnen:
<HEAD>
<TITLE>Wie Holz geschnitzt wird</TITLE>
<STYLE type="text/css">
[Link] {text-align: right}
</STYLE>
<BODY>
<DIV class="mypars">
<P>...Text im ersten Absatz...
<P>...Text im zweiten Absatz...
<P>...Text im dritten Absatz...
</DIV>
<HEAD>
<TITLE>Wie Holz geschnitzt wird</TITLE>
<STYLE type="text/css">
BODY {text-align: center}
</STYLE>
<BODY>
...Der BODY ist zentriert...
</BODY>
Das Element CENTER ist @quivalent zur Angabe des Elements DIV mit dem auf „center“ gesetzten
Attribut align. Das Element CENTER ist missbilligt.
Bilder und Objekte k=nnen direkt im Textfluss erscheinen oder zu einem Rand der Seite flie-
ßen und damit zeitweise die R@nder des Texts ver@ndern, der auf beiden Seiten das Objekt
umfließen kann.
<edition
[Link]>
· left: Richtet das Objekt am aktuellen linken Rand aus. Nachfolgender Text fließt entlang
der rechten Seite des Objekts.
· right: Richtet das Objekt am aktuellen rechten Rand aus. Nachfolgender Text fließt entlang
der linken Seite des Objekts.
Die HTML 4.01- Spezifikation
Anmerkung der bersetzer: Mit „Frames“ ist hier das Element IFRAME gemeint.
Nur dafr kann das align-Attribut gesetzt werden, denn nur dafr kann eine Ausrich-
tung Sinn machen.
MISSBILLIGTES BEISPIEL:
Das folgende Beispiel zeigt, wie ein IMG-Element am aktuellen linken Rand der Zeichenfl@che
ausgerichtet wird.
Einige Ausrichtungsattribute gestatten auch den Wert center, der kein Fließen verursacht, aber
das Objekt innerhalb der aktuellen R@nder ausrichtet. Fr P und DIV jedenfalls bewirkt der
Wert center, dass der Inhalt des Elements zentriert wird.
Attributdefinitionen
Stellen Sie sich das folgende visuelle Szenario vor, in dem der Text an der rechten Seite eines
Bildes fließt, bis eine Zeile durch ein BR umgebrochen wird:
********* -------
Wird dem Attribut clear der Wert none zugewiesen, wird die auf BR folgende Zeile direkt unter
dem Attribut auf seiner rechten Seite beginnen:
********* -------
| | -------
| image | --<BR>
| | ------
*********
MISSBILLIGTES BEISPIEL:
Wird dem Attribut clear der Wert left oder all zugewiesen, wird die n@chste Zeile wie folgt
erscheinen:
********* -------
| | -------
| image | --<BR clear="left">
| |
*********
-----------------
Mit Stylesheets k=nnen Sie festlegen, dass alle Zeilenumbrche fr Objekte (Bilder, Tabellen
usw.), die gegen den linken Rand fließen, auf diese Weise verfahren. Mit CSS k=nnen Sie das auf
folgende Weise erreichen:
<STYLE type="text/css">
BR { clear: left }
</STYLE>
Um dieses Verhalten fr eine bestimmte Instanz des Elements BR anzugeben, k=nnenn Sie die
Stilinformation und das Attribut id kombinieren:
<HEAD>
...
<STYLE type="text/css">
BR#mybr { clear: left }
</STYLE>
</HEAD>
<BODY>
<P>...
<edition
[Link]>
********* -------
| | -------
| table | --<BR id="mybr">
| |
*********
Die HTML 4.01- Spezifikation
-----------------
...
</BODY>
15.2 Schriftarten
Die folgenden HTML-Elemente geben Informationen zur Schriftart an. Auch wenn sie nicht alle
missbilligt sind, wird von ihrer Verwendung abgeraten; stattdessen sollten Stylesheets verwen-
det werden.
<!ENTITY % fontstyle
"TT | I | B | BIG | SMALL">
<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
%attrs; - - %coreattrs, %i18n, %events - -
>
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Die Darstellung von Schriftstil-Elementen ist abh@ngig vom Benutzerprogramm. Das Folgende
ist nur eine informelle Beschreibung.
<P><b>fett</b>,
<i>kursiv</i>, <b><i>fett kursiv</i></b>, <tt>Teletype</tt> und
<big>großer</big> und <small>kleiner</small> Text.
<p><kbd>- - * * - - * * - -</kbd></p>
<dl>
</dt>Gedanken zum <strong>Nachdenken</strong>:</dt>
<dd>
<p>Leicht finden wir Freunde, die uns helfen;
schwer verdienen wir uns jene, die unsere Hilfe
brauchen.</p>
<p><em>Antoine de Saint-Exupéry</em></p>
</dd>
</dl>
<p><tt>- - * * - - * * - -</tt></p>
<dl>
</dt>Gedanken zum <b>Nachdenken</b>:</dt>
<dd>
<p>Leicht finden wir Freunde, die uns helfen;
schwer verdienen wir uns jene, die unsere Hilfe
<edition
[Link]>
brauchen.</p>
<p><i>Antoine de Saint-Exupéry</i></p>
</dd>
</dl>
Die HTML 4.01- Spezifikation
Stylesheets k=nnen sehr viel mehr Schrifteffekte erzeugen. Das folgende Beispiel gibt einen
blauen, kursiven Text in einem Absatz mit Hilfe von CSS an:
<HEAD>
<STYLE type="text/css">
P#mypar {font-style: italic; color: blue}
</STYLE>
</HEAD>
<P id="mypar">...viel blauer kursiver Text...
Attributdefinitionen
· Ein relativer Zuwachs der Schriftgr=ße. Der Wert +1 bedeutet eine Nummer gr=ßer,
der Wert -3 bedeutet drei Nummern kleiner. Alle Gr=ßen beziehen sich auf die Skala
von 1 bis 7.
color = color [CI]
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Das Element FONT @ndert die Schriftgr=ße und die Farbe fr den Text in seinem Inhalt.
Das Element BASEFONT weist die Grundschriftgr=ße zu (unter Verwendung des Attributs size).
Onderungen der Schriftgr=ße, die mit FONT erreicht werden, sind relativ zu der Grundschrift-
gr=ße, die von BASEFONT zugewiesen wurde. Wird BASEFONT nicht verwendet, ist die voreinge-
stellte Grundschriftgr=ße 3.
MISSBILLIGTES BEISPIEL:
Das folgende Beispiel wird die Unterschiede zwischen den sieben Schriftgr=ßen zeigen, die mit
FONT verfgbar sind:
<P><font size=1>size=1</font>
<font size=2>size=2</font>
<font size=3>size=3</font>
<font size=4>size=4</font>
<font size=5>size=5</font>
<font size=6>size=6</font>
<font size=7>size=7</font>
<edition
[Link]>
Das folgende Beispiel zeigt, welche Auswirkungen es hat, wenn die Grundschriftgr=ße 3 mit
relativen Schriftgr=ßen ver@ndert wird:
Die HTML 4.01- Spezifikation
Die Grundschriftgr=ße gilt nicht fr berschriften, außer wenn sie mit Hilfe des FONT-Elements
mit einer relativen Schriftgr=ßen@nderung manipuliert werden.
Attributdefinitionen
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
MISSBILLIGTES BEISPIEL:
Dieses Beispiel zentriert die Linie und begrenzt sie auf die H@lfte der zur Verfgung stehenden
Breite zwischen den R@ndern. Die obere Linie hat die voreingestellte H=he, w@hrend den bei-
den unteren die H=he 5 zugewiesen ist. Die unterste Linie sollte in einer durchgehenden Farbe
ohne Schatteneffekt dargestellt werden:
16 Frames
16.1 Einf-hrung in Frames
HTML-Frames gestatten Autoren die Darstellung von Dokumenten in mehreren Ansichten, die
aus unterschiedlichen Fenstern oder Unterfenstern bestehen k=nnen. Mehrere Ansichten bie-
ten dem Designer die M=glichkeit, bestimmte Informationen im Sichtfeld zu belassen, w@hrend
andere Ansichten gescrollt oder ersetzt werden k=nnen. Zum Beispiel kann in einem Fenster
ein Frame ein dauerhaft eingeblendetes Banner zeigen, ein zweiter kann ein Navigationsmen
enthalten und ein dritter das Hauptdokument, durch welches gescrollt werden kann, oder das
durch die Navigation im zweiten Frame ersetzt werden kann.
<edition
[Link]>
<HEAD>
<TITLE>Ein einfaches Frameset-Dokument</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
<FRAMESET rows="100, 200">
<FRAME src="inhalt_von_frame1.html">
<FRAME src="inhalt_von_frame2.gif">
</FRAMESET>
<FRAME src="inhalt_von_frame3.html">
<NOFRAMES>
<P>Dieses Frameset enth]lt:
<UL>
<LI><A href="inhalt_von_frame1.html">Pr]gnanter Inhalt</A>
<LI><IMG src="inhalt_von_frame2.gif" alt="Ein pr]gnantes Foto">
<LI><A href="inhalt_von_frame3.html">Anderer pr]gnanter Inhalt</A>
</UL>
</NOFRAMES>
</FRAMESET>
</HTML>
Kann das Benutzerprogramm keine Frames anzeigen oder ist es entsprechend konfiguriert,
dass es keine Frames anzeigen soll, wird es den Inhalt des Elements NOFRAMES darstellen.
Es k=nnte ein Frame-Layout wie dieses erzeugen:
16.2 Frame-Layout
Ein HTML-Dokument, das ein Frame-Layout beschreibt (Frameset-Dokument genannt), hat ein
anderes Aussehen als ein HTML-Dokument ohne Frames. Ein normales Dokument hat einen
<![ %[Link]; [
<!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) - - window subdivision- ->
<!ATTLIST FRAMESET
%coreattrs; - - id, class, style, title - -
rows %MultiLengths; #IMPLIED - - list of lengths,
default: 100% (1 row) - -
cols %MultiLengths; #IMPLIED - - list of lengths,
default: 100% (1 col) - -
onload %Script; #IMPLIED - - all the frames have been loaded - -
onunload %Script; #IMPLIED - - all the frames have been removed - -
>
]]>
Attributdefinitionen
Das Element FRAMESET legt das Layout des Hauptfensters mit rechteckigen Unterfenstern fest.
<edition
[Link]>
Ist das Attribut rows nicht angegeben, erstreckt sich jede Spalte ber die volle L@nge der Seite.
Ist das Attribut cols nicht angegeben, erstreckt sich jede Zeile ber die gesamte Seitenbreite.
Ist keines der Attribute angegeben, nimmt der Frame genau die Fl@che der Seite ein.
Frames werden von links nach rechts fr Spalten und von oben nach unten fr Zeilen erzeugt.
Sind beide Attribute angegeben, werden die Ansichten von links nach rechts in der ersten Rei-
he, von links nach rechts in der zweiten Reihe und so weiter erzeugt.
Das erste Beispiel teilt den Bildschirm vertikal in zwei H@lften (d. h., es wird eine obere und
eine untere H@lfte erzeugt).
Das n@chste Beispiel erzeugt drei Spalten: die zweite hat eine festgelegte Breite von 250 Pixeln
(ntzlich um z. B. ein Bild mit bekannter Gr=ße zu beherbergen). Die erste Spalte erh@lt 25%
des brig gebliebenen Platzes und die dritte erh@lt 75% davon:
<FRAMESET cols="1*,250,3*">
...der Rest der Definition...
</FRAMESET>
Nehmen Sie fr das folgende Beispiel an, ein Browser-Fenster sei aktuell 1000 Pixel hoch. Der
ersten Ansicht werden 30% der gesamten H=he zugeteilt (300 Pixel). Der zweiten Ansicht sind
genau 400 Pixel H=he zugewiesen. Das l@sst 300 Pixel brig, die unter den beiden verbliebenen
Frames aufgeteilt werden mssen. Die H=he des vierten Frames ist mit „2*“ angegeben. Damit
ist er zweimal so hoch wie der dritte Frame, dessen H=he nur „*“ (@quivalent zu „1*“) ist. Des-
halb wird der dritte Frame 100 Pixel hoch sein und der vierte 200 Pixel.
<edition
[Link]>
<FRAMESET rows="30%,400,*,2*">
...der Rest der Definition...
</FRAMESET>
Absolute L@ngen, die in der Summe nicht 100% des tats@chlich zur Verfgung stehenden Raums
Die HTML 4.01- Spezifikation
ergeben, sollten vom Benutzerprogramm angeglichen werden. Sofern zu wenig angegeben ist,
sollte der verbleibende Platz jeder Ansicht proportional hinzugefgt werden. Ist zuviel angege-
ben, sollte jede Ansicht in dem Verh@ltnis verkleinert werden, das ihrem angegebenen Anteil
am gesamten Platz entspricht.
Verschachtelte Framesets
Framesets k=nnen beliebig tief verschachtelt werden.
Im folgenden Beispiel teilt der @ußere FRAMESET den verfgbaren Raum in drei gleiche Spalten auf.
Der innere FRAMESET teilt dann den zweiten Bereich in zwei Zeilen unterschiedlicher H=he ein.
Anmerkung der bersetzer: Mehr dazu, wie man in Skripten – hier konkret in Java-
Script – Objekte, Funktionen u.@. frame-bergreifend erreicht und benutzt, finden Sie in der
FAQ auf der Homepage der deutschsprachigen Javascript-Newsgroup unter [Link]
faq/ in der Fragenliste unter „mehr Fenster und Frames - Kommunikation zwischen...“
<![ %[Link]; [
<!- - reserved frame names start with "_" otherwise starts with letter - ->
<!ELEMENT FRAME - O EMPTY - - subwindow - ->
<!ATTLIST FRAME
%coreattrs; - - id, class, style, title - -
longdesc %URI; #IMPLIED - - link to long description
(complements title) - -
name CDATA #IMPLIED - - name of frame for targetting - -
src %URI; #IMPLIED - - source of frame content - -
frameborder (1|0) 1 - - request frame borders? - -
marginwidth %Pixels; #IMPLIED - - margin widths in pixels - -
marginheight %Pixels; #IMPLIED - - margin height in pixels - -
noresize (noresize) #IMPLIED - - allow users to resize frames? - -
scrolling (yes|no|auto) auto - - scrollbar or none - -
>
]]>
<edition
[Link]>
Attributdefinitionen
Das Element FRAME definiert den Inhalt und die Darstellung eines einzelnen Frames.
und das Benutzerprogramm veranlassen, jede Datei in eine eigene Ansicht zu laden.
Der Inhalt eines Frames darf nicht im gleichen Dokument sein wie die Definition des Frames.
<edition
[Link]>
Wird mit Hilfe des Attributs name ein Name fr einen Frame angegeben, k=nnen Autoren die-
sen Frame als Ziel („target“) fr Links verwenden, die von anderen Elementen definiert wer-
den. Das target-Attribut kann in Elementen angegeben werden, die Links erzeugen (A, LINK), in
Imagemaps (AREA) und Formularen (FORM).
Informationen ber reservierte Frame-Namen finden Sie in Abschnitt 6.16, „Namen von Ziel-
Frames“.
<edition
[Link]>
Dieses Beispiel verdeutlicht, wie Ziele die dynamische Ver@nderung des Frame-Inhalts gestat-
ten. Zuerst definieren wir ein Frameset im Dokument [Link], wie hier gezeigt:
"[Link]
<HTML>
<HEAD>
<TITLE>Ein Frameset-Dokument</TITLE>
</HEAD>
<FRAMESET cols="50%,50%">
<FRAME name="fixed" src="init_fixed.html">
<FRAME name="dynamic" src="init_dynamic.html">
</FRAMESET>
</HTML>
Die Aktivierung beider Links =ffnet ein neues Dokument im Frame „dynamic“, w@hrend der
andere Frame, „fixed“, seinen Ausgangsinhalt beibeh@lt.
Anmerkung: Die Definition eines Framesets ver,ndert sich nie, aber der Inhalt eines seiner Frames
kann es. Ver,ndert sich der Ausgangsinhalt eines Frames einmal, spiegelt die Definition des Framesets
nicht l,nger den aktuellen Status seiner Frames wieder.
Es gibt zur Zeit keine M glichkeit, den gesamten Zustand eines Framesets in einem URI zu verschls-
Geben viele Links im selben Dokument dasselbe Ziel an, ist es m=glich, das Ziel einmal anzuge-
ben und auf das target-Attribut in jedem einzelnen Element zu verzichten. Dies geschieht durch
Angabe des target-Attributs im Element BASE.
Kehren wir zum vorherigen Beispiel zurck: Diesmal geben wir die Zielinformationen durch
die Definition im Element BASE an und entfernen sie aus den A-Elementen.
Benutzerprogramme sollten den Ziel-Frame, in den die referenzierte Quelle geladen werden
soll, der folgenden Vorgehensweisen entsprechend bestimmen (von h=chster Priorit@t zu nied-
rigster):
1. Ist das target-Attribut eines Elements auf einen bekannten Frame gesetzt, wenn das Ele-
ment aktiviert wird (d. h., ein Link wird aktiviert oder ein Formular verarbeitet), sollte die
vom Element bezeichnete Quelle in den Ziel-Frame geladen werden.
2. Ist das target-Attribut fr ein Element nicht gesetzt, jedoch fr das Element BASE, dann
bestimmt das target-Attribut des Elements BASE den Frame.
3. Weist weder das Element noch das BASE-Element auf ein Ziel, dann sollte die vom Element
bezeichnete Quelle in den Frame geladen werden, welcher das Element enth@lt.
4. Verweist irgendein target-Attribut auf einen unbekannten Frame F, dann sollte das Benut-
zerprogramm ein neues Fenster und einen neuen Frame erzeugen, dem Frame den Namen
F zuweisen und die vom Element bezeichnete Quelle in den neuen Frame laden.
Benutzerprogramme k=nnen dem Benutzer einen Mechanismus zur Verfgung stellen, um das
target-Attribut zu berschreiben.
<edition
[Link]>
<![ %[Link]; [
<!ENTITY % [Link] "(BODY) -(NOFRAMES)">
]]>
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Das Element NOFRAMES gibt Inhalt an, der nur von Benutzerprogrammen angezeigt werden sollte,
die keine Frames untersttzen oder so konfiguriert sind, dass sie Frames nicht anzeigen. Benut-
zerprogramme, die Frames untersttzen, mssen den Inhalt einer NOFRAMES-Deklaration nur
dann anzeigen, wenn sie so konfiguriert sind, dass sie Frames nicht anzeigen. Benutzerprogram-
me, die Frames nicht untersttzen, mssen den Inhalt von NOFRAMES in jedem Fall anzeigen.
Das Element NOFRAMES ist sowohl Teil der Transitional DTD als auch der Frameset DTD. In
einem Dokument, das die Frameset DTD verwendet, kann NOFRAMES am Ende des FRAMESET-
Abschnitts des Dokuments verwendet werden.
Zum Beispiel:
NOFRAMES k=nnte zum Beispiel in einem Dokument verwendet werden, das die Quelle eines
Frames ist und die Transitional DTD verwendet. Dies erlaubt es Autoren, den Zweck eines
Dokuments zu erkl@ren, falls es außerhalb eines Framesets betrachtet wird oder mit einem
Benutzerprogramm, das keine Frames untersttzt.
Beachten Sie, dass dieses Bild unabh@ngig von irgendeinem HTML-Element in den Frame einge-
fgt wurde, so dass der Autor keine M=glichkeit hat, alternativen Text anzugeben als ber das
longdesc-Attribut. Ver@ndert sich der Inhalt des rechten Frames (z. B. wenn der Benutzer eine
Klapperschlange aus dem Inhaltsverzeichnis w@hlt), werden die Benutzer keinen textbasierten
Zugang zum neuen Inhalt des Frames haben.
Deshalb sollten Autoren eine Bilddatei nicht direkt in einen Frame einfgen. Statt dessen sollte
das Bild in einem separaten HTML-Dokument angegeben und dort mit entsprechendem alter-
nativen Text kommentiert werden:
<edition
[Link]>
<P>
<OBJECT data="[Link]" type="image/gif">
Diese Strauße schmecken sicherlich gut!
</OBJECT>
</HTML>
Attributdefinitionen
Das Element IFRAME gestattet dem Autor, einen Frame innerhalb eines Textblocks einzufgen.
Das Einfgen eines eingebetteten Frames innerhalb eines Textblocks gleicht weitgehend dem
Einfgen eines Objekts ber das Element OBJECT: Sie erlauben beide, ein HTML-Dokument
inmitten eines anderen einzufgen, sie k=nnen beide mit umgebendem Text ausgerichtet wer-
Die Gr=ße eingebetteter Frames kann nicht ver@ndert werden (und deshalb akzeptieren sie
das noresize-Attribut nicht).
Anmerkung: HTML-Dokumente k nnen ebenso mit dem Element OBJECT in andere HTML-Doku-
mente eingebettet werden. Einzelheiten dazu finden Sie in Abschnitt 13.5, „Anmerkungen zu eingebet-
teten Dokumenten“. n
17 Formulare
17.1 Einf-hrung in Formulare
Ein HTML-Formular ist ein Abschnitt eines Dokuments, der normalen Inhalt, Bezeichner, spe-
zielle Elemente, genannt Steuerelemente (Checkboxen, Radio-Buttons, Mens und so weiter)
und Beschriftungen fr diese Steuerelemente enth@lt. Benutzer „vervollst@ndigen“ ein Formular
im Allgemeinen durch die Ver@nderung seiner Steuerelemente, bevor das Formular zu einer
Anwendung bertragen wird (zum Beispiel zu einem Webserver, zu einem Mailserver und so
weiter).
Hier ist ein einfaches Formular, das Beschriftungen, Radio-Buttons und Schaltfl@chen (Zurck-
setzen oder Absenden des Formulars) enth@lt:
<edition
[Link]>
</FORM>
17.2 Steuerelemente
Benutzer interagieren mit Formularen ber benannte Steuerelemente.
Der „Steuerelementname“ eines Steuerelements wird ber sein name-Attribut zugewiesen. Der
Geltungsbereich des name-Attributs fr ein Steuerelement innerhalb eines FORM-Elements ist das
FORM-Element.
Anmerkung der bersetzer: Ein kleines Beispiel wird das verdeutlichen. Wir
gehen von einer Seite aus, die die beiden folgenden Formulare enth@lt:
<FORM
ACTION="[Link]" METHOD="
get">
<P>
<LABEL FOR="vorname">Vorname: </LABEL>
<INPUT TYPE="text" NAME="vorname"><BR>
<LABEL FOR="nachname">Nachname: </LABEL>
<INPUT TYPE="text" NAME="nachname"><BR>
<LABEL FOR="email">E-Mail: </LABEL>
<INPUT TYPE="text" NAME="email"><BR>
<INPUT TYPE="radio" NAME="geschlecht" VALUE="Maskulin"> Maskulin<BR>
<INPUT TYPE="radio" NAME="geschlecht" VALUE="Feminin"> Feminin<BR>
<INPUT TYPE="submit" VALUE="Absenden">
<INPUT TYPE="reset" VALUE="ZurUcksetzen">
</P>
</FORM>
<FORM ACTION="[Link]" METHOD="get">
<P>
<LABEL FOR="vorname">Vorname: </LABEL>
<INPUT TYPE="text" NAME="vorname"><BR>
<LABEL FOR="nachname">Nachname: </LABEL>
<INPUT TYPE="text" NAME="nachname"><BR>
<INPUT TYPE="submit" VALUE="Absenden">
<INPUT TYPE="reset" VALUE="ZurUcksetzen">
</P>
</FORM>
Beim Absenden des ersten Formulars wird das Perl-Skript [Link] aufgerufen, beim
zweiten [Link]. Beide erwarten Parameter, n@mlich die Werte des ausgefllten
Formulars. Fllt man die Formulare aus und schaut nach dem Absenden den URI an, so
erkent man deutlich, dass die Werte des jeweiligen Formulars bertragen werden.
...[Link]?vorname=Albert&nachname=
Meier&email=[Link]%[Link]&geschlecht=Maskulin
...[Link]?vorname=Ruth&nachname=Schulze
„vorname“ und „nachname“ werden in beiden F@llen bergeben, jedoch mit dem einge-
gebenen Wert des jeweiligen Formulars.
Jedes Steuerelement hat sowohl einen Anfangswert als auch einen aktuellen Wert, beide
Werte sind Zeichenketten. In den individuellen Definitionen der Steuerelemente finden Sie
Informationen ber Anfangswerte und m=gliche Beschr@nkungen fr Werte, die vom Steuer-
element auferlegt werden. Im Allgemeinen wird der Anfangswert ber das Attribut value des
Steuerelements angegeben. Jedoch wird der Anfangswert eines TEXTAREA-Elements durch seinen
Inhalt angegeben, und der Anfangswert eines OBJECT-Elements in einem Formular wird durch
die Implementierung des Objekts bestimmt (das heißt, er liegt außerhalb des Geltungsbereichs
dieser Spezifikation).
Der „aktuelle Wert“ eines Steuerelements wird zuerst auf seinen Anfangswert gesetzt. Danach
kann der aktuelle Wert des Steuerelements durch Interaktion des Benutzers oder durch
Skripte ver@ndert werden.
Der Anfangswert eines Steuerelements ver@ndert sich nicht. Wird ein Forumlar zurckgesetzt,
werden folglich die aktuellen Werte aller Steuerelemente auf ihre Anfangswerte zurckgesetzt.
Hat ein Steuerelement keinen Anfangswert, ist die Auswirkung einer Zurcksetzung fr dieses
Steuerelement nicht definiert.
Wird ein Formular fr die Verarbeitung bertragen, fassen einige Steuerelemente ihre Namen
mit den aktuellen Werten zu einem Paar zusammen, und diese Paare werden mit dem Formular
bertragen. Steuerelemente, fr die solche Name/Wert-Paare bertragen werden, nennt man
erfolgreiche Steuerelemente (successful controls).
<edition
[Link]>
17.2.1 Steuerelementtypen
[Link]
Autoren k=nnen drei verschiedene Schaltfl@chentypen erzeugen:
· Absenden-Schaltfl@chen (submit buttons): Wird sie aktiviert, sendet die Absenden-
Schaltfl@che ein Formular. Ein Formular kann mehr als eine Absenden-Schaltfl@che ent-
halten.
· Zurcksetzen-Schaltfl@chen (reset buttons): Wird sie aktiviert, setzt eine Zurcksetzen-
Schaltfl@che alle Steuerelemente auf ihren Anfangswert zurck.
· Allgemeine Schaltfl@chen (push buttons): Allgemeine Schaltfl@chen zeigen kein voreinge-
stelltes Verhalten. Jede Schaltfl@che kann ber die Event-Attribute des Elements mit
einem Client-seitigen Skript verbunden sein. Wird das Event ausgel=st (zum Beispiel
wenn der Benutzer eine Schaltfl@che drckt, losl@sst und so weiter), wird das entspre-
chende Skript ausgefhrt.
Autoren sollten die Skriptsprache fr das Skript einer allgemeinen Schaltfl@che ber
eine Deklaration der Standard-Skriptsprache (siehe Abschnitt 18.2.2) angeben (mit dem
Element META).
Autoren k=nnen Schaltfl@chen mit den Elementen BUTTON oder INPUT erzeugen. Details ber
die Angabe unterschiedlicher Schaltfl@chentypen finden Sie in den Definitionen dieser Ele-
mente.
Anmerkung: Autoren sollten beachten, dass BUTTON -Elemente mehr Darstellungsm glichkeiten
bieten als INPUT-Elemente. n
Checkboxen
Checkboxen und Radio-Buttons sind Ein/Aus-Schalter, die vom Benutzer geschaltet werden
k=nnen. Ein Schalter ist auf „Ein“ gesetzt, wenn das Attribut checked eines Steuerelements
angegeben ist. Wird ein Formular bertragen, k=nnen nur Checkbox-Steuerelemente
erfolgreich werden, die auf „Ein“ stehen.
Einige Checkboxen in einem Formular k=nnen den gleichen Steuerelementnamen teilen. So
gestatten es Checkboxen zum Beispiel, mehrere Werte fr die gleiche Eigenschaft aus-
zuw@hlen. Checkbox-Steuerelemente werden mit dem Element INPUT erzeugt.
Radio-Buttons
Radio-Buttons gleichen normalen Checkboxen, wenn jedoch mehrere den gleichen Steuer-
elementnamen teilen, schließen Sie sich gegenseitig aus: ist eine Auswahl eingeschaltet, sind
alle anderen mit dem gleichen Namen ausgeschaltet. Steuerelemente vom Typ Radio-But-
ton werden mit dem Element INPUT erzeugt.
Ist zu Beginn kein Radio-Button in einer Gruppe mit Elementen gleichen Namens einge-
schaltet, dann ist nicht definiert, welches Steuerelement ein Benutzerprogramm zu Beginn
einschalten soll. Anmerkung: Weil bestehende Implementationen diese F@lle unterschiedlich
behandeln, weicht die aktuelle Spezifikation von RFC 1866 ([RFC1866] Abschnitt [Link])
ab, welcher aussagt: Zu allen Zeiten ist genau ein Radio-Button in einer Gruppe ausgew@hlt.
Ist fr keines der <INPUT>-Elemente einer Gruppe mit Radio-Button das Attribut CHECKED
gesetzt, dann muss das Benutzerprogramm den ersten Radio-Button der Gruppe zu Beginn
ausw@hlen.
Die Elemente, die zur Erzeugung eines Steuerelements verwendet werden, stehen im Allgemei-
nen innerhalb eines FORM-Elements, k=nnen aber auch außerhalb eines FORM-Elements stehen,
wenn sie zur Erzeugung von Benutzerschnittstellen verwendet werden. Dies wird in Abschnitt
18.2.3, „Eingebettete Ereignisse“ besprochen. Beachten Sie, dass Steuerelemente außerhalb
eines Formulars keine erfolgreichen Steuerelemente werden k=nnen.
<edition
[Link]>
Attributdefinitionen
Anmerkung: Dieses Attribut wurde aus Grnden der Rckw,rtskompatibilit,t mit einbezogen.
Anwendungen sollten das id-Attribut verwenden, um Elemente zu kennzeichnen. n
An anderer Stelle definierte Attribute
·· id, class (dokumentweite Identifikatoren)
lang (Sprachcode), dir (Leserichtung)
·· target (Ziel-Frame-Angabe)
onsubmit, onreset, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove,
onmouseout, onkeypress, onkeydown, onkeyup (eingebettete Ereignisse)
Das Element FORM ist ein Container fr Steuerelemente. Es gibt an:
·· Das Layout des Formulars (gegeben durch den Inhalt des Elements).
Das Programm, welches das vervollst@ndigte und bertragene Formular weiterverarbeiten
wird (das Attribut action). Das empfangende Programm muss in der Lage sein, die Name/
Informationen darber, wie ein Benutzerprogramm die Formulardaten fr Server herrichten
muss und wie es die erwarteten Antworten verarbeiten soll, finden sie im Abschnitt „Formular-
bertragung“.
Anmerkung: Die weiterfhrende Diskussion ber das Verhalten der Server, die Formulardaten erhal-
ten, liegt nicht im Geltungsbereich dieser Spezifikation. n
<!- - attribute name required for all but submit and reset - ->
<!ELEMENT INPUT - O EMPTY - - form control - ->
<!ATTLIST INPUT
%attrs; - - %coreattrs, %i18n, %events - -
type %InputType; TEXT - - what kind of widget is needed - -
name CDATA #IMPLIED - - submit as part of form - -
value CDATA #IMPLIED - - Specify for radio buttons and checkboxes
--
checked (checked) #IMPLIED -- for radio buttons and check boxes - -
disabled (disabled) #IMPLIED -- unavailable in this context - -
readonly (readonly) #IMPLIED -- for text and passwd - -
size CDATA #IMPLIED -- specific to each type of field - -
maxlength NUMBER #IMPLIED -- max chars for text fields - -
src %URI; #IMPLIED -- for fields with images - -
alt CDATA #IMPLIED -- short description - -
<edition
[Link]>
Attributdefinitionen
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
·· tabindex (Tabulatornavigation)
accesskey (Zugriffstaste)
··
Der durch das INPUT-Element definierte Steuerelementtyp ist abh@ngig vom Wert des type-
Attributs:
text
Erzeugt ein einzeiliges Texteingabe-Steuerelement.
password
Wie „text“, jedoch wird der Eingabetext so dargestellt, dass die Zeichen versteckt werden
(zum Beispiel jeweils hinter einem Sternchen). Dieser Steuerelementtyp wird oft fr ver-
trauliche Eingaben wie Passworte verwendet. Beachten Sie, dass der aktuelle Wert der ein-
gegebene Text durch den Benutzer ist, nicht der Text, der vom Benutzerprogramm dar-
gestellt wird.
<edition
[Link]>
· Verwenden Sie mehrere Schaltfl@chen (jede mit einem eigenen Bild), anstatt einer ein-
zelnen graphischen Absenden-Schaltfl@che. Autoren k=nnen Stylesheets verwenden, um
die Anordnung dieser Schaltfl@chen zu bestimmen.
· Verwenden Sie eine Client-seitige Imagemap in Verbindung mit Skripten.
Die HTML 4.01- Spezifikation
reset
Erzeugt eine Zurcksetzen-Schaltf@che.
button
Erzeugt eine allgemeine Schaltfl@che. Benutzerprogramme sollten den Wert des Attributs
value als Beschriftung fr die Schaltfl@che verwenden.
hidden
Erzeugt ein verstecktes Steuerelement.
file
Erzeugt ein Dateiauswahl-Steuerelement. Benutzerprogramme k=nnen den Wert des value-
Attributs als den Anfangsdateinamen verwenden.
Das folgende Beispiel eines HTML-Fragments definiert ein einfaches Formular, das es dem
Benutzer gestattet, einen Vornamen, einen Familiennamen, eine E-Mail-Adresse und ein
Geschlecht anzugeben. Wird die Absenden-Schaltfl@che aktiviert, wird das Formular an das
Programm bertragen, welches ber das action-Attribut angegeben ist.
Im Abschnitt ber das Element LABEL er=rtern wir die Erstellung von Beschriftungen wie "Vor-
name".
<edition
[Link]>
scheitern.
Im n@chsten Beispiel wird die JavaScript-Funktion verify aufgerufen, wenn das onclick-Event
auftritt:
<HEAD>
<META http-equiv="Content-Script-Type" content="text/javascript">
</HEAD>
<BODY>
<FORM action="..." method="post">
<P>
<INPUT type="button" value="DrUck Mich" onclick="verify()">
</FORM>
</BODY>
Mehr Informationen ber Skripte und Events finden Sie im Abschnitt „Eingebettete Ereignisse“.
Das folgende Beispiel zeigt, wie der Inhalt einer vom Benutzer angegebenen Datei mit einem
Formular bertragen werden kann. Der/die BenutzerIn wird nach seinem/ihrem Namen und
einer Liste mit Dateinamen gefragt, deren Inhalte mit dem Formular bertragen werden sollen.
Durch Angabe des enctype-Werts „multipart/form-data“ wird der Inhalt jeder Datei in einem
eigenen Bereich eines Multipart-Dokuments „verpackt“.
<FORM action="[Link]
enctype="multipart/form-data"
method="post">
<P>
Wie heißt Du? <INPUT type="text" name="name_des_absenders">
Welche Dateien verschickst Du? <INPUT type="file" name="name_der_dateien">
</P>
</FORM>
·
button: Erzeugt eine allgemeine Schaltfl@che.
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
··tabindex (Tabulatornavigation)
onfocus, onblur, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmou-
seout, onkeypress, onkeydown, onkeyup (eingebettete Ereignisse)
Schaltfl@chen, die mit dem BUTTON-Element erzeugt werden, funktionieren wie Schaltfl@chen, die
mit dem INPUT-Element erzeugt wurden, bieten ledoch mehr Darstellungsm=glichkeiten: das
BUTTON-Element kann Inhalt haben. Zum Beispiel funktioniert ein BUTTON-Element mit Bild wie
ein INPUT-Element, dessen type-Attribut auf „image“ gesetzt ist und kann ihm gleichen, das Ele-
ment BUTTON gestattet jedoch Inhalt.
Visuelle Benutzerprogramme k=nnten BUTTON-Schaltfl@chen mit Relief und Auf/Ab-Bewegung
darstellen, wenn sie angeklickt werden, w@hrend sie INPUT-Schaltfl@chen als „flaches“ Bild anzei-
gen k=nnten.
Das folgende Beispiel erweitert das vorherige Beispiel, jedoch erzeugt es Absenden- und
Zurcksetzen-Schaltfl@chen mit BUTTON statt mit INPUT. Den Schaltfl@chen werden ber das IMG-
Element Bilder zugewiesen.
<edition
[Link]>
Rufen Sie sich in Erinnerung, dass Autoren alternativen Text fr ein IMG-Element angeben ms-
sen.
Es ist nicht gestattet, eine Imagemap mit einem IMG zu verknpfen, das im Inhalt eines BUTTON-
Elements steht.
<BUTTON>
<IMG src="[Link]" usemap="...">
</BUTTON> n
·· title (Elementtitel)
Das SELECT-Element erzeugt ein Men. Jede Auswahlm=glichkeit wird durch ein OPTION-Element
repr@sentiert. Ein SELECT-Element muss mindestens ein OPTION-Element enthalten.
Das OPTGROUP-Element gestattet Autoren, die Auswahlm=glichkeiten logisch anzuordnen. Dies
ist besonders hilfreich, wenn der Benutzer aus einer langen Liste ausw@hlen muss; Gruppen
verwandter Auswahlm=glichkeiten sind einfacher zu verstehen und zu behalten als eine ein-
fache lange Liste mit Auswahlm=glichkeiten. In HTML 4 mssen alle OPTGROUP-Elemente direkt
innerhalb eines SELECT-Elements angegeben werden (das heißt, Gruppen drfen nicht ver-
schachtelt werden).
17.6.1 Vorauswahlen
Keine oder mehrere M=glichkeiten k=nnen fr den Benutzer vorausgew@hlt sein. Benutzerpro-
gramme sollten wie folgt feststellen, welche M=glichkeiten ausgew@hlt sind:
· Ist fr kein OPTION-Element das Attribut selected angegeben, ist fr Benutzerprogramme
nicht definiert, welche M=glichkeit zu Beginn ausgew@hlt wird.
·· Ist fr ein OPTION-Element das selected-Attribut angegeben, sollte es vorausgew@hlt sein.
Ist fr das SELECT-Element das multiple-Attribut angegeben und mehr als ein OPTION-Element
ber das selected-Attribut ausgew@hlt, sollten all diese vorausgew@hlt sein.
· Es wird als Fehler angesehen, wenn fr mehr als ein OPTION-Element das selected-Attribut
angegeben ist, fr das SELECT-Element jedoch kein multiple-Attribut gesetzt ist. Benutzer-
programme k=nnen bei diesem Fehler unterschiedlich vorgehen, jedoch sollten sie nicht
mehr als eine M=glichkeit vorausw@hlen.
<edition
[Link]>
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Anmerkung: Entwickler seien darauf hingewiesen, dass in zuknftigen Versionen von HTML die
Gruppierungsmechanismen eventuell erweitert werden und verschachtelte Gruppen gestattet werden
(das heißt, OPTGROUP-Elemente k nnen verschachtelt werden). Dies wird Autoren die M glichkeit geben,
eine reichhaltigere Hierarchie der Auswahlm glichkeiten darzustellen. n
selected [CI]
Wenn angegeben, legt dieses Boolesche Attribut fest, dass die Option vorausgew@hlt ist.
value = cdata [CS]
Dieses Attribut gibt den Anfangswert eines Steuerelements an. Ist dieses Attribut nicht
angegeben, wird der Anfangswert auf den Inhalt des OPTION-Elements gesetzt.
label = text [CS]
Dieses Attribut erlaubt Autoren eine krzere Beschreibung fr eine Option anzugeben als den
Inhalt des OPTION-Elements. Wenn es angegeben ist, sollten Benutzerprogramme den Wert die-
ses Attributs zur Beschreibung der Option verwenden, nicht den Inhalt des OPTION-Elements.
· title (Elementtitel)
<edition
[Link]>
</OPTGROUP>
</SELECT>
</FORM>
Keine
PortMaster 3
3.7.1
3.7
3.5
PortMaster 2
3.7
3.5
IRX
3.7R
3.5R
Optische Benutzerprogramme k=nnen Benutzern gestatten, ber ein hierarchisches Men aus Options-
gruppen auszuw@hlen oder ber einen anderen Mechanismus, der die Auswahlstruktur widerspiegelt.
Ein graphisches Benutzerprogramm k=nnte dies so darstellen:
Diese Graphik zeigt ein SELECT-Element, das als kaskadierende Menauswahl dargestellt wird.
Die oberste Beschriftung zeigt den aktuell ausgw@hlten Wert (PortMaster 3, 3.7.1). Der Benut-
zer hat zwei kaskadierende Mens aufgerufen, aber den neuen Wert noch nicht ausgew@hlt
(PortMaster 2, 3.7). Beachten Sie, dass jedes kaskadierende Men die Beschriftung eines
OPTGROUP- oder OPTION-Elements tr@gt.
Anmerkung der bersetzer: Die Darstellung derartige Mens ist von Benutzer-
programm zu Benutzerprogramm sehr verschieden. In der gleichen Situation wie eben
sieht ein Nutzer des Internet Explorer 5 unter MAC OS dieses:
Er sieht in diesem Moment zum Beispiel nicht mehr, dass er aktuell den Wert „Port-
Master 3, 3.7.1“ ausgew@hlt hat, weil er sich mit der Maus inzwischen ber „Portmaster
2“ befindet
Attributdefinitionen
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
<edition
[Link]>
·· tabindex (Tabulatornavigation)
onfocus, onblur, onselect, onchange, onclick, ondblclick, onmousedown, onmouseup, onmouseover,
onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (eingebettete Ereignisse)
gramme sollten den Inhalt dieses Elements als den Anfangswert des Steuerelements verwenden
und diesen als Text zu Beginn darstellen.
Dieses Beispiel erzeugt ein TEXTAREA-Steuerelement mit 20 Zeilen und 80 Spalten, das zwei Zei-
len Anfangstext enth@lt. Dem Element TEXTAREA folgt eine Absenden- und eine Zurcksetzen-
Schaltfl@che.
Die Angabe des readonly-Attributs gestattet Autoren die Anzeige von unver@nderbarem Text
in einer TEXTAREA. Dies unterscheidet sich davon, normal ausgezeichneten Text in einem Doku-
ment zu verwenden, weil der Wert von TEXTAREA mit dem Formular bertragen wird.
Attributdefinitionen
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
Das Element ISINDEX erzeugt ein einzeiliges Texteingabe-Steuerelement, das eine beliebige
Anzahl von Zeichen erlaubt. Benutzerprogramme k=nnen den Wert des prompt-Attributs als
Titel fr die Eingabeaufforderung verwenden.
MISSBILLIGTES BEISPIEL:
Die folgende ISINDEX-Deklaration:
Semantik von ISINDEX: Zur Zeit ist die Semantik fr ISINDEX nur wohldefiniert, wenn der Basis-
URI fr das einschließende Dokument ein HTTP-URI ist. In der Praxis ist die Eingabezeichenkette auf
Latin-1 beschr,nkt, weil es keinen Mechanismus fr den URI gibt, einen anderen Zeichensatz anzuge-
ben. n
17.9 Beschriftungen
Einige Formular-Steuerelemente haben bereits automatisch eine zugeh=rige Beschriftung
(Schaltfl@chen), w@hrend die meisten keine haben (Textfelder, Auswahlfelder, Radio-Buttons
und Mens).
Fr Steuerelemente, die eine implizite Beschriftung haben, sollten Benutzerprogramme den
Wert des value-Attributs als Beschriftungszeichenkette verwenden.
Das Element LABEL wird fr die Beschriftung der Steuerelemente verwendet, die keine implizite
Beschriftung haben.
Attributdefinitionen
<edition
[Link]>
·· title (Elementtitel)
Die HTML 4.01- Spezifikation
·· accesskey (Zugriffstatste)
onfocus, onblur, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmou-
seout, onkeypress, onkeydown, onkeyup (eingebettete Ereignisse)
Das Element LABEL kann dazu verwendet werden, Steuerelementen Informationen hinzuzuf-
gen. Jedes LABEL-Element ist genau einem Formular-Steuerelement zugeordnet.
Das for-Attribut verknpft eine Beschriftung explizit mit einem anderen Steuerelement: der
Wert des for-Attributs muss der gleiche sein, wie der des id-Attributs des verbundenen
Steuerelements. Mehr als ein LABEL kann mit dem gleichen Steuerelement verknpft werden,
wenn mehrere Verweise ber das for-Attribut erzeugt werden.
Dieses Beispiel erzeugt eine Tabelle, die dazu verwendet wird, zwei Texteingabe-Steuerele-
mente und ihre entsprechenden Beschriftungen auszurichten. Jede Beschriftung ist mit genau
einer Texteingabe verknpft:
Um eine Beschriftung mit einem anderen Steuerelement implizit zu verbinden, muss das
Steuerelement innerhalb des Inhalts des LABEL-Elements liegen. In diesem Fall sollte das LABEL
nur ein Steuerelement enthalten. Die Beschriftung selbst kann vor oder nach dem entsprechen-
den Steuerelement angebracht werden.
In diesem Beispiel verknpfen wir implizit zwei Beschriftungen mit zwei Texteingabe-Steuerele-
menten:
Beachten Sie, dass diese Technik nicht angewandt werden kann, wenn eine Tabelle fr das Lay-
out verwendet wird, in der die Beschriftung in einer Zelle ist und das entsprechende Steuerele-
ment in einer anderen.
Bekommt ein LABEL-Element den Fokus, reicht es den Fokus weiter an sein entsprechendes
Steuerelement. Der folgende Abschnitt ber Zugriffstasten zeigt Beispiele.
Beschriftungen k=nnen von Benutzerprogrammen auf verschiedene Art dargestellt werden
(zum Beispiel optisch, durch Sprachsynthesizer gesprochen und so weiter).
<!ATTLIST LEGEND
%attrs; - - %coreattrs, %i18n, %events - -
accesskey %Character; #IMPLIED - - accessibility key character - -
>
<edition
[Link]>
M=gliche Werte:
·top: Die Beschriftung befindet sich am Kopf der Steuerelementgruppe. Dies ist der
Standardwert.
··
bottom: Die Beschriftung befindet sich am Fuß der Steuerelementgruppe.
left: Die Beschriftung befindet sich an der linken Seite der Steuerelementgruppe.
·
right: Die Beschriftung befindet sich an der rechten Seite der Steuerelementgruppe.
·· title (Elementtitel)
style (inzeilige Formatierungsinformation)
·· accesskey (Zugriffstasten)
onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress,
onkeydown, onkeyup (eingebettete Ereignisse)
Wenn Sie zur Zeit Medikamente nehmen, geben Sie diese bitte
im Textfeld unten an:
<TEXTAREA name="aktuelle_medikamente"
rows="20" cols="50"
tabindex="40">
</TEXTAREA>
</FIELDSET>
</FORM>
Beachten Sie, dass wir die optische Darstellung des Formulars dadurch verbessern k=nnten,
dass wir die Elemente innerhalb der FIELDSET-Elemente ausrichten (mit Stylesheets), Farbe und
Informationen zur Schriftart hinzufgen (mit Stylesheets), Skripte hinzufgen (sagen wir, um das
Textfeld zur aktuellen Medikation nur zu =ffnen, wenn der Benutzer angibt, dass er zur Zeit
Medikamente einnimmt) und vieles mehr.
<edition
[Link]>
17.11.1 Tabulatornavigation
Attributdefinitionen
Die HTML 4.01- Spezifikation
Die Tabulator-Reihenfolge definiert die Reihenfolge, in der die Elemente den Fokus erlangen,
wenn der Benutzer ber die Tastatur navigiert. Die Tabulator-Reihenfolge kann Elemente ent-
halten, die innerhalb anderer Elemente verschachtelt sind.
Elemente, die den Fokus erlangen k=nnen, sollten durch Benutzerprogramme nach folgenden
Regeln angesteuert werden:
1. Die Elemente, welche das tabindex-Attribut untersttzen und einen positiven Wert dafr
enthalten, werden zuerst angesteuert. Die Navigation verf@hrt vom Element mit dem nied-
rigsten tabindex-Wert zu dem Element mit dem h=chsten Wert. Werte mssen weder auf-
einanderfolgend sein, noch mssen sie mit einem bestimmten Wert anfangen. Elemente mit
identischen tabindex-Werten sollten in der Reihenfolge angesteuert werden, in der sie im
Zeichenstrom erscheinen.
2. Die Elemente, die das tabindex-Attribut nicht untersttzen oder es untersttzen und ihnen
der Wert „0“ zugewiesen ist, werden als n@chstes angesteuert. Diese Elemente werden in
der Reihenfolge angesteuert, in der sie im Zeichenstrom erscheinen.
3. Elemente, die „disabled“ sind, sind nicht in der Tabulator-Reihenfolge enthalten.
Die folgenden Elemente untersttzen das tabindex-Attribut: A, AREA, BUTTON, INPUT, OBJECT,
SELECT und TEXTAREA.
In diesem Beispiel wird die Tabulator-Reihenfolge wie folgt sein: das BUTTON-Element, die INPUT-
Elemente in Reihenfolge (beachten Sie, dass „feld1“ und die Schaltfl@che (button) den gleichen
Tab-Index teilen, „feld1“ jedoch sp@ter im Zeichenstrom erscheint) und schließlich der Link,
der durch das Element A erzeugt wird.
17.11.2 Zugriffstasten
Attributdefinitionen
Das Drcken einer Zugriffstaste, die einem Element zugeordnet ist, gibt dem Element den
Fokus. Die Aktion, die eintritt, wenn ein Element den Fokus erh@lt, ist abh@ngig vom Element
selbst. Wenn zum Beispiel ein Benutzer einen Link aktiviert, der vom A-Element erzeugt wird,
folgt das Benutzerprogramm im Allgemeinen dem Link. Aktiviert ein Benutzer einen Radio-But-
ton, ver@ndert das Benutzerprogramm den Wert des Radio-Buttons. Aktiviert ein Benutzer ein
Textfeld, erlaubt es die Texteingabe und so weiter.
Die folgenden Elemente untersttzen das Attribut accesskey: A, AREA, BUTTON, INPUT, LABEL,
LEGEND und TEXTAREA.
Dieses Beispiel weist der Beschriftung eines INPUT-Steuerelements die Zugriffstaste „U“ zu. Das
Drcken der Zugriffstaste vergibt den Fokus an die Beschriftung, welche ihrerseits den Fokus
an das verbundene Steuerelement weitergibt. Der Benutzer kann dann Text in den INPUT-Be-
reich eingeben.
In diesem Beispiel weisen wir einem Verweis, der mit dem A-Element definiert ist, eine Zugriffs-
taste zu. Das Drcken dieser Zugangstaste fhrt den Benutzer zu einem anderen Dokument, in
diesem Fall zum Inhaltsverzeichnis.
<edition
[Link]>
<P><A accesskey="I"
rel="content"
href="[Link]
Inhaltsverzeichnis</A>
Die HTML 4.01- Spezifikation
Der Aufruf der Zugriffstasten h@ngt vom basierenden System ab. Zum Beispiel muss man auf
Rechnern mit MS Windows im Allgemeinen die „Alt“-Taste zus@tzlich zur Zugriffstaste dr-
cken. Auf Apple-Systemen muss im Allgemeinen die „cmd“-Taste zus@tzlich zur Zugriffstaste
gedrckt werden.
Die Darstellung der Zugriffstasten h@ngt vom Benutzerprogramm ab. Wir empfehlen, dass
Autoren die Zugriffstaste in die Beschriftung einschließen oder wo immer die Zugriffsaste ver-
wendet werden muss. Benutzerprogramme sollten den Wert einer Zugriffstaste so darstellen,
dass ihre Funktion unterstrichen wird und dass sie von den anderen Zeichen unterschieden
werden kann (zum Beispiel durch unterstreichen).
Attributdefinitionen
disabled [CI]
Ist es fr ein Formularsteuerelement angegeben, deaktiviert dieses Boolesche Attribut das
Steuerelement fr Benutzereingaben.
Ist es angegeben, hat das Attribut disabled die folgenden Auswirkungen auf ein Element:
·· Deaktivierte Steuerelemente erhalten keinen Fokus.
Deaktivierte Steuerelemente werden in der Tabulatornavigation bergangen.
· Deaktivierte Steuerelemente k=nnen nicht erfolgreich sein.
Die folgenden Elemente untersttzen das Attribut disabled: BUTTON, INPUT, OPTGROUP, OPTION,
SELECT und TEXTAREA.
Dieses Attribut wird vererbt, jedoch berschreiben lokale Deklarationen den vererbten Wert.
Wie deaktivierte Elemente dargestellt werden, ist abh@ngig vom Benutzerprogramm. Zum Bei-
spiel stellen einige Benutzerprogramme deaktivierte Menpunkte, Schaltfl@chenbeschriftungen
und so weiter grau dar.
In diesem Beispiel ist das INPUT-Element deaktiviert. Deshalb kann es weder Benutzereingaben
entgegennehmen noch wird sein Wert mit dem Formular bertragen.
Anmerkung der bersetzer: disabled funktioniert bei einer Reihe etwas @lterer
Browser nicht.
Attributdefinitionen
readonly [CI]
Ist es fr ein Formular-Steuerelement angegeben, verbietet dieses Boolesche Attribut Ver-
@nderungen an dem Steuerelement.
Das Attribut readonly gibt an, ob das Steuerelement vom Benutzer ver@ndert werden kann.
Ist es angegeben, hat das readonly-Attribut die folgenden Auswirkungen auf ein Element:
· Schreibgeschtzte Elemente erhalten den Fokus, k=nnen jedoch nicht vom Benutzer ver-
@ndert werden.
·· Schreibgeschtzte Elemente sind Teil der Tabulatornavigation.
Schreibgeschtzte Elemente k=nnen erfolgreich sein.
Die folgenden Elemente untersttzen das Attribut readonly: INPUT und TEXTAREA.
Wie schreibgeschtzte Elemente dargestellt werden, ist abh@ngig vom Benutzerprogramm.
Anmerkung: Der einzige Weg, den Wert des readonly-Attributs dynamisch zu ver,ndern, ist durch
ein Skript. n
17.13 Formular-bertragung
Der folgende Abschnitt erkl@rt, wie Benutzerprogramme Formulardaten zu formularverarbei-
tenden Programmen bertragen.
17.13.1 Formular-bertragungsmethode
Das Attribut method des FORM-Elements gibt die HTTP-Methode an, die zur bertragung des
Formulars an das verarbeitende Programm verwendet wird. Dieses Attribut kann zwei Werte
entgegennehmen:
· get: Mit der HTTP-Methode „get“ wird der Formulardatensatz an den URI geh@ngt, der
durch das action-Attribut angegeben ist (mit einem Fragezeichen („?“) als Trennzeichen)
und dieser neue URI wird zu dem verarbeitenden Programm geschickt.
· post: Mit der HTTP-Methode „post“ wird der Formulardatensatz im Rumpf des Formulars
eingeschlossen und zum verarbeitenden Programm geschickt.
<edition
[Link]>
Die Methode „get“ sollte verwendet werden, wenn das Formular idempotent ist (das heißt,
keine Nebeneffekte hat). Viele Datenbankanfragen haben keinen sichtbaren Nebeneffekt und
bieten ideale Anwendungen fr die Methode „get“.
Wenn der Dienst zur Verarbeitung eines Formulars Nebeneffekte verursacht (wenn das For-
Die HTML 4.01- Spezifikation
mular zum Beispiel eine Datenbank oder ein Abonnement eines Dienstes ver@ndert), sollte die
Methode „post“ verwendet werden.
Anmerkung: Die Methode „get“ beschr,nkt Formulardatensatzwerte auf ASCII-Zeichen. Nur die
Methode „post“ (mit enctype=„multipart/form-data“) ist spezifiziert, den gesamten [ISO10646]-Zei-
chensatz zu untersttzen. n
Ein erfolgreiches Steuerelement ist „gltig“ fr die bertragung. Fr jedes erfolgreiche Steuer-
element wird sein Steuerelementname, gepaart mit seinem aktuellen Wert, als Teil des Formu-
lardatensatzes bermittelt. Ein erfolgreiches Steuerelement muss innerhalb eines FORM-Elements
definiert sein und muss einen Steuerelementnamen haben.
Jedoch:
·· Steuerelemente, die deaktiviert sind, k=nnen nicht erfolgreich sein.
Enth@lt ein Formular mehr als eine Absenden-Schaltfl@che ist nur die aktivierte Absenden-
Schaltfl@che erfolgreich.
·· Alle Checkboxen, die eingeschaltet sind, k=nnen erfolgreich sein.
Im Fall von Radio-Buttons, die den gleichen Wert des name-Attributs besitzen, kann nur der
Radio-Button erfolgreich sein, der eingeschaltet ist.
· Im Fall von Mens wird der Steuerelementname durch ein SELECT-Element angegeben und
Werte durch OPTION-Elemente. Nur ausgew@hlte Optionen k=nnen erfolgreich sein. Sind
keine Optionen ausgew@hlt, ist das Steuerelement nicht erfolgreich und weder der Name
noch irgendein Wert werden an den Server bertragen, wenn das Formular bertragen
wird.
· Der aktuelle Wert einer Dateiauswahl ist eine Liste mit einem oder mehreren Dateinamen.
Bei der bertragung des Formulars wird der Inhalt jeder Datei mit dem Rest der Formular-
daten bertragen. Der Dateiinhalt wird entsprechend dem Inhaltstypen des Formulars
gepackt.
· Der aktuelle Wert eines Objekt-Steuerelements wird durch die Implementation des
Objekts bestimmt.
Hat ein Steuerelement keinen aktuellen Wert, wenn das Formular bertragen wird, wird von
Benutzerprogrammen nicht gefordert, es als ein erfolgreiches Steuerelement zu behandeln.
berdies sollten Benutzerprogramme die folgenden Steuerelemente nicht als erfolgreich
betrachten:
·· Reset-Buttons.
OBJECT-Elemente, deren declare-Attribut angegeben ist.
name="unsichtbares-passwort"
value="meinpasswort">
</FORM>
wird trotzdem einen Wert zur Folge haben, der mit dem Namen „unsichtbares-passwort“
bertr@gt der Benutzer ein Formular (zum Beispiel durch die Aktivierung einer Absenden-
Schaltfl@che), verarbeitet das Benutzerprogramm dieses Formular wie folgt.
17.13.4 Formular-Inhaltstypen
Das Attribut enctype des FORM-Elements gibt den Inhaltstypen an, der zur Kodierung des Formu-
lardatensatzes fr die bertragung zum Server notwendig ist. Benutzerprogramme mssen die
unten aufgefhrten Inhaltstypen untersttzen. Das Verhalten fr andere Inhaltstypen ist nicht
spezifiziert.
Bitte lesen Sie ebenfalls den Abschnitt „Und-Zeichen in URI-Attributwerten“(B.2.2).
<edition
[Link]>
application/x-www-form-urlencoded
Dies ist der Standard-Inhaltstyp. Formulare, die mit diesem Inhaltstyp bertragen werden, ms-
sen wie folgt kodiert werden:
1. Steuerelementnamen und Werte werden ersetzt. Leerraum-Zeichen werden durch „+“
Die HTML 4.01- Spezifikation
ersetzt, dann werden reservierte Zeichen ersetzt wie in [RFC1738], Abschnitt 2.2
beschrieben: Nicht alphanumerische Zeichen werden durch „%HH“, ein Prozent-Zeichen
und zwei hexadezimale Digits, die den ASCII-Kode des Zeichens repr@sentieren. Zeilen-
umbrche werden als „CR LF“-Paare repr@sentiert (zum Beispiel „%0D%0A“).
2. Die Steuerelementnamen/Werte werden in der Reihenfolge aufgefhrt, in der sie im Doku-
ment erscheinen. Der Name wird vom Wert durch ein „=“ getrennt und die Name/Wert-
Paare untereinander durch ein „&“.
multipart/form-data
Anmerkung: Bitte lesen Sie [RFC2388] fr weitere Informationen ber Datei-Uploads, einschließlich
Fragen zur Rckw,rtskompatibilit,t, die Beziehung zwischen „multipart/form-data“ und anderen
Inhaltstypen, Leistungsfragen und so weiter.
Bitte lesen Sie im Anhang B die „Anmerkungen zur Sicherheit“. n
Der Inhaltstyp „application/x-www-form-urlencoded“ ist nicht leistungsf@hig genug, um große
Mengen bin@rer Daten zu verschicken oder Daten, die Nicht-ASCII-Zeichen enthalten. Der
Inhaltstyp „multipart/form-data“ sollte zur bertragung von Formularen verwendet werden,
die Dateien, Nicht-ASCII-Daten und bin@re Daten enthalten.
Der Inhalt „multipart/form-data“ ist konform zu den Regeln aller mehrteiligen MIME-Daten-
str=me, wie in [RFC2045] umrissen. Die Definition von „multipart/form-data“ ist verfgbar bei
der [IANA]-Registratur.
Eine „multipart/form-data“-Nachricht enth@lt mehrere Teile, jedes repr@sentiert ein erfolgrei-
ches Steuerelement. Die Teile werden in der gleichen Reihenfolge zu dem verarbeitenden Pro-
gramm gesendet, in der sie im Dokumentfluss auftauchen. Teilgrenzen sollten nicht in irgend-
einem Teil der Daten auftauchen; wie dies erreicht wird, liegt außerhalb des Geltungsbereichs
dieser Spezifikation
Wie bei allen mehrteiligen MIME-Typen, hat jeder Teil einen optionalen „Content-Type“-
Header, dessen Voreinstellung „plain/text“ ist. Benutzerprogramme sollten den „Content-
Type“-Header angeben, begleitet von einem „charset“-Parameter.
In jedem Teil werden erwartet:
1. Einen „Content-Disposition“-Header, dessen Wert „form-data“ ist.
2. Ein name-Attribut, das den Steuerelementnamen des entsprechenden Steuerelements angibt.
Steuerelementnamen, die ursprnglich in Nicht-ASCII-Zeichens@tzen kodiert waren, k=n-
nen mit der Methode kodiert werden, die in [RFC2045] umrissen wird.
So wrde zum Beispiel fr ein Steuerelement mit Namen „meinesteuerung“ der korrespondie-
rende Teil so angegeben:
Wie bei allen MIME- bertragungen wird „CR LF“ (zum Beispiel „%0D%0A“) dazu verwendet,
Datenzeilen voneinander zu trennen.
Jeder Teil kann kodiert und der „Content-Transfer-Encoding“-Header bergeben werden, falls
der Wert des Teils nicht konform zu der voreingestellten (7 Bit) Kodierung ist (siehe
[RFC2045], Abschnitt 6)
Wird der Inhalt einer Datei mit einem Formular bertragen, sollte der Dateiinhalt durch den
<FORM action="[Link]
enctype="multipart/form-data"
method="post">
<P>
Wie ist Dein Name? <INPUT type="text" name="submit-name"><BR>
Welche Dateien schickst Du? <INPUT type="file" name="files"><BR>
<INPUT type="submit" value="Absenden"> <INPUT type="reset">
</FORM>
Gibt der Benutzer in der Texteingabe „Larry“ ein, und w@hlt die Textdatei „[Link]“ aus,
k=nnte das Benutzerprogramm folgende Daten zurcksenden:
- -AaB03x
Content-Disposition: form-data; name="submit-name"
Larry
- -AaB03x
Content-Disposition: form-data; name="files"; filename="[Link]"
Content-Type: text/plain
Hat der Benutzer eine zweite Datei „[Link]“ (ein Bild) ausgew@hlt, k=nnte das Benutzerpro-
gramm die Teile wie folgt aufbauen:
- -AaB03x
Content-Disposition: form-data; name="submit-name"
<edition
[Link]>
Larry
- -AaB03x
Content-Disposition: form-data; name="files"
Content-Type: multipart/mixed; boundary=BbC04y
Die HTML 4.01- Spezifikation
- -BbC04y
Content-Disposition: file; filename="[Link]"
Content-Type: text/plain
Anmerkung der bersetzer: Fr diesen Abschnitt sind die Korrekturen in den
Errata zu beachten: „Beschreibung: RFC2388 beschreibt in Abschnitt 4.4 falsch: im Fall
von mehreren Dateien, in einem content-disposition: file-Header des untergeord-
neten Teils. Diese Syntax erscheint im Beispiel in Abschnitt [Link]. Berichtigung:
Ondern in content-disposition: attachment.“
18 Skripte
18.1 Einf-hrung in Skripte
Ein Client-seitiges Skript ist ein Programm, das ein HTML-Dokument begleiten kann oder
direkt in ihm eingebettet ist. Das Programm wird auf dem Rechner des Clients ausgefhrt,
wenn das Dokument geladen wird oder zu einem anderen Zeitpunkt, zum Beispiel, wenn ein
Link aktiviert wird. Die Skript-Untersttzung von HTML ist unabh@ngig von der Skriptsprache.
Skripte bieten Autoren eine M=glichkeit, HTML-Dokumente in sehr aktiver und interaktiver
Weise zu erweitern. Beispiele dafr sind:
· Skripte k=nnen evaluiert werden, wenn ein Dokument geladen wird, um den Inhalt des
Dokuments dynamisch zu ver@ndern.
· Skripte k=nnen Formularen zur Seite gestellt werden, um Eingaben zu verarbeiten, wenn
sie gemacht werden. Autoren k=nnen dynamisch Teile eines Formulars ausfllen, die auf
den Werten anderer Felder basieren. Sie k=nnten ebenfalls sicherstellen, dass Eingabedaten
vorher festgelegten Wertebereichen entsprechen, dass Felder sich nicht gegenseitig aus-
schließen usw.
· Skripte k=nnen von Ereignissen (events) gesteuert werden, die das Dokument betreffen,
wie zum Beispiel Laden, Entladen, Elementfokus, Mausbewegung usw.
· Skripte k=nnen mit Formular-Steuerelementen verknpft werden (zum Beispiel Schaltfl@-
chen), um graphische Elemente in der Benutzerschnittstelle zu erzeugen.
Attributdefinitionen
<edition
[Link]>
defer [CI]
Ist es angegeben, gibt dieses Boolesche Attribut dem Benutzerprogramm einen Hinweis,
dass dieses Skript keinen Dokumentinhalt generieren wird (zum Beispiel kein „docu-
[Link]“ in JavaScript), so dass das Benutzerprogramm mit der Verarbeitung und Dar-
stellung fortfahren kann.
Das Element SCRIPT platziert ein Skript innerhalb eines Dokuments. Diese Element kann belie-
big oft im HEAD oder BODY eines HTML-Dokuments stehen.
Das Skript kann im Inhalt des SCRIPT-Elements definiert werden oder in einer externen Datei.
Ist das src-Attribut nicht angegeben, mssen Benutzerprogramme den Inhalt des Elements als
Skript interpretieren. Besitzt das src-Attribut einen URI-Wert, mssen Benutzerprogramme
den Elementinhalt ignorieren und das Skript ber den URI empfangen. Beachten Sie, dass sich
das charset-Attribut auf die Zeichenkodierung des Skripts bezieht, das durch jenes src-Attribut
angegeben ist; es bezieht sich nicht auf den Inhalt des SCRIPT-Elements.
Anmerkung der bersetzer: Mit der Vorgabe, dass Benutzerprogramme den Ele-
mentinhalt ignorieren mssen, wenn ber das src-Attribut eine externe Skript-Datei
eingebunden wird, weicht diese Spezifikation von @lteren Auffassungen einiger Browser-
anbieter ab. Bevor das src-Attribut in die HTML-Spezifikation aufgenommen wurde,
wurde der Elementinhalt als Alternative fr den Fall betrachtet, dass das Laden der
externen Datei nicht erfolgen kann.
Da viele Autoren diese Betrachtung noch in ihren K=pfen haben drften, sei an dieser
Stelle deutlich darauf hingewiesen, dass dem nicht mehr so ist. Neuere Browser schlie-
ßen sich in ihrem Verhalten inzwischen auch dieser Spezifikation an.
Skripte werden durch Skript-Engines evaluiert, die dem Benutzerprogramm bekannt sein ms-
sen.
Die Syntax von Skriptdaten ist abh@ngig von der Skriptsprache (siehe Abschnitt 6.14).
Da HTML sich nicht auf eine bestimmte Skriptsprache beschr@nkt, mssen Autoren dem
Benutzerprogramm die Sprache jedes einzelnen Skripts explizit mitteilen. Dies kann entweder
durch eine Standard-Deklaration oder durch eine lokale Deklaration geschehen.
Die Standard-Skriptsprache
Autoren sollten die Standard-Skriptsprache fr alle Skripte in einem Dokument durch Angabe
der folgenden META-Deklaration im HEAD festlegen:
„type“ ist darin der Inhaltstyp (siehe Abschnitt 6.7), der die Skriptsprache benennt. Beispiele
fr Werte sind „text/tcl“, „text/javascript“, „text/vbscript“.
Ohne eine META-Deklaration kann der Standard durch den HTTP-Header „Content-Script-
Type“ gesetzt werden:
Content-Script-Type: type
„type“ ist hier ebenfalls ein Inhaltstyp, der die Skriptsprache benennt.
Benutzerprogramme sollten die Standard-Skriptsprache fr ein Dokument anhand der folgen-
den Schritte festlegen (von der h=chsten zur niedrigsten Priorit@t):
1. Spezifiziert eine META-Deklaration „Content-Script-Type“, so bestimmt der letzte im Zei-
chenstrom die Standard-Skriptsprache.
2. Anderenfalls, wenn dein HTTP-Header „Content-Script-Type“ spezifiziert, bestimmt der
letzte im Zeichenstrom die Standard-Skriptsprache.
Dokumente, die keine Informationen zur Standard-Skriptsprache geben und Elemente enthal-
ten, die Skripte fr eingebettete Ereignisse spezifizieren, sind inkorrekt. Benutzerprogramme
k=nnen trotzdem versuchen, inkorrekt angegebene Skripte zu interpretieren, sind jedoch nicht
dazu verpflichtet. Autoren-Tools sollten die Standard-Skriptsprachen-Information erzeugen,
um Autoren dabei zu untersttzen, ungltige Dokumente zu vermeiden.
<edition
[Link]>
</SCRIPT>
</BODY>
</HTML>
Die HTML 4.01- Spezifikation
<edition
[Link]>
muss man dieser Entwicklung noch immer Rechnung tragen. Man darf also nicht unbe-
dingt erwarten, dass mehrere Browser, die vermeintlich eine bestimmte Skriptsprache
untersttzen, dies in der gleichen Weise tun.
Die HTML 4.01- Spezifikation
Die oben aufgelisteten Attribute zur Reaktion auf Ereignisse sind ein Beispiel dafr. Ob
die Reaktionsm=glichkeit auf ein Ereignis fr ein bestimmtes Element implementiert ist,
kann man nicht allgemeingltig sagen. Auch diese Spezifikation, an die sich neuere
Browser durchaus halten, legt fr einige der Attribute nicht definitiv fest, fr welche Ele-
mente sie gelten mssen, sagt nur „fr die meisten“. Als Autor sollte man sich dieser
Tatsache stets bewusst sein, wenn man praxistaugliche Dokumente erstellen m=chte.
Es ist m=glich, eine Aktion mit einer bestimmten Anzahl von Ereignissen zu verknpfen, die auf-
treten, wenn ein Benutzer mit einem Benutzerprogramm interagiert. Jedes der oben aufgefhr-
ten „eingebetteten Ereignisse“ nimmt einen Wert an, der ein Skript ist. Das Skipt wird immer
dann ausgefhrt, wenn das Ereignis fr dieses Element eintritt. Die Syntax der Skriptdaten ist
abh@ngig von der Skriptsprache.
Anmerkung der bersetzer: Um genau zu sein: In der Auflistung oben sind nicht
die „eingebetteten Ereignisse“ selbst aufgefhrt, sondern die Attribute, deren Werte
Skripte darstellen, die bei Eintreten der eingebetteten Ereignisse ausgefhrt werden.
Eingangs dieses Kapitels werden sie korrekt „Attribute fr eingebettete Ereignisse (in-
trinsic event attributes)“ genannt. An dieser Stelle geht man etwas unsauberer, damit
eventuell auch irrefhrend mit dem Begriff um.
Steuerelemente wie INPUT, SELECT, BUTTON, TEXTAREA und LABEL reagieren alle auf bestimmte ein-
gebettete Ereignisse. Stehen diese Elemente nicht innerhalb eines Formulars, k=nnen sie dazu
verwendet werden, die graphische Benutzerschnittstelle des Dokuments aufzuwerten.
Zum Beispiel wollen Autoren vielleicht Schaltfl@chen in ihre Dokumente einbinden, die zwar
kein Formular bertragen, aber dennoch mit einem Server kommunizieren, wenn sie aktiviert
werden.
Die folgenden Bespiele zeigen einige m=gliche Verhaltensweisen von Steuerelementen und
Benutzerschnittstellen, die auf eingebetteten Ereignissen beruhen.
Im folgenden Beispiel ist userName ein erforderliches Textfeld. Versucht der Benutzer, das
Feld zu verlassen, ruft das onblur-Ereignis eine JavaScript-Funktion auf, die best@tigt, dass user-
Name einen gltigen Wert hat.
Anmerkung der bersetzer: Gemeint ist, dass onblur eine Funktion, hier valid-
UserName(), aufgerufen wird, die prft, ob ein gltiger Wert eingegeben wurde. ber
eventuelle Reaktionen auf gltige oder ungltige Eingaben sagt das einfache Beispiel
nichts.
<INPUT NAME="num"
onchange="if (!checkNum([Link], 1, 10))
{[Link]();[Link]();} else {thanks()}"
Hier ist ein JavaScript-Beispiel fr die Ereignisbindung (event binding) in einem Skript. Zuerst
folgt ein einfacher Klick-Handler:
<SCRIPT type="text/javascript">
function my_onload() {
. . .
}
<edition
[Link]>
<SCRIPT type="text/tcl">
proc my_onload {} {
. . .
}
set win [window open "some/other/URI"]
if {$win != ""} {
$win onload my_onload
}
</SCRIPT>
Anmerkung: Beachten Sie, dass „[Link]“ oder ,quivalente Ausdrcke in eingebetteten Event-
Handlern eher ein neues Dokument erzeugen und hineinschreiben als das aktuelle zu ver,ndern. n
Anmerkung der bersetzer: In der Regel funktioniert die Ausfhrung von docu-
[Link]() zur Modifikation des aktuellen Dokuments nur w@hrend das Dokument
zum ersten Mal aufgebaut wird (salopp ausgedrckt: „w@hrend des Ladens“). Falls Sie
das Dokument nachtr,glich ver@ndern wollen, vergessen Sie [Link]() vollkom-
men! In einem solchen Fall ist DOM-Scripting (Document Object Model) angesagt.
Doch das ist ein Thema, das den Rahmen dieser Spezifikation sprengen wrde.
Skripte, die ausgefhrt werden, wenn das Dokument geladen wird, k=nnen in der Lage sein,
den Dokumentinhalt dynamisch zu modifizieren. Die F@higkeit, das zu tun, ist abh@ngig von der
Skriptsprache selbst (zum Beispiel die Angabe „[Link]“ im HTML-Objektmodell, die
von einigen Herstellern untersttzt wird).
Die dynamische Modifikation des Dokuments k=nnte wie folgt ausgefhrt werden:
1. Alle SCRIPT-Elemente werden in der Reihenfolge evaluiert, in der das Dokument geladen
wird.
2. Alle Skripte innerhalb eines gegebenen SCRIPT-Elements, die SGML-konformes CDATA
erzeugen, werden evaluiert. Der generierte Text wird anstelle des SCRIPT-Elements in den
Dokumentinhalt eingefgt.
3. Das erzeugte CDATA wird wieder evaluiert.
HTML-Dokumente mssen konform zu der HTML-DTD sein, sowohl bevor als auch nachdem
irgendein SCRIPT-Element verarbeitet wurde.
Das folgende Beispiel zeigt, wie Skripte ein Dokument dynamisch ver@ndern k=nnen. Das fol-
gende Skript:
<TITLE>Testdokument</TITLE>
<SCRIPT type="text/javascript">
[Link]("<p><b>Hello World!<\/b>")
</SCRIPT>
<TITLE>Testdokument</TITLE>
<p><b>Hello World!</b>
Das Element NOSCRIPT erlaubt es Autoren, alternativen Inhalt anzubieten, wenn ein Skript nicht
ausgefhrt wird. Der Inhalt eines NOSCRIPT-Elements sollte nur in den folgenden F@llen von
einem skriptf@higen Benutzerprogramm dargestellt werden:
·· Das Benutzerprogramm ist so konfiguriert, dass es Skripte nicht evaluiert.
Das Benutzerprogramm untersttzt eine Skriptsprache nicht, die vorher durch ein SCRIPT-
Element im Dokument angefhrt wurde.
Benutzerprogramme, die Client-seitige Skripte nicht untersttzen, mssen den Inhalt dieses
Elements darstellen.
<edition
[Link]>
Im folgenden Beispiel wird ein Benutzerprogramm, welches das SCRIPT ausfhrt, einige dyna-
misch erzeugte Daten in das Dokument einfgen. Untersttzt das Benutzerprogramm keine
Skripte, kann der Benutzer die Daten dennoch ber einen Link beziehen.
Die HTML 4.01- Spezifikation
<SCRIPT type="text/tcl">
...ein Tcl-Skript, um Daten einzufBgen...
</SCRIPT>
<NOSCRIPT>
<P>Zugang zu <A href="[Link]
</NOSCRIPT>
Benutzerprogramme, die das SCRIPT-Element nicht erkennen, werden wahrscheinlich den Inhalt
des Elements als Text darstellen. Einige Skript-Engines, einschließlich der Engines fr die Spra-
chen JavaScript, VBScript und Tcl, gestatten die Angabe der Skriptzeilen in SGML-Kommenta-
ren. Benutzerprogramme, die das SCRIPT-Element nicht erkennen, werden folglich den Kom-
mentar ignorieren, w@hrend clevere Skript-Engines verstehen werden, dass dieses Skript im
Kommentar ausgefhrt werden soll.
Eine weitere L=sung des Problems ist die Speicherung der Skripte in externen Dokumenten
und ihr Aufruf ber das Attribut src.
<SCRIPT type="text/javascript">
<!- - um Skriptinhalt vor alten Browsern zu verstecken
function square(i) {
[Link]("The call passed ", i ," to the function.","<BR>")
return i * i
}
[Link]("The function returned ",square(5),".")
// end hiding contents from old browsers - ->
</SCRIPT>
<SCRIPT type="text/vbscript">
<!- -
Sub foo()
...
End Sub
' - ->
</SCRIPT>
<SCRIPT type="text/tcl">
Anmerkung: Einige Browser schließen Kommentare nach dem ersten „>“-Zeichen. Um Skriptinhalt
vor solchen Browsern zu verbergen, k nnen Sie Operanden in Vergleichs- und Shift-Operationen vertau-
schen (verwenden Sie zum Beispiel „y < x“ statt „x > y“) oder verwenden Sie spezifische Ersatzzeichen
(escapes) der Skriptsprache fr „>“. n
19 SGML-Referenzinformationen f-r
HTML
Die folgenden Abschnitte enthalten die formale SGML-Definition von HTML 4. Dazu geh=ren
die SGML-Deklaration, die Documenttyp-Definition (DTD), die Zeichen-Entity-Referenzen,
sowie ein Beispiel fr einen SGML-Katalog.
Diese Dateien stehen auch im ASCII-Format zur Verfgung:
Default DTD:
[Link]
Transitional DTD:
[Link]
Frameset DTD:
[Link]
SGML-Deklaration:
[Link]
Dateien mit Entity-Definitionen:
[Link]
[Link]
[Link]
Beispielkatalog:
[Link]
<edition
[Link]>
19.1 Dokumentvalidierung
Viele Autoren verlassen sich darauf, ihre Dokumente mit einer kleinen Menge von Browsern
zu testen. Die Annahme ist, dass die Dokumente gltig sind, falls die Browser sie darstellen
Die HTML 4.01- Spezifikation
k=nnen. Bedauerlicherweise ist das eine sehr unzul@ngliche Art die Gltigkeit eines Dokuments
pr@zise zu berprfen. Der Grund ist der, dass die Browser so entworfen wurden, dass sie mit
ungltigen Dokumenten umgehen k=nnen. Sie versuchen die Dokumente so gut wie m=glich
anzuzeigen, um frustrierte Benutzer zu vermeiden.
Zur besseren Validierung sollten Sie ihre Dokumente mit einem SGML-Parser wie nsgmls
(siehe [SP]) prfen, um sicherzustellen, dass Ihre HTML-Dokumente konform zur HTML
4-DTD sind. Falls die Dokumenttyp-Deklaration ihres Dokuments einen URI enth@lt und Ihr
SGML-Parser diese Art von Systembezeichner untersttzt, dann wird er die DTD ber das
Netz laden. Andernfalls k=nnen Sie folgenden SGML-Katalog verwenden. Er nimmt an, dass die
DTD unter dem Namen „[Link]“ gespeichert ist und dass sich die Entities in den Dateien
„[Link]“, „[Link]“ und „[Link]“ befinden. Stellen Sie in jedem Fall
sicher, dass Ihr SGML-Parser in der Lage ist Zeichen gem@ß [ISO10646] zu handhaben. Fr
Details beachten Sie die Dokumentation ihres Validierungswerkzeugs.
Anmerkung der bersetzer: Fr die Prfung einer großen Zahl von HTML-Doku-
menten empfiehlt es sich, einen Parser wie den erw@hnten nsgmls lokal zu installieren.
Fr einzelne Seiten ist der Service des W3C besser geeignet: Unter [Link] k=n-
nen Sie Ihre Dokumente online prfen – nicht nur auf Konformit@t bezglich HTML, son-
dern auch bezglich XHTML, CSS und anderen W3C-Empfehlungen.
Beachten Sie bitte auch, dass eine solche Validierung, obwohl ntzlich und dringend empfohlen,
keine Garantie dafr darstellt, dass ein Dokument konform zur HTML 4-Spezifikation ist. Dies
liegt daran, dass sich ein SGML-Parser einzig und allein auf die vorgegebene SGML-DTD ver-
l@sst, die nicht alle Aspekte eines gltigen HTML 4-Dokuments ausdrckt. Ein SGML-Parser
sichert insbesondere ab, dass die Syntax, die Struktur, die Liste der Elemente und deren Attri-
bute gltig sind. Er kann aber beispielsweise keine Fehler abfangen, wie die Zuweisung des
width-Attributs eines IMG-Elements auf einen ungltigen Wert (zum Beispiel „bla“ oder „12,5“).
Obwohl die Spezifikation den Wert dieses Attributs auf eine ganze Zahl beschr@nkt, die eine
L@nge in Pixeln darstellt, legt die DTD diesen Wert lediglich auf CDATA fest, was praktisch
jeden beliebigen Wert zul@sst. Nur ein spezialisiertes Programm kann die HTML 4-Spezifikation
vollst@ndig erfassen.
Anmerkung der bersetzer: Mittlerweile gibt es neben den DTDs die so genann-
ten XML-Schemata. Sie erlauben zus@tzlich zu den M=glichkeiten, die DTDs er=ffnen,
auch die Definition von Datentypen fr Elementinhalt und Attributwerte. Fr XHTML
gibt es bereits ein Schema und ein schemaf@higer Parser kann damit die Gltigkeit eines
XHTML-Dokuments noch besser prfen als oben beschrieben.
Nichtsdestotrotz ist diese Art der Validierung sehr empfohlen. Sie kann eine große Zahl von
Fehlern finden, die Dokumente ungltig machen.
OVERRIDE YES
<edition
[Link]>
CHARSET
BASESET "ISO Registration Number 177//CHARSET
ISO/IEC 10646-1:1993 UCS-4 with
implementation level 3//ESC 2/5 2/15 4/6"
DESCSET 0 9 UNUSED
9 2 9
11 2 UNUSED
13 1 13
14 18 UNUSED
32 95 32
127 1 UNUSED
128 32 UNUSED
160 55136 160
55296 2048 UNUSED - - SURROGATES - -
57344 1056768 57344
CAPACITY SGMLREF
TOTALCAP 150000
GRPCAP 150000
ENTCAP 150000
SCOPE DOCUMENT
SYNTAX
SHUNCHAR CONTROLS 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 127
BASESET "ISO 646IRV:1991//CHARSET
International Reference Version
(IRV)//ESC 2/8 4/2"
DESCSET 0 128 0
FUNCTION
RE 13
RS 10
SPACE 32
TAB SEPCHAR 9
QUANTITY SGMLREF
ATTCNT 60 -- increased - -
ATTSPLEN 65536 -- These are the largest values --
LITLEN 65536 -- permitted in the declaration --
NAMELEN 65536 -- Avoid fixed limits in actual --
FEATURES
MINIMIZE
DATATAG NO
OMITTAG YES
RANK NO
SHORTTAG YES
LINK
SIMPLE NO
IMPLICIT NO
EXPLICIT NO
OTHER
CONCUR NO
SUBDOC NO
FORMAL YES
APPINFO NONE
>
Die Listings, die sich an der folgenden Stelle in der englischen Online-Fassung befinden, sind vor
allem in elektronischer Form interessant. Sie stehen deshalb auch in der deutschen Online-Fas-
sung zur Verfgung. Zur leichteren Orientierung haben wir die Abschnittberschriften abge-
druckt.
21 Documenttyp-Definition
22 Transitional-
Documenttyp-Definition
23 Frameset-Dokumenttyp-Definition
<edition
[Link]>
24 Zeichen-Entity-Referenzen in
HTML 4
Die HTML 4.01- Spezifikation
Anmerkung der bersetzer: In den weiteren Abschnitten finden Sie die in Men-
gen gruppierten Zeichen-Entities, ihren Namen und eine Beschreibung, allerdings keine
Darstellung. Fr diese bersetzung haben wir Abbildungen angefertigt und damit gleich
einen Browser getestet: Die hier gezeigten Grafiken zeigen Screenshots vom Mozilla-
Browser. Zu sehen sind HTML-Tabellen mit den Entity-Namen und der korrespondie-
renden Darstellung. Da einige Entities Leerraum darstellen, sind die Entity-Referenzen
in eckige Klammern gesetzt. Die Klammern geh=ren also nicht zur Darstellung. Beach-
ten Sie auch, dass in einigen F@llen die Unterl@ngen zu groß erscheinen. Eine Ursache zu
finden oder gar Abhilfe zu schaffen, ist nicht gelungen. Den Grafiken ist zu entnehmen,
dass eine weitgehende, aber keine vollst@ndige Abdeckung der HTML-4-Zeichen-Enti-
ties vorliegt.
Die einzelnen HTML-Tabellenzeilen sehen exemplarisch wie folgt aus:
<tr>
<td class="entname">aacute</td><td class="rendering">[á]</td>
<td class="entname">Aacute</td><td class="rendering">[Á]</td>
<td class="entname">Acirc</td><td class="rendering">[Â]</td>
<td class="entname">acirc</td><td class="rendering">[â]</td>
</tr>
<edition
[Link]>
Die HTML 4.01- Spezifikation
<edition
[Link]>
<edition
[Link]>
<edition
[Link]>
Wann sollte man griechische Entities verwenden? Diese Entity-Menge enth,lt alle Buchsta-
ben, die in modernem Griechisch verwendet werden. Dennoch enth,lt sie weder die griechischen Inter-
punktionszeichen, akzentuierte Zeichen, noch die nicht-trennenden Akzente (tonos, dialytika), die
ben tigt werden, um sie zusammenzusetzen. Es gibt keine altgriechischen Buchstaben, koptischen
Die HTML 4.01- Spezifikation
Buchstaben oder zusammengesetzte Buchstaben fr polytonischen Griechisch. Die hier definierten Enti-
ties sind nicht fr die Repr,sentation moderner griechischer Texte gedacht und sie w,ren auch keine
effiziente Repr,sentation. Statt dessen sind sie fr gelegentliche griechische Buchstaben in technischen
und mathematischen Schriften bestimmt. n
<!- - Relevant ISO entity set is given unless names are newly introduced.
New names (i.e., not in ISO 8879 list) do not clash with any
existing ISO 8879 entity names. ISO 10646 character numbers
are given for each character, in hex. CDATA values are decimal
conversions of the ISO 10646 values and refer to the document
character set. Names are ISO 10646 names.
- ->
<!ENTITY Xi CDATA "Ξ" - - greek capital letter xi, U+039E ISOgrk3 - ->
<!ENTITY Omicron CDATA "Ο" - - greek capital letter omicron, U+039F - ->
<!ENTITY Pi CDATA "Π" - - greek capital letter pi, U+03A0 ISOgrk3 - ->
<!ENTITY Rho CDATA "Ρ" - - greek capital letter rho, U+03A1 - ->
<!- - there is noSigmaf, and no U+03A2 character either - ->
<edition
[Link]>
<edition
[Link]>
<!- - Relevant ISO entity set is given unless names are newly introduced.
New names (i.e., not in ISO 8879 list) do not clash with any
existing ISO 8879 entity names. ISO 10646 character numbers
are given for each character, in hex. CDATA values are decimal
conversions of the ISO 10646 values and refer to the document
character set. Names are ISO 10646 names.
- ->
<edition
[Link]>
A Xnderungen
<edition
[Link]>
Auf den ersten Blick ist das keine große Sache – wer schaut schon die „Page Info“ an?
Interessant ist, dass der Mozilla sich auch unterschiedlich verh@lt: Einer der bersetzer
hatte auf seiner Site eine HTML-Seite, die schon lange „funktionierte“. Es befand sich
jedoch ein kleiner Fehler darin, der dafr sorgte, dass die Seite nicht standardkonform
war. Die Onderung war schnell erledigt, auch gleich der „Aufstieg“ zu XHTML. Doch
nach dem Neuladen im Browser waren alle Formatierungsanweisungen ausgeschaltet!
Es dauerte eine Weile, bis der Grund klar wurde: Mozilla hat in den „Standards compli-
ance mode“ geschaltet. Doch leider wurde vom Server fr die externe CSS-Datei der
falsche MIME-Type „text/plain“ im HTTP-Kopf geschickt. Die XHTML war v=llig in
Ordnung, die CSS-Datei auch, nicht aber die Server-Konfiguration. Mit „defektem“
HTML-Code hat Mozilla diesen Fehler auch toleriert. Im „Standards compliance mode“
l@sst er sich offenkundig nicht alles bieten.
<A href="[Link]
Wir empfehlen, dass Benutzerprogramme in solchen F@llen die folgenden Konventionen zur
Verarbeitung von Nicht-ASCII-Zeichen bernehmen:
1. Jedes Zeichen in UTF-8 (siehe [RFC2279]) als ein oder mehrere Bytes darstellen.
2. Diese Bytes mit dem URI-Ersatzmechanismus ersetzen (d. h., durch Konvertierung jedes
Bytes in %HH, wobei HH eine hexadizimale Schreibweise des Byte-Werts ist).
Dieser Vorgang fhrt zu einem syntaktisch gltigen URI (wie in [RFC1738], Abschnitt 2.2 oder
[RFC2141], Abschnitt 2 definiert), der unabh@ngig von der Zeichenkodierung ist, in die das
HTML-Dokument, das diesen URI enth@lt, umkodiert worden sein kann.
Anmerkung: Einige ,ltere Benutzerprogramme verarbeiten URIs in HTML, indem sie die Bytes der
Zeichenkodierung verwenden, in der das Dokument empfangen wurde. Einige ,ltere HTML-Doku-
mente sind abh,ngig von dieser Praxis und funktionieren nicht, wenn sie umkodiert werden. Benutzer-
programme, die diese ,lteren Dokumente verarbeiten m chten, sollten, wenn sie einen URI empfan-
gen, der Zeichen außerhalb der gltigen Menge enth,lt, zuerst die Konvertierung nach UTF-8 verwen-
den. Nur wenn der resultierende URI nicht aufgel st werden kann, sollten sie versuchen, einen URI auf
Grundlage der Bytes der Zeichenkodierung zu erzeugen, in der das Dokument empfangen wurde. n
Anmerkung: Die gleiche Konvertierung auf Grundlage von UTF-8 sollte auch auf Werte des Attri-
buts name des Elements A angewandt werden. n
Der URI, der erzeugt wird, wenn ein Formular bertragen wird, k=nnte als ein Ankerlink (z. B.
Attribut href des Elements A) verwendet werden. Leider beißt sich die Verwendung des Zei-
chens „&“ zur Trennung von Formularfeldern mit seiner Verwendung in SGML-Attributwerten
zur Begrenzung von Entity-Zeichenreferenzen. Um zum Beispiel den URI „[Link]
?x=1&y=2“ als einen Link-URI zu verwenden, muss er <A href="[Link]
oder <A href="[Link] geschrieben werden.
Wir empfehlen, dass Entwickler von HTTP-Servern, und insbesondere CGI-Entwickler die Ver-
wendung von „;“ anstatt von „&“ untersttzen, um Autoren den Orger zu ersparen, „&“-Zei-
chen auf diese Weise zu ersetzen.
<edition
[Link]>
SGML (siehe [ISO8879], Abschnitt 7.6.1) gibt an, dass ein Zeilenumbruch, der direkt auf einen
Start-Tag folgt, ignoriert werden muss, genau wie ein Zeilenumbruch direkt vor einem End-Tag.
Dies gilt ohne Ausnahme fr alle HTML-Elemente.
Die beiden folgenden HTML-Beispiele mssen identisch dargestellt werden:
<P>
Thomas schaut TV.
</P>
<A>Meine Lieblings-Web-Site</A>
<A>
Meine Lieblings-Web-Site
</A>
Skript- und Formatierungsdaten k=nnen als Elementinhalt oder als Attributwerte erscheinen.
Die folgenden Abschnitte beschreiben die Grenzen zwischen HTML-Quelltext und Fremd-
daten.
Anmerkung: Die DTD definiert, dass Skript- und Formatierungsdaten sowohl fr Elementinhalt als
auch fr Attributwerte CDATA sein mssen. SGML-Regeln gestatten keine Zeichenreferenzen in CDA-
TA-Elementinhalt, erlauben sie jedoch in CDATA-Attributwerten. Autoren sollten besonders aufmerk-
sam sein, wenn Skript- und Formatierungsdaten zwischen Elementinhalt und Attributwerten aus-
getauscht (ausgeschnitten und eingefgt) werden.
Diese Asymetrie bedeutet auch, dass das Programm zur Umkodierung, wenn es von einer reichhaltige-
ren zu einer weniger Zeichen enthaltenden Zeichenkodierung transformiert, nicht einfach Zeichen in
Skript- oder Styledaten, die es nicht umformen kann, mit der entsprechenden numerischen Zeichenre-
ferenz ersetzen kann; es muss das HTML-Dokument parsen und jede Syntax einer Skript- und Forma-
tierungssprache kennen, um die Daten richtig zu verarbeiten. n
Elementinhalt
Wenn der Inhalt eines Elements aus Skript- oder Formatdaten (SCRIPT und STYLE) besteht,
beginnen die Daten direkt nach dem Start-Tag des Elements und enden vor dem ersten ETA-
GO-Begrenzer („</“), gefolgt von einem Namensbeginn-Zeichen ([a-zA-Z]); beachten Sie, dass
dies eventuell nicht der End-Tag des Elements ist. Autoren sollten „</“ deshalb im Inhalt erset-
zen. Ersetzungsmechanismen sind fr jede Skript- oder Stylesheet-Sprache spezifisch.
In JavaScript k=nnte dieser Code durch Verstecken des ETAGO-Begrenzers vor einem SGML-
eigenen Namensbeginn-Zeichen gltig formuliert werden:
<SCRIPT type="text/javascript">
[Link] ("<EM>Dies wird funktionieren<\/EM>")
</SCRIPT>
<SCRIPT type="text/tcl">
document write "<EM>Dies wird funktionieren<\/EM>"
</SCRIPT>
In VBScript k=nnte das Problem mit der Funktion Chr() vermieden werden:
Attributwerte
Sind Skript- oder Formatierungsdaten Wert eines Attributs (entweder style oder Attribute
eingebetteter Ereignisse), sollten Autoren das Vorkommen des zur Begrenzung des Attribut-
werts benutzten einfachen oder doppelten Anfhrungszeichens innerhalb des Wertes entspre-
chend den Konventionen der Skript- oder Stylesheet-Sprache schtzen (escape). Autoren soll-
ten auch das „&“ schtzen, wenn es nicht als Beginn einer Zeichenreferenz gedacht ist.
·· „"“ sollte als „"“ oder „"“ notiert werden
„&“ sollte als „&“ oder „&“ notiert werden
Deshalb kann man zum Beispiel schreiben:
Von SGML-Systemen, die konform zu [ISO8879] sind, wird erwartet, dass sie viele Eigenschaf-
ten erkennen, die von HTML-Benutzerprogrammen nur sp@rlich untersttzt werden. Wir emp-
fehlen Autoren, die Verwendung all dieser Eigenschaften zu vermeiden.
<edition
[Link]>
Autoren sollten sich dessen bewusst sein, dass viele Benutzerprogramme nur die minimierte
Form der Booleschen Attribute erkennen, nicht die vollst@ndige Form.
Die HTML 4.01- Spezifikation
<OPTION selected>
An Stelle von:
<OPTION selected="selected">
Markierte Abschnitte spielen eine @hnliche Rolle wie das #ifdef-Konstrukt, das von Pr@prozes-
soren der Programmiersprache C erkannt wird.
<![INCLUDE[
<!- - dies wird eingeschlossen - ->
]]>
<![IGNORE[
<!- - dies wird ausgeschlossen - ->
]]>
SGML definiert ebenso die Verwendung von markierten Abschnitten fr CDATA-Inhalt, inner-
halb dessen "<" nicht als Beginn eines Tags behandelt wird, z. B.:
<![CDATA[
<Ein> Beispiel mit <sgml>-Markup, in dem <ohne Bedenken>
ein < und solche Dinge geschrieben werden k^nnen.
]]>
Ein Anzeichen dafr, dass ein Benutzerprogramm einen markierten Abschnitt nicht erkennt, ist
das Auftauchen der Zeichen „]]>“, die angezeigt werden, wenn das Benutzerprogramm irrtm-
licherweise das erste „>“-Zeichen als Ende des Tags ansieht, der mit „<![“ beginnt.
<?instruction >
<?instruction ?>
Zum Beispiel:
<?>
<?style tt = font courier>
<?page break>
Autoren sollte bewusst sein, dass viele Benutzerprogramme Arbeitsanweisungen als Teil des
Dokumenttextes darstellen.
Einige SHORTTAG-Konstrukte von SGML sparen Tipparbeit, fgen der SGML-Anwendung aber
keine ausdrucksvolle F@higkeit hinzu. Auch wenn diese Konstrukte technisch gesehen keine
Zweideutigkeit einfhren, reduzieren sie die Robustheit eines Dokuments, besonders wenn die
Sprache erweitert wurde, um neue Elemente einzuschließen. W@hrend SHORTTAG-Konstrukte in
SGML, die sich auf Attribute beziehen, verbreitet verwendet werden und implementiert sind,
sind es jene, die sich auf Elemente beziehen, nicht. Dokumente, die sie verwenden, sind kon-
forme SGML-Dokumente, jedoch arbeiten sie wahrscheinlich nicht mit den meisten existieren-
den HTML-Werkzeugen zusammen.
Anmerkung der bersetzer: Nicht nur wegen obiger Begrndung sollten Sie alle
SHORTTAGs vergessen: In XML gibt es sie nicht mehr.
· Geschlossenes Start-Tag:
<name1<name2>
· Leeres Start-Tag:
<>
· Leeres End-Tag:
</>
<edition
[Link]>
<LINK rel="alternate"
type="text/html"
href="[Link]" hreflang="fr"
lang="fr" title="La vie souterraine">
<LINK rel="alternate"
type="text/html"
href="[Link]" hreflang="de"
lang="de" title="Das Leben im Untergrund">
<LINK rel="start"
type="text/html"
href="[Link]"
title="Allgemeine Relativit]tstheorie">
B.4.1 Such-Robots
Die Robots werden nur nach einem „/[Link]“-URI auf Ihrer Seite schauen, wenn der Web-
auftritt als ein HTTP-Server definiert ist, der auf einem bestimmten Host und einer bestimmten
Port-Nummer l@uft. Hier sind einige Beispielorte fr [Link]:
Es kann nur eine „/[Link]“ fr eine Site geben. Speziell sollten Sie „[Link]“-Dateien
nicht in Benutzerverzeichnissen ablegen, weil ein Robot niemals nach ihnen suchen wird. M=ch-
ten Sie, dass Ihre Benutzer in der Lage sind, ihre eigene „[Link]“ zu erzeugen, werden sie
all diese in einer einzigen „/[Link]“ zusammenfgen mssen. M=chten Sie dies nicht tun,
k=nnten Ihre Benutzer stattdessen vielleicht das META-Tag fr Robots verwenden.
Einige Tipps: URIs unterscheiden zwischen Groß- und Kleinschreibung, „/[Link]“ muss voll-
kommen in Kleinbuchstaben vorliegen. Leere Zeilen sind innerhalb eines Einzeleintrags in der
Datei „[Link]“ nicht gestattet.
Es muss genau ein Feld „User-agent“ pro Eintrag geben. Die Robots sollten großzgig in der
Interpretation dieses Feldes sein. Es wird empfohlen, einen Treffer als gltig anzusehen, wenn
eine Teilzeichenfolge des Namens unabh@ngig von Groß- und Kleinschreibung und Versio-
nsinformationen gefunden wird.
Ist der Wert „*“, beschreibt der Eintrag die Standard-Grunds@tze fr den Zugriff fr alle
Robots, die nicht einem der anderen Eintr@ge entsprechen. Mehrere Eintr@ge dieser Art sind in
der Datei „[Link]“ nicht gestattet.
Das Feld „Disallow“ gibt einen Teil-URI an, der nicht besucht werden darf. Dies kann ein voll-
st@ndiger Pfad oder ein Teilpfad sein; jeder URI, der mit diesem Wert beginnt, wird nicht abge-
rufen. Zum Beispiel,
<edition
[Link]>
Ein leerer Wert fr „Disallow“ zeigt an, dass alle URIs abgerufen werden k=nnen. Zumindest
ein „Disallow“-Feld muss in der Datei „[Link]“ vorhanden sein.
Anmerkung der bersetzer: Hier noch einmal ein Beispiel, das die aktuelle Vor-
Die HTML 4.01- Spezifikation
User-Agent: *
Disallow: /nur_meinrobot/
Disallow:
User-Agent: meinrobot
Disallow:
Im ersten Eintrag wird allen Robots („*“) der Zugang zum Verzeichnis nur_meinrobot
verwehrt, der Zugang zu allen anderen Verzeichnisse ist durch Angabe die von
Disallow: ohne weiteren Parameter gestattet. Die folgende Leerzeile trennt den ersten
Eintrag vom zweiten. Im zweiten Eintrag wird dem Robot meinrobot der Zugang zu allen
Verzeichnissen gestattet. Die Angabe aus dem ersten Eintrag wird hiermit fr diesen
Robot außer Kraft gesetzt.
Die Liste der Begriffe „content“ ist ALL, INDEX, NOFOLLOW, NOINDEX.
Anmerkung: Anfang 1997 implementierten dies nur wenige Robots, aber es wird erwartet, dass sich
das ,ndert, da der Kontrolle von indexierenden Robots mehr ffentliche Aufmerksamkeit geschenkt
wird. n
Das HTML-Tabellenmodell hat sich aus Studien der existierenden SGML-Tabellenmodelle, der
Behandlung von Tabellen in bekannten Textverarbeitungsprogrammen und einer Vielfalt tabel-
larischer Layout-Techniken in Magazinen, Bchern und anderen auf Papier basierenden Doku-
menten entwickelt. Das Modell wurde ausgesucht, um einfache Tabellen einfach ausdrcken zu
k=nnen, mit zus@tzlich verfgbarer Komplexit@t, wenn notwendig. Dies macht die Erzeugung
von Quellcode fr HTML-Tabellen mit allt@glichen Texteditoren praktikabel und reduziert die
Lernkurve, um die ersten Schritte zu vollziehen. Diese Eigenschaft ist sehr wichtig fr den
Erfolg gewesen, den HTML heute hat.
Benutzer erzeugen Tabellen zunehmend durch Konvertierung aus anderen Dokumentformaten
Dynamisches Umformatieren
Eine weitreichende berlegung fr das HTML-Tabellenmodell ist, dass der Autor nicht kontrol-
liert, in welcher Gr=ße ein Benutzer eine Tabelle anzeigt, welche Schriftart er w@hlt und so
weiter. Dies gestaltet es riskant, sich auf Spaltenbreiten zu verlassen, die in absoluten Pixeln
angegeben sind. Stattdessen mssen Tabellen in der Lage sein, Gr=ßen dynamisch zu ver@ndern,
um sich der aktuelle Fenster und der Schrifgr=ße anzupassen. Autoren k=nnen Beratung anbie-
ten die relative Breiten von Spalten betreffend, jedoch sollten Benutzerprogramme sicherstel-
len, dass Spalten breit genug sind, um die Breite des gr=ßten Elements im Inhalt der Zelle dar-
zustellen. Muss die Angabe des Autors berschrieben werden, sollten relative Breiten individu-
eller Spalten nicht drastisch ver@ndert werden.
Inkrementelle Darstellung
Inkrementelle Tabellendarstellung ist bei großen Tabellen oder langsamen Netzwerkverbindun-
gen wichtig fr die Benutzerzufriedenheit. Benutzerprogramme sollten in der Lage sein, eine
Tabelle darzustellen, bevor alle Daten empfangen worden sind. Die voreingestellte Fenster-
breite fr die meisten Benutzerprogramme ist ungef@hr 80 Zeichen und die Graphiken fr
HTML-Seiten werden mit diesen Werten im Hinterkopf erzeugt. Durch die Angabe der Anzahl
der Spalten und durch Einbeziehung von Festlegungen zur Kontrolle der Tabellenbreite und
der Breite verschiedener Spalten k=nnen Autoren den Benutzerprogrammen Hinweise geben,
die eine inkrementelle Darstellung des Tabelleninhalts gestatten.
Zur inkrementellen Darstellung braucht der Browser die Anzahl der Spalten und ihre Breite.
Die Standardreite ist die aktuelle Fensterbreite (width="100%"). Dies kann durch Angabe des
Attributs width des Elements TABLE ver@ndert werden. Standardm@ßig haben alle Spalten die
gleiche Breite, Sie k=nnen jedoch Spaltenbreiten ber ein oder mehrere COL-Elemente angeben,
bevor die Tabellendaten anfangen.
Die verbleibende Frage ist die nach der Anzahl der Spalten. Einige Leute haben vorgeschlagen
zu warten, bis die erste Zeile der Tabelle empfangen wird, aber das k=nnte eine lange Zeit dau-
ern, wenn die Zellen umfassenden Inhalts sind. Im Endeffekt macht es mehr Sinn, sofern inkre-
mentelle Darstellung erwnscht ist, Autoren dazu zu bewegen, die Anzahl der Spalten im Ele-
ment TABLE explizit anzugeben.
Autoren ben=tigen noch eine M=glichkeit, dem Benutzerprogramm mitzuteilen, ob inkreme-
telle Darstellung verwendet wird, oder ob die Tabelle automatisch angepasst werden soll, um
den Zellinhalt aufzunehmen. Im Modus der automatischen Gr=ßenbestimmung mit zwei Durch-
l@ufen wird die Anzahl der Spalten im ersten Durchlauf bestimmt. Im inkrementellen Modus
muss die Anzahl der Spalten zuerst festgelegt werden (mit den Elementen COL oder COLGROUP).
<edition
[Link]>
Text innerhalb der Tabellenzellen und der Trennlinien zwischen Zellen ein Darstellungspro-
blem, kein Strukturproblem. Auf der praktischen Seite ist es aber ntzlich, diese mit den struk-
turellen Informationen zu gruppieren, weil diese Eigenschaften sehr einfach von einer Anwen-
dung zur n@chsten portiert werden k=nnen. Das HTML-Tabellenmodell berl@sst die meisten
Darstellungsinformationen verknpften Stylesheets. Das Modell, das in dieser Spezifikation pr@-
sentiert wird, ist entworfen worden, um den Vorteil solcher Stylesheets zu nutzen, sie aber
nicht zu erfordern.
Aktuelle Desktop-Publishing-Software erlaubt eine diffizile Kontrolle ber die Darstellung von
Tabellen, und es w@re nicht m=glich, diese in HTML zu reproduzieren, ohne aus HTML ein
sperriges Rich-Text-Format zu machen wie RTF oder MIF. Diese Spezifikation bietet Autoren
jedoch die M=glichkeit, aus einer Menge verbreiteter Klassen von Rahmenformaten zu w@hlen.
Das Attribut frame kontrolliert die Darstellung von Rahmen um eine Tabelle herum, w@hrend
das Attribut rules die Wahl der Trennlinien innerhalb der Tabelle bestimmt. Eine feinere Kont-
rolle wird ber Formatierungsanweisungen untersttzt. Das Attribut style kann zur Angabe
von Formatierungsinformationen fr individuelle Elemente verwendet werden. Weitere For-
matierungsinformationen k=nnen ber das Element STYLE im Dokumentkopf oder ber ver-
linkte Stylesheets angegeben werden.
W@hrend der Entwicklung dieser Spezifikation wurden einige Wege beschritten, die Linierungs-
muster fr Tabellen zu spezifizieren. Eine Frage betrifft die Art der Angaben, die gemacht wer-
den k=nnen. Untersttzung fr die Entfernung und den Zusatz von Eckzellen einzufgen, fhrt
zu relativ komplexen Algorithmen. Zum Beispiel fhrte die Arbeit, allen Tabellenelementen die
Untersttzung der Attribute frame und rules zu gestatten, zu einem Algorithmus, der 24
Schritte einschloss, um zu bestimmen, ob eine bestimmte Ecke einer Zelle mit Linien versehen
werden sollte oder nicht. Selbst diese zus@tzliche Komplexit@t bietet nicht genug Darstellungs-
kontrolle, um den vollen Umfang der Erfordernisse von Tabellen zu befriedigen. Die aktuelle
Spezifikation bezieht sich absichtlich auf ein einfaches intuitives Modell, das fr die meisten
Zwecke ausreicht. Weitere experimentelle Arbeit wird ben=tigt, bevor ein komplexerer
Anlauf standardisiert wird.
ten platziert. Dies ist eine Optimierung, die mit CALS geteilt wird, um mit sehr langen Tabellen
zurechtzukommen. Damit ist die Darstellung des Fußes gestattet, ohne auf die Verarbeitung
der gesamten Tabelle warten zu mssen.
Wenn die Elemente COL oder COLGROUP vorhanden sind, geben sie die Anzahl der Spalten an, und
die Tabelle kann eventuell mit einem festen Layout dargestellt werden. Ansonsten sollte der
automatische Layout-Algorithmus verwendet werden, der weiter unten beschrieben ist.
Ist das Attribut width nicht angegeben, sollten visuelle Benutzerprogramme einen voreingestell-
ten Wert von 100% fr die Formatierung annehmen.
Es wird empfohlen, dass Benutzerprogramme die Tabellenbreite ber den mit width angegebe-
nen Wert hinaus erh=hen, weil der Zellinhalt sonst berlaufen wrde. Benutzerprogramme,
die die angegebene Breite berschreiben, sollten dies in einem vernnftigen Rahmen tun.
Benutzerprogramme k=nnen sich entscheiden, Worte auf mehrere Zeilen aufzuteilen, um die
Notwendigkeit berm@ßiger horizontaler Scrollbewegungen zu vermeiden, oder wenn solch
eine Scrollbewegung unm=glich oder nicht erwnscht ist.
Um des Layouts Willen sollten Benutzerprogramme bedenken, dass sich Tabellenberschriften
(angegeben durch das Element CAPTION) wie Zellen verhalten. Jede berschrift ist eine Zelle,
die sich ber alle Spalten der Tabelle erstreckt, wenn sie sich oberhalb oder unterhalb der
Tabelle befindet, und ber alle Zeilen, wenn sie links oder rechts der Tabelle ist.
<edition
[Link]>
k=nnte zum berlaufen des Zellinhalts fhren. Es wird empfohlen, dass Benutzerprogramme
versuchen, sich aus diesen Situationen elegant herauszuwinden, z. B. durch Silbentrennung und
Umverteilung in zu trennende Worte, wenn Silbentrennpunkte nicht bekannt sind.
Fr den Fall, dass ein nicht teilbares Element einen Zellberlauf verursacht, sollte das Benutzer-
Die HTML 4.01- Spezifikation
programm erw@gen, die Spaltenbreite anzupassen und die Tabelle neu aufzubauen. Im
schlimmsten Fall sollte das Abschneiden des Inhalts erwogen werden, wenn eine Anpassung
der Spaltenbreite und/oder scrollbarer Zellinhalt nicht m=glich sind. In jedem Fall sollte dem
Benutzer die Trennung oder ein Abschneiden von Zellinhalt in angemessener Weise angezeigt
werden.
Tabellenrahmen und R@nder zwischen Zellen mssen in die Verteilung der Spaltenbreiten mit
eingeschlossen werden. Es gibt drei F@lle:
1. Die minimale Tabellenbreite ist gleich oder grUßer als der verf-gbare Raum. In
diesem Fall weise die minimale Breite zu und gestatte dem Benutzer horizontal zu scrollen.
Wahl der Attributnamen: Es w,re besser gewesen, die Werte fr das Attribut frame mit dem
rules-Attribut und den Werten fr die Ausrichtung abzustimmen. Zum Beispiel: none, top, bottom,
topbot, left, right, leftright, all. Leider fordert SGML von Attributwerten des Aufz,hlungstyps in
<edition
[Link]>
jedem Element eindeutig zu sein, unabh,ngig vom Attributnamen. Dies verursacht unmittelbare Prob-
leme fr none, left, right und all. Die Werte fr das Attribut frame sind ausgew,hlt worden, um Kolli-
sionen mit den Attributen rules, align und valign zu verhindern. Hieran wird sich die zuknftige
Arbeit messen lassen, weil erwartet wird, dass die Attribute frame und rules zu anderen Tabellenele-
Die HTML 4.01- Spezifikation
menten in zuknftigen Revisionen dieser Spezifikation hinzugefgt werden. Eine Alternative w,re, aus
frame ein CDATA-Attribut zu machen. Der Konsens der W3C HTML Working Group war jedoch, dass
die Vorteile, SGML-Validierung fr Attribute des Aufz,hlungstyps nutzen zu k nnen, dem Nutzen der
konsistenten Namen berwiegen. n
Die inkrementelle Darstellung ber das Netz empfangener Dokumente, verursacht bestimmte
Probleme in Bezug auf Formulare. Benutzerprogramme sollten Formulare davor bewahren,
bertragen (submitted) zu werden, bevor alle Formularelemente empfangen worden sind.
Die inkrementelle Darstellung von Dokumenten wirft einige Probleme in Bezug auf die Tabula-
tor-Navigation auf. Das Verfahren, den Fokus auf den niedrigsten tabindex-Wert im Dokument
zu lenken, scheint auf den ersten Blick vernnftig zu sein. Jedoch bedeutet dies, zu warten, bis
der gesamte Dokumenttext empfangen wurde, weil sich bis zu diesem Zeitpunkt der niedrigste
tabindex-Wert immer noch @ndern kann. Drckt der Benutzer die Tab-Taste vorher, ist es
angemessen, dass Benutzerprogramme den Fokus auf das aktuell niedrigste tabindex lenken.
Sind Formulare mit Client-seitigen Skripten verbunden, gibt es weiteres Potenzial fr Probleme.
Zum Beispiel kann sich ein Skript-Handler auf ein gegebenes Feld beziehen, das noch nicht exis-
tiert.
Diese Spezifikation definiert bestimmte Elemente und Attribute, die leistungsstark genug sind,
um die allgemeinen Anforderungen fr die Erstellung von Formularen zu erfllen. Jedoch gibt
es noch genug Raum fr viele m=gliche Verbesserungen. Zum Beispiel k=nnten in Zukunft die
folgenden Probleme aufgegriffen werden:
· Das Spektrum der Formularfeldtypen ist im Vergleich zu modernen Benutzerschnittstellen
zu begrenzt. Zum Beispiel gibt es keine M=glichkeit fr tabellarische Dateneintr@ge, Kartei-
reiter oder mehrere Seiten-Layouts.
· Server k=nnen die Felder in einem bertragenen Formular nicht aktualisieren und mssen
stattdessen ein komplettes HTML-Dokument schicken, das Bildschirmflackern verursacht.
· Fr sprachbasierte Browser bringt dies ebenfalls Probleme mit sich. Sehbehinderte Per-
sonen haben es deshalb schwer, mit HTML-Formularen zu interagieren.
Eine weitere m=gliche Erweiterung w@re, das Attribut usemap zum Element INPUT als Client-sei-
tige Imagemap hinzuzufgen, wenn type=\;image\( gesetzt ist. Das Element AREA, das zu dem
angeklickten Ort geh=rt, wrde den an den Server zu sendenden Wert liefern. Um zu vermei-
den, Serverskripte zu ver@ndern, ist es eventuell angemessen, AREA zu erweitern, so dass es
x- und y-Werte fr die Verwendung mit dem Element INPUT anbietet.
MISSBILLIGTES BEISPIEL:
Hier sind einige Beispiele, die JavaScript verwenden. Das erste ver@ndert die Hintergrundfarbe wahllos.
<BODY bgcolor='&{randomrgb};'>
Vielleicht m=chten Sie den Hintergrund fr die abendliche Betrachtung abdunkeln:
Das n@chste Beispiel verwendet JavaScript, um die Koordinaten fr eine Client-seitige Image-
map anzugeben:
<MAP NAME=foo>
<AREA shape="rect" coords="&{myrect(imageuri)};" href="&{myuri};" alt="">
</MAP>
Dieses Beispiel gibt die Gr=ße einer Graphik entsprechend den Dokumenteigenschaften an:
Sie k=nnen den URI fr einen Verweis oder ein Bild durch ein Skript angeben:
<SCRIPT type="text/javascript">
function manufacturer(widget) {
<edition
[Link]>
...
}
function location(manufacturer) {
...
}
Die HTML 4.01- Spezifikation
function logo(manufacturer) {
...
}
</SCRIPT>
<A href='&{location(manufacturer("widget"))};'>widget</A>
<IMG src='&{logo(manufacturer("widget"))};' alt="logo">
Dieses letzte Beispiel zeigt, wie SGML-CDATA-Attribute mit einfachen oder doppelten Anfh-
rungszeichen eingefasst werden k=nnen. Verwenden Sie einfache Anfhrungszeichen um eine
Attributzeichenkette herum, dann k=nnen Sie doppelte Anfhrungszeichen als Teil der Attri-
butzeichenkette verwenden. Eine andere M=glichkeit ist, die Zeichenkette " fr Anfh-
rungszeichen zu benutzen:
Anmerkung der bersetzer: Im Beispiel oben wird die vielleicht etwas verwir-
rende Formulierung „Attributzeichenkette“ verwendet. An anderer Stelle wird
diese auch als Attributwert oder Wert bezeichnet.
· Web Content Accessibility Guidelines ([WCGL]) fr Autoren und Verwalter von Websei-
ten. Bitte lesen Sie die Web Content Accessibility Guidelines, um Informationen ber die
Angabe von alternativem Text fr Bilder, Applets, Skripte und so weiter zu bekommen.
· User Agent Accessibility Guidelines ([UAGL]) fr Entwickler von Benutzerprogrammen
<edition
[Link]>
Ein Benutzerprogramm sollte keine Datei absenden, die der Benutzer nicht vorher ausdrcklich
zur Absendung ausgew@hlt hat. Deshalb wird von Benutzerprogrammen erwartet, jeden vor-
Die HTML 4.01- Spezifikation
eingestellten Dateinamen zu best@tigen, der durch das Attribut value des Elements INPUT vor-
geschlagen sein k=nnte. Versteckte Kontrollelemente drfen keine Dateien angeben.
Diese Spezifikation enth@lt keinen Mechanismus zur Verschlsselung von Daten; dies sollte von
irgendwelchen anderen Mechanismen vorgesehen werden, die gerade fr eine sichere bertra-
gung zur Verfgung stehen.
Wurde eine Datei hochgeladen, sollte das verarbeitende Programm sie verarbeiten und ent-
sprechend speichern.
Quellen
Normative Quellen
[CSS1]
„Cascading Style Sheets, level 1“, H. W. Lie and B. Bos, 17 December 1996. Revised 11
January 1999. This document is [Link]
[DATETIME]
„Date and Time Formats“, W3C Note, M. Wolf and C. Wicksteed, 15 September 1997.
Revised 27 August 1998. This document is [Link]
datetime-19980827
[HTML40]
„HTML 4.0 Specification“, D. Raggett, A. Le Hors, I. Jacobs. The 24 April 1998 version is
[Link] The 24 April version included
editorial changes from the original 18 December 1997 Revision.
[IANA]
„Assigned Numbers“, STD 2, RFC 1700, USC/ISI, J. Reynolds and J. Postel, October 1994.
[ISO639]
„Codes for the representation of names of languages“, ISO 639:1988. For more informa-
tion, consult [Link] Refer also to [Link]
cover/[Link].
[ISO3166]
„Codes for the representation of names of countries“, ISO 3166:1993.
[ISO8601]
„Data elements and interchange formats – Information interchange – Representation of
dates and times“, ISO 8601:1988.
[ISO8879]
„Information Processing – Text and Office Systems – Standard Generalized Markup
Language (SGML)“, ISO 8879:1986. Please consult [Link] for
information about the standard.
[ISO10646]
„Information Technology – Universal Multiple-Octet Coded Character Set (UCS) – Part 1:
Architecture and Basic Multilingual Plane“, ISO/IEC 10646-1:1993. This reference refers to
a set of codepoints that may evolve as new characters are assigned to them. This reference
<edition
[Link]>
[SRGB]
„A Standard Default color Space for the Internet“, version 1.10, M. Stokes, M. Anderson,
S. Chandrasekar, and R. Motta, 5 November 1996. This document is [Link]
Graphics/Color/sRGB
Die HTML 4.01- Spezifikation
[UNICODE]
The Unicode Consortium. „The Unicode Standard, Version 3.0“, Reading, MA, Addison-
Wesley Developers Press, 2000. ISBN 0-201-61633-5. Refer also to [Link]
[Link]/unicode/standard/versions/.
[URI]
„Uniform Resource Identifiers (URI): Generic Syntax“, T. Berners-Lee, R. Fielding, L. Masin-
ter, August 1998. Note that RFC 2396 updates [RFC1738] and [RFC1808].
[WEBSGML]
„Final text of revised TC2 to ISO 8879:1986“, C. F. Goldfarb, ed., 6 December 1998.
Informelle Quellen
[ATGL]
„Authoring Tool Accessibility Guidelines“, J. Treviranus, J. Richards, I. Jacobs, C. McCathie-
Nevile, eds. The latest Working Draft of these guidelines for designing accessible authoring
tools is available at [Link]
[BRYAN88]
„SGML: An Author's Guide to the Standard Generalized Markup Language“, M. Bryan,
Addison-Wesley Publishing Co., 1988.
[CALS]
Continuous Acquisition and Life-Cycle Support (CALS). CALS is a Department of Defense
strategy for achieving effective creation, exchange, and use of digital data for weapon sys-
tems and equipment. More information can be found on the CALS home page.
[CHARSETS]
Registered charset values. Download a list of registered charset values from [Link]
in-notes/iana/assignments/character-sets.
[CSS2]
„Cascading Style Sheets, level 2“, B. Bos, H. W. Lie, C. Lilley, and I. Jacobs, 12 May 1998.
This document is [Link]
[DCORE]
The Dublin Core. For more information refer to [Link]
[ETHNO]
„Ethnologue, Languages of the World“, 12th Edition, Barbara F. Grimes editor, Summer
Institute of Linguistics, October 1992.
[GOLD90]
„The SGML Handbook“, C. F. Goldfarb, Clarendon Press, 1991.
[HTML30]
„HyperText Markup Language Specification Version 3.0“, D. Raggett, September 1995. This
document is [Link]
[HTML32]
„HTML 3.2 Reference Specification“, D. Raggett, 14 January 1997. This document is
[Link]
[HTML3STYLE]
„HTML and Style Sheets“, B. Bos, D. Raggett, and H. Lie, 24 March 1997. This document is
[Link]
[LEXHTML]
<edition
[Link]>
[SQ91]
„The SGML Primer“, 3rd Edition, SoftQuad Inc., 1991.
[TAKADA]
„Multilingual Information Exchange through the World-Wide Web“, Toshihiro Takada,
Die HTML 4.01- Spezifikation
Computer Networks and ISDN Systems, Vol. 27, No. 2, pp. 235-241, November 1994.
[UAGL]
„User Agent Accessibility Guidelines“, J. Gunderson and I. Jacobs, eds. The latest Working
Draft of these guidelines for designing accessible user agents is available at
[Link]
[WAI]
Guidelines for designing accessible HTML documents are available at the Web Accessibility
Initiative (WAI) Web site: [Link]
[WCGL]
„Web Content Accessibility Guidelines 1.0“, W. Chisholm, G. Vanderheiden, and I. Jacobs,
eds., 5 May 1999. This document is [Link]
TENT-19990505.
[VANH90]
„Practical SGML“, E. van Herwijnen, Kluwer Academic Publishers Group, Norwell and
Dordrecht, 1990.
[XHTML]
„XHTML[tm] 1.0: The Extensible HyperText Markup Language“, S. Pemberton et al. The
latest version of this specification is available at [Link] As of the
publication of the current document, XHTML 1.0 is a W3C Proposed Recommendation.
<edition
[Link]>
MENU M T Menliste
META V L Metainformation
NOFRAMES F Alternativer Inhaltscontainter fr Frame-lose Darstellung
NOSCRIPT Alternativer Inhaltscontainter fr Script-freie Darstellung
OBJECT eingebettetes Objekt
OL Geordnete Liste (ordered list)
OPTGROUP Auswahlgruppe (option group)
OPTION O ausw@hlbare Option
< 347 >
P O Absatz (paragraph)
PARAM V L Wert einer benannten Eigenschaft
<edition
[Link]>
Types; Upload
accesskey A, AREA, BUTTON, INPUT, %Charac- #IMPLIED Zugriffstaste
LABEL, LEGEND, TEXTAREA ter;
action FORM %URI; #REQUI- Server-seitige Formularauswertung
RED
align CAPTION %CAlign; #IMPLIED M T relativ zur Tabelle
align APPLET, IFRAME, IMG, %IAlign; #IMPLIED M T vertikale oder horizontale Ausrich-
INPUT, OBJECT tung
align LEGEND %LAlign; #IMPLIED M T relativ zum Fieldset
< 349 >
<edition
[Link]>
char)
alink BODY %Color; #IMPLIED M T Farbe eines ausgew@hlten Links
alt APPLET %Text; #IMPLIED M T kurze Beschreibung
alt AREA, IMG %Text; #REQUI- kurze Beschreibung
RED
alt INPUT CDATA #IMPLIED kurze Beschreibung
archive APPLET CDATA #IMPLIED M T Komma-separierte Liste von Archi-
ven
archive OBJECT CDATA #IMPLIED Leerzeichen-separierte Liste von
URIs
axis TD, TH CDATA #IMPLIED Komma-separierte Liste verwandter
Zellen
background BODY %URI; #IMPLIED M T Hintergrundbild
bgcolor TABLE %Color; #IMPLIED M T Hintergrundfarbe
bgcolor TR %Color; #IMPLIED M T Hintergrundfarbe
bgcolor TD, TH %Color; #IMPLIED M T Hintergrundfarbe
bgcolor BODY %Color; #IMPLIED M T Hintergrundfarbe
border TABLE %Pixels; #IMPLIED Rahmen
border IMG, OBJECT %Pixels; #IMPLIED M T Rahmenbreite
cellpadding TABLE %Length; #IMPLIED Leerraum in Zellen
<edition
[Link]>
<edition
[Link]>
<edition
[Link]>
<edition
[Link]>
onmouseup Alle Elemente außer APPLET, %Script; #IMPLIED bei Loslassen der Maustaste
BASE, BASEFONT, BDO, BR,
FONT, FRAME, FRAMESET,
HEAD, HTML, IFRAME,
ISINDEX, META, PARAM,
SCRIPT, STYLE, TITLE
onreset FORM %Script; #IMPLIED bei Zurcksetzen des Formulars
onselect INPUT, TEXTAREA %Script; #IMPLIED bei Textauswahl
onsubmit FORM %Script; #IMPLIED bei Abschicken des Formulars
onunload FRAMESET %Script; #IMPLIED F bei Verlassen des Framesets
onunload BODY %Script; #IMPLIED bei Verlassen des Dokuments
profile HEAD %URI; #IMPLIED Metadatenprofil
prompt ISINDEX %Text; #IMPLIED M T
readonly TEXTAREA (readonly) #IMPLIED
readonly INPUT (readonly) #IMPLIED fr text und password
rel A, LINK %LinkTy- #IMPLIED Vorw@rtslinktyp
pes;
rev A, LINK %LinkTy- #IMPLIED Rckw@rtslinktyp
pes;
rows FRAMESET %Multi- #IMPLIED F Liste von Maßen, Vorgabe: 100%
Lengths; (1 Zeile)
rows TEXTAREA NUMBER #REQUI-
<edition
[Link]>
<edition
[Link]>
<edition
[Link]>
B
< XHTML 1.0:
Die Extensible
HyperText
Markup
Language >
Page size: 168,00 x 240,00 mm
<edition
[Link]>
[Link]
bersetzer:
Text Markup Language
Bei diesem Dokument handelt es sich um eine bersetzung eines W3C-Textes. Dieser
Text ist urheberrechtlich geschtzt; bitte beachten Sie die nachfolgenden Hinweise des
Originaldokuments. Die Rechte an der bersetzung liegen bei den bersetzern und
dem Verlag Addison-Wesley. Die bersetzung hat keine durch das W3C legitimierte,
normative Wirkung. Das einzige maßgebliche Dokument ist das englische Original.
Bitte senden Sie Fehler und Korrekturen zur deutschen Fassung an die bersetzer.
Kommentare der bersetzer, die als solche gekennzeichnet sind, unterliegen dem
Urheberrecht der bersetzer. Sie sind nicht Bestandteil des Ursprungsdokuments.
Bitte beachten Sie die Errata fr dieses Dokument, die normative Korrekturen enthalten k=n-
nen. Siehe auch bersetzungen.
Dieses Dokument ist auch in folgenden nicht normativen Formaten erh@ltlich: Mehrteilige
XHTML-Dateien, PostScript, PDF, ZIP-Archiv und Gzip/TAR-Archiv.
Copyright L 2002 W3C M (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark,
document use and software licensing rules apply.
Kurzbeschreibung
Diese Spezifikation definiert die zweite Auflage von XHTML 1.0, eine Neufassung von HTML 4
als XML 1.0-Anwendung sowie drei DTDs, die den von HTML 4 definierten DTDs entspre-
chen. Die Semantik der Elemente und ihre Attribute sind in der W3C-Empfehlung fr HTML 4
definiert. Diese Semantiken stellen die Grundlage fr die zuknftige Erweiterbarkeit von
<edition
[Link]>
SGML gibt es schon seit Mitte der Achtzigerjahre, und sie ist relativ stabil geblieben. Ein Groß-
teil dieser Stabilit@t resultiert aus der Tatsache, dass die Sprache zum einen zahlreiche Funk-
tionsmerkmale aufweist, gleichzeitig aber auch flexibel ist. Diese Flexibilit@t hat jedoch ihren
Preis, n@mlich die Komplexit@t, die verhindert hat, dass es sich in unterschiedlichsten Umge-
bungen durchgesetzt hat, unter anderem auch im World Wide Web.
HTML war, wie ursprnglich vorgesehen, eine Sprache fr den Austausch wissenschaftlicher
und anderer technischer Dokumente, die auch von Benutzern eingesetzt werden konnte, die
keine Dokumentspezialisten waren. HTML l=st die Probleme, die sich aus der Komplexit@t von
<edition
[Link]>
· Es werden st@ndig neue M=glichkeiten fr den Zugriff auf das Internet eingefhrt. Einige
Sch@tzungen weisen darauf hin, dass im Jahr 2002 75% der Dokumentanzeigen im Internet
auf diesen alternativen Plattformen stattfindet. Die XHTML-Familie wurde mit Blick auf die
Interoperabilit@t von Benutzerprogrammen entworfen. Durch einen neuen Benutzerpro-
gramm- und Dokument-Profiling-Mechanismus sind Server, Proxies und Benutzerpro-
gramme in der Lage, die bestm=gliche Umwandlung des Inhalts zu erzielen. Letztlich wird
es irgendwann m=glich sein, XHTML-konformen Inhalt zu entwickeln, der von jedem zu
XHTML konformen Benutzerprogramm verwendet werden kann.
XHTML 1.0: Die Extensible Hyper-
Text Markup Language
2 Definitionen
Dieser Abschnitt ist normativ.
2.1 Terminologie
In dieser Spezifikation werden die nachfolgenden Begriffe verwendet. Diese Begriffe erweitern
die Definitionen aus [RFC2119], und basieren auf @hnlichen Definitionen wie in ISO/IEC
9945-1:1990 [POSIX.1]:
Sollte (Should)
Im Hinblick auf Implementierungen sollte das Wort „sollte“ als Empfehlung fr die Imple-
mentierung, nicht aber als Forderung interpretiert werden. Im Hinblick auf Dokumente
sollte das Wort „sollte“ als empfohlene Vorgehensweise bei der Programmierung fr
Dokumente verstanden werden und als Forderung fr streng konforme XHTML-Doku-
mente.
Unterst-tzt (Supported)
Bestimmte Funktionsmerkmale in dieser Spezifikation sind optional. Wird ein Funk-
Benutzerprogramm
Ein Benutzerprogramm ist ein System, das XHTML-Dokumente in bereinstimmung mit
dieser Spezifikation verarbeitet. Weitere Informationen finden Sie in Abschnitt 3.2 ber
konforme Benutzerprogramme.
Anmerkung der bersetzer: Aus dem englischen „User Agent“ ist in unserer
bersetzung das „Benutzerprogramm“ geworden. Eine Begrndung und Erl@uterung ist
in der kommentierten Fassung der CSS2-Spezifikation zu finden.
DTD
Eine DTD (Dokumenttypdefinition) setzt sich aus mehreren XML-Markup-Deklarationen
zusammen, die in ihrer Gesamtheit die erlaubte Struktur, Elemente und Attribute definiert,
die fr die Verwendung in einem Dokument zur Verfgung stehen, das konform zu der
DTD ist.
Anmerkung der bersetzer: Die DTD legt fest, welche Elemente (und ihre Attri-
bute) in einem Dokument verwendet werden k=nnen. Damit stellt die DTD die Gram-
matik der Sprache (in diesem Fall: XHTML) dar, die definiert wird.
<edition
[Link]>
Dokument
Ein Dokument ist ein Datenstrom, der nach der Kombination mit anderen Str=men, auf die
er verweist, so strukturiert ist, dass er Informationen enth@lt, die in Elementen enthalten
sind, die wie in der zugeh=rigen DTD definiert angeordnet sind. Weitere Informationen fin-
den Sie in Abschnitt 3.1 ber konforme Dokumente.
Element
Ein Element ist eine Einheit fr die Strukturierung eines Dokuments, die in der DTD dekla-
riert ist. Das Inhaltsmodell des Elements ist in der DTD definiert; zus@tzliche Semantiken
XHTML 1.0: Die Extensible Hyper-
Funktionsmerkmale sind Elemente, Attribute und die diesen Elementen und Attributen
zugeordnete Semantik. Wenn eine Implementierung diese Funktionalit@t untersttzt, sagt
man, sie stellt die erforderlichen Funktionsmerkmale bereit.
Implementierung
Siehe Benutzerprogramm.
Parsing
Parsing ist der Vorgang, w@hrenddessen ein Dokument berprft („gescannt„) und die in
dem Dokument enthaltene Information in den Kontext der Elemente gefiltert wird, in dem
die Information strukturiert ist.
Rendering
Rendering (Darstellen) ist der Vorgang, bei dem die Information aus einem Dokument dar-
gestellt wird. Diese Darstellung erfolgt in der fr die Umgebung am besten geeigneten Form
(z. B. akustisch, visuell, gedruckt).
Validierung
Bei der Validierung werden Dokumente im Hinblick auf die zugeordnete DTD berprft,
wobei sichergestellt wird, dass die Verwendung der Elemente sowie der Attribute konsis-
tent mit den Definitionen in der DTD erfolgt.
Wohlgeformtheit
Ein Dokument ist wohlgeformt, wenn es gem@ß den in Abschnitt 2.1 definierten Regeln der
XML 1.0-Empfehlung [XML] strukturiert ist. Grunds@tzlich sagt diese Definition aus, dass
Elemente, die durch ihre Start- und Ende-Tags begrenzt sind, korrekt ineinander verschach-
telt sein mssen.
mit anderen Namensr@umen, wie beispielsweise fr das Einbinden von Metadaten, die in RDF
ausgedrckt sind, in XHTML-Dokumente, finden Sie in Abschnitt 3.1.2.
Anmerkung der bersetzer: Im Gegensatz zur ersten Auflage wird hier zus@tz-
lich vom XML-Namensraum gesprochen. Diese Erweiterung der Aussage hinsichtlich
des XML-Namensraums ist schon deshalb notwendig, weil in dieser XHTML-Spezifika-
tion auch das Attribut xml:lang vorkommt.
Ein streng konformes XHTML-Dokument ist ein XML-Dokument, das nur die Funk-
tionsmerkmale ben=tigt, die in dieser Spezifikation als zwingend erforderlich beschrieben sind.
Ein solches Dokument muss alle folgenden Kriterien erfllen:
1. Es muss konform zu den Beschr@nkungen sein, die in einer der drei in Anhang A beschrie-
benen DTDs und in Anhang B ausgedrckt sind.
2. Das Wurzelelement des Dokuments muss html sein.
3. Das Wurzelelement des Dokuments muss eine xmlns-Deklaration fr den XHTML-Na-
mensraum enthalten [XMLNAMES]. Der Namensraum fr XTHML ist definiert als
[Link] Ein Wurzelelement kann z. B. so aussehen:
<html xmlns="[Link] xml:lang="en" lang="en">
4. Im Dokument muss es vor dem Wurzelelement eine DOCTYPE-Deklaration geben. Der in
der DOCTYPE-Deklaration enthaltene =ffentliche Bezeichner muss auf eine der drei in
Anhang A beschriebenen DTDs verweisen, und zwar unter Verwendung des betreffenden
Formal Public Identifier. Der Systembezeichner kann ge@ndert werden, um lokale System-
konventionen zu bercksichtigen.
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"[Link]
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"[Link]
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"[Link] Die [interne]
DTD-Teilmenge darf nicht verwendet werden, um irgendwelche Parameter-Entities
der DTD zu Uberschreiben.
Eine XML-Deklaration ist nicht in allen XML-Dokumenten erforderlich. Den Autoren von
XHTML-Dokumenten wird jedoch sehr empfohlen, in all ihren Dokumenten XML-Deklarationen
zu verwenden. Eine solche Deklaration ist erforderlich, wenn die Zeichenkodierung des Doku-
ments nicht die Standardkodierung UTF-8 oder UTF-16 ist und keine Kodierung durch ein Hig-
her-Level-Protokoll bestimmt wurde. Im folgenden Beispiel ist die XML-Deklaration enthalten:
<edition
[Link]>
1999/xhtml) sehen aus wie URLs. Es handelt sich dabei jedoch ausschließlich um Zeichenket-
ten. Unter der gleichnamigen Adresse muss nicht einmal eine Webseite zu finden sein. Man
nutzt hier aus, dass durch den Aufbau eines Namensraumbezeichners in dieser Form welt-
weite Eindeutigkeit gew@hrleistet wird.
Der Bezeichner legt die Vermutung nahe, dass bei Zugriff per http auf den Rechner mit
dem Namen [Link] und Anforderung der Datei namens /1999/xhtml ein Doku-
ment geliefert wird, das den entsprechenden Namensraum in irgendeiner Syntax formal
definiert. Dies ist jedoch nicht so, was dazu beitr@gt, dass viele Stimmen fr eine andere
Syntax der Namensraumbezeichner pl@dieren.
Anmerkung der bersetzer: Die Kombination von Elementen aus zwei verschie-
denen Namensr@umen, wie auch im nachfolgenden Beispiel zu sehen, verhindert, dass
das Ergebnisdokument gltig bezglich der einen (etwa XHTML) oder der anderen
DTD (etwa MathML) ist.
Das folgende Beispiel zeigt, wie XHTML 1.0 in Kombination mit der MathML-Empfehlung ver-
wendet werden kann:
<cn> 3 </cn>
</logbase>
<ci> x </ci>
</apply>
</math>
</body>
</html>
Das folgende Beispiel zeigt, wie XHTML 1.0-Markup in einen anderen XML-Namensraum auf-
<edition
[Link]>
8. Treffen Benutzerprogramme bei der Verarbeitung von Inhalt auf Zeichen oder Zeichen-Enti-
ty-Verweise, die sie erkennen, aber nicht darstellen k=nnen, k=nnen sie eine andere Darstel-
lung w@hlen, die die gleiche Bedeutung hat, oder sie mssen das Dokument so darstellen, dass
es fr den Benutzer offensichtlich ist, dass keine normale Darstellung stattfinden konnte.
9. Leerraum wird gem@ß den folgenden Regeln behandelt. Die folgenden Zeichen sind in
[XML] als Leerraumzeichen definiert:
·· Leerzeichen (Space,  )
Horizontaler Tabulator (Horizontal Tabulation, 	)
··
XHTML 1.0: Die Extensible Hyper-
4 Unterschiede zu HTML 4
Dieser Abschnitt ist informell
Aufgrund der Tatsache, dass es sich bei XHTML um eine XML-Anwendung handelt, mssen
einige Vorgehensweisen, die im auf SGML basierenden HTML 4 [HTML4] v=llig korrekt waren,
ge@ndert werden.
<td rowspan="3">
<td rowspan=3>
4.5 Attributminimierung
XML untersttzt keine Attributminimierung. Attribut/Wert-Paare mssen vollst@ndig aus-
geschrieben werden. Attributnamen wie beispielsweise compact und checked drfen in Elemen-
ten nicht auftreten, ohne dass ihr Wert zuvor spezifiziert wurde.
RICHTIG: Nicht minimierte Attribute
<dl compact="compact">
<edition
[Link]>
<dl compact>
<br/><hr/>
<br><hr>
<script type=\;text/javascript\;>
<![CDATA[
... nicht maskierter script-Inhalt...
]]>
</script>
CDATA-Abschnitte werden vom XML-Prozessor erkannt und erscheinen als Knoten im Docu-
ment Object Model (siehe Abschnitt 1.3 der DOM Level 1 Empfehlung [DOM]).
Als Alternative kann man externe Schrift- und Stildokumente verwenden.
4.9 SGML-Ausschl-sse
SGML bietet dem Entwickler einer DTD die M=glichkeit, fr spezielle Elemente auszuschließen,
dass sie Inhalt eines anderen Elements werden. Solche Ausschlsse sind in XML nicht m=glich.
Die strenge DTD von HTML 4 beispielsweise verbietet, ein 'a'-Element in einem anderen
'a'-Element in einer beliebigen abgeleiteten Tiefe zu verschachteln. In XML ist es nicht m=glich,
solche Ausschlsse zu formulieren. Selbst wenn diese Ausschlsse in der DTD nicht definiert
werden k=nnen, sollten bestimmte Elemente nicht verschachtelt werden. Einen berblick ber
<edition
[Link]>
5 [Link]
Dieser Abschnitt ist normativ.
Obwohl nicht gefordert wird, dass XHTML 1.0-Dokumente mit existierenden Benutzerpro-
grammen kompatibel sind, ist dies in der Praxis ganz einfach zu bewerkstelligen. Richtlinien fr
die Erstellung kompatibler Dokumente finden Sie in Anhang C.
XHTML 1.0: Die Extensible Hyper-
5.1 Internet-Medientyp
XHTML-Dokumente, die den in Anhang C beschriebenen Richtlinien zur Kompatibilit@t mit
Text Markup Language
A DTDs
Dieser Abschnitt ist normativ.
Diese DTDs und Entity-Mengen bilden einen normativen Teil dieser Spezifikation. Die vollst@n-
dige Menge der DTD-Dateien zusammen mit einer XML-Deklaration und SGML Open Catalog
ist in der Zip-Datei und der Gzip/Tar-Datei fr diese Spezifikation enthalten. Benutzer, die
lokale Kopien suchen, um damit zu arbeiten, sollten die Archiv-Dateien herunterladen, anstatt
mit den nachfolgend referenzierten DTDs zu arbeiten.
A.1 Dokumenttypdefinitionen
Diese DTDs sind den HTML 4 DTDs ann@hernd gleich. Das W3C empfiehlt, dass Sie die maß-
geblichen Versionen dieser DTDs unter ihren definierten Systembezeichnern verwenden, wenn
Sie den Inhalt validieren. Wenn Sie diese DTDs lokal ben=tigen, sollten Sie eines der Archive
herunterladen. Zur Vollst@ndigkeit sind die normativen Versionen der DTDs hier zu finden:
A.1.1 XHTML-1.0-Strict
Die Datei DTD/[Link] ist ein normativer Bestandteil dieser Spezifikation. Der Voll-
st@ndigkeit halber ist der kommentierte Inhalt dieser Datei in einem eigenen Abschnitt erh@lt-
lich.
A.1.2 XHTML-1.0-Transitional
Die Datei DTD/[Link] ist ein normativer Bestandteil dieser Spezifikation. Der
Vollst@ndigkeit halber ist der kommentierte Inhalt dieser Datei in einem eigenen Abschnitt
erh@ltlich.
A.1.3 XHTML-1.0-Frameset
Die Datei DTD/[Link] ist ein normativer Bestandteil dieser Spezifikation. Der
Vollst@ndigkeit halber ist der kommentierte Inhalt dieser Datei in einem eigenen Abschnitt
erh@ltlich.
A.2 Entity-Mengen
Die Datei DTD/[Link] ist ein normativer Bestandteil dieser Spezifikation. Der Vollst@n-
digkeit halber ist der kommentierte Inhalt dieser Datei in einem eigenen Abschnitt erh@ltlich.
Die Datei DTD/[Link] ist ein normativer Bestandteil dieser Spezifikation. Der Voll-
st@ndigkeit halber ist der kommentierte Inhalt dieser Datei in einem eigenen Abschnitt erh@lt-
lich.
A.2.3 Symbols
Die Datei DTD/[Link] ist ein normativer Bestandteil dieser Spezifikation. Der Voll-
st@ndigkeit halber ist der kommentierte Inhalt dieser Datei in einem eigenen Abschnitt erh@lt-
lich.
B Element-Ausschl-sse
Dieser Abschnitt ist normativ.
Die folgenden Elemente weisen Ausschlsse dahingehend auf, welche Elemente sie enthalten
k=nnen (siehe Abschnitt 4.9). Diese Ausschlsse gelten fr alle Verschachtelungstiefen, das
heißt, sie erstrecken sich auf alle abgeleiteten Elemente.
a
Darf keine anderen a-Elemente enthalten.
pre
Darf nicht die Elemente img, object, big, small, sub oder sup enthalten.
button
Darf nicht die Elemente input, select, textarea, label, button, form, fieldset, iframe oder
isindex enthalten.
<edition
[Link]>
label
Darf keine anderen label-Elelemente enthalten.
form
Darf keine anderen form-Elemente enthalten.
C Richtlinien zur
XHTML 1.0: Die Extensible Hyper-
HTML-Kompatibilit.t
Text Markup Language
C.8 Fragmentbezeichner
In XML verweisen URI-Referenzen [RFC2396], die mit Fragmentbezeichnern der Form "#foo"
enden, nicht auf Elemente mit einem Attribut name="foo"; stattdessen verweisen sie auf Ele-
mente mit einem Attribut, das als vom Typ ID definiert ist, z. B. das id-Attribut in HTML 4.
Viele bereits existierende HTML-Clients untersttzen die Verwendung von Attributen vom
Typ ID auf diese Weise nicht, deshalb k=nnen identische Werte fr beide Attribute angegeben
werden, um eine maximale Aufw@rts- und Abw@rtskompatibilit@t sicherzustellen (z. B.
<a id="foo" name="foo">...</a>).
Und weil darber hinaus die Menge der erlaubten Werte fr Attribute des Typs ID viel kleiner
als die fr den Typ CDATA ist, muss der Typ des name-Attributs in NMTOKEN ge@ndert werden. Die-
ses Attribut ist beschr@nkt, weil es nur dieselben Werte wie der Typ ID haben kann oder wie
die Name-Produktion in XML 1.0 Abschnitt 2.3 Produktion 5. Leider kann diese Beschr@nkung in
den DTDs von XHTML 1.0 nicht ausgedrckt werden. Aufgrund dieser Onderung muss die
Umwandlung existierender HTML-Dokumente @ußerst sorgf@ltig erfolgen. Die Werte dieser
Attribute mssen eindeutig innerhalb des Dokuments und gltig sein, und alle Verweise auf
diese Fragmentbezeichner (sowohl intern als auch extern) mssen aktualisiert werden, falls sich
die Werte w@hrend der Umwandlung @ndern.
Beachten Sie, dass die Menge der erlaubten Werte in XML 1.0, Abschnitt 2.3, Produktionsregel
5, viel gr=ßer ist als das, was duch die in HTML 4 definierten ID- und NAME-Typen erlaubt ist.
Wenn Sie Fragmenbezeichner definieren, die abw@rtskompatibel sein sollen, sollten nur solche
Zeichenketten verwendet werden, die zu dem Muster [A-Za-z][A-Za-z0-9:_.-]* passen. Siehe
[HTML4], Abschnitt 6.2 fr weitere Informationen.
Beachten Sie schließlich, dass XHTML 1.0 das name-Attribut der Elemente a, applet, form,
frame, iframe, img und map als veraltet betrachtet und es in sp@teren Versionen aus XHTML
entfernt wird.
<edition
[Link]>
C.9 Zeichencodierung
Historisch wurde die Zeichenkodierung eines HTML-Dokuments entweder durch einen Web-
Server durch Angabe des charset-Parameters im HTTP Content Type Header oder durch ein
Meta-Element im Dokument selbst angegeben. In einem XML-Dokument wird die Zeichenko-
dierung des Dokuments durch die XML-Deklaration angegeben (z. B. <?xml version="1.0" enco-
ding="EUC-JP"?>). Der beste Ansatz, um Dokumente mit einer bestimmten Zeichenkodierung
m=glichst portabel anzubieten, besteht darin, sicherzustellen, dass der Web-Server die korrek-
XHTML 1.0: Die Extensible Hyper-
ten Header verwendet. Wenn das nicht m=glich ist, muss ein Dokument, das seine Zeichenko-
dierung explizit setzen will, sowohl die XML-Deklaration mit Kodierungsdeklaration als auch
Text Markup Language
Hinweis: Beachten Sie, dass ein Dokument, das die Zeichenkodierungsdeklaration in einem
Meta-http-equiv-Ausdruck enthalten muss, durch einen HTTP-Server und/oder durch Benut-
zerprogramme als vom angegebenen Medientyp angesehen werden kann. Wenn ein Dokument
unter mehreren Medientypen verschickt werden soll, dann muss der HTTP-Server zum Setzen
der Kodierung verwendet werden. n
In XML ist das nicht m=glich. Statt von den Dokumentautoren zu fordern, unwesentliche
Elemente einzufgen, hat XHTML die Elemente optional gemacht. Benutzerprogramme
mssen dies entsprechend bernehmen. Fr weitere Informationen siehe [DOM2].
<edition
[Link]>
<?xml-stylesheet href="[Link]
Text Markup Language
type="text/css"?>
<?xml-stylesheet href="#internalStyle" type="text/css"?>
<html xmlns="[Link]
xml:lang="en"
lang="en">
<head>
<title>An internal stylesheet example</title>
<style id="internalStyle">
code {
color: green;
font-family: monospace;
font-weight: bold;
}
</style>
</head>
<body>
<p>
This is text that uses our
<code>internal stylesheet</code>.
</p>
</body>
</html>
D Danksagungen
Dieser Abschnitt ist informell.
Diese Spezifikation wurde unter Beteiligung der Mitglieder der HTML-Arbeitsgruppe des W3C
geschrieben.
Bei Ver=ffentlichung der zweiten Auflage hatte die Arbeitsgruppe folgende Mitglieder:
Steven Pemberton, CWI/W3C (HTML Working Group Chair); Daniel Austin, Grainger; Jonny
Axelsson, Opera Software; Tantek kelik, Microsoft; Doug Dominiak, Openwave Systems; Her-
E Literaturverzeichnis
Dieser Abschnitt ist informell.
[CSS2]
"Cascading Style Sheets, level 2 (CSS2) Specification", B. Bos, H. W. Lie, C. Lilley, I. Jacobs,
12. Mai 1998. Neueste Version unter: [Link]
[DOM]
"Document Object Model (DOM) Level 1 Specification", Lauren Wood et al., 1. Oktober
1998. Neueste Version unter: [Link]
[DOM2]
"Document Object Model (DOM) Level 2 Core Specification ", A. Le Hors, et al. ,13
November 2000. Neueste Version unter: [Link]
2-Core .
[HTML]
"HTML 4.01 Specification", D. Raggett, A. Le Hors, I. Jacobs, 24. Dezember 1999. Neueste
Version unter: [Link]
<edition
[Link]>
[POSIX.1]
"ISO/IEC 9945-1:1990 Information Technology - Portable Operating System Interface (PO-
SIX) - Part 1: System Application Program Interface (API) [C Language]", Institute of Electri-
cal and Electronics Engineers, Inc, 1990.
[RFC2045]
"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message
Bodies", N. Freed and N. Borenstein, November 1996. Dieser RFC ersetzt die veralteten
RFC1521, RFC1522, und RFC1590.
XHTML 1.0: Die Extensible Hyper-
[RFC2046]
"RFC2046: Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", N.
Text Markup Language
[XML]
"Extensible Markup Language (XML) 1.0 Specification", T. Bray, J. Paoli, C. M. Sperberg-
McQueen, 10. Februar 1998. Neueste Version unter: [Link]
xml
[XMLNAMES]
"Namespaces in XML", T. Bray, D. Hollander, A. Layman, [Link] 199. XML-Namens-
r@ume stellen eine einfache Methode fr die Qualifizierung von Namen dar, die in XML-Do-
kumenten verwendet werden, indem ihnen Namensr@ume zugeordnet sind, die durch URI
<edition
[Link]>
C
< Modularisierung
von XHTML >
Page size: 168,00 x 240,00 mm
<edition
[Link]>
Bei diesem Dokument handelt es sich um eine bersetzung eines W3C-Textes. Dieser
Text ist urheberrechtlich geschtzt; bitte beachten Sie die nachfolgenden Hinweise des
Modularisierung von XHTML
Originaldokuments. Die Rechte an der bersetzung liegen bei den bersetzern und
dem Verlag Addison-Wesley. Die bersetzung hat keine durch das W3C legitimierte,
normative Wirkung. Das einzige maßgebliche Dokument ist das englische Original.
Bitte senden Sie Fehler und Korrekturen zur deutschen Fassung an die bersetzer.
Kommentare der bersetzer, die als solche gekennzeichnet sind, unterliegen dem
Urheberrecht der bersetzer. Sie sind nicht Bestandteil des Ursprungsdokuments.
Copyright L 2001 W3CM (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark,
document use and software licensing rules apply.
Zusammenfassung
Diese Empfehlung spezifiziert eine abstrakte Modularisierung von XHTML und eine Implemen-
tierung dieser Abstraktion unter Verwendung von XML-Dokumenttyp-Definitionen (DTDs).
Diese Modularisierung stellt Mittel zur Verfgung, um Teilmengen von XHTML zu bilden und
um XHTML zu erweitern; eine Eigenschaft, die fr die Ausweitung von XHTML auf kommende
Plattformen ben=tigt wird.
1 Einf-hrung
Dieser Abschnitt ist informell.
<edition
[Link]>
dieren: Strict, Transitional, and Frameset. XHTML 1.0 ist die Basis einer Familie von Doku-
menttypen, die eine Teilmenge von HTML bilden und HTML erweitern.
Ein XHTML-Dokumenttyp ist als eine Menge von abstrakten Modulen definiert. Ein abstraktes
Modul definiert eine Art von Daten, die sich semantisch von allen anderen unterscheidet. Abs-
trakte Module k=nnen ohne Verst@ndnis der ihnen zugrunde liegenden Schemata, die die
Module definieren, zu Dokumenttypen kombiniert werden.
1.3.2 Modulimplementierungen
Eine Modulimplementierung besteht aus einer Menge von Elementtypen, einer Menge von
Attributlistendeklarationen und einer Menge von Inhaltsmodelldeklarationen, wobei jede der
drei Mengen leer sein kann. Eine Attributlistendeklaration in einem Modul darf einen Element-
typ modifizieren, der außerhalb der im Modul definierten Elementtypen steht. Und eine Inhalts-
modelldeklaration darf einen Elementtyp modifizieren, der außerhalb der im Modul definierten
Ein hybrider Dokumenttyp ist ein Dokumenttyp, der aus einer Sammlung von XML-DTDs oder
DTD-Modulen zusammengefgt wird. Der prim@re Zweck des Rahmenwerks zur Modularisie-
rung, das in diesem Dokument beschrieben wird, besteht darin, DTD-Autoren zu erlauben,
Elemente von verschiedenen abstrakten Modulen zu hybriden Dokumenttypen zu kombinieren,
Dokumente zu diesen hybriden Dokumenttyp zu erzeugen und die Gltigkeit des Dokuments
bezglich des entsprechenden hybriden Dokumenttyps zu validieren.
Einer der wertvollsten Vorteile von XML gegenber SGML ist, dass XML den Einstiegsaufwand
zur Standardisierung von Elementmengen reduziert, die Gemeinschaften erlauben, Datenaus-
tausch in einem austauschf@higen Format zu betreiben. Jedenfalls hat die relativ statische Natur
von HTML als Inhaltssprache des Web bedeutet, dass jede dieser Gemeinschaft nur wenig
Hoffnung hegen konnte, dass ihre XML-Dokumenttypen eine großfl@chige Anerkung als Web-
Standard erfahren wrden. Das Rahmenwerk zur Modularisierung erlaubt die dynamische Auf-
nahme dieser verschiedenen Dokumenttypen durch die Familie der XHTML-Dokumenttypen.
Damit wird der Aufwand zur Aufnahme dieser dom@nenspezifischen Vokabulare in XHTML-
Dokumente weiter verringert.
1.3.4 Validierung
Die Verwendung von wohlgeformten, aber nicht gltigen Dokumenten ist ein wichtiger Vorteil
von XML. W@hrend der Entwicklung eines Dokumenttyps ist dennoch die zus@tzliche Hilfe
wichtig, die ein validierender Parser zur Fehlerprfung bietet. Die gleiche Aussage gilt fr
XHTML-Dokumenttypen mit Elementen von verschiedenen abstrakten Modulen.
Ein Dokument ist eine Instanz eines bestimmten Dokumenttyps, der durch die DTD definiert
wird, die im Prolog des Dokuments angegeben ist. Das Validieren des Dokuments ist der Vor-
gang der berprfung, ob sich das Dokument an die Regeln in der Dokumenttyp-Definition h@lt.
<edition
[Link]>
Ein Dokument kann aus mehreren Dokumentfragmenten bestehen. Das Validieren nur von
Fragmenten eines Dokuments, wobei jedes Fragment von einem verschiedenen Dokumenttyp
als die anderen Fragmente im Dokument ist, liegt außerhalb der Zust@ndigkeit dieses Rahmen-
werks – dies wrde eine Technik erfordern, die noch nicht definiert ist.
Jedenfalls erlaubt es das Rahmenwerk zur Modularisierung mehrere Dokumenttyp-Definitionen
zu einem neuen Dokumenttyp zusammenzufassen (zum Beispiel SVG integriert mit XHTML).
Die neue Dokumenttyp-Definition kann fr die normale XML 1.0-Validierung benutzt werden.
1.3.5 Formatierungsmodell
Frhere Versionen von HTML versuchten Teile des Modells zu definieren, die Benutzerpro-
gramme brauchen, wenn sie ein Dokument formatieren. Mit dem Aufkommen von HTML 4
begann das W3C damit, Pr@sentation von Struktur zu trennen. XHTML 1.0 behielt diese Tren-
nung bei und dieses Dokument f@hrt damit fort, HTML und seine Nachkommen auf diesem
Modularisierung von XHTML
Weg weiterzufhren. In der Folge davon stellt dieses Dokument keine Anforderungen an das
Formatierungsmodell fr die Darstellung von Dokumenten, die gem@ß der Familie von
XHTML-Dokumenttypen ausgezeichnet sind.
Statt dessen empfiehlt dieses Dokument, dass sich Inhaltsverfasser auf Stilmechanismen wie
CSS verlassen, um das Formatierungsmodell fr ihren Inhalt zu definieren. Wenn Benutzerpro-
gramme den Stilmechanismus untersttzen, werden Dokumente wie erwartet formatiert.
Wenn Benutzerprogramme den Stilmechanismus nicht untersttzen, werden Dokumente so
formatiert, wie es fr dieses Benutzerprogramm angemessen ist. Dies erlaubt Benutzerpro-
grammen fr die XHTML-Familie komplexe Formatierungsmodelle auf solchen Ger@ten zu
untersttzen, wo es angemessen ist, und einfache Formatierungsmodelle auf solchen Ger@ten,
wo dies angemessen ist.
<edition
[Link]>
<edition
[Link]>
6. Die Elemente und Attribute der Moduldefinition mssen Teil eines XML-Namensraums
sein [XMLNAMES]. Falls das Modul durch eine andere Organisation als W3C definiert
wird, darf der Namensraum NICHT derselbe sein wie der Namensraum, in dem andere
W3C-Module definiert werden.
<edition
[Link]>
Anmerkung der bersetzer: Ein Ideogramm ist „ein Schriftzeichen, das einen gan-
zen Begriff darstellt“. (Quelle: Duden-Fremdw=rterbuch, Bibliographisches Institut 1982).
3. Falls die Zeichen vor und hinter dem Zeilenvorschubzeichen zu einer nicht ideographi-
schen Schrift geh=ren, in der es keinen Worttrenner gibt, sollte der Zeilenvorschub in
ein Leerzeichen mit Breite Null (ZERO WIDTH SPACE character, ​) oder kein
Zeichen gewandelt werden. Beispiele solcher Schriften sind Thai und Khmer.
4. Falls keine der Bedingungen (1) bis (3) zutreffen, so sollte das Zeilenvorschubzeichen in
ein Leerzeichen umgewandelt werden.
Der Unicode [UNICODE] technical report TR#24 (Script Names) stellt eine Zuweisung
von Schriftnamen zu allen Zeichen zur Verfgung.
3.6 Namensregeln
Dokumenttypen, die eine XHTML Host Language darstellen, mssen sich an strenge Namens-
konventionen halten, so dass es fr Software und Anwender leicht ist, die Verwandtschaft von
Anmerkung der bersetzer: Das Gegenteil einer privat definierten Ressource ist
eine, deren Organisationskrzel (siehe n@chstes Feld) bei der ISO registriert ist. Solche
FPIs beginnen mit „+“. Selbst das W3C verwendet „-“ und auch schon vor Grndung
des W3C war es in der SGML-Gemeinde blich, „-“ zu verwenden. Die Registrierung,
so sie denn berhaupt m=glich ist, hat sich nie durchgesetzt. Heute treten an die Stelle
mehr und mehr Bezeichner, die wie URIs aussehen (etwa Namensraumbezeichner). Sie
enthalten einen Domainnamen, der der Domainregistrierung unterliegt und damit welt-
weit eindeutig ist.
2. Das zweite Feld muss den Namen der Organisation enthalten, die fr die Pflege des
benannten Objekts verantwortlich ist. Es gibt keine formale Registrierung fr diese Organi-
sationsnamen. Jede Organisation sollte einen eindeutigen Namen definieren. Der Namen
der beispielsweise vom W3C verwendet wird, ist W3C.
3. Das dritte Feld enth@lt zwei Dinge: die Klasse des Sffentlichen Texts (public text class),
gefolgt von der Beschreibung des Sffentlichen Texts (public text description). Das erste
Token im dritten Feld ist die Klasse des Sffentlichen Texts, die sich an „ISO 8879 Clause
[Link] Public Text Class“ halten sollte. Nur Dokumente, die konform zur XHTML Host
Language sind, sollten die Beschreibung des Sffentlichen Texts mit dem Token XHTML
beginnen. Die Beschreibung des Sffentlichen Texts sollte die Zeichenkette XHTML bein-
halten, wenn der Dokumenttyp konform als Integration Set ist. Das Feld muss außerdem
einen durch die Organisation definierten, eindeutigen Bezeichner (zum Beispiel MyML 1.0)
enthalten. Dieser Bezeichner sollte aus einem eindeutigen Namen und einem Ver-
sionsbezeichner zusammengesetzt sein, der aktualisiert wird, wenn sich das Dokument wei-
terentwickelt.
4. Das vierte Feld definiert die Sprache, in der das Objekt entwickelt wurde (zum Beispiel DE).
<edition
[Link]>
Unter Verwendung dieser Regeln kann ein Name fr einen konformen XHTML Host Language-
Dokumenttypen -//MyCompany//DTD XHTML MyML 1.0//EN sein. Der Name fr ein zur XHTML-Fa-
milie konformes Modul kann -//MyCompany//ELEMENTS XHTML MyElements 1.0//EN lauten. Der
Name fr einen als XHTML Integration Set konformen Dokumenttypen kann -//MyCompany//
DTD Special Markup with XHTML//EN sein.
dere die Formal Public Identifier und System Identifier des Moduls werden sich @ndern, indem
der Versions-Bezeichner in jedem Modul ge@ndert wird. Dokumenttypen, die den aktualisier-
ten Funktionsumfang einbeziehen m=chten, werden in @hnlicher Weise aktualisiert werden
mssen.
Zus@tzlich werden die frheren Versionen des Moduls auch weiterhin ber ihre frheren, ein-
deutigen Bezeichner zug@nglich sein. Auf diese Weise werden Dokumenttypen, die unter Ver-
wendung von XHTML-Modulen entwickelt wurden, unter Benutzung ihrer ursprnglichen
Definitionen nahtlos weiterfunktionieren, selbst wenn sich die Sammlung von Modulen vergr=-
ßert und entwickelt. Ebenso werden Dokumentinstanzen, die bzgl. eines Dokumenttyps
geschrieben sind, unter Verwendung der frheren Moduldefinitionen auch weiterhin gltig sein.
Autoren von Modulen und Dokumenttypen der XHTML-Familie sind aufgerufen, eine @hnliche
Strategie anzuwenden, um das zuknftige Funktionieren von Dokumenttypen, die auf solchen
Modulen basieren, und von Dokumentinstanzen, die auf solchen Dokumenttypen basieren, zu
gew@hrleisten.
<edition
[Link]>
4.2 Inhaltstypen
Die Definitionen abstrakter Module definieren minimale, atomare Inhaltsmodelle fr jedes
Modul. Diese minimalen Inhaltsmodelle referenzieren die Elemente im selben Modul. Die k=n-
nen außerdem Elemente in anderen Modulen, auf denen dieses abstrakte Modul aufbaut, refe-
renzieren. Schließlich erfordert das Inhaltsmodell in vielen F@llen, dass Text als Inhalt von einem
oder mehreren Elementen zugelassen ist. In diesen F@llen wird PCDATA als Symbol fr Text
benutzt. Dies ist ein Ausdruck, definiert in der XML 1.0-Empfehlung, der fr „Processed Cha-
racter Data“ steht. Ein Inhaltstyp kann auch als EMPTY definiert werden, was bedeutet, dass
das Element in seinem minimalen Inhaltsmodell keinen Inhalt hat.
Anmerkung der bersetzer: Tats@chlich wird PCDATA in XML 1.0 nicht defi-
niert, was nach meinem Verst@ndnis ein Vers@umnis ist. Eine entsprechende Mail an die
Herausgeber von XML wurde in dem Sinne beantwortet, dass eine Definition in XML
Modularisierung von XHTML
4.3 Attributtypen
In einigen F@llen ist es notwendig, die Typen der Attributwerte zu definieren beziehungsweise
die Menge der erlaubten Werte explizit vorzugeben. Die folgenden Attributtypen (definiert in
der XML 1.0-Empfehlung) werden in den Definitionen der abstrakten Module verwendet:
Attributtypen Definition
CDATA Zeichendaten (Character data)
ID Ein dokumentweit eindeutiger Bezeichner
IDREF Eine Referenz auf einen dokumentweit eindeutigen Bezeichner
IDREFS Eine Leerzeichen-getrennte Liste von Referenzen auf dokumentweit
eindeutige Bezeichner
NAME Ein Name mit denselben Zeichenbeschr@nkungen wie ID
NMTOKEN Ein Name, der nur aus Name Tokens gem@ß Definition in XML 1.0 [XML]
besteht
NMTOKENS Ein oder mehrere, durch Leerzeichen getrennte NMTOKEN-Werte
PCDATA Processed character data
Datentyp Beschreibung
Zeichen (Character) Ein einzelnes Zeichen aus [ISO10646].
Zeichensatz (Charset) Eine Zeichenkodierung gem@ß [RFC2045].
Zeichens@tze (Charsets) Eine durch Leerzeichen getrennte Liste von Zeichen-
kodierungen gem@ß [RFC2045].
Farbe (Color) Der Attributwerttyp „Farbe“ bezieht sich auf Farb-
definitionen gem@ß [SRGB]. Ein Farbwert darf entweder
eine hexadezimale Zahl (eingeleitet durch ein Doppel-
kreuz) oder einer der folgenden 16 Farbnamen sein. Die
Farbnamen sind unabh@ngig von Groß/Kleinschreibung.
Silver = Lime =
"#C0C0C0" "#00FF00"
Gray = Olive =
"#808080" "#808000"
White = Yellow =
"#FFFFFF" "#FFFF00"
Maroon = Navy =
"#800000" "#000080"
Red = Blue =
"#FF0000" "#0000FF"
Purple = Teal =
"#800080" "#008080"
Fuchsia = Aqua =
"#FF00FF" "#00FFFF"
<edition
[Link]>
Link-Typen (LinkTypes)
Autoren k=nnen die folgenden Link-Typen verwenden, die hier mit ihrer blichen Interpretation
aufgefhrt sind. Ein Link-Typ-Wert verweist auf eine Leerzeichen-getrennte Liste von Link-Ty-
pen. Leeraumzeichen sind innerhalb von Link-Typen nicht erlaubt. Diese Link-Typen sind von
Groß/Kleinschreibung unabh@ngig, das heißt, „Alternate“ hat dieselbe Bedeutung wie „alternate“.
Benutzerprogramme, Suchmaschinen usw k=nnen diese Link-Typen auf sehr unterschiedliche
Arten interpretieren. Zum Beispiel k=nnen Benutzerprogramme den Zugriff auf verlinkte
Dokumente ber eine Navigationsleiste erlauben.
Alternate
Bestimmt alternative Versionen des Dokuments, in dem der Link auftritt. Wenn es zusam-
men mit dem hreflang-Attribut benutzt wird, impliziert es eine bersetzte Version des
Dokuments. Wenn es zusammen mit dem media-Attribut benutzt wird, impliziert es eine
Version, die fr ein anderes Medium (oder Medien) bestimmt ist.
Stylesheet
Verweist auf ein externes Stylesheet. Siehe Abschnitt 5.17 (Stylesheet-Modul) fr Details.
Dies wird zusammen mit dem Link-Typ „Alternate“ verwendet, um dem Benutzer die Aus-
wahl zwischen verschiedenen Stylesheets zu erlauben.
Start
Verweist auf das erste Dokument einer Sammlung von Dokumenten. Dieser Link-Typ ver-
r@t den Suchmaschinen, welches Dokument vom Autor als Startpunkt der Sammlung ange-
sehen wird.
Next
Verweist auf das n@chste Dokument in einer lineare Abfolge von Dokumenten. Benutzer-
programme k=nnen das „n@chste“ Dokument im Voraus laden, um die wahrgenommene
Ladezeit zu verringern.
Prev
Verweist auf das vorhergehende Dokument in einer geordneten Folge von Dokumenten.
Einige Benutzerprogramme untersttzen auch das Synonym „Previous“.
Contents
Verweist auf ein Dokument, das als Inhaltsverzeichnis dient. Einige Benutzerprogramme
untersttzen auch das Synonym „ToC“ („Table of Contents“).
Index
Verweist auf ein Dokument, das ein Stichwortverzeichnis fr das aktuelle Dokument bereit-
h@lt.
Glossary
Verweist auf ein Dokument, das ein Glossar von Begriffen, die sich auf das aktuelle Doku-
ment beziehen, bereith@lt.
Copyright
Verweist auf Copyright-Hinweise fr das aktuelle Dokument.
MediaDesc
Das MediaDesc-Attribut ist eine durch Kommata separierte Liste von Medienbezeichnern.
Nachfolgend eine Liste von bekannten Medienbezeichnern:
screen
Gedacht fr nicht seitenorientierte Computer-Bildschirme.
tty
Gedacht fr Medien, die ein Zeichenraster mit festen Abstand besitzen wie zum Beispiel
Fernschreiber, Terminals oder portable Ger@te mit beschr@nkten Anzeigef@higkeiten.
tv
Gedacht fr fernsehartige Ger@te (niedrige Aufl=sung, Farbe, beschr@nkte Scroll-F@higkeit).
<edition
[Link]>
projection
Gedacht fr Projektoren.
handheld
Gedacht fr tragbare Ger@te (kleiner Bildschirm, Monochrom, Rastergraphiken, begrenzte
Bandbreite).
print
Gedacht fr seitenorientiertes, undurchsichtiges Material und fr Dokumente, die auf dem
Bildschirm in der Druckvorschau betrachtet werden.
braille
Gedacht fr taktile Braille-Ger@te.
aural
Gedacht fr Sprach-Synthesizer.
all
Geeignet fr alle Ger@te.
Modularisierung von XHTML
Zuknftige Versionen von XHTML k=nnen neue Werte einfhren und k=nnen parametrisierte
Werte erlauben. Um die Einfhrung dieser Erweiterungen zu untersttzen, mssen Benutzer-
programme in der Lage sein, den media-Attributwert wie folgt zu parsen:
1. Der Wert ist eine durch Kommata separierte Liste von Eintr@gen. Zum Beispiel wird
abgebildet auf
"screen"
"3d-glasses"
"print and resolution > 90dpi"
2. Jeder Eintrag wird genau vor dem Zeichen abgeschnitten, das kein US-ASCII-Buchstabe
[a-zA-Z] (ISO 10646 hex 41-5a, 61-7a), Ziffer [0-9] (hex 30-39) oder Minuszeichen (hex
2d) ist. Im Beispiel fhrt das zu:
"screen"
"3d-glasses"
"print"
3. Es wird dann ein Vergleich ohne Bercksichtigung von Groß/Kleinschreibung mit der oben
definierten Menge von Medientypen durchgefhrt. Benutzerprogramme k=nnen Eintr@ge,
die nicht passen, ignorieren. Im Beispiel bleiben screen und print brig.
Anmerkung: Stylesheets k nnen medienabh,ngige Variationen enthalten (zum Beispiel das CSS-
Konstrukt @media). In solchen F,llen kann es angemessen sein, „media =all“ zu verwenden. n
[Link] (MultiLength)
Der Wert darf eine absolute oder relative L@ngenangabe sein. Eine relative L@ngenangabe hat
die Form „i*“, wobei „i“ eine ganze Zahl ist. Bei der Zuweisung von Leeraum unter Elementen,
die um diesen Leeraum konkurrieren, weisen Benutzerprogramme Pixel- und Prozentl@ngen
zuerst zu; dann teilen sie den verbleibenden Raum unter den relativen L@ngen auf. Jede relative
L@nge erh@lt den Anteil des verfgbaren Raums, der proportional zu der Zahl ist, die dem „*“
vorangeht. Der Wert „*“ ist @quivalent zu „1*“. Folglich gilt: Wenn 60 Pixel an Raum verfgbar
sind, nachdem das Benutzerprogramm Pixel- und Prozentwerte zugewiesen hat, und die kon-
kurrierenden relativen L@ngen lauten „1*“, „2*“ und „3*“, dann wird „1*“ 10 Pixel, „2*“ 20
Pixel und „3*“ 30 Pixel zugewiesen.
[Link] (MultiLengths)
Eine durch Kommata separierte Liste von Eintr@gen des Typs MultiLength.
Zahl (Number)
Ein oder mehrere Ziffern.
Pixel
Script
Script-Daten k=nnen der Inhalt des „script“-Elements und der Wert von eingebauten Ereigni-
sattributen (Events) sein. Benutzerprogramme drfen Script-Daten nicht als HTML-Markup
auswerten, sondern mssen sie statt dessen als Daten an den Script-Prozessor durchreichen.
Die Abh@ngigkeit von Groß/Kleinschreibung von Script-Daten h@ngt von der Scripting- Sprache
ab. Bitte beachten Sie, dass Script-Daten, die Elementinhalt darstellen, keine Zeichenreferenzen
enthalten drfen; Script-Daten hingegen, die ein Attributwert sind, drfen sie enthalten.
Form (Shape)
Die Form einer Fl@che.
Text
Beliebige textuelle Daten, meistens gedacht, um fr Menschen lesbar zu sein.
URI
Ein Uniform Resource Identifier gem@ß [URI].
URIs
Eine durch Leerzeichen getrennte Liste von Uniform Resource Identifiern gem@ß [URI].
Ein Beispiel f#r eine Definition eines abstrakten Moduls < 409 >
Page size: 168,00 x 240,00 mm
<edition
[Link]>
4.4.1 XHTML-Ski-Modul
Das XHTML-Ski-Modul definiert Markup, das bei der Beschreibung einer Ski-Htte benutzt
wird. Die Elemente und Attribute, die in diesem Modul definiert werden, sind die folgenden:
Elemente Attribute Minimales Inhaltsmodell
urlaubsort Common, href (CDATA) beschreibung, Garmisch+
htte Common beschreibung, (Garmisch - lift)+
lift Common, href beschreibung?
apartment Common, href beschreibung?
zimmer Common, href beschreibung?
foyer Common, href beschreibung?
Modularisierung von XHTML
Dieses Modul definiert außerdem die Inhaltsmenge Garmisch mit dem minimalen Inhaltsmodell
htte | lift | apartment | zimmer | foyer | kamin.
5 Abstrakte XHTML-Module
Dieser Abschnitt ist normativ.
Dieser Abschnitt spezifiziert den Inhalt der abstrakten XHTML-Module. Diese Module sind
abstrakte Definitionen von Sammlungen von Elementen, Attributen und deren Inhaltsmodellen.
Diese abstrakten Module k=nnen auf jeden geeigneten Spezifikationsmechanismus abgebildet
werden. Implementierungen von XHTML-Modulen mit DTDs, zum Beispiel, bildet diese
Module auf DTDs gem@ß [XML] ab.
Inhaltentwickler und Ger@tentwickler sollten diesen Abschnitt als eine Anleitung zur Definition
des durch die verschiedenen XHTML-definierten Module bereitgestellten Funktionsumfangs
ansehen. Bei der Entwicklung von Dokumenten oder der Definition eines Profils fr eine Klasse
von Dokumenten k=nnen Inhaltentwickler bestimmen, welche dieser Module essentiell zur
Vermittlung ihrer Information sind. Beim Enturf von Client-Software sollten Entwickler die Pro-
file ihrer Ger@te durch Auswahl aus den hier definierten abstrakten Modulen entwickeln.
Sofern hier nichts anderes steht, sind die Bedeutungen der Elemente und Attribute in [HTML4]
definiert.
Die folgenden Basisattributmengen werden bei vielen Elementen benutzt. In jedem Fall ihrer
Verwendung werden sie durch Angabe ihres Sammlungsnamens statt durch Aufz@hlung der
Liste angegeben.
Das Strukturmodul definiert die haupts@chlichen Strukturelemente fr XHTML. Diese Ele-
mente sind praktisch die Basis fr das Inhaltsmodell von vielen Dokumenttypen der XHTML-
Familie. Die in diesem Modul enthaltenen Elemente und Attribute sind:
Dieses Modul ist die zugrunde liegende Strukturdefinition fr XHTML-Inhalt. Das html-Element
ist das Wurzelelement aller Dokumenttypen der XHTML-Familie.
Beachten Sie, dass der Wert des xmlns-Attributs als „[Link] definiert
ist. Beachten Sie auch, dass es aufgrund der besonderen Behandlung des xmlns-Attributs durch
XML-Namensraum-f@hige Parser [XMLNAMES] erlaubt ist, das Attribut an jedem Element zu
haben. Jedenfalls soll bei jeder Verwendung des xmlns-Attributs im Kontext eines XHTML-Mo-
<edition
[Link]>
duls, egal ob mit Pr@fix oder ohne, der Wert des Attributs der hier definierte XHTML-Na-
mensraum sein. Siehe Abschnitt D.2 (Definieren des Namensraums fr ein Modul) fr weitere
Regeln bezglich der Namensraumverwendung mit Modulen der XHTML-Familie.
Implementierung: DTD
Heading
h1 | h2 | h3 | h4 | h5 | h6
Block
address | blockquote | div | p | pre
Inline
Implementierung: DTD
Das Hypertext-Modul stellt das Element zur Verfgung, das zur Definition von Hyperlinks zu
anderen Ressourcen benutzt wird. Dieses Modul untersttzt die folgenden Elemente und Attri-
bute:
Dieses Modul fgt das a-Element zur Inline-Inhaltsmenge des Textmoduls hinzu.
Implementierung: DTD
Wie schon der Name sagt, stellt das Listenmodul listenorientierte Elemente zur Verfgung. Ins-
besondere untersttzt das Listenmodul die folgenden Elemente und Attribute:
<edition
[Link]>
Diese Modul definiert auch die Inhaltsmenge „List“ mit dem minimalen Inhaltsmodell (dl | ol |
ul)+ und fgt diese Menge zur Flow-Inhaltsmenge des Textmoduls hinzu.
Implementierung: DTD
Das Applet-Modul stellt Elemente fr den Verweis auf externe Anwendungen zur Verfgung.
Insbesondere untersttzt das Applet-Modul die folgenden Elemente und Attribute:
Wenn das Applet-Modul verwendet wird, fgt es das applet-Element zur Inline-Inhaltsmenge
des Textmoduls hinzu.
Implementierung: DTD
Dieses Modul definiert Elemente, Attribute und ein minimales Inhaltsmodell fr einfache dar-
stellungsorientierte Auszeichnungen:
Wenn das Modul verwendet wird, wird das hr-Element zur Inhaltsmenge Block des Text-
moduls erg@nzt. Des Weiteren werden die Elemente b, big, i, small, sub, sup, und tt zur
Inhaltsmenge Inline des Textmoduls erg@nzt.
Implementierung: DTD
Wenn das Modul verwendet wird, werden die Elemente del und ins der Inline-Inhaltsmenge
des Textmoduls hinzugefgt.
Implementierung: DTD
Das Modul fr bidirektionalen Text definiert ein Element fr die Definition der Schreibrichtung
des Elementinhalts.
Wenn das Modul verwendet wird, wird das Element bdo der Inline-Inhaltsmenge des Text-
moduls hinzugefgt. Ausw@hlen dieses Moduls fgt außerdem das Attribut dir* ("ltr" | "rtl")
der Attributsammlung I18N hinzu.
Implementierung: DTD
<edition
[Link]>
Form
form
Formctrl
input | label | select | textarea
Wenn dieses Modul verwendet wird, fgt es die Form-Inhaltsmenge der Block-Inhaltsmenge
und die Formctrl-Inhaltsmenge der Inline-Inhaltsmenge hinzu, jeweils definiert im Text-
modul.
Implementierung: DTD
Das Formularmodul stellt alle Formularf@higkeiten von HTML 4.0 zur Verfgung. Das Formu-
larmodul untersttzt:
Form
form | fieldset
Formctrl
input | select | textarea | label | button
Wenn dieses Modul verwendet wird, fgt es die Form-Inhaltsmenge der Block-Inhaltsmenge
und die Formctrl-Inhaltsmenge der Inline-Inhaltsmenge hinzu, jeweils definiert im Text-
modul.
Das Formularmodul ist eine Obermenge des Basisformularmoduls. Diese Module drfen nicht
zusammen in einem einzelnen Dokumenttyp verwendet werden.
Implementierung: DTD
<edition
[Link]>
Wenn dieses Modul verwendet wird, fgt es das table-Element der Block-Inhaltsmenge des
Textmoduls hinzu.
Implementierung: DTD
Wie bereits der Name andeutet, stellt das Tabellenmodul Tabellenelemente zur Verfgung, auf
die nicht visuelle Benutzerprogramme besser zugreifen k=nnen. Das Tabellenmodul stellt die
folgenden Elemente, Attribute und minimalen Inhaltsmodelle zur Verfgung:
<edition
[Link]>
Wenn dieses Modul verwendet wird, fgt es das table-Element der Block-Inhaltsmenge des
Textmoduls hinzu.
Implementierung: DTD
Wenn das Modul verwendet wird, fgt es das img-Element der Inline-Inhaltsmenge des Text-
moduls hinzu.
Implementierung: DTD
Wenn das Modul verwendet wird, fgt es das map-Element der Inline-Inhaltsmenge des Text-
moduls hinzu.
Implementierung: DTD
Wenn das Modul verwendet wird, fgt es das object-Element der Inline-Inhaltsmenge des
Textmoduls hinzu.
Implementierung: DTD
<edition
[Link]>
Wenn dieses Modul ausgew@hlt wird, wird das minimale Inhaltsmodell des html-Elements des
Strukturmoduls zu (head, frameset) ge@ndert.
Implementierung: DTD
Aus einem Frame heraus kann veranlasst werden, dass ein verlinktes Dokument in einem
bestimmten Ziel-Frame erscheint. Dieses Modul fgt das target-Attribut zu den Link-definie-
renden Elementen (a, area und so weiter) hinzu. Diese Funktion ist als separates Modul defi-
niert, damit es in Dokumente eingebaut werden kann, die in Frames auftreten, und auch in
Dokumente, die target verwenden, um ein neues Fenster zu =ffnen.
Implementierung: DTD
Wenn das Modul verwendet wird, fgt es das iframe-Element der Inline-Inhaltsmenge des
Textmoduls hinzu.
Implementierung: DTD
Implementierung: DTD
<edition
[Link]>
Wenn dieses Modul gew@hlt wird, wird das meta-Element dem Inhaltsmodell des head-Elements,
definiert im Strukturmodul, hinzugefgt.
Implementierung: DTD
Modularisierung von XHTML
Wenn dieses Modul verwendet wird, werden die script- und noscript-Elemente zu den Block
und Inline-Inhaltsmengen des Textmoduls hinzugefgt. Außerdem wird das script-Element
dem Inhaltsmodell des head-Elements, definiert im Strukturmodul, zugefgt.
Implementierung: DTD
Wenn dieses Modul verwendet wird, fgt es das style-Element dem Inhaltsmodell des head-Ele-
ments, definiert im Strukturmodul, hinzu.
Implementierung: DTD
Wenn dieses Modul verwendet wird, fgt es das link-Element zum Inhaltsmodell des head-Ele-
ments, definiert im Strukturmodul.
Implementierung: DTD
Wenn dieses Modul verwendet wird, fgt es das base-Element dem Inhaltsmodell des head-Ele-
ments, definiert im Strukturmodul, hinzu.
Implementierung: DTD
<edition
[Link]>
Beachten Sie, dass durch Einbinden des Moduls sowohl das name- als auch das id-Attribut fr
die aufgefhrten Elemente definiert werden. Wenn dann das name-Attribut fr ein Element defi-
niert wird, so muss auch das id-Attribut definiert werden. Des Weiteren mssen beide Attri-
bute denselben Wert haben. Wenn schließlich das Dokument, welches das Attribut benutzt,
mit dem Internet-Medientyp „text/xml“ oder „application/xml“ ausgeliefert wird, dann soll der
Wert des name-Attributs dieser Elemente nicht als Fragmentbezeichner benutzt werden.
gew@hlt ist.
frame& name (CDATA) Wenn das Frames-Modul
ausgew@hlt ist.
iframe& name (CDATA) Wenn das Iframe-Modul
ausgew@hlt ist.
img& name (CDATA) Wenn das Bildmodul aus-
gew@hlt ist.
map& name (CDATA) Wenn das Modul fr
client-seitige Image Maps
ausgew@hlt ist.
Implementierung: DTD
Die folgende Tabelle zeigt weitere Attribute fr Elemente, die an anderer Stelle definiert wer-
den, wenn das Altlastenmodul ausgew@hlt wird.
Elemente Attribute Bemerkungen
body& alink (Color), background (URI), bgcolor
(Color), link (Color), text (Color), vlink
<edition
[Link]>
Implementierung: DTD
C Implementierungen der
XHTML-Schema-Module
Dieser Anhang ist normativ.
Sobald XML-Schema zu einer W3C Recommendation wird, wird dieser Anhang die Implemen-
tierungen der in Abschnitt 5 (Abstrakte XHTML-Module) definierten Module per XML-Schema
enthalten.
.mod
Parameter-Entities tragen das Suffix .mod, wenn sie ein DTD-Modul darstellen (eine Samm-
lung von Elementen, Attributen, Parameter-Entities und so weiter). In dieser Spezifikation
ist jedes Modul eine atomare Einheit und kann als separates Datei-Entity dargestellt wer-
den.
.module
Parameter-Entities tragen das Suffix .module, wenn sie die Aufnahme eines DTD-Moduls
durch eines der Schlsselw=rter INCLUDE oder IGNORE fr bedingte Abschnitte steuern.
.qname
Parameter-Entities tragen das Suffix .qname, wenn sie den qualifizierten Namen fr ein Ele-
ment repr@sentieren. Siehe Abschnitt D.2 (Definieren des Namensraums fr ein Modul) fr
weitere Informationen ber qualifizierte Namen.
.content
Parameter-Entities tragen das Suffix .content, wenn sie das Inhaltsmodell eines Elementtyps
darstellen.
.class
Parameter-Entities tragen das Suffix .class, wenn sie Elemente derselben Klasse darstellen.
.mix
Parameter-Entities tragen das Suffix .mix, wenn sie eine Sammlung von Elementtypen ver-
schiedener Klassen darstellen.
.attrib
Parameter-Entities tragen das Suffix .attrib, wenn sie eine Gruppe von Token darstellen,
die ein oder mehrere vollst@ndige Attributspezifikationen innerhalb einer ATTLIST-Dekla-
ration bilden.
<edition
[Link]>
Zum Beispiel wurde in HTML 4 das Parameter-Entity %block; definiert, um die heterogene
Sammlung von Elementtypen darzustellen, die Block-Elemente sind. In dieser Spezifikation heißt
das entsprechende Parameter-Entity %[Link];.
Bei der Definition von Parameter-Entities innerhalb der hier definierten Klassen, sollten
Module den Gltigkeitsbereich der Entity-Namen durch Einsatz von eindeutigen Pr@fixen ein-
schr@nken. Zum Beispiel k=nnte das Inhaltsmodell des Elements myelement im Modul mymodule
den Namen [Link] tragen. Andere Schemata sind m=glich. Unabh@ngig
von dem verwendeten Schema sollten Modulautoren sicherstellen, dass die von ihnen definier-
ten Parameter-Entities eindeutig benannt sind, so dass sie nicht mit den Namen anderer Para-
meter-Entities kollidieren und die Schnittstellen der Module fr deren Anwender offensichtlich
sind.
XHTML verlangt, dass sich die in einem Modul deklarierten Elemente und Attribute innerhalb
eines definierten Namensraums befinden [XMLNAMES]. Die Kennzeichnung dieses Namens-
raums ist ein beliebiger URI. XHTML verlangt, dass das Modul, im Falle der Implementierung
des Moduls durch eine XML-DTD, den Namensraum in einer bestimmten Weise deklariert.
Der Zweck davon ist, dass das Namensraumpr@fix sowie das Pr,fix, mit dem Elemente und
Attribute des Moduls identifiziert werden, zum Zeitpunkt des Parsings beziehungsweise der
Validierung des Dokuments gew@hlt werden k=nnen.
Autoren, die Dokumente schreiben m=chten, die auf hybriden Dokumenttypen basieren, steht
es frei, Namensraumpr@fixe bei Elementen aus dem XHTML-Namensraum, bei Elementen aus
anderen Namensr@umen oder beide M=glichkeiten zu w@hlen. Um sicherzugehen, dass solche
Dokumente XHTML-konform und abw@rtskompatibel zu Werkzeugen sind, die Namensr@ume
nicht kennen, empfiehlt das W3C, keine Namensraumpr@fixe bei Elementen aus dem XHTML-
Namensraum zu verwenden. Falls Autoren ihre Inhalte durch namensraumf@hige Software ver-
arbeiten lassen m=chten, r@t das W3C darberhinaus, dass Elemente außerhalb des XHTML-
Namensraum mit einem Namensraumpr@fix angegeben werden; sie sollten sich nicht auf den
XML-Default-Namensraum verlassen.
Jedes XHTML-konforme Modul, das in Form einer XML-DTD implementiert ist, muss ein
Default-Namensraumpr@fix, eine M=glichkeit, dieses Pr@fix innerhalb einer Dokumentinstanz
zu @ndern, sowie einen ausgezeichneten Abschnitt (marked section) besitzen, der die Verarbei-
tung des Pr@fixes einschaltet.
Beachten Sie, dass es erlaubt ist und erwartet wird, dass mehrere verwandte Module Teil des-
selben Namensraums sind. Zum Beispiel sind alle XHTML-Module Teil desselben Namens-
raums.
Als erstes mssen Sie ein Teilmodul fr qualifizierte Namen definieren (ein Teilmodul ist ledig-
lich ein Datei-Entity, das getrennt ist, um in die endltige DTD an geeigneter Stelle eingefgt zu
werden). Das Teilmodul fr qualifizierte Namen wird gem@ß den folgenden Schritten erstellt
(dabei wird MODULE durch eine geeignete Zeichenkette fr das neue Modul ersetzt):
1. Definiere ein Parameter-Entity [Link], das anzeigt, ob die Elementnamen im
Modul mit XML-Namensraumpr@fixen verwendet werden oder nicht. Der Ausgangswert
dieses Parameter-Entities sollte „%[Link];“ sein. Das Parameter-Entity [Link] ist
Ein Beispiel fr ein qname-Teilmodul fr ein hypothetisches Inventarmodul ist Folgendes:
xmlns:inventory="[Link]
...................................................................... - ->
<!- - Declare the default value for prefixing of this module's elements - ->
<!- - Note that the [Link] will get overridden by the XHTML Framework or
by a document instance. - ->
<!ENTITY % [Link] "IGNORE" >
<!ENTITY % [Link] "%[Link];" >
<edition
[Link]>
<!- - Declare the xml namespace attribute for this module - ->
<![%[Link];[
<!ENTITY % [Link]
"xmlns:%[Link]; %[Link]; #FIXED '%[Link];'" >
]]>
<!ENTITY % [Link] "" >
<!- - Declare the extra namespace that should be included in the XHTML
elements - ->
<!ENTITY % [Link]
%[Link]; >
Modularisierung von XHTML
<!- - Now declare the qualified names for all of the elements in the
module - ->
<!ENTITY % [Link] "%[Link];shelf" >
<!ENTITY % [Link] "%[Link];item" >
<!ENTITY % [Link] "%[Link];desc" >
<!ENTITY % [Link] "%[Link];sku" >
<!ENTITY % [Link] "%[Link];price" >
D.2.2 Deklarationsteilmodul(e)
Als n@chstes mssen Sie ein oder mehrere „Deklarationsteilmodule“ definieren. Der Zweck
dieser Datei-Entities besteht in der Deklaration der XML-DTD-Elemente und -Attributlisten.
Ein XHTML-Deklarationsteilmodul sollte wie folgt aufgebaut werden:
1. Definiere ein Parameter-Entity zur Verwendung innerhalb der ATTLIST jedes deklarierten
Elements. Dieses Parameter-Entity sollte %[Link]; enthalten, falls %[Link]-
xed; auf INCLUDE gesetzt ist und %[Link]; plus "xmlns %[Link]; #FIXED
'%[Link];'", falls %[Link]; auf IGNORE gesetzt ist.
2. Deklariere alle Elemente und Attribute des Moduls. Fge das oben definierte Parameter-
Entity zu jeder ATTLIST eines Elements, so dass alle erforderlichen xmlns-Attribute fr
jedes Element des Moduls verfgbar sind.
3. Falls das Modul Attribute fr Elemente definiert, die in Modulen definiert sind, die sich nicht
im selben Namensraum befinden, deklariere solche Attribute mit dem Pr@fix %MODU-
[Link]. Zum Beispiel:
Dies wrde dem img-Element des Bildmoduls ein Attribut hinzufgen. Der Name des Attri-
buts w@re der qualifizierte Name, einschließlich Pr@fix, sofern Pr@fixe fr eine Dokument-
instanz aktiviert w@ren. Es wrde zudem das Attribut xmlns:MODULE_PREFIX der Attri-
butliste des img-Elements hinzufgen, so dass ein namensraumf@higer XML-Parser wissen
wrde, wie er das Namensraumpr@fix aufzul=sen h@tte.
Das folgende Beispiel zeigt ein Deklarationsteilmodul fr ein hypothetisches Inventarmodul:
xmlns:inventory="[Link]
...................................................................... - ->
shelf
item
<!- - Define a common set of attributes for all module elements - ->
<!ENTITY % [Link]
"%[Link];
id ID #IMPLIED
>
<edition
[Link]>
%[Link];
>
Manchmal ist es wnschenswert, ein XHTML-Modul auch als alleinstehende DTD verwenden
zu k=nnen. Ein gutes Beispiel dafr, ist unser obiges Inventarmodul. Die „Items“ mssen in ein
XHTML-Dokument einzubetten sein und zudem beispielsweise als alleinstehende, aus einer
Datenbank exportierte Dokumente verfgbar sein. Der einfachste Weg, dies zu erreichen, ist
das Definieren einer DTD-Datei, die die Komponenten des Moduls instanziiert. Solch eine
DTD wrde die folgende Struktur besitzen:
1. Einbinden des XHTML-Datentypmoduls (das qnames-Modul wird wahrscheinlich einige
Datentypen benutzen – in jedem Fall den URI-Datentyp fr das xmlns-Attribut).
2. Einbinden des qnames-Moduls in das eigene Modul.
3. Definieren des Parameter-Entities [Link] als %[Link];.
4. Einbinden des Deklarationsmoduls in das eigene Modul.
Am Beispiel des Inventarmoduls sieht das wie folgt aus:
xmlns:inventory="[Link]
...................................................................... - ->
shelf
item
sku
desc
price
<!ENTITY % [Link]
PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
"[Link] >
%[Link];
Die DTD kann dann aus Dokumenten heraus referenziert werden, die nur die Elemente aus
Diese Vorgehensweise erlaubt die Definition von Elementen und Attributen, die sich im Gel-
tungsbereich ihres eigenen Namensraums befinden. Zudem k=nnen Autoren das vorgegebene
Pr@fix fr Elemente und Attribute verwenden:
<edition
[Link]>
W@hrend der hier gezeigte Ansatz die Definition von Auszeichnungssprachen erlaubt, die XML-
und XML-Namensraumkonform sind, werden einige Eigenschaften von XML-Namensr@umen
nicht untersttzt:
1. XML-Namensr@ume gestatten die Neudeklarierung des xmlns-Attributs fr einen Namens-
raum an jeder Stelle im Baum. Darber hinaus erlaubt diese Neudeklarierung zwischen vor-
gegebenem Namensraum (kein Pr@fix) und Verwendung des Pr@fixes umzuschalten und das
Pr@fix zu @ndern. Die Methode, die in diesem Dokument definiert wurde, l@sst das nicht zu.
In der gesamten Dokumentinstanz muss ein vorgegebener Namensraum dasselbe Pr@fix
(falls eines benutzt wird) oder keines verwenden.
2. Falls der vorgegebene Namensraum (kein Pr@fix) verwendet wird, darf man sich darauf ver-
lassen, dass die DTD der Dokumente den Parser ber den Namensraum von Elementen
informiert. Da aber namensraumf@hige Prozessoren die DTD nicht unbedingt lesen mssen,
sollten Autoren den XML-Namensraum eines Elements immer deklarieren, wenn er sich
@ndert:
...
<p>
<myelement xmlns="..." />
</p>
<edition
[Link]>
fachen Schritten kann der Client-Entwickler die in diesem Dokument definierte Architektur
einsetzen, um die Entwicklungskosten fr die DTD zu senken und um sicherzustellen, dass
er die ausgew@hlte XHTML-Teilmenge vollst@ndig untersttzt.
<!ATTLIST %[Link];
%[Link];myattr CDATA #IMPLIED
%[Link];
>
Modularisierung von XHTML
Dies wrde das Attribut „myattr“, mit dem optionalen, durch „%[Link]“ definierten
Pr@fix, dem Element „a“ hinzufgen. Das funktioniert, weil XML die Definition oder Erweite-
rung einer Attributliste an jeder Stelle in einer DTD gestattet. Eine Beschreibung von qualifi-
zierten Namen und Namensraumpr@fixen finden Sie in Abschnitt D.2 (Definieren des Namens-
raums fr ein Modul).
Selbstverst@ndlich bedeutet das Hinzufgen eines Attributs zu einer DTD nicht, dass irgendein
neues Verhalten fr beliebige Clients definiert w@re. Ein Autor k=nnte das zus@tzliche Attribut
aber dazu verwenden, um Information darin abzulegen, die etwa durch Skripte per Document
Object Model verarbeitet werden.
Nachdem die Elemente deklariert sind, mssen sie in das Inhaltsmodell integriert werden. Stra-
tegien fr die Integration eines neuen oder mehrerer neuer Elemente in das Inhaltsmodell wer-
den im folgenden Abschnitt besprochen.
Eine DTD mit diesem Inhaltsmodell wrde ein Dokument mit folgendem Ausschnitt zulassen:
<img src="...">
<myml:myelement >This is content of a locally defined element</myml:myelement>
</img>
Es ist wichtig, darauf hinzuweisen, dass das img-Element normalerweise das Inhaltsmodell EMPTY
besitzt. Durch das Hinzufgen von myelement zum Inhaltsmodell, wird tats@chlich nur EMPTY
durch myelement ersetzt. Im Fall von anderen Elementen, die bereits ein definiertes Inhalts-
modell besitzen, wrde das Hinzufgen eines Elements die vollst@ndige bernahme des vorhan-
denen Inhaltsmodells zuzglich myelement erfordern.
<edition
[Link]>
In Erweiterung des obigen Beispiel wollen wir nun dieses Modul berall dort einbringen, wo die
Inhaltsmodellgruppe „%[Link]“ erlaubt ist. Das geht beispielsweise so:
<!ENTITY % [Link]
"| %[Link];" >
Bis hierhin haben die Beispiele die Methoden zur Erweiterung von XHTML und ihren Inhalts-
modellen gezeigt. Ist dies erst einmal geschehen, besteht der folgende Schritt darin, die Module,
die die DTD bilden, zu einem einzigen DTD-Treiber zusammenzufassen. Der Treiber enth@lt
die neuen Definitionen, so dass sie die zugrunde liegenden XHTML-Definitionen berschreiben
beziehungsweise erweitern.
Unter Verwendung des einfachen Beispiels von oben, l@sst sich eine neue DTD definieren, die
sehr einfach die XHTML-Module benutzt und erweitert. Als erstes definieren wir die neuen
Elemente und ihre Inhaltsmodelle in einem Modul:
<!- - Declare a Parameter Entity (PE) that defines any external namespaces
that are used by this module - ->
<!ENTITY % [Link]
"%[Link];
id ID #IMPLIED"
>
<!ELEMENT %[Link];
( #PCDATA | %[Link]; )* >
<!ATTLIST %[Link];
Als n@chstes definieren wir den DTD-Treiber fr die neue Sprache:
<![%[Link];[
<!ENTITY % [Link]
"xmlns:%[Link]; %[Link]; #FIXED '%[Link];'" >
]]>
<!ENTITY % [Link] "" >
<edition
[Link]>
<!ENTITY % [Link]
"%[Link];"
>
<!- - Set the content model for our language - ->
<!ENTITY % [Link]
SYSTEM "[Link]" >
<!- - Instantiate xhtml basic's DTD to do all the work - ->
<!ENTITY % [Link]
PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"[Link] >
%[Link];
Bei Einsatz dieser DTD lassen sich XML-Namensraumpr@fixe wie im folgenden Beispiel ein-
schalten:
Als n@chstes folgt der Fall, wobei ein vollst@ndiges, zus@tzliches und komplexes Modul zu
XHTML (oder einer Teilmenge von XHTML) hinzugefgt wird. Im Grunde ist es das gleiche
wie in dem trivialen Beispiel oben. Der einzige Unterschied besteht darin, dass das Modul durch
Referenzierung in die DTD eingebaut wird und nicht durch explizite Aufnahme der neuen Defi-
nitionen.
Ein solches komplexes Modul ist die DTD fr [MATHML]. Um MathML und XHTML in einer
einzigen DTD zu integrieren, wrde ein Autor nur entscheiden, wo MathML-Inhalt im Doku-
ment zul@ssig ist und dann das Wurzelelement von MathML an dieser Stelle dem Inhaltsmodell
hinzuf[Link] erstes definieren wir ein Modul fr das Inhaltsmodell, instanziieren die Math-
ML-DTD und verbinden sie mit dem Inhaltsmodell:
<!ENTITY % [Link]
"%[Link]; | %[Link]; | %[Link]; | %[Link];
| %[Link];" >
Als n@chstes definieren wir den DTD-Treiber, der unser neues Inhaltsmodellmodul als Inhalts-
modell fr die DTD benennt und dann die weitere Arbeit beispielsweise dem Treiber von
XHTML 1.1 berl@sst:
Eine weitere M=glichkeit, wie DTD-Autoren XHTML-Module benutzen k=nnen, besteht in der
Definition einer DTD, die aus einer Teilmenge eines Dokumenttyps der XHTML-Familie
besteht (zum Beispiel weil sie Ger@te oder Software entwickeln, die nur einen Teil von XHTML
untersttzen). Dies zu tun, ist nur wenig aufwendiger als das vorhergehende Beispiel. Die
wesentlichen Schritte sind:
1. Nehmen Sie eine DTD der XHTML-Familie als Startpunkt des neuen Dokumenttyps (wir
werden XHTML 1.1 nehmen).
2. W@hlen Sie die Module, die aus dieser DTD entfernt werden sollen.
3. Definieren Sie eine neue DTD, die die Module ignoriert („IGNORE“).
4. Bauen Sie ein paar neue Module ein.
Nehmen wir beispielsweise ein Ger@t an, das XHTML-Module, jedoch ohne Formulare und
Tabellen benutzt. Die DTD fr ein solches Ger@t s@he wie folgt aus:
Beachten Sie, dass die Inhaltsmodelle der XHTML 1.1-DTD dadurch in keiner Weise ver@ndert
werden. Da XML jedoch Elemente, in nicht definierten Inhaltsmodellen ignoriert, werden die
Formular- und Tabellenelemente automatisch aus dem Modell entfernt.
<edition
[Link]>
Schließlich wollen einige DTD-Autoren vielleicht von vorn beginnen und das Modularisierungs-
rahmenwerk von XHTML als Baukasten fr eine neue Auszeichnungssprache nutzen. Diese
Sprache muss aus den mindestens ben=tigten Modulen von XHTML bestehen. Darber hinaus
darf sie andere XHTML-definierte Module oder jedes andere Modul enthalten, das der Autor
einbauen m=chte. In diesem Beispiel nehmen wir die notwendigen XHTML-Module, erg@nzen
ein paar weitere XHTML-Module und zudem das oben definierte Modul.
Im ersten Schritt benutzen wir das durch XHTML bereitgestellte Muster ([Link]/TR/
xhtml-modularization/DTD/templates/[Link]) fr ein neues Teilmodul fr
qualifizierte Namen; wir @ndern es, um die qualifizierten Namen und Namensr@ume fr unsere
neuen Elemente zu definieren.
<!- - Bring in the datatypes - we use the [Link] PE for declaring the
xmlns attributes. - ->
<!ENTITY % [Link]
PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
"[Link] >
%[Link];
<!- - Declare a Parameter Entity (PE) that defines any external namespaces
that are used by this module - ->
<!ENTITY % [Link] "" >
<!- - Declare a PE that defines the xmlns attributes for use by MyML. - ->
<![%[Link];[
<!ENTITY % [Link]
"xmlns:%[Link]; %[Link]; #FIXED '%[Link];'
%[Link];"
>
]]>
<!ENTITY % [Link]
"xmlns %[Link]; #FIXED '%[Link];'
%[Link];"
>
<!- - Make sure that the MyML namespace attributes are included on the XHTML
attribute set - ->
<![%[Link];[
<!ENTITY % [Link]
"%[Link];" >
]]>
<!ENTITY % [Link]
""
>
<!- - Now declare the element names - ->
Als n@chstes definieren wir ein Modul mit den Element- und Attributdefinitionen auf Basis des
entsprechenden Musters ([Link]/TR/xhtml-modularization/DTD/templates/template-1.
xmlns:myml="[Link]
...................................................................... - ->
myelement
myotherelement
This module has no purpose other than to provide structure for some
PCDATA content.
- ->
<!ELEMENT %[Link];
( #PCDATA | %[Link]; )* >
<!ATTLIST %[Link];
myattribute CDATA #IMPLIED
%[Link];
>
<edition
[Link]>
>
Nun schreiben wir Inhaltsmodelle, die die neuen Elemente und Attribute in die anderen
XHTML-Elemente einh@ngen. Das folgende Beispiel ist entsprechend dem Inhaltsmodell von
XHTML-Basic aufgebaut, es ist jedoch ein vollst@ndiges, unabh@ngiges Inhaltsmodellmodul:
xmlns:myml="[Link]
Modularisierung von XHTML
...................................................................... - ->
<!ENTITY % [Link]
"( %[Link]; )*" >
<!ENTITY % [Link]
"| %[Link]; | %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link];" >
<!ENTITY % [Link]
"" >
<!ENTITY % [Link]
"%[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link];" >
<!ENTITY % [Link]
"| %[Link]; | %[Link]; | %[Link];" >
<edition
[Link]>
| %[Link];
| %[Link];
%[Link];"
>
xmlns:myml="[Link]
- ->
<!ENTITY % [Link] "-//MY COMPANY//DTD XHTML MYML 1.0//EN" >
<!- - Tell the framework to use our qualified names module as an extra qname
driver - ->
<!ENTITY % [Link]
SYSTEM "[Link]" >
<!- - Define the Content Model for the framework to use - ->
<!ENTITY % [Link]
<edition
[Link]>
Das Dokument kann die Elemente außerhalb des XHTML-Namensraums auch mit Pr@fixen ver-
wenden:
F Implementierungen von
XHTML-Modulen mit DTDs
Dieser Anhang ist normativ.
Dieser Anhang enth@lt die DTD-Implementierungen der in Abschnitt 5 (Abstrakte XHTML-
Module) definierten Module. Diese Modulimplementierungen k=nnen von jedem Dokumenttyp
der XHTML-Familie benutzt werden.
F.1 XHTML-Zeichen-Entities
XHTML-DTDs stellen eine Sammlung von benannten Zeichen-Entities zur Verfgung; sie wer-
den in diesem Abschnitt definiert.
Anmerkung der bersetzer: Beachten Sie bitte auch den Abschnitt 24 der kom-
mentierten deutschen bersetzung von HTML 4. Dort finden Sie graphische Darstel-
lungen der Zeichen-Entities im Web-Browser.
Typical invocation:
<!ENTITY % xhtml-lat1
PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
"[Link]" >
%xhtml-lat1;
<!ENTITY nbsp " " ><!- - no-break space = non-breaking space, U+00A0 ISOnum
- ->
<!ENTITY iexcl "¡" ><!- - inverted exclamation mark, U+00A1 ISOnum - ->
<!ENTITY cent "¢" ><!- - cent sign, U+00A2 ISOnum - ->
<!ENTITY pound "£" ><!- - pound sign, U+00A3 ISOnum - ->
<!ENTITY curren "¤" ><!- - currency sign, U+00A4 ISOnum - ->
<!ENTITY yen "¥" ><!- - yen sign = yuan sign, U+00A5 ISOnum - ->
<!ENTITY brvbar "¦" ><!- - broken bar = broken vertical bar, U+00A6 ISOnum - ->
<!ENTITY sect "§" ><!- - section sign, U+00A7 ISOnum - ->
<!ENTITY uml "¨" ><!- - diaeresis = spacing diaeresis, U+00A8 ISOdia - ->
<!ENTITY copy "©" ><!- - copyright sign, U+00A9 ISOnum - ->
<!ENTITY ordf "ª" ><!- - feminine ordinal indicator, U+00AA ISOnum - ->
<!ENTITY laquo "«" ><!- - left-pointing double angle quotation mark = left
pointing guillemet, U+00AB ISOnum - ->
<!ENTITY not "¬" ><!- - not sign, U+00AC ISOnum - ->
<!ENTITY shy "­" ><!- - soft hyphen = discretionary hyphen, U+00AD ISOnum
- ->
<edition
[Link]>
<!ENTITY reg "®" ><!- - registered sign = registered trade mark sign, U+00AE
ISOnum - ->
<!ENTITY macr "¯" ><!- - macron = spacing macron = overline = APL overbar,
U+00AF ISOdia - ->
<!ENTITY deg "°" ><!- - degree sign, U+00B0 ISOnum - ->
<!ENTITY plusmn "±" ><!- - plus-minus sign = plus-or-minus sign, U+00B1 ISOnum
- ->
<!ENTITY sup2 "²" ><!- - superscript two = superscript digit two = squared,
U+00B2 ISOnum - ->
<!ENTITY sup3 "³" ><!- - superscript three = superscript digit three = cubed,
U+00B3 ISOnum - ->
<!ENTITY acute "´" ><!- - acute accent = spacing acute, U+00B4 ISOdia - ->
<!ENTITY micro "µ" ><!- - micro sign, U+00B5 ISOnum - ->
<!ENTITY para "¶" ><!- - pilcrow sign = paragraph sign, U+00B6 ISOnum - ->
<!ENTITY middot "·" ><!- - middle dot = Georgian comma = Greek middle dot,
U+00B7 ISOnum - ->
<!ENTITY cedil "¸" ><!- - cedilla = spacing cedilla, U+00B8 ISOdia - ->
Modularisierung von XHTML
<!ENTITY sup1 "¹" ><!- - superscript one = superscript digit one, U+00B9
ISOnum - ->
<!ENTITY ordm "º" ><!- - masculine ordinal indicator, U+00BA ISOnum - ->
<!ENTITY raquo "»" ><!- - right-pointing double angle quotation mark = right
pointing guillemet, U+00BB ISOnum - ->
<!ENTITY frac14 "¼" ><!- - vulgar fraction one quarter = fraction one quarter,
U+00BC ISOnum - ->
<!ENTITY frac12 "½" ><!- - vulgar fraction one half = fraction one half, U+00BD
ISOnum - ->
<!ENTITY frac34 "¾" ><!- - vulgar fraction three quarters = fraction three
quarters, U+00BE ISOnum - ->
<!ENTITY iquest "¿" ><!- - inverted question mark = turned question mark,
U+00BF ISOnum - ->
<!ENTITY Agrave "À" ><!- - latin capital A with grave = latin capital A grave,
U+00C0 ISOlat1 - ->
<!ENTITY Aacute "Á" ><!- - latin capital A with acute, U+00C1 ISOlat1 - ->
<!ENTITY Acirc "Â" ><!- - latin capital A with circumflex, U+00C2 ISOlat1 - ->
<!ENTITY Atilde "Ã" ><!- - latin capital A with tilde, U+00C3 ISOlat1 - ->
<!ENTITY Auml "Ä" ><!- - latin capital A with diaeresis, U+00C4 ISOlat1 - ->
<!ENTITY Aring "Å" ><!- - latin capital A with ring above = latin capital A
ring, U+00C5 ISOlat1 - ->
<!ENTITY AElig "Æ" ><!- - latin capital AE = latin capital ligature AE, U+00C6
ISOlat1 - ->
<!ENTITY Ccedil "Ç" ><!- - latin capital C with cedilla, U+00C7 ISOlat1 - ->
<!ENTITY Egrave "È" ><!- - latin capital E with grave, U+00C8 ISOlat1 - ->
<!ENTITY Eacute "É" ><!- - latin capital E with acute, U+00C9 ISOlat1 - ->
<!ENTITY Ecirc "Ê" ><!- - latin capital E with circumflex, U+00CA ISOlat1 - ->
<!ENTITY Euml "Ë" ><!- - latin capital E with diaeresis, U+00CB ISOlat1 - ->
<!ENTITY Igrave "Ì" ><!- - latin capital I with grave, U+00CC ISOlat1 - ->
<!ENTITY Iacute "Í" ><!- - latin capital I with acute, U+00CD ISOlat1 - ->
<!ENTITY Icirc "Î" ><!- - latin capital I with circumflex, U+00CE ISOlat1 - ->
<!ENTITY Iuml "Ï" ><!- - latin capital I with diaeresis, U+00CF ISOlat1 - ->
<!ENTITY ETH "Ð" ><!- - latin capital ETH, U+00D0 ISOlat1 - ->
<!ENTITY Ntilde "Ñ" ><!- - latin capital N with tilde, U+00D1 ISOlat1 - ->
<!ENTITY Ograve "Ò" ><!- - latin capital O with grave, U+00D2 ISOlat1 - ->
<!ENTITY Oacute "Ó" ><!- - latin capital O with acute, U+00D3 ISOlat1 - ->
<!ENTITY Ocirc "Ô" ><!- - latin capital O with circumflex, U+00D4 ISOlat1 - ->
<!ENTITY Otilde "Õ" ><!- - latin capital O with tilde, U+00D5 ISOlat1 - ->
<!ENTITY Ouml "Ö" ><!- - latin capital O with diaeresis, U+00D6 ISOlat1 - ->
Typical invocation:
<edition
[Link]>
<!ENTITY % xhtml-special
PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
"[Link]" >
%xhtml-special;
Revisions:
2000-10-28: added ' and altered XML Predefined Entities for compatibility
- ->
<!- - Relevant ISO entity set is given unless names are newly introduced.
New names (i.e., not in ISO 8879 [SGML] list) do not clash with
any existing ISO 8879 entity names. ISO 10646 [ISO10646] character
numbers are given for each character, in hex. Entity values are
decimal conversions of the ISO 10646 values and refer to the
document character set. Names are Unicode [UNICODE] names.
- ->
Typical invocation:
<!ENTITY % xhtml-symbol
PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
"[Link]" >
%xhtml-symbol;
This DTD module is identified by the PUBLIC and SYSTEM identifiers:
<!- - Relevant ISO entity set is given unless names are newly introduced.
New names (i.e., not in ISO 8879 [SGML] list) do not clash with
any existing ISO 8879 entity names. ISO 10646 [ISO10646] character
<edition
[Link]>
numbers are given for each character, in hex. Entity values are
decimal conversions of the ISO 10646 values and refer to the
document character set. Names are Unicode [UNICODE] names.
- ->
<!ENTITY Theta "Θ" ><!- - greek capital letter theta, U+0398 ISOgrk3 - ->
<!ENTITY Iota "Ι" ><!- - greek capital letter iota, U+0399 - ->
<!ENTITY Kappa "Κ" ><!- - greek capital letter kappa, U+039A - ->
<!ENTITY Lambda "Λ" ><!- - greek capital letter lambda, U+039B ISOgrk3 - ->
<!ENTITY Mu "Μ" ><!- - greek capital letter mu, U+039C - ->
<!ENTITY Nu "Ν" ><!- - greek capital letter nu, U+039D - ->
<!ENTITY Xi "Ξ" ><!- - greek capital letter xi, U+039E ISOgrk3 - ->
<!ENTITY Omicron "Ο" ><!- - greek capital letter omicron, U+039F - ->
<!ENTITY Pi "Π" ><!- - greek capital letter pi, U+03A0 ISOgrk3 - ->
<!ENTITY Rho "Ρ" ><!- - greek capital letter rho, U+03A1 - ->
<!- - there is noSigmaf, and no U+03A2 character either - ->
<!ENTITY Sigma "Σ" ><!- - greek capital letter sigma, U+03A3 ISOgrk3 - ->
<!ENTITY Tau "Τ" ><!- - greek capital letter tau, U+03A4 - ->
<!ENTITY Upsilon "Υ" ><!- - greek capital letter upsilon,
U+03A5 ISOgrk3 - ->
<!ENTITY Phi "Φ" ><!- - greek capital letter phi, U+03A6 ISOgrk3 - ->
<!ENTITY Chi "Χ" ><!- - greek capital letter chi, U+03A7 - ->
<!ENTITY Psi "Ψ" ><!- - greek capital letter psi, U+03A8 ISOgrk3 - ->
<!ENTITY Omega "Ω" ><!- - greek capital letter omega, U+03A9 ISOgrk3 - ->
<!ENTITY alpha "α" ><!- - greek small letter alpha, U+03B1 ISOgrk3 - ->
<!ENTITY beta "β" ><!- - greek small letter beta, U+03B2 ISOgrk3 - ->
<!ENTITY gamma "γ" ><!- - greek small letter gamma, U+03B3 ISOgrk3 - ->
<!ENTITY delta "δ" ><!- - greek small letter delta, U+03B4 ISOgrk3 - ->
<!ENTITY epsilon "ε" ><!- - greek small letter epsilon, U+03B5 ISOgrk3 - ->
<!ENTITY zeta "ζ" ><!- - greek small letter zeta, U+03B6 ISOgrk3 - ->
<!ENTITY eta "η" ><!- - greek small letter eta, U+03B7 ISOgrk3 - ->
<!ENTITY theta "θ" ><!- - greek small letter theta, U+03B8 ISOgrk3 - ->
<!ENTITY iota "ι" ><!- - greek small letter iota, U+03B9 ISOgrk3 - ->
<!ENTITY kappa "κ" ><!- - greek small letter kappa, U+03BA ISOgrk3 - ->
<!ENTITY lambda "λ" ><!- - greek small letter lambda, U+03BB ISOgrk3 - ->
<!ENTITY mu "μ" ><!- - greek small letter mu, U+03BC ISOgrk3 - ->
<!ENTITY nu "ν" ><!- - greek small letter nu, U+03BD ISOgrk3 - ->
<!ENTITY xi "ξ" ><!- - greek small letter xi, U+03BE ISOgrk3 - ->
<!ENTITY omicron "ο" ><!- - greek small letter omicron, U+03BF NEW - ->
<!ENTITY pi "π" ><!- - greek small letter pi, U+03C0 ISOgrk3 - ->
<!ENTITY rho "ρ" ><!- - greek small letter rho, U+03C1 ISOgrk3 - ->
<!ENTITY sigmaf "ς" ><!- - greek small letter final sigma, U+03C2 ISOgrk3 - ->
<!ENTITY sigma "σ" ><!- - greek small letter sigma, U+03C3 ISOgrk3 - ->
<!ENTITY tau "τ" ><!- - greek small letter tau, U+03C4 ISOgrk3 - ->
<!ENTITY upsilon "υ" ><!- - greek small letter upsilon, U+03C5 ISOgrk3 - ->
<!ENTITY phi "φ" ><!- - greek small letter phi, U+03C6 ISOgrk3 - ->
<!ENTITY chi "χ" ><!- - greek small letter chi, U+03C7 ISOgrk3 - ->
<!ENTITY psi "ψ" ><!- - greek small letter psi, U+03C8 ISOgrk3 - ->
<!ENTITY omega "ω" ><!- - greek small letter omega, U+03C9 ISOgrk3 - ->
<!ENTITY thetasym "ϑ" ><!- - greek small letter theta symbol, U+03D1 NEW - ->
<!ENTITY upsih "ϒ" ><!- - greek upsilon with hook symbol, U+03D2 NEW - ->
<!ENTITY piv "ϖ" ><!- - greek pi symbol, U+03D6 ISOgrk3 - ->
<edition
[Link]>
<!ENTITY radic "√" ><!- - square root = radical sign, U+221A ISOtech - ->
<!ENTITY prop "∝" ><!- - proportional to, U+221D ISOtech - ->
<!ENTITY infin "∞" ><!- - infinity, U+221E ISOtech - ->
<!ENTITY ang "∠" ><!- - angle, U+2220 ISOamso - ->
<!ENTITY and "∧" ><!- - logical and = wedge, U+2227 ISOtech - ->
<!ENTITY or "∨" ><!- - logical or = vee, U+2228 ISOtech - ->
<!ENTITY cap "∩" ><!- - intersection = cap, U+2229 ISOtech - ->
<!ENTITY cup "∪" ><!- - union = cup, U+222A ISOtech - ->
<!ENTITY int "∫" ><!- - integral, U+222B ISOtech - ->
<!ENTITY there4 "∴" ><!- - therefore, U+2234 ISOtech - ->
<!ENTITY sim "∼" ><!- - tilde operator = varies with = similar to, U+223C
ISOtech - ->
<!- - tilde operator is NOT the same character as the tilde, U+007E,
although the same glyph might be used to represent both - ->
<!ENTITY cong "≅" ><!- - approximately equal to, U+2245 ISOtech - ->
<!ENTITY asymp "≈" ><!- - almost equal to = asymptotic to, U+2248 ISOamsr
- ->
<!ENTITY ne "≠" ><!- - not equal to, U+2260 ISOtech - ->
<!ENTITY equiv "≡" ><!- - identical to, U+2261 ISOtech - ->
<!ENTITY le "≤" ><!- - less-than or equal to, U+2264 ISOtech - ->
<!ENTITY ge "≥" ><!- - greater-than or equal to, U+2265 ISOtech - ->
<!ENTITY sub "⊂" ><!- - subset of, U+2282 ISOtech - ->
<!ENTITY sup "⊃" ><!- - superset of, U+2283 ISOtech - ->
<!- - note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
font encoding and is not included. Should it be, for symmetry?
It is in ISOamsn - ->
<!ENTITY nsub "⊄" ><!- - not a subset of, U+2284 ISOamsn - ->
<!ENTITY sube "⊆" ><!- - subset of or equal to, U+2286 ISOtech - ->
<!ENTITY supe "⊇" ><!- - superset of or equal to, U+2287 ISOtech - ->
<!ENTITY oplus "⊕" ><!- - circled plus = direct sum, U+2295 ISOamsb - ->
<!ENTITY otimes "⊗" ><!- - circled times = vector product, U+2297 ISOamsb
- ->
<!ENTITY perp "⊥" ><!- - up tack = orthogonal to = perpendicular, U+22A5
ISOtech - ->
<!ENTITY sdot "⋅" ><!- - dot operator, U+22C5 ISOamsb - ->
<!- - dot operator is NOT the same character as U+00B7 middle dot - ->
Revisions:
(none)
....................................................................... - ->
<edition
[Link]>
+ notations
+ datatypes
+ namespace-qualified names
+ common attributes
+ document model
+ character entities
%[Link];]]>
%[Link];]]>
Beachten Sie, dass das obige Modul ein Inhaltsmodellmodul referenziert. Dieses Modul wird „je
Dokument“ zus@tzlich zum Dokumenttyp-Treiber definiert. Das modulare Rahmenwerk sttzt
sich außerdem auf die folgenden Komponentenmodule:
F.2.1 XHTML-Basisarchitektur
Revisions:
(none)
....................................................................... - ->
<!- - This optional module includes declarations that enable XHTML to be used
as a base architecture according to the 'Architectural Forms Definition
Requirements' (Annex A.3, ISO/IEC 10744, 2nd edition). For more information
on use of architectural forms, see the HyTime web site at:
[Link]
- ->
<edition
[Link]>
<?IS10744:arch xhtml
public-id = "-//W3C//NOTATION AFDR ARCBASE XHTML 1.1//EN"
dtd-public-id = "-//W3C//DTD XHTML 1.1//EN"
dtd-system-id = "[Link]"
doc-elem-form = "html"
form-att = "html"
renamer-att = "htnames"
suppressor-att = "htsupp"
data-ignore-att = "htign"
auto = "ArcAuto"
options = "HtModReq HtModOpt"
Modularisierung von XHTML
F.2.2 XHTML-Notationen
Revisions:
(none)
....................................................................... - ->
<!- - Notations
<edition
[Link]>
F.2.3 XHTML-Datentypen
Revisions:
(none)
....................................................................... - ->
<!- - Datatypes
<!- - Color specification using color name or sRGB (#RRGGBB) values - ->
<!ENTITY % [Link] "CDATA" >
<edition
[Link]>
Revisions:
(none)
....................................................................... - ->
This module declares many of the common attributes for the XHTML DTD.
%[Link]; is declared in the XHTML Qname module.
- ->
<!ENTITY % [Link]
"id ID #IMPLIED"
>
<!ENTITY % [Link]
"class NMTOKENS #IMPLIED"
>
<!ENTITY % [Link]
"title %[Link]; #IMPLIED"
>
<!ENTITY % [Link]
"%[Link];
%[Link];
%[Link];
%[Link];
%[Link];"
>
<!ENTITY % [Link]
"xml:lang %[Link]; #IMPLIED"
>
<![%[Link];[
<!ENTITY % [Link]
"dir ( ltr | rtl ) #IMPLIED"
>
<!ENTITY % [Link]
"%[Link];
%[Link];"
>
]]>
<!ENTITY % [Link]
"%[Link];"
>
<!ENTITY % [Link]
"%[Link];
%[Link];
%[Link];
%[Link];"
>
Revisions:
#2000-10-22: added qname declarations for ruby elements
....................................................................... - ->
This module is contained in two parts, labeled Section 'A' and 'B':
<edition
[Link]>
<!- - The remainder of Section A is only followed in XHTML, not extensions. - ->
<edition
[Link]>
<edition
[Link]>
Revisions:
(none)
....................................................................... - ->
<!ENTITY % xhtml-lat1
PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
"[Link]" >
%xhtml-lat1;
<!ENTITY % xhtml-symbol
PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
"[Link]" >
%xhtml-symbol;
<!ENTITY % xhtml-special
PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
"[Link]" >
%xhtml-special;
F.3.1.1 Struktur
F.3.1.2 Text
F.3.1.3 Hypertext
F.3.1.4 Listen
F.3.2 Applet
F.3.3 Text-Module
F.3.3.1 Darstellung
F.3.3.3 Bidirektionaler Text
F.3.4 Formulare
F.3.4.1 Basisformulare
F.3.4.2 Formulare
F.3.5 Tabellen
F.3.5.1 Basistabellen
F.3.5.2 Tabellen
F.3.6 Bild
<edition
[Link]>
F.3.9 Objekt
F.3.10 Frames
F.3.11 Target
F.3.12 Iframe
F.3.14 Metainformation
Modularisierung von XHTML
F.3.15 Scripting
F.3.16 Stylesheet
F.3.17 Style-Attribut
F.3.18 Link
F.3.19 Base
F.3.20 Name-Identifizierung
F.3.21 Altlasten
Revisions:
(none)
....................................................................... - ->
<!- - Block Phrasal
<edition
[Link]>
Revisions:
(none)
....................................................................... - ->
<edition
[Link]>
hr
<!ATTLIST %[Link];
%[Link];
>
<!- - end of [Link] - ->]]>
Revisions:
(none)
....................................................................... - ->
div, p
Revisions:
(none)
....................................................................... - ->
abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
<edition
[Link]>
- ->
<edition
[Link]>
Revisions:
(none)
....................................................................... - ->
<edition
[Link]>
<![%[Link];[
<!ENTITY % [Link]
"( #PCDATA | %[Link]; )*"
>
<!ENTITY % [Link] "i" >
<!ELEMENT %[Link]; %[Link]; >
<!- - end of [Link] - ->]]>
<edition
[Link]>
SMI
Revisions:
(none)
....................................................................... - ->
br, span
- ->
F.4.7 Param
Revisions:
(none)
param
<edition
[Link]>
Revisions:
(none)
....................................................................... - ->
+ notations
+ datatypes
+ namespace-qualified names
+ common attributes
+ document model
+ character entities
By default, the Object module is included, with Frames and IFrames ignored.
"[Link]" >
%[Link];]]>
<edition
[Link]>
<!ENTITY % [Link]
"xml:lang %[Link]; #IMPLIED
lang %[Link]; #IMPLIED"
>
<!ENTITY % [Link]
"| %[Link]; | %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link];"
>
<!ENTITY % [Link]
"| %[Link]; | %[Link];
| %[Link]; | %[Link];" >
<!ENTITY % [Link]
"| %[Link]; | %[Link];"
>
<!ENTITY % [Link]
"| %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link];"
>
<!ENTITY % [Link]
"%[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link];"
>
<!ENTITY % [Link]
"( #PCDATA | %[Link]; | %[Link]; )*"
>
<!ENTITY % [Link]
<!ENTITY % [Link]
"( #PCDATA | %[Link]; )*"
>
<!ENTITY % [Link]
"( #PCDATA | %[Link]; )*"
>
G Bibliographie
Dieser Anhang ist normativ.
<edition
[Link]>
[ISO10646]
"Information Technology – Universal Multiple-Octet Coded Character Set (UCS) – Part 1:
Architecture and Basic Multilingual Plane", ISO/IEC 10646-1:2000. Diese Referenz verweist
auf eine Menge von Codepunkten, die sich ver@ndern k=nnen, wenn ihnen neue Zeichen
zugewiesen werden. Zudem nimmt diese Referenz an, dass die durch ISO 10646 und [UNI-
CODE] definierten Zeichenmenge Zeichen-fr-Zeichen @quivalent bleiben. Des weiteren
schließt diese Referenz zuknftige Ver=ffentlichungen anderer Teile von 10646 (das heißt,
andere als Teil 1) ein, die Zeichen in den Ebenen 1-16 definieren.
[RFC1808]
"Relative Uniform Resource Locators", RFC 1808, R. Fielding, Juni 1995.
Verfgbar unter: [Link]
[RFC2045]
"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message
Bodies", RFC 2045, N. Freed, N. Borenstein, November 1996.
Modularisierung von XHTML
[URL]
"Uniform Resource Locators (URL)", RFC 1738, T. Berners-Lee, L. Masinter, M. McCahill,
Dezember 1994.
Verfgbar unter: [Link]
[XHTML1]
"XHTML 1.0: The Extensible HyperText Markup Language", W3C Recommendation,
S. Pemberton et al., 26 Januar 2000.
Verfgbar unter: [Link]
[XML]
"Extensible Markup Language (XML) 1.0 (Second Edition)", W3C Recommendation, T. Bray,
J. Paoli, C. M. Sperberg-McQueen, E. Maler (Hrsg.), 6 Oktober 2000.
Verfgbar unter: [Link]
[XMLNAMES]
"Namespaces in XML", W3C Recommendation, T. Bray, D. Hollander, A. Layman (Hrsg.),
<edition
[Link]>
H Entwurfsziele
Dieser Anhang ist informell.
In diesem Anhang sind Entwurfziele (Design Goals) mit der Markierung „Gn“ versehen und
Anforderungen (Requirements) mit „Rn.n“. Es gibt vier Hauptziele fr das Modularisierungsrah-
menwerk fr XHTML::
·· [G1] Semantisch verwandte Teile von XHTML zusammenzufassen.
[G2] Einsatz von DTDs, um die Herstellung von verwandten Sprachen (Teilmengen, Ober-
mengen) fr bestimmte Zwecke (kleine Ger@te, Spezialger@te) zu untersttzen und gleich-
zeitig Gemeinsamkeiten sich berlappender Teil zu gew@hrleisten.
· [G3] Zuknftige Entwicklungen dadurch zu f=rdern, dass Teile der Sprache durch verbes-
serte Module (Formulare zum Beispiel) ersetzt werden k=nnen, ohne den Rest der Sprache
zu beeinflussen.
· [G4] Zur Wiederverwendung von Modulen in anderen Sprachen zu ermutigen und dies zu
Modularisierung von XHTML
f=rdern.
H.1 Anforderungen
Die Entwurfsziele des vorhergehenden Abschnitts fhren zu einer großen Zahl von Anforde-
rungen fr das Modularisierungsrahmenwerk. Diese Anforderungen, in diesem Absschnitt
zusammengefasst, k=nnen nach den zentralen Eigenschaften des Frameworks weiter klassifi-
ziert werden.
H.1.1 Granularit.t
Zusammengenommen drcken die Anforderungen in diesem Abschnitt das Verlangen aus, dass
die im Rahmenwerk definierten Module den richtigen Grad der Granularit@t bekommen haben:
·· [R1.1] Abstrakte Module sollten Portabilit@t des Inhalts f=rdern und erhalten.
[R1.2] Abstrakte Module sollten die Normierung von Plattformprofilen f=rdern.
·· [R1.3] Abstrakte Module sollten groß genug sein, um Interoperabilit@t zu f=rdern.
[R1.4] Abstrakte Module sollten klein genung sein, um Bedarf fr Teilmengen zu vermei-
den.
· [R1.5] Abstrakte Module sollten Elemente mit @hnlicher oder verwandter Bedeutung sam-
meln.
· [R1.6] Abstrakte Module sollten Elemente mit un@hnlicher oder nicht verwandter Bedeu-
tung trennen.
· [R1.7] Module sollten klein genug sein, um einelementige Dokumenttyp-Module zu erlau-
ben.
H.1.2 Zusammensetzbarkeit
Die hier aufgefhrten Anforderungen der Zusammensetzbarkeit sollen gew@hrleisten, dass das
Modularisierungsrahmenwerk in der Lage ist, die richtige Menge von Zielmodulen auszudr-
cken, die von der Zielgruppe des Rahmenwerks ben=tigt werden:
·· [R2.1] Das Rahmenwerk sollte die Herstellung abstrakter Module fr XHTML 1.0 erlauben.
[R2.2] Das Rahmenwerk sollte die Herstellung abstrakter Module erlauben, die eine gute
N@herung an HTML 4 sind.
· [R2.3] Das Rahmenwerk sollte die Herstellung abstrakter Module fr ander W3C Recom-
mendations erlauben.
· [R2.4] Das Rahmenwerk sollte die Herstellung abstrakter Module fr andere XML-Doku-
menttypen erlauben.
· [R2.5] Das Rahmenwerk sollte die Herstellung abstrakter Module fr ein breites Spektrum
von Plattformprofilen erlauben.
Das Modularisierungsrahmenwerk wird nur dann allgemein akzeptiert, wenn es die beschriebe-
nen Mechanismen fr unsere Zielgruppe einfach gestalten, das Rahmenwerk zu benutzen:
· [R3.1] Das Rahmenwerk sollte es fr Dokumenttypentwickler einfach gestalten, abstrakte
XHTML-Module einzuschr@nken und zu erweitern.
· [R3.2] Das Rahmenwerk sollte es fr Dokumenttypentwickler einfach gestalten, abstrakte
Module fr andere XML-Dokumenttypen herzustellen.
· [R3.3] Das Rahmenwerk sollte es fr Dokumentautoren einfach gestalten, Elemente ver-
schiedener abstrakter Module zu validieren.
H.1.4 Kompatibilit.t
Das hier beschriebene Modularisierungsrahmenwerk sollte gut mit XML und anderen, vom
W3C entwickelten Standards zusammen arbeiten:
·· [R4.1] Das Rahmenwerk sollte streng konform zur XML 1.0 Recommendation sein.
[R4.2] Das Rahmenwerk sollte kompatibel mit der XML Linking Language (XLink) [XLINK]
sein.
· [R4.3] Das Rahmenwerk sollte kompatibel mit „Associating Style Sheets with XML docu-
ments“ [XMLSTYLE] sein.
· [R4.4] Das Rahmenwerk sollte in der Lage sein, neue W3C Recommendations anzuneh-
men, soweit das sinnvoll ist.
· [R4.5] Das Rahmenwerk sollte keinesfalls von nicht abgeschlossenen W3C-Arbeiten abh@n-
gig sein.
· [R4.6] Das Rahmenwerk sollte nicht von Arbeiten außerhalb des W3C abh@ngig sein.
H.1.5 Konformit.t
Die Effektivit@t des Rahmenwerks wird auch daran gemessen werden, wie einfach es ist, das
Verhalten von Modulen zu prfen, die gem@ß dem Rahmenwerk entwickelt wurden, sowie die
Gltigkeit von Dokumenten, die auf die Module zurckgreifen:
<edition
[Link]>
· [R5.1] Es sollte m=glich sein, Dokumente zu validieren, die aus Elementen und Attributen
aus abstrakten Modulen aufgebaut sind.
· [R5.2] Es sollte m=glich sein, das Verhalten von Elementen und Attributen aus abstrakten
Modulen explizit zu beschreiben.
· [R5.3] Es sollte m=glich sein, das Verhalten von Elementen und Attributen aus abstrakten
Modulen zu berprfen.
· [R5.4] Es sollte m=glich sein, einen hybriden Dokumenttyp als einen XHTML-Dokumenttyp
zu berprfen.
· [R5.5] Module, die in bereinstimmung mit den hier beschriebenen Methoden definiert
werden, sollen die Namen von Elementen und Parameter-Entities, die in XHTML-Modulen
definiert werden, nicht duplizieren.
Modularisierung von XHTML
J Danksagungen
Dieser Anhang ist informell.
Diese Spezifikation wurde von der W3C HTML Working Group erstellt. Zum Zeitpunkt der
Publikation hatte die Gruppe folgende Mitglieder: Steven Pemberton, CWI (HTML Working
Group Chair); Murray Altheim, Sun Microsystems; Daniel Austin, Mozquito Technologies;Jonny
Axelsson, Opera Software; Mark Baker, Sun Microsystems; Wayne Carr, Intel; Tantek kelik,
Microsoft;Doug Dominiak, Openwave Systems; Andrew W. Donoho, IBM; Herman Elenbaas,
Philips Electronics;Beth Epperson, Netscape/AOL;Masayasu Ishikawa, W3C (HTML Activity
Lead); Shin'ichi Matsui, Panasonic; Shane McCarron, Applied Testing and Technology; Ann
Navarro, WebGeek, Inc.; Peter Stark, Ericsson; Michel Suignard, Microsoft; Jeremy Wads-
worth, Quark Inc.; Malte Wedel, Mozquito Technologies; Ted Wugofski, Openwave Systems;
<edition
[Link]>
D
< XHTML Basic >
Page size: 168,00 x 240,00 mm
<edition
[Link]>
XHTML Basic
Deutsche bersetzung
Diese Version:
[Link]
Aktuelle Version:
[Link]
bersetzer:
Stefan Schumacher <sts@[Link]>
Bei diesem Dokument handelt es sich um eine bersetzung eines W3C-Textes. Dieser
Text ist urheberrechtlich geschtzt; bitte beachten Sie die nachfolgenden Hinweise des
Originaldokuments. Die Rechte an der bersetzung liegen bei den bersetzern und
dem Verlag Addison-Wesley. Die bersetzung hat keine durch das W3C legitimierte,
normative Wirkung. Das einzige maßgebliche Dokument ist das englische Original.
Bitte senden Sie Fehler und Korrekturen zur deutschen Fassung an die bersetzer.
Kommentare der bersetzer, die als solche gekennzeichnet sind, unterliegen dem
Urheberrecht der bersetzer. Sie sind nicht Bestandteil des Ursprungsdokuments.
XHTML Basic
XHTMLZ Basic
W3C Recommendation vom 19. Dezember 2000
Diese Version:
[Link]
Aktuelle Version:
[Link]
Vorherige Version:
[Link]
Editoren:
Mark Baker, Sun Microsystems
Masayasu Ishikawa, W3C
Shinichi Matsui, Panasonic
Peter Stark, Ericsson
Ted Wugofski, Openwave Systems
Toshihiko Yamakami, ACCESS Co., Ltd.
Copyright L 1999-2000 W3CM (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trade-
mark, document use and software licensing rules apply.
Zusammenfassung
Der XHTML-Basic-Dokumenttyp schließt die Module ein, die mindestens erforderlich sind, um
ein Dokumenttyp einer XHTML Host Language zu sein. Zus@tzlich beinhaltet er Graphiken,
Formulare, grundlegende Tabellen und Objektuntersttzung. Er ist fr Web-Clients geschaffen
worden, die nicht alle XHTML-Eigenschaften untersttzen; zum Beispiel Web-Clients wie
Mobiltelefone, PDAs, Pager oder Settop-Boxen. Dieser Dokumenttyp ist ausreichend fr
Inhaltserstellung ausgestattet.
XHTML Basic ist als allgemeine Grundlage entworfen worden, die erweitert werden kann.
Zum Beispiel kann ein Event-Modul, das umfassender ist als das traditionelle HTML-4-Event-
System, eingefgt werden, oder es kann um zus@tzliche Module der XHTML-Modularisierung,
wie das Scripting-Modul, erweitert werden. Das Ziel von XHTML Basic ist es, eine allgemeine
Sprache vorzulegen, die von verschiedensten Benutzerschnittstellen untersttzt wird.
Die Dokumenttyp-Definition ist auf Grundlage der XHTML-Module implementiert, wie in „Mo-
dularisierung von XHTML“ [XHTMLMOD] beschrieben.
XHTML Basic
prft und vom Direktor als W3C Recommendation anerkannt. Es ist ein stabiles Dokument
und darf als Referenzmaterial verwendet werden oder als normative Referenz von anderen
Dokumenten zitiert werden. Die Rolle des W3C bei der Erstellung dieser Recommendation ist
es, die Spezifikation bekannt zu machen und ihre weite Verbreitung zu f=rdern. Dies erh=ht die
Funktionalit@t und die Interoperabilit@t des Webs.
Dieses Dokument wurde von den Mitgliedern der W3C HTML Working Group (nur fr Mitglie-
der) als Teil der W3C HTML Activity" erstellt. Es bercksichtigt das Feedback des WAP-Fo-
rums und der Mitglieder der W3C Mobile Access Interest Group (nur fr Mitglieder). Dieses
Dokument wird von der W3C HTML Working Group und der W3C Mobile Access Interest
Group verwendet, um gemeinsame Grundlagen fr zuknftige Auszeichnungssprachen zu fin-
den, die auf den Inhalt kleiner Informationsapplikationen ausgerichtet sind.
"Modularisierung von XHTML" [XHTMLMOD] definiert die XHTML-Module im XHTML-Ba-
sic-Dokumenttyp. Zur Zeit dieser Publikation wurde die berprfungsperiode fr die Candi-
date Recommendation "Modularisierung von XHTML" beendet. Von dieser berprfung aus-
gehend, glaubt die "W3C HTML Working Group", dass die Definition der Module in XHTML
Basic stabil ist, und die Working Group erwartet nicht, dass Onderungen an der "Modularisie-
rung von XHTML" vorgenommen werden, die inkompatibel zu XHTML Basic sein werden.
Die =ffentliche Diskussion um HTML findet auf der Mailing-Liste www-html@[Link] statt (Ar-
chiv). Um der Mailing-Liste beizutreten, schreiben Sie eine Mail an www-html-request@[Link]
mit dem Wort subscribe in der Betreffzeile.
Bitte senden Sie Mitteilungen ber Fehler in diesem Dokument an www-html-editor@[Link].
Die Liste bekannter Fehler in diesem Dokument ist unter [Link]
xhtml-basic-20001219-errata verfgbar.
<edition
[Link]>
Die englische Version dieser Spezifikation ist die einzige normative Version. Informationen zu
bersetzungen dieses Dokuments sind unter [Link] verfgbar.
Eine Liste der aktuellen W3C Recommendations und anderen technischen Dokumenten ist
unter [Link] verfgbar.
1 Einleitung
1.1 XHTML f-r [Link]
HTML 4 ist eine m@chtige Sprache fr das Verfassen von Webinhalten, aber das Design passt
nicht zu den Anforderungen kleiner Benutzerschnittstellen, etwa der Implementierungsaufwand
(Prozessortakt, Speicher und so weiter) bei Verwendung aller Eigenschaften. Benutzerschnitt-
stellen mit begrenzten Ressourcen k=nnen eine volle Implementierung der HTML-4-Eigenschaf-
ten im Allgemeinen nicht untersttzen. Da nur mit einem voll ausgersteten Computer der
Zugang zum World Wide Web m=glich ist, ist eine große Personengruppe vom Zugang zu
Online-Informationen und Online-Diensten ausgeschlossen.
Da es viele M=glichkeiten gibt, HTML einzuschr@nken, existieren viele fast identische Teilmen-
gen, die von Organisationen und Gesellschaften definiert wurden. Ohne eine gemeinsame
Grundlage wird es schwierig, Applikationen fr eine große Zahl verschiedener Web-Clients zu
entwickeln.
XHTML Basic
Die Motivation fr XHTML Basic besteht darin, einen XHTML-Dokumenttyp bereitzustellen,
der von Gemeinschaften gemeinsam verwendet werden kann, (zum Beispiel von Desktops, TV
und Mobiltelefonen) und der reich genug ist fr einfache Inhaltserstellung. Neue gemeinschafts-
weite Dokumenttypen k=nnen durch die Erweiterung von XHTML Basic in der Weise definiert
werden, dass XHTML-Basic-Dokumente innerhalb des gltigen Bereichs des neuen Dokument-
typs liegen. So kann ein XHTML-Basic-Dokument von m=glichst vielen Web-Clients angezeigt
werden.
Die Dokumenttyp-Definition fr XHTML Basic ist auf Grundlage der XHTML-Module, wie in
„Modularisierung von XHTML“ [XHTMLMOD] beschrieben, implementiert.
Existierende Teilmengen und Varianten von HTML fr diese Clients schließen „Compact
HTML“ [CHTML], die „Wireless Markup Language“ [WML] und die „HTML 4.0 Guidelines for
Mobile Access“ [GUIDELINES] ein. Die gemeinsamen Eigenschaften in diesen Dokumenttypen
beinhalten:
·· Grundlegenden Text (einschließlich berschriften, Abs@tze und Listen)
Hyperlinks und Verweise zu verwandten Dokumenten
·· Grundlegende Formulare
Grundlegende Tabellen
·· Graphiken
Meta-Informationen
Diese HTML-Eigenschaften waren der Ausgangspunkt fr das Design von XHTML Basic. Weil
sich viele Autoren mit den Eigenschaften von HTML auskennen, bildet sie eine ntzliche Aus-
gangssprache, die mit Modulen anderer Sprachen kombiniert werden kann, entsprechend den
Methoden, die in "Modularisierung von XHTML" [XHTMLMOD] beschrieben sind. Zum Bei-
spiel kann XHTML Basic mit einem Event-Modul erweitert werden, das umfassender als ein
traditionelles HTML 4 Event-System ist, oder es kann durch zus@tzliche Module der XHTML-
Modularisierung wie dem Scripting-Modul erweitert werden.
Die Intention von XHTML Basic ist es nicht, zuknftige Sprachen zu limitieren. Weil aber die
Charakteristiken von HTML 4 (Rahmen, komplexe Tabellen, bestimmte Attribut-Event-Hand-
ler usw.) fr Clients wie Desktop-Computer entwickelt wurden, hat sich gezeigt, dass sie nicht
fr kleinere Ger@te geeignet sind. XHTML Basic wird erweitert und ausgebaut werden.
XHTML von gemeinsamen und grundlegenden Eigenschaften aus zu erweitern, anstatt von fast
XHTML Basic
identischen Teilmengen oder zu umfangreichen Funktionen in HTML 4, wird sowohl fr die
Interoperabilit@t im Web als auch fr die Skalierbarkeit von Vorteil sein.
Verglichen mit der reichhaltigen Funktionalit@t von HTML 4, sieht XHTML Basic vielleicht wie
ein Rckschritt aus, aber in der Tat sind es zwei Schritte nach vorn: Auf der einen Seite fr
Clients, die viele Eigenheiten von HTML 4 nicht ben=tigen, und auf der anderen Seite fr Ent-
wickler, die nur eine XHTML-Teilmenge anstatt viele bekommen.
1.3.1 Stylesheets
Das style-Element wird nicht untersttzt. Externe Stylesheets sind erforderlich. Das link-
Element kann zum Aufruf von externen Stylesheets verwendet werden. Die Elemente div, span
und class werden untersttzt, um Style-Informationen mit der Struktur zu verbinden. Die
Trennung zwischen Struktur und Darstellung erlaubt Benutzerschnittstellen, Stylesheets herun-
terzuladen, falls sie Stylesheets untersttzen. Benutzerschnittstellen, die keine Stylesheets
untersttzen, k=nnen das externe Stylesheet ignorieren. Das media-Attribut kann zur Auswahl
des geeigneten Stylesheets verwendet werden. Fr weitere Details konsultieren Sie den
Abschnitt ber „Medientypen“ in der „HTML 4.01-Spezifikation“ ([HTML4], Abschnitt 14.2.4).
<edition
[Link]>
Die Elemente script und noscript werden nicht untersttzt. Normalerweise haben kleine End-
ger@te begrenzten Speicher und begrenzte Rechenleistung. Die Ausfhrung von Skriptprogram-
men wird eventuell nicht untersttzt. Der Inhalt sollte auch lesbar sein, wenn Skripte nicht aus-
gefhrt werden.
Event-Handler-Attribute zur Einbindung von Script-Programmen werden nicht untersttzt.
Events sind ger@teabh@ngig. Ein „Eingehender Anruf“-Event ist nicht fr die Ausfhrung in einem
Fernsehger@t bestimmt. Ein bergreifender Event-Handling-Mechanismus wird angemessener
sein, als die Event-Namen in der Dokumenttyp-Definition festzuschreiben.
1.3.3 Darstellung
1.3.4 Formulare
Formularen ziehen k=nnen, sind sie nicht Teil der Grundformulare. Ebenso sollten Autoren
daran denken, dass die Benutzer vielleicht nicht in der Lage sind, viele Zeichen in einige Ger@te
einzugeben (z. B. in Mobiltelefonen).
1.3.5 Tabellen
1.3.6 Frames
Frames werden nicht untersttzt. Frames h@ngen von der Bildschirmschnittstelle ab und sind
eventuell auf einigen kleine Endger@te wie Telefonen, Pagern und Uhren nicht anwendbar.
2 Konformit.t
Dieser Abschnitt ist normativ.
XHTML Basic
2.2 Konformit.t der Benutzerschnittstelle
Die Benutzerschnittstelle muss dem Abschnitt „Konforme Benutzerprogramme“ der "XHTML
1.0 Spezifikation" ([XHTML1], Abschnitt 3.2) folgen.
3 Der XHTML-Basic-Dokumenttyp
Dieser Abschnitt ist normativ.
Der XHTML-Basic-Dokumenttyp ist definiert als eine Zusammenstellung von XHTML-Modu-
len. Alle XHTML-Module sind in der Spezifikation „Modularisierung von XHTML“
[XHTMLMOD] definiert.
XHTML Basic besteht aus den folgenden XHTML-Modulen:
Strukturmodule*
body, head, html, title
Textmodule*
abbr, acronym, address, blockquote, br, cite, code, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd,
p, pre, q, samp, span, strong, var
Hypertext Module*
a
<edition
[Link]>
Listenmodule*
dl, dt, dd, ol, ul, li
Grundlegende Formularmodule
form, input, label, select, option, textarea
Grundlegende Tabellenmodule
caption, table, td, th, tr
Graphikmodule
img
Objektmodule
object, param
Metainformationsmodule
meta
Verweismodule
link
Base-Module
base
Anmerkung: Weil die „HTML Event Handler“-Attribute nicht Teil von XHTML Basic sind, funk-
tionieren Formularkontrollelemente außerhalb von Formularen eventuell nicht, wie vom Benutzer
erwartet. n
XHTML Basic
5 Danksagung
Diese Spezifikation wurde von der W3C HTML Working Group erarbeitet. Die Mitglieder
waren:
Steven Pemberton, CWI (HTML Working Group Chair); Robert Adams, Intel (bis November
2000); Murray Altheim, Sun Microsystems; Takuya Asada, W3C (bis Oktober 2000); Daniel
Austin, Mozquito Technologies; Mark Baker, Sun Microsystems; Wayne Carr, Intel; Tantek
kelik, Microsoft; Andrew W. Donoho, IBM; Herman Elenbaas, Philips Electronics; Beth Epper-
son, Netscape/AOL; Masayasu Ishikawa, W3C (HTML Activity Lead); Shin'ichi Matsui, Panaso-
nic; Shane McCarron, Applied Testing and Technology; Ann Navarro, WebGeek, Inc.; Dave
Raggett, W3C/Openwave Systems; Sebastian Schnitzenbaumer, Mozquito Technologies (bis
September 2000); Peter Stark, Ericsson; Michel Suignard, Microsoft; Markku Vartiainen, Open-
wave Systems; Jeremy Wadsworth, Quark Inc.; Malte Wedel, Mozquito Technologies; Linda
Welsh, Intel; Ted Wugofski, Openwave Systems
Dank an Gary Adams (Sun Microsystems), Jonny Axelsson (Metastasis design), Peter Chen (Phi-
lips), Dan Connolly (W3C), John Cowan (Reuters), Martin J. Drst (W3C), Johan Hjelm
(Ericsson), Ian Jacobs (W3C), Susan Lesch (W3C), Louis Theran (Nokia), Quinton Zondervan
(Lotus), Mitglied der „W3C Mobile Access Interest Group“, der „W3C Synchronized Multi-
media Working Group“, der „W3C WAI Protocols and Formats Working Group“ und dem
WAP-Forum, fr die Beitr@ge, die berprfung und die Kommentare zu diesem Dokument.
XHTML Basic
A Referenzen
A.1 Normative Referenzen
[HTML4]
"HTML 4.01 Spezifikation", W3C Recommendation, D. Raggett, A. Le Hors, I. Jacobs, Edito-
ren, 24. Dezember 1999. Verfgbar unter: [Link]
html401-19991224
Die aktuelle Version ist verfgbar unter: [Link]
[XHTML1]
"XHTML 1.0: The Extensible HyperText Markup Language - A Reformulation of HTML 4 in
XML 1.0", W3C Recommendation, Steven Pemberton et al., 26. Januar 2000. Verfgbar
unter: [Link]
Die aktuelle Version ist verfgbar unter: [Link]
[XHTMLMOD]
"Modularisierung von XHTML", W3C Candidate Recommendation, R. Adams, M. Altheim,
F. Boumphrey, S. Dooley, S. McCarron, S. Schnitzenbaumer, T. Wugofski, Editoren,
20. Oktober 2000. Verfgbar unter: [Link]
modularization-20001020
Die aktuelle Version ist verfgbar unter:
[Link] modularization
<edition
[Link]>
[XML]
"Extensible Markup Language (XML) 1.0 (Zweite Ausgabe)", W3C Recommendation,
T. Bray, J. Paoli, C. M. Sperberg-McQueen, E. Maler, Editoren, 6. Oktober 2000. Verfgbar
unter: [Link]
Die aktuelle Version ist verfgbar unter: [Link]
B XHTML-Basic-
Dokumenttyp-Definition
Dieser Anhang ist normativ.
- - .......................................................................... - -
- - File catalog ............................................................ - -
See "Entity Management", SGML Open Technical Resolution 9401 for detailed
information on supplying and using catalog data. This document is available
from OASIS at URL:
<[Link]
--
- - .......................................................................... - -
- - SGML declaration associated with XML .................................... - -
OVERRIDE YES
SGMLDECL "[Link]"
- - :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - -
XHTML Basic
Dieser Abschnitt enth@lt den Treiber fr die XHTML-Basic-Dokumenttyp-Implementation in
Form einer XML-DTD. Sie unterliegt den XHTML-Modul-Implementationen, definiert in
[XHTMLMOD].
Permission to use, copy, modify and distribute the XHTML Basic DTD
and its accompanying documentation for any purpose and without fee is
hereby granted in perpetuity, provided that the above copyright notice
and this paragraph appear in all copies. The copyright holders make
no representation about the suitability of the DTD for any purpose.
<edition
[Link]>
- ->
<!- - This is the driver file for version 1.0 of the XHTML Basic DTD.
"[Link]
<!- - For example, if you are using XHTML Basic 1.0 directly, use
the FPI in the DOCTYPE declaration, with the xmlns attribute
on the document element to identify the default namespace:
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"[Link] >
<html xmlns="[Link]
xml:lang="en" >
...
</html>
- ->
<!ENTITY % [Link]
PUBLIC "-//W3C//ENTITIES XHTML Basic 1.0 Document Model 1.0//EN"
"[Link]" >
<!ENTITY % [Link]
PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
"[Link]" >
%[Link];
<!ENTITY % [Link]
"( #PCDATA
| %[Link];
%[Link];
%[Link];
%[Link]; )*"
>
<!ENTITY % [Link]
PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
"[Link]" >
%[Link];
<!ENTITY % [Link]
PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
"[Link]" >
XHTML Basic
%[Link];
<!ENTITY % [Link]
PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
"[Link]" >
%[Link];
<edition
[Link]>
<!ENTITY % [Link]
PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
"[Link]" >
%[Link];
B.3 XHTML-Basic-Anpassungen
Ein Dokumenttyp der XHTML-Familie (so wie XHTML Basic) muss das Inhaltsmodell definie-
ren, das er benutzt. Das wird durch ein seperates "Content Model"-Modul verwirklicht, das
durch das "XHTML Modular Framework" instantisiert wird. Das "Content Model"-Modul und
der XHTML-Basic-Treiber arbeiten zusammen, um die Modulimplementationen an die spezi-
fischen Erfordernisse des Dokumenttyps anzupassen. Das "Content Model"-Modul fr XHTML
Basic ist wie folgt definiert:
Revisions:
XHTML Basic
(none)
....................................................................... - ->
<!ENTITY % [Link]
"( %[Link]; | %[Link]; | %[Link]; )*" >
<!ENTITY % [Link]
"| %[Link]; | %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link];" >
<edition
[Link]>
<!ENTITY % [Link]
"| %[Link]; | %[Link]; | %[Link];
| %[Link];"
>
<!ENTITY % [Link]
"%[Link];
%[Link];
%[Link];
%[Link];
%[Link];
%[Link];"
>
<!ENTITY % [Link]
"%[Link];
%[Link];
%[Link];
%[Link];
%[Link];"
>
XHTML Basic
<!ENTITY % [Link]
"%[Link];
%[Link];"
>
<!ENTITY % [Link]
"%[Link];
%[Link];"
>
<!ENTITY % [Link]
"%[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link];"
>
<!ENTITY % [Link] "%[Link]; | %[Link]; | %[Link];" >
<!ENTITY % [Link]
"| %[Link]; | %[Link]; | %[Link];"
>
<!ENTITY % [Link]
"%[Link];
%[Link];"
>
<!ENTITY % [Link]
"%[Link];
%[Link];
%[Link];
%[Link];"
>
<!ENTITY % [Link]
"%[Link];
| %[Link];
| %[Link];
%[Link];"
>
XHTML Basic
<!ENTITY % [Link]
"%[Link];
| %[Link];
| %[Link];
%[Link];
%[Link];
%[Link];
| %[Link];
%[Link];"
>
<!ENTITY % [Link]
"%[Link];
| %[Link];
| %[Link];
| %[Link];
%[Link];"
>
<edition
[Link]>
E
< XHTML 1.1 -
Modulbasiertes
XHTML >
Page size: 168,00 x 240,00 mm
<edition
[Link]>
Bei diesem Dokument handelt es sich um eine bersetzung eines W3C-Textes. Dieser
Text ist urheberrechtlich geschtzt; bitte beachten Sie die nachfolgenden Hinweise des
Originaldokuments. Die Rechte an der bersetzung liegen bei den bersetzern und
dem Verlag Addison-Wesley. Die bersetzung hat keine durch das W3C legitimierte,
normative Wirkung. Das einzige maßgebliche Dokument ist das englische Original.
Bitte senden Sie Fehler und Korrekturen zur deutschen Fassung an die bersetzer.
Kommentare der bersetzer, die als solche gekennzeichnet sind, unterliegen dem
Urheberrecht der bersetzer. Sie sind nicht Bestandteil des Ursprungsdokuments.
XHTML 1.1 - Modulbasiertes XHTML
Copyright L 2001 W3CM (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark,
document use and software licensing rules apply.
Zusammenfassung
Diese Empfehlung definiert einen neuen XHTML-Dokumenttyp, der auf dem Modulrahmen-
werk und den Modulen basiert, die in „Modularisierung von XHTML“ [XHTMLMOD] definiert
sind. Der Zweck dieses Dokumenttyps besteht darin, als Basis fr zuknftige, erweiterte Doku-
menttypen der XHTML-Familie zu dienen. Zudem soll er einen konsistenten, nach vorne
gerichteten Dokumenttyp darstellen, der sauber von den missbilligten Altlasten aus HTML 4
[HTML4] getrennt ist, die in die Dokumenttypen von XHTML 1.0 [XHTML1] bernommen
wurden. Der hier definierte Dokumenttyp ist im Wesentlichen eine Neuformulierung von
XHTML 1.0 Strict unter Verwendung von XHTML-Modulen. Das bedeutet, dass viele F@higkei-
ten, die in anderen Dokumenttypen der XHTML-Familie verfgbar sind (zum Beispiel XHTML-
Frames), hier fehlen. Diese anderen F@higkeiten sind als Module verfgbar, die in der Modulari-
sierung von XHTML definiert sind. Es steht Dokumentautoren frei, Dokumenttypen auf Basis
von XHTML 1.1 zu bilden, die diese F@higkeiten besitzen (siehe [XHTMLMOD], um zu erfah-
ren, wie man neue Dokumenttypen erstellt).
<edition
[Link]>
1 Einf-hrung
Dieser Abschnitt ist normativ.
Mit der Einfhrung der XHTML-Familie aus Modulen und Dokumenttypen, hat das W3C der
Gemeinschaft der Inhalteschaffenden geholfen, aus den Tagen der verstmmelten, nicht stan-
dardkonformen Auszeichnungen in die wohlgeformte, gltige Welt von XML [XML] voran-
zuschreiten. In XHTML 1.0 war dieser Schritt dadurch beschr@nkt, dass es eine einfache Migra-
tion von bestehenden, auf HTML 4 (oder frheren Versionen) basierenden Inhalten hin zu
XHTML und XML geben sollte. Mit dem Auftauchen der in Modularisierung von XHTML defi-
nierten XHTML-Module hat das W3C die missbilligten Elemente und Attribute aus der
XHTML-Familie entfernt. Diese Elemente und Attribute dienten vor allem der Darstellung, die
besser durch Stylesheet oder client-spezifisches Verhalten geregelt wird.
In der Zukunft werden Dokumenttypen der XHTML-Familie auf dieser neuen, auf strukturelle
Funktionen ausgelegten Sammlung basieren. In dieser Spezifikation hat die HTML-Arbeits-
gruppe des W3C einen ersten Dokumenttyp definiert, der auf Modulen allein aufsetzt. Er ist
entworfen, um auf ein breites Spektrum von Ger@ten bertragbar zu sein und um auf den
Großteil des Internetinhalts anwendbar zu sein. Autoren, die ihren Inhalt auf den in dieser Spe-
zifikation formulierten Funktionsumfang sttzen, k=nnen sicher sein, dass er auf alle zur
XHTML-Familie konformen Benutzerprogramme bertragbar ist.
XHTML 1.1 - Modulbasiertes XHTML
2.1 Dokumentkonformit.t
Diese Version von XHTML gibt die Definition fr streng konforme XHTML-Dokumente. Doku-
mente sind auf Elemente und Attribute aus dem XHTML-Namensraum beschr@nkt.
Ein streng konformes XHTML 1.1-Dokument ist ein Dokument, fr das nur solche Eigenschaf-
ten erforderlich sind, die in dieser Spezifikation als zwingend beschrieben sind. Ein solches
Dokument muss allen folgenden Kriterien gengen:
1. Das Dokument muss konform zu den in Anhang C formulierten Beschr@nkungen sein.
2. Das Wurzelelement des Dokuments muss <html> lauten.
3. Das Wurzelelement des Dokuments muss den XHTML-Namensraum im xmlns-Attribut
angeben [XMLNAMES]. Der Namensraumbezeichner fr XHTML lautet [Link]
1999/xhtml.
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"[Link]
Beachten Sie, dass in diesem Beispiel die XML-Deklaration enthalten ist. Eine XML-Deklaration,
<edition
[Link]>
Der XHTML 1.1-Dokumenttyp besteht aus den folgenden XHTML-Modulen. Die zu den
Modulen geh=renden Elemente, Attribute und minimalen Inhaltsmodelle sind in „Modularisie-
rung von XHTML“ [XHTMLMOD]) definiert. Die Elemente sind hier nur zur Information auf-
gefhrt; maßgeblich sind die Definitionen in „Modularisierung von XHTML“. In der Online-Ver-
sion dieses Dokuments sind die Modulnamen in der nachfolgenden Aufstellung mit den Defini-
tionen der Module in der aktuellen Version von „Modularisierung von XHTML“ verlinkt.
Strukturmodul*
body, head, html, title
Textmodul*
abbr, acronym, address, blockquote, br, cite, code, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd,
p, pre, q, samp, span, strong, var
Hypertext-Modul*
a
Listenmodul*
dl, dt, dd, ol, ul, li
Objektmodul
object, param
Darstellungsmodul
b, big, hr, i, small, sub, sup, tt
Edit-Modul
del, ins
XHTML 1.1 - Modulbasiertes XHTML
Link-Modul
link
Base-Modul
base
Ruby Annotation-Modul
ruby, rbc, rtc, rb, rt, rp
Es gibt keine zus@tzlichen Definitionen, die fr diesen Dokumenttyp erforderlich w@ren. Eine
Implementierung dieses Dokumenttyps in Form einer XML-DTD ist in Anhang C definieren.
A Xnderungen gegen-ber
XHTML 1.0 Strict
Dieser Anhang ist informell.
Dieser Anhang beschreibt Unterschiede zwischen XHTML 1.1 und XHTML 1.0 Strict. XHTML
1.1 stellt eine Abkehr sowohl von HTML 4 als auch von XHTML 1.0 dar. Am auff@lligsten ist
B Bibliographie
Dieser Anhang ist normativ.
<edition
[Link]>
[XHTML1]
XHTML 1.0: The Extensible HyperText Markup Language, W3C Recommendation, Steven
Pemberton et al., 26. Januar 2000.
Siehe: [Link]
[XHTMLMOD]
Modularization of XHTML, W3C Recommendation, Murray Altheim et al., 10. April 2001
Siehe: [Link]
[XML]
Extensible Markup Language (XML) 1.0 (Second Edition), W3C Recommendation, Tim
Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, 6. Oktober 2000.
Siehe: [Link]
[RUBY]
Ruby Annotation, W3C Recommendation, Marcin Sawicki et al., 31. Mai 2001.
Siehe: [Link]
"Key words for use in RFCs to indicate requirement levels", RFC 2119, S. Bradner, M@rz
1997.
Available at: [Link]
[XMLNAMES]
"Namespaces in XML", W3C Recommendation, Tim Bray, Dave Hollander, Andrew
Layman, 14. Januar 1999.
Available at: [Link]
C XHTML
1.1-Dokumenttyp-Definition
Dieser Anhang ist normativ.
- - .......................................................................... - -
- - File catalog ............................................................ - -
See "Entity Management", SGML Open Technical Resolution 9401 for detailed
information on supplying and using catalog data. This document is available
from OASIS at URL:
<[Link]
--
- - .......................................................................... - -
- - SGML declaration associated with XHTML .................................. - -
OVERRIDE YES
SGMLDECL "[Link]"
- - :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - -
<edition
[Link]>
Permission to use, copy, modify and distribute the XHTML DTD and its
accompanying documentation for any purpose and without fee is hereby
granted in perpetuity, provided that the above copyright notice and
this paragraph appear in all copies. The copyright holders make no
representation about the suitability of the DTD for any purpose.
- ->
<!- - This is the driver file for version 1.1 of the XHTML DTD.
"[Link]
XHTML 1.1 - Modulbasiertes XHTML
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "[Link]">
<html xmlns="[Link]
xml:lang="en">
...
</html>
Revisions:
(none)
- ->
<edition
[Link]>
"[Link] >
%[Link];]]>
<edition
[Link]>
<!ENTITY % [Link]
PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
"[Link] >
%[Link];]]>
<!ENTITY % [Link]
PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
"[Link] >
%[Link];]]>
Revisions:
(none)
....................................................................... - ->
<edition
[Link]>
<!ENTITY % [Link]
"( %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; )*"
XHTML 1.1 - Modulbasiertes XHTML
>
<!- - These elements are neither block nor inline, and can
essentially be used anywhere in the document body.
- ->
<!ENTITY % [Link]
"%[Link];
%[Link];
%[Link];"
>
<!ENTITY % [Link]
"| %[Link]; | %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link];" >
<!ENTITY % [Link]
"| %[Link]; | %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link];" >
<!ENTITY % [Link]
"| %[Link]; | %[Link];
| %[Link];" >
<!ENTITY % [Link]
"| %[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link];" >
<edition
[Link]>
>
<!- - In the HTML 4.0 DTD, heading and list elements were included
in the %block; parameter entity. The %[Link]; and
%[Link]; parameter entities must now be included explicitly
on element declarations where desired.
- ->
<!ENTITY % [Link]
"%[Link]; | %[Link]; | %[Link];
| %[Link]; | %[Link]; | %[Link];" >
<!ENTITY % [Link]
"| %[Link]; | %[Link]; | %[Link];" >
<!ENTITY % [Link]
"%[Link];
%[Link];
%[Link];"
>
<edition
[Link]>
D Danksagungen
Dieser Anhang ist informell.
Diese Spezifikation wurde von der HTML Working Group des W3C erstellt. Die Mitglieder
dieser Gruppe zum Zeitpunkt der Ver=ffentlichung waren:
Steven Pemberton, CWI (HTML Working Group Chair);Murray Altheim, Sun Microsystems;
Daniel Austin, Mozquito Technologies; Jonny Axelsson, Opera Software;Mark Baker, Sun
Microsystems; Tantek kelik, Microsoft; Doug Dominiak, Openwave Systems; Herman Elen-
baas, Philips Electronics; Beth Epperson, Netscape/AOL; Masayasu Ishikawa, W3C (HTML Acti-
vity Lead); Shin'ichi Matsui, Panasonic; Shane McCarron, Applied Testing and Technology; Ann
Navarro, WebGeek, Inc.; Peter Stark, Ericsson;Michel Suignard, Microsoft;Jeremy Wadsworth,
Quark Inc.; Malte Wedel, Mozquito Technologies; Ted Wugofski, Openwave Systems;
XHTML 1.1 - Modulbasiertes XHTML
<edition
[Link]>
F
< Cascading Style
Sheets, Level 2 >
Page size: 168,00 x 240,00 mm
<edition
[Link]>
Diese Version
[Link]
Aktuelle Version
[Link]
Vorhergehende Version
[Link]
Herausgeber
Bert Bos <bbos@[Link]>
Hakon Wium Lie <howcome@[Link]>
Chris Lilley <chris@[Link]>
Ian Jacobs <ij@[Link]>
Zusammenfassung
Diese Spezifikation definiert Cascading Style Sheets, level 2 (CSS2). CSS2 ist eine Formatie-
rungssprache, die es Autoren und Benutzern gestattet, Formatierungen (zum Beispiel Schriften,
Abst@nde und akustische Aspekte) von strukturierten Dokumenten (zum Beispiel HTML-Do-
kumente und XML-Instanzen) durchzufhren. Mit der Trennung der Pr@sentation eines Doku-
ments vom Inhalt des Dokuments vereinfacht CSS2 die Erfassung von Web-Dokumenten und
die Verwaltung von Sites.
CSS2 basiert auf CSS1 (siehe [CSS1]) und mit sehr wenigen Ausnahmen sind alle gltigen
CSS1-Stylesheets auch gltige CSS2-Stylesheets. CSS2 untersttzt medienspezifische Style-
sheets, so dass Autoren die Darstellung ihrer Dokumente auf visuelle Browser, akustische
Ger@te, Drucker, Braille-Ger@te, Handhelds und so weiter zuschneiden k=nnen. Diese Spezifi-
kation untersttzt zudem die Positionierung von Inhalt, herunterladbare Schriften, Tabellen-
Layout, Internationalisierung, automatische Z@hler und Nummerierung, sowie einige Eigen-
schaften, die mit der Benutzerschnittstelle zu tun haben.
Verf-gbare Formate
Die CSS2-Spezifikation steht in folgenden Formaten zur Verfgung:
<edition
[Link]>
Im Falle von Abweichungen zwischen den diversen Formen der Spezifikation ist [Link]
TR/1998/REC-CSS2-19980512 die maßgebliche Version.
Verf-gbare Sprachen
Die englische Version dieser Spezifikation ist die einzige normative Version. bersetzung in
andere Sprachen erreichen Sie ber [Link]
Errata
1 Informationen zur
CSS2-Spezifikation
1.1 Wie Sie die Spezifikation lesen
Diese Spezifikation richtet sich haupts@chlich an zwei Lesergruppen: CSS-Autoren und CSS-Im-
plementierer. Wir hoffen, die Spezifikation versorgt die Autoren mit dem Werkzeug, das sie
brauchen, um effiziente, attraktive Dokumente zu erstellen, auf die ein einfacher Zugriff m=g-
lich ist, ohne sie zu sehr mit den Implementierungsdetails von CSS zu belasten. Die Implemen-
tierer hingegen sollen hier alles finden, was sie brauchen, um konforme Benutzerprogramme
(User Agents) zu schreiben. Die Spezifikation beginnt mit einer allgemeinen Einfhrung in CSS
und wird zum Ende hin immer technischer und spezifischer. Damit Sie alle wichtigen Informa-
tionen m=glichst schnell finden, wird die einfache Navigation sowohl in der elektronischen als
auch in der gedruckten Version durch ein allgemeines Inhaltsverzeichnis, spezielle Inhaltsver-
zeichnisse am Anfang eines jeden Abschnitts sowie einen Index sichergestellt.
Anmerkung der bersetzer: An dieser Stelle taucht zum ersten Mal der Begriff
„User Agent“ auf. Nach reiflicher berlegung und Abw@gung haben wir uns entschie-
den, im Deutschen dafr den Begriff „Benutzerprogramm“ zu verwenden. Da unserer
Auffassung nach kein deutscher Begriff existiert, der das Bedeutungsspektrum des
„User Agent“ besitzt, ist eine Erkl@rung notwendig:
Der bekannteste Programmtyp, mit denen Menschen das WWW nutzen und auf Inhalte
zugreifen, ist der Web-Browser. Der Browser ist ein Beispiel fr einen User Agent. Der
„User Agent“ ist die Verallgemeinerung davon. Ein User Agent ist die Software, die als
Vertreter eines menschlichen Benutzers auf die Daten im Web zugreift. Der User Agent
kann die Suchmaschine sein, die Daten aus dem Web l@dt, um sie zu indexieren.
Damit kommt der „User Agent“ dem Begriff „Client“ sehr nah. W@hrend der „Client“
jedoch auf einen technischen Aspekt abzielt, beschreibt der Begriff „User Agent“ eine
Funktion; n@mlich die, dass er im Namen des Benutzers t@tig wird.
Im Englischen wird der „Agent“ allgemeiner als im Deutschen benutzt. Aber auch in der
deutschen Sprache haben wir Beispiele fr eine Begriffsbedeutung, die mit diesem Fall
vergleichbar ist: Wir kennen Agenturen und Theateragenten, die als Vertreter des Knst-
lers und in seinem Namen t@tig werden. Die gleiche Rolle bernimmt der User Agent
im WWW.
Da aber die erste Assoziation zum Agenten die des Spions ist, haben wir uns fr den
neutralen Begriff „Benutzerprogramm“ entschieden. Dabei sollten Sie als Leser nicht
vergessen, dass das Benutzerprogramm auch ein Programm sein kann, dass automatisch
im Web nach Daten sucht, oder auch irgendeine Software, die auf die Daten zugreift.
Diese Spezifikation wird in zwei Formen bereitgestellt: elektronisch und gedruckt. Obwohl die
beiden Darstellungen zweifellos sehr @hnlich sind, werden die Leser einige Unterschiede erken-
nen. In der gedruckten Version funktionieren beispielsweise (offensichtlich) keine Links, und in
Die Einfhrung enth@lt einen kurzen berblick ber CSS2 sowie eine Beschreibung der Ent-
wurfsgrundlagen, die hinter CSS2 stehen.
Die CSS-Sprachreferenz bildet einen Großteil des Referenzhandbuchs. Diese Referenz defi-
niert, was in einem CSS2-Stylesheet enthalten sein darf (Syntax, Eigenschaften und Eigenschafts-
werte) und wie die Benutzerprogramme diese Stylesheets interpretieren mssen, um konform
zur Spezifikation zu sein.
<edition
[Link]>
1.2.3 [Link]
Die Anh@nge beschreiben ein Beispiel-Stylesheet fr HTML 4.0, Onderungen im Vergleich zu
CSS1, Anmerkungen zu Implementierung und Leistung, die Grammatik von CSS2, eine Liste
normativer und informativer Literaturhinweise sowie drei Indizes: einen fr Eigenschaften,
einen fr Deskriptoren und einen allgemeinen Gesamtindex.
1.3 Konventionen
1.3.1 Elemente und Attribute der Dokumentsprache
1.3.2 CSS-Eigenschaftsdefinitionen
'eigenschaftsname'
Anmerkung der bersetzer: Wie die Syntax von erlaubten Werten aussieht,
erkl@rt der nachfolgende Abschnitt zwar sehr pr@zise, aber nicht unbedingt bei der ers-
ten Lektre verst@ndlich. Es bietet sich an, zun@chst einige Beispiele in sp@teren Teilen
der CSS2-Spezifikation zu lesen. Sollten dabei Fragen auftauchen, kann man an dieser
Stelle nachsehen, was die Wertangabe genau bedeutet.
Wert
Dieser Teil listet die gltigen Werte fr die Eigenschaft auf. Es gibt mehrere M=glichkeiten,
Werttypen anzugeben:
1. Schlsselwortwerte (z. B. auto, disc usw.)
2. Grundlegende Datentypen, die zwischen "<" und ">" stehen (z. B. <length>, <percentage>
usw.). In der elektronischen Version des Dokuments verweist jede Instanz eines grund-
legenden Datentyps mit Hilfe eines Links auf ihre Definition.
3. Typen, die denselben Wertebereich haben wie eine Eigenschaft mit demselben Namen (z. B.
<'border-width'>, <'background-attachment'> usw.). In diesem Fall ist der Typname der
Eigenschaftsname (einschließlich Anfhrungszeichen) zwischen "<" und ">" (z. B.
<'border-width'>). In der elektronischen Version des Dokuments verweist jede Instanz die-
ser Art von Nicht-Terminal-Symbolen mit Hilfe eines Links auf die entsprechende Eigen-
schaftsdefinition.
4. Nicht-Terminal-Symbole, die nicht denselben Namen wie eine Eigenschaft haben. In diesem
Fall erscheint der Name des Nicht-Terminal-Symbols zwischen "<" und ">", wie in
<border-width>. Beachten Sie die Unterscheidung zwischen <border-width> und
<'border-width'>; Letzteres wird relativ zu Ersterem definiert. Die Definition eines Nicht-
Terminal-Symbols befindet sich in der N@he des ersten Auftretens in der Spezifikation. In
der elektronischen Version des Dokuments verweist jede Instanz dieses Werttyps mit Hilfe
eines Links auf die entsprechende Wertdefinition.
Andere W=rter in diesen Definitionen sind Schlsselw=rter und mssen dort w=rtlich und
ohne Anfhrungszeichen erscheinen (z. B. red). Der Schr@gstrich (/) und das Komma (,) mssen
ebenfalls exakt erscheinen.
Werte k=nnen wie folgt angeordnet werden:
· Mehrere nebeneinander gestellte W=rter bedeuten, dass sie alle in der vorgegebenen Rei-
henfolge erscheinen mssen.
· Ein L@ngsstrich (|) trennt zwei oder mehr Alternativen voneinander ab: genau eine von
a b | c || d e
[ a b ] | [ c || [ d e ]]
Jedem Typ, jedem Schlsselwort und jeder in eckigen Klammern platzierten Gruppe kann einer
der folgenden Modifizierer folgen:
· Ein Stern (*) legt fest, dass der vorhergehende Typ, das vorhergehende Wort oder die vor-
hergehende Gruppe null Mal oder =fter vorkommt.
· Ein Plus-Zeichen (+) legt fest, dass der vorhergehende Typ, das vorhergehende Wort oder
die vorhergehende Gruppe einmal oder mehrmals vorkommen.
· Ein Fragezeichen (?) legt fest, dass der vorhergehende Typ, das vorhergehende Wort oder
die vorhergehende Gruppe optional sind.
<edition
[Link]>
· Ein Zahlenpaar in geschweiften Klammern ({A,B}) legt fest, dass der vorhergehende Typ,
das vorhergehende Wort oder die vorhergehende Gruppe mindestens A-mal und h=chs-
tens B-mal vorkommen.
Die nachfolgenden Beispiele demonstrieren die verschiedenen Werttypen:
Wert: N | NW | NE
Wert: [ <length> | thick | thin ]{1,4}
Wert: [<family-name> , ]* <family-name>
Wert: <uri>? <color> [ / <color> ]?
Wert: <uri> || <color>
Ausgangswert
Dieser Teil spezifiziert den Ausgangswert der Eigenschaft. Falls die Eigenschaft vererbt ist, ist
dies der Wert, den das Wurzelelement des Dokumentbaums aufweist. Weitere Informationen
finden Sie im Abschnitt ber die Kaskade, wo Sie auch mehr ber die im Stylesheet spezifizier-
ten Werte, geerbte Werte und Ausgangswerte erfahren.
Angewendet auf
Dieser Teil listet die Elemente auf, auf die sich die Eigenschaft bezieht. Man geht davon aus, dass
alle Elemente alle Eigenschaften besitzen, aber einige Eigenschaften haben keine Auswirkung auf
die Darstellung bestimmter Elementtypen. Beispielsweise bezieht sich 'white-space' nur auf Ele-
mente auf Blockebene.
Vererbt
Dieser Teil gibt an, ob der Eigenschaftswert von einem Vorfahrenelement geerbt wurde. Lesen
Sie bitte im Abschnitt ber die Kaskade nach, wo Sie weitere Informationen ber das Zusam-
menspiel zwischen im Stylesheet spezifizierten Werten, geerbten Werten und Ausgangswerten
Cascading Style Sheets, Level 2
finden.
Prozentwerte
Dieser Teil gibt an, wie Prozentwerte interpretiert werden sollen, wenn sie im Wert der Eigen-
schaft auftreten. Ist hier "N/A" angegeben, heißt das, die Eigenschaft akzeptiert keine Prozent-
werte als Wert.
Mediengruppen
Dieser Teil gibt die Mediengruppen an, auf die sich die Eigenschaft bezieht. Die Konformit@ts-
bedingungen sagen aus, dass Benutzerprogramme diese Eigenschaft untersttzen mssen, wenn
sie die Darstellung der in diesen Mediengruppen enthaltenen Medientypen untersttzen wol-
len.
Einige Eigenschaften sind zusammenfassende Eigenschaften, die es den Autoren erlauben, die
Werte mehrerer Eigenschaften innerhalb einer einzigen Eigenschaft anzugeben.
Die Eigenschaft 'font' beispielsweise ist eine zusammenfassende Eigenschaft fr die gleichzeitige
Einstellung von 'font-style', 'font-variant', 'font-weight', 'font-size', 'line-height' und 'font-family'.
Werden in einer zusammenfassenden Form Werte weggelassen, wird diesen „fehlenden“ Eigen-
schaften ihr Ausgangswert zugewiesen (lesen Sie dazu auch den Abschnitt ber die Kaskade).
Die Stilregeln des folgenden Beispiels:
H1 {
font-weight: bold;
font-size: 12pt;
line-height: 14pt;
font-family: Helvetica;
font-variant: normal;
font-style: normal;
font-stretch: normal;
font-size-adjust: none
}
Alle Beispiele, die eine falsche Verwendung demonstrieren, sind als „FEHLERHAFTES BEI-
SPIEL“ gekennzeichnet.
Alle HTML-Beispiele sind konform zur strengen HTML 4.0 DTD (die in [HTML40] definiert
ist), es sei denn, es wird durch eine Dokumenttypdeklaration etwas anderes angegeben.
<edition
[Link]>
Beispiele und Anmerkungen sind innerhalb der HTML-Quellen fr die Spezifikation gekenn-
zeichnet, und CSS1-Benutzerprogramme stellen sie auf spezielle Weise dar.
Die meisten Bilder in der elektronischen Version dieser Spezifikation werden von einer „aus-
fhrlichen Beschreibung“ begleitet, die den Bildinhalt zusammenfasst. Ein Link zu der ausfhr-
lichen Beschreibung wird durch ein „[D]„ am rechten Bildrand gekennzeichnet.
Bilder und ausfhrliche Beschreibungen haben nur informativen Charakter.
1.4 Danksagungen
Diese Spezifikation entstand in der W3C-Arbeitsgruppe zu Cascading Style Sheets und Forma-
tierungseigenschaften. Neben den Herausgebern dieser Spezifikation sind die Mitglieder dieser
Arbeitsgruppe: Brad Chase (Bitstream), Chris Wilson (Microsoft), Daniel Glazman (ElectricitW
de France), Dave Raggett (W3C/HP), Ed Tecot (Microsoft), Jared Sorensen (Novell), Lauren
Wood (SoftQuad), Laurie Anna Kaplan (Microsoft), Mike Wexler (Adobe), Murray Maloney
(Grif), Powell Smith (IBM), Robert Stevahn (HP), Steve Byrne (JavaSoft), Steven Pemberton
(CWI), Thom Phillabaum (Netscape), Douglas Rand (Silicon Graphics), Robert Pernett (Lotus),
Dwayne Dicks (SoftQuad) und Sho Kuwamoto (Macromedia). Wir danken ihnen fr ihre steti-
gen Bemhungen.
Einige der in die Arbeitsgruppe eingeladenen Experten haben ebenfalls Beitr@ge geleistet:
George Kersher, Glenn Rippel (Bitstream), Jeff Veen (HotWired), Markku T. Hakkinen (The
Productivity Works), Martin Drst (W3C, frher Universit@t Zrich), Roy Platon (RAL), Todd
Fahrner (Verso), Tim Boland (NIST), Eric Meyer (Case Western Reserve University) und Vin-
cent Quint (W3C).
Der Abschnitt ber Web-Schriften wurde stark gepr@gt durch Brad Chase (Bitstream), David
Meltzer (Microsoft Typography) und Steve Zilles (Adobe). Die folgenden Leute haben ebenfalls
Cascading Style Sheets, Level 2
auf die unterschiedlichsten Arten zu dem Abschnitt ber Schriften beigetragen: Alex Beamon
(Apple), Ashok Saxena (Adobe), Ben Bauermeister (HP), Dave Raggett (W3C/HP), David Ops-
tad (Apple), David Goldsmith (Apple), Ed Tecot (Microsoft), Erik van Blokland (LettError),
Franlois Yergeau (Alis), Gavin Nicol (Inso), Herbert van Zijl (Elsevier), Liam Quin, Misha Wolf
(Reuters), Paul Haeberli (SGI) und Phil Karlton (Netscape).
Der Abschnitt ber Seitenmedien wurde gr=ßtenteils von Robert Stevahn (HP) und Stephen
Waters (Microsoft) geschrieben.
Robert Stevahn (HP), Scott Furman (Netscape) und Scott Isaacs (Microsoft) haben wichtige
Beitr@ge zur CSS-Positionierung geleistet.
Mike Wexler (Adobe) war Herausgeber des tempor@ren Arbeitsentwurfs, der viele der neuen
Funktionsmerkmale von CSS2 beschrieb.
T.V. Raman (Adobe) leistete wesentliche Beitr@ge zu ACSS (Aural Cascading Style Sheets) und
den Konzepten der akustischen Darstellung, basierend auf seiner Arbeit ber AsTeR (Audio
System For Technical Readings). Er brachte eine erste Skizze der ACSS-Spezifikation ein, die
die Form der aktuellen Spezifikation wesentlich gepr@gt hat. Werte fr akustische Eigenschaften
im HTML 4.0 Beispiel-Stylesheet stammen aus dieser Quelle; momentan verwendet er sie t@g-
lich auf seinem Audio-Desktop in Kombination mit Emacspeak und dem Emacs W3-Browser
(von William Perry, der auch die akustischen Erweiterungen auf der W3-Seite des Zauns imple-
mentiert hat).
Todd Fahrner (Verso) untersuchte aktuelle und @ltere Browser, um das Beispiel-Stylesheet im
Anhang zu entwickeln.
Unser Dank gilt Jan K@rrman, Autor von html2ps, der uns tatkr@ftig dabei half, die PostScript-
Version der Spezifikation zu erstellen.
In elektronischer und physischer Form haben die folgenden Leute zur Entwicklung von CSS2
beigetragen: Alan Borning, Robert Cailliau, Liz Castro, James Clark, Dan Connolly, Donna Con-
verse, Daniel Dardailler, Al Gilman, Daniel Greene, Scott Isaacs, Geir Ivarsøy, Vincent Mallet,
Kim Marriott, Brian Michalowski, Lou Montulli, Henrik Frystyk Nielsen, Jacob Nielsen, Eva von
Pepel, William Perry, David Siegel, Peter Stuckey und Jason White.
Die Diskussionen ber www-style@[Link] haben viele Schlsselaspekte von CSS beeinflusst. Ins-
besondere danken wir Bjorn Backlund, Todd Fahrner, Lars Marius Garshol, Sue Jordan, Ian
Hickson, Susan Lesch, Andrew Marshall, MegaZone, Eric Meyer, Russell O’Connor, David Per-
rell, Liam Quinn, Jon Seymour, Neil St. Laurent, Taylor, Brian Wilson und Chris Wilson fr ihre
Teilnahme.
Unser Dank geht an die WAI PF-Arbeitsgruppe (Web Accessibility Inititaive Protocols and For-
mats Technical Review), die uns geholfen hat, Aspekte der Zug@nglichkeit fr CSS2 zu verbes-
sern.
Dank an Philippe Le HWgaret, dessen CSS-Validator uns geholfen hat, korrekte Beispiele und
eine sensible Grammatik sicherzustellen.
Besonderer Dank gilt Arnaud Le Hors, dessen Engineering-Beitr@ge dafr gesorgt haben, dass
1.5 Copyright-Hinweis
Copyright L 1997 World Wide Web Consortium (Massachusetts Institute of Technology, Insi-
tut National de Recherche en Informatique et en Automatique, Keio University). Alle Rechte
vorbehalten.
Dokumente auf der Site des W3C werden von den Copyright-Inhabern unter der nachfolgen-
den Lizenz bereitgestellt. Durch das Herunterladen, Verwenden und/oder Kopieren dieses
Dokuments oder des W3C-Dokuments, aus dem der Link fr diese Aussage stammt, best@ti-
gen Sie, dass Sie die folgenden Bestimmungen und Bedingungen gelesen und verstanden haben
und dass Sie sich entsprechend verhalten:
Die Berechtigung fr die Verwendung, das Kopieren und die Weitergabe des Inhalts dieses
Dokuments oder des entsprechenden W3C-Dokuments auf jedem Medium fr jeden Zweck
und ohne Gebhr oder Tantiemen wird hiermit erteilt, vorausgesetzt, Sie nehmen Folgendes in
ALLE Kopien des Dokuments oder Teile davon, die Sie verwenden, auf:
<edition
[Link]>
2 Einf-hrung in CSS2
2.1 Ein kurzer CSS2-berblick f-r HTML
In diesem berblick zeigen wir, wie einfach es sein kann, einfache Stylesheets zu entwerfen.
Dazu ben=tigen Sie Grundkenntnisse in HTML (siehe [HTML40]), und Sie sollten die wichtigs-
ten Begriffe aus dem Desktop-Publishing kennen.
Wir beginnen mit einem kleinen HTML-Dokument:
begnadeter Komponist.
</BODY>
</HTML>
Um die Textfarbe der H1-Elemente auf Blau zu setzen, schreiben Sie die folgende CSS-Regel:
H1 { color: blue }
Eine CSS-Regel besteht aus zwei Hauptteilen: Selektor ('H1') und Deklaration ('color: blue').
Die Deklaration setzt sich aus zwei Teilen zusammen: Eigenschaft ('color') und Wert ('blue').
Obwohl das obige Beispiel nur versucht, eine einzige der fr die Darstellung eines HTML-Do-
kuments ben=tigte Eigenschaft zu steuern, qualifiziert es sich selbst als Stylesheet. Kombiniert
mit anderen Stylesheets (ein grundlegendes Funktionsmerkmal von CSS ist, dass Stylesheets
kombiniert werden k=nnen) legt es die endgltige Darstellung des Dokuments fest.
Die HTML 4.0-Spezifikation definiert, wie Stylesheet-Regeln fr HTML-Dokumente angegeben
werden k=nnen: entweder innerhalb des HTML-Dokuments oder ber ein externes Stylesheet.
Um das Stylesheet in das Dokument einzufgen, verwenden Sie das STYLE-Element:
Einer maximalen Flexibilit@t halber empfehlen wir Autoren, externe Stylesheets zu verwenden;
diese k=nnen ver@ndert werden, ohne dass das HTML-Quelldokument ver@ndert werden
muss, und sie k=nnen zudem von mehreren Dokumenten gemeinsam genutzt werden. Fr die
Verknpfung mit einem externen Stylesheet verwenden Sie das LINK-Element:
<edition
[Link]>
Jetzt enth@lt das Stylesheet zwei Regeln: die erste setzt die Farbe des BODY-Elements auf 'red',
w@hrend die zweite die Farbe des H1-Elements auf 'blue' setzt. Weil fr das P-Element kein
Farbwert angegeben wurde, erbt es die Farbe von seinem bergeordneten Element, BODY.
Das H1-Element ist ebenfalls ein untergeordnetes Element von BODY, aber die zweite Regel
berschreibt den geerbten Wert. In CSS gibt es h@ufig solche Konflikte zwischen unterschiedli-
chen Werten, und diese Spezifikation beschreibt, wie sie aufgel=st werden.
CSS2 untersttzt mehr als 100 verschiedene Eigenschaften, unter anderem 'color'. Jetzt
Cascading Style Sheets, Level 2
Als Erstes bemerken Sie, dass mehrere Deklarationen innerhalb eines Blocks gruppiert sind,
der in geschweifte Klammern ({...}) eingeschlossen ist, und dass diese Deklarationen durch
Semikolons voneinander getrennt sind. Auch der letzten Deklaration kann ein Semikolon fol-
gen.
Die erste Deklaration des BODY-Elements setzt die Schriftfamilie auf „Gill Sans“. Falls diese
Schrift nicht verfgbar ist, verwendet das Benutzerprogramm (h@ufig auch als „Browser“
bezeichnet) die Schriftfamilie 'sans-serif', eine der fnf abstrakten Schriftfamilien, die alle Benut-
zerprogramme kennen. Untergeordnete Elemente von BODY erben den Wert der Eigenschaft
'font-family'.
Anmerkung der bersetzer: Schriften im Web sind keine einfache Sache. Sie
k=nnen sich nicht darauf verlassen, dass auf dem Computer, auf dem eine Webseite
angezeigt wird, genau die Schrift vorhanden ist, die Sie angeben. Auch die Namen von
Schriften k=nnen variieren. Deshalb ist unbedingt zu empfehlen, mehrere alternative
Schriften anzugeben und zuletzt immer einen der gezeigten abstrakten Namen zu benut-
zen. Im gezeigten Beispiel k=nnte es sein, dass bei einem Leser nicht Gill Sans verwen-
det wird (weil sie nicht vorhanden ist), sondern Helvetica oder Arial (beides sind seri-
fenlose (sans serif) Schriften).
Die zweite Deklaration setzt die Schriftgr=ße des BODY-Elements auf 12 Punkte. Die Einheit
„Punkt“ wird im Schriftsatz h@ufig verwendet, um Schriftgr=ßen und andere L@ngenwerte anzu-
geben. Es handelt sich dabei um ein Beispiel fr eine absolute Einheit, die nicht relativ zur
Umgebung skaliert wird.
Die dritte Deklaration verwendet eine relative Einheit, die in Hinblick auf ihre Umgebung ska-
liert wird. Die Einheit „em“ bezieht sich auf die Schriftgr=ße des Elements. In diesem Fall sind
die R@nder um das BODY-Element dreimal breiter als die Schriftgr=ße.
<edition
[Link]>
Um diesen Ausschnitt als Dokument anzuzeigen, mssen wir zuerst deklarieren, welche Ele-
mente inzeilig sind (das heißt, es werden keine Leerzeilen eingefgt) und welche sich auf Block-
ebene befinden (das heißt, es werden Leerzeilen zwischen ihnen eingefgt).
Die erste Regel deklariert INSTRUMENT als inline, und die zweite Regel, die eine Liste durch
Kommas voneinander getrennten Selektoren angibt, deklariert alle anderen Elemente als auf
Blockebene befindlich.
Ein Vorschlag fr die Verknpfung eines Stylesheets mit einem XML-Dokument ist die Verwen-
dung einer Verarbeitungsanweisung:
Ein visuelles Benutzerprogramm k=nnte das obige Beispiel wie folgt formatieren:
Cascading Style Sheets, Level 2
Beachten Sie, dass das Wort „Fl=te„ innerhalb des Absatzes bleibt, weil es sich dabei um den
Inhalt des inzeiligen Elements INSTRUMENT handelt.
Dennoch ist der Text immer noch nicht so formatiert, wie Sie das erwarten wrden. Beispiels-
weise sollte die Schriftgr=ße fr die berschrift gr=ßer sein als fr den restlichen Text, und
man k=nnte den Namen des Autors kursiv darstellen:
Ein visuelles Benutzerprogramm k=nnte das obige Beispiel wie folgt formatieren:
Durch zus@tzliche Regeln, die Sie dem Stylesheet hinzufgen, k=nnen Sie die Darstellung des
Dokuments weiter verbessern.
Anmerkung der bersetzer: Fr die deutsche Fassung dieses Textes wurde das
obige Beispiel wie folgt behandelt: Offensichtlich wurde der Text ins Deutsche ber-
setzt. Da das Resultat Umlaute sowie das ß enth@lt, mussten diese Zeichen im XML-Do-
kument in geeigneter Weise behandelt werden. Dies w@re durch Deklaration entspre-
chender Zeichen-Entities m=glich gewesen. Wir haben uns hier jedoch dafr entschie-
den, die Zeichen direkt einzutippen, die XML-Datei in der Zeichenkodierung
ISO-8859-1 abzuspeichern und diese Kodierung in der XML-Deklaration (erste Zeile)
anzugeben. Das so enstandene Beispiel wurde im Mozilla 1.1 ausprobiert. Das Ergebnis
sehen Sie in den Abbildungen.
Anmerkung der bersetzer: Beim ersten Lesen der Spezifikation und, wenn es
darum geht, CSS nur anzuwenden, kann dieser Abschnitt getrost bersprungen werden.
Dieser Abschnitt stellt ein m=gliches Modell vor, wie Benutzerprogramme funktionieren, die
CSS untersttzen. Dabei handelt es sich nur um ein konzeptuelles Modell; reale Implementie-
rungen k=nnen davon abweichen.
In diesem Modell verarbeitet ein Benutzerprogramm eine Quelle, indem es die folgenden
Schritte durchl@uft:
1. Parsing des Quelldokuments und Anlegen eines Dokumentbaums.
2. Identifizieren des Ziel-Medientyps.
<edition
[Link]>
3. Laden aller dem Dokument zugeordneten Stylesheets, die fr den Ziel-Medientyp angege-
ben sind.
4. Vorbereitung jedes Elements des Dokumentbaums, indem jeder Eigenschaft, die auf den
Ziel-Medientyp anzuwenden ist, ein einziger Wert zugewiesen wird. Eigenschaften werden
entsprechend den im Abschnitt ber Kaskaden und Vererbung beschriebenen Mechanis-
men Werte zugewiesen.
Die Berechnung von Werten ist teilweise von dem fr den Ziel-Medientyp geeigneten For-
matierungsalgorithmus abh@ngig. Ist das Zielmedium beispielsweise der Bildschirm, wenden
Benutzerprogramme das visuelle Formatierungsmodell an. Handelt es sich bei dem Zielme-
dium um eine gedruckte Seite, wenden Benutzerprogramme das Seitenmodell an. Handelt
es sich bei dem Zielmedium um ein akustisches Darstellungsger@t (z. B. Sprachsynthesizer),
wenden Benutzerprogramme das akustische Darstellungsmodell an.
5. Aus dem vorbereiteten Dokumentbaum wird eine Formatierungsstruktur erzeugt. H@ufig
erinnert die Formatierungsstruktur stark an den Dokumentbaum, sie kann sich aber auch
wesentlich davon unterscheiden, insbesondere, wenn Autoren Pseudo-Elemente und
erzeugten Inhalt verwenden. Erstens muss die Formatierungsstruktur berhaupt keine
Baumform aufweisen – welche Form die Struktur hat, ist von der Implementierung abh@n-
gig. Zweitens kann die Formatierungsstruktur mehr oder weniger Information enthalten als
der Dokumentbaum. Hat beispielsweise ein Element im Dokumentbaum den Wert 'none'
fr die 'display'-Eigenschaft, erzeugt dieses Element nichts in der Formatierungsstruktur. Ein
Listenelement hingegen kann in der Formatierungsstruktur mehr Informationen erzeugen:
den Inhalt des Listenelements und die Listenstilinformation (z. B. ein Bild von einem Markie-
rungspunkt).
Beachten Sie, dass das CSS-Benutzerprogramm den Dokumentbaum w@hrend dieser Phase
nicht ver@ndert. Insbesondere wird der durch Stylesheets erzeugte Inhalt nicht an den
Dokumentsprachprozessor zurckgemeldet (z. B. fr ein erneutes Parsing).
6. bertragen der Formatierungsstruktur an das Zielmedium (z. B. Ausdrucken der Ergebnis-
se, Anzeige auf dem Bildschirm, sprachliche Darstellung usw.).
Cascading Style Sheets, Level 2
Der Begriff Zeichenfl,che (Canvas) beschreibt fr alle Medien den „Bereich, wo die Formatie-
rungsstruktur dargestellt wird“. Die Zeichenfl@che ist fr jede Dimension des Raums unendlich,
aber die Darstellung erfolgt normalerweise innerhalb eines endlichen Bereichs der Zeichenfl@-
che, der dem Zielmedium entsprechend durch das Benutzerprogramm eingerichtet wird. Bei-
spielsweise geben Benutzerprogramme, die etwas auf einem Bildschirm darstellen, eine Min-
destbreite vor und w@hlen eine Ausgangsbreite, die auf den Maßen des Viewports basiert.
Benutzerprogramme, die etwas auf einer gedruckten Seite anzeigen, geben Beschr@nkungen fr
Breite und H=he vor. Akustische Benutzerprogramme k=nnen Beschr@nkungen im Audioraum
vorgeben, nicht aber hinsichtlich der Zeit.
2.3.2 CSS2-Adressierungsmodell
CSS2-Selektoren und Eigenschaften erlauben, dass sich Stylesheets auf die folgenden Teile eines
Dokuments oder Benutzerprogramms beziehen:
· Elemente im Dokumentbaum und bestimmte Beziehungen zwischen ihnen (siehe Abschnitt
ber Selektoren).
· Attribute von Elementen im Dokumentbaum sowie Werte dieser Attribute (siehe
Abschnitt ber Attributselektoren).
·· Einige Teile des Elementinhalts (siehe Pseudo-Elemente :first-line und :first-letter).
Elemente des Dokumentbaums, wenn sie sich in einem bestimmten Status befinden (siehe
Abschnitt ber Pseudo-Klassen).
·· Einige Aspekte der Zeichenfl@che, auf der das Dokument dargestellt wird.
Einige Systeminformationen (siehe den Abschnitt ber die Benutzeroberfl@che).
2.4 CSS-Entwurfskonzepte
CSS2 basiert wie auch CSS1 auf bestimmten Entwurfsgrundlagen:
· [Link]- und [Link].t. CSS2-Benutzerprogramme verstehen CSS1-
Stylesheets. CSS1–Benutzerprogramme k=nnen CSS2-Stylesheets lesen und verwerfen alle
Teile, die sie nicht verstehen. Außerdem k=nnen Benutzerprogramme ohne CSS-Unterstt-
zung Stil-erweiterte Dokumente anzeigen. Natrlich k=nnen die durch CSS erm=glichten
stilistischen Erweiterungen nicht dargestellt werden, aber der gesamte Inhalt wird ange-
zeigt.
<edition
[Link]>
· Einfachheit. CSS2 ist komplexer als CSS1, bleibt aber eine einfache Stilsprache, die vom
Menschen lesbar und schreibbar ist. Die CSS-Eigenschaften werden so weit m=glich von-
einander unabh@ngig verwaltet, und es gibt im Allgemeinen jeweils nur eine einzige Metho-
de, um einen bestimmten Effekt zu erzielen.
· Netzwerkleistung. CSS untersttzt kompakte Codierungen fr die Darstellung von
Inhalt. Verglichen mit Bildern oder Audiodateien, die von Autoren oft verwendet werden,
um bestimmte Darstellungseffekte zu erzielen, verringern Stylesheets h@ufig die Inhaltsgr=-
ße. Darber hinaus mssen weniger Netzwerkverbindungen ge=ffnet werden, wodurch die
Netzwerkleistung weiter gesteigert wird.
· Flexibilit.t. CSS kann auf mehrere Arten auf Inhalt angewendet werden. Das Schlssel-
konzept ist es, Stilinformationen zu kaskadieren, die im Standard-Stylesheet (des Benutzer-
programms), in Benutzer-Stylesheets, in verknpften Stylesheets, im Dokumentkopf und in
Attributen fr die Elemente, die den Dokumentrumpf bilden, enthalten sind.
· Reichhaltigkeit. Den Autoren steht eine umfassende Menge an Darstellungseffekten zur
Verfgung, die die Reichhaltigkeit des Web als Ausdrucksmedium vergr=ßern. Die Designer
haben lange auf die Funktionalit@t gewartet, die man h@ufig im Desktop-Publishing und in
Diashow-Applikationen findet. Einige der geforderten Darstellungseffekte stehen in Konflikt
mit der Ger@teunabh@ngigkeit, aber CSS2 ist auf dem besten Weg, die Anforderungen der
Designer zu erfllen.
· Alternative Sprachbindungen. Die Menge der in dieser Spezifikation beschriebenen
CSS-Eigenschaften bildet ein konsistentes Formatierungsmodell fr visuelle und akustische
Darstellungen. Der Zugriff auf dieses Formatierungsmodell kann ber die Sprache CSS
erfolgen, aber es sind auch Bindungen zu anderen Sprachen m=glich. Beispielsweise k=nnte
ein JavaScript-Programm den Wert der 'color'-Eigenschaft eines bestimmten Elements
@ndern.
Anmerkung der bersetzer: Dieser Punkt beschreibt, was sich hinter dem
Cascading Style Sheets, Level 2
Schlagwort „Dynamic HTML“ verbirgt: HTML, CSS und JavaScript. Mit JavaScript lassen
sich z. B. einzelne Seitenelemente, die per CSS positioniert wurden, verschieben.
· Die Attributselektoren, die 'attr()'-Funktion und die 'content'-Eigenschaft bieten Zugriff auf
alternativen Inhalt.
· Z@hler und Abschnitt/Absatz-Nummerierung k=nnen die Navigation im Dokument verbes-
sern und Einrckungen ersparen (wichtig fr Braille-Ger@te). Die Eigenschaften 'word-spa-
cing' und 'text-independent' vermeiden darber hinaus den Bedarf an zus@tzlichem Leer-
raum im Dokument.
Hinweis: Weitere Informationen zum Entwurf zug@nglicher Dokumente mit CSS und HTML
finden Sie in [WAI-PAGEAUTH]. n
Stylesheet
Mehrere Anweisungen, die die Darstellung eines Dokuments spezifizieren.
Stylesheets k=nnen unterschiedliche Ursprnge haben: Autor, Benutzer und Benutzerpro-
gramm. Das Zusammenspiel dieser Quellen ist im Abschnitt ber Kaskaden und Vererbung
beschrieben.
G-ltiges Stylesheet
Die Gltigkeit eines Stylesheets ist von dem dafr verwendeten CSS-Level abh@ngig. Alle
gltigen CSS1-Stylesheets sind auch gltige CSS2-Stylesheets. Bestimmte Mnderungen gegen-
ber CSS1 fhren jedoch dazu, dass einige CSS1-Stylesheets in CSS2 eine etwas andere
Semantik haben.
Ein gltiges CSS2-Stylesheet muss entsprechend der CSS2-Grammatik geschrieben sein.
Darber hinaus darf es nur at-Regeln, Eigenschaftsnamen und Eigenschaftswerte enthalten,
die in dieser Spezifikation definiert wurden. Nicht erlaubte (ungltige) at-Regeln, Eigen-
schaftsnamen oder Eigenschaftswerte sind solche, die nicht gltig sind.
<edition
[Link]>
Quelldokument
Das Dokument, auf das ein oder mehrere Stylesheets verweisen. Es ist in irgendeiner Spra-
che codiert, die das Dokument als Elementbaum darstellt. Jedes Element besteht aus einem
Namen, der den Typ des Elements identifiziert, optional mehreren Attributen und einem
(m=glicherweise leeren) Inhalt.
Dokumentsprache
Die Codiersprache des Quelldokuments (z. B. HTML oder eine XML-Applikation).
Element
(Ein SGML-Begriff, siehe [ISO8879].) Elemente sind die prim@ren syntaktischen Kons-
trukte der Dokumentsprache. Die meisten CSS-Stylesheet-Regeln verwenden die Namen
dieser Elemente (wie beispielsweise „P“, „TABLE“ und „OL“ fr HTML), um Darstellungs-
informationen fr sie anzugeben.
Ersetztes Element
Ein Element, fr das der CSS-Formatierer nur dessen eigene Gr=ße kennt. In HTML sind
IMG-, INPUT-, TEXTAREA-, SELECT- und OBJECT-Elemente Beispiele fr ersetzte Ele-
mente. Beispielsweise wird der Inhalt des IMG-Elements h@ufig durch das Bild ersetzt, das
im "src"-Attribut angegeben ist. CSS definiert nicht, wie die eigenen Gr=ßen ermittelt wer-
den.
Eigene GrUße
Die Breite und die H=he, wie sie durch das eigentliche Element definiert sind, nicht wie sie
durch das Umfeld vorgegeben werden. In CSS2 wird vorausgesetzt, dass alle ersetzten Ele-
mente – und nur ersetzte Elemente – eigene Gr=ßen besitzen.
Attribut
Ein Wert, der einem Element zugeordnet wird, bestehend aus einem Namen und einem
zugeordneten (Text-)Wert.
Inhalt
Der Inhalt eines Elements im Quelldokument. Nicht alle Elemente haben Inhalt; in diesem
Fall werden sie leer genannt. Der Inhalt eines Elements kann Text enthalten und es kann
Cascading Style Sheets, Level 2
eine Reihe von Unterelementen enthalten; in diesem Fall wird das Element Elternelement
dieser Unterelemente genannt.
Dargestellter Inhalt
Der Inhalt eines Elements, nachdem die entsprechenden Stylesheets fr seine Darstellung
darauf angewendet wurden. Der dargestellte Inhalt eines ersetzten Elements kommt von
außerhalb des Quelldokuments. Dargestellter Inhalt kann auch alternativer Text fr ein Ele-
ment sein (z. B. der Wert des "alt"-Attributs in HTML) und Dinge enthalten, die implizit
oder explizit durch das Stylesheet eingefgt wurden, wie beispielsweise Markierungen,
Nummerierungen usw.
Dokumentbaum
Der Baum der im Quelldokument codierten Elemente. Jedes Element in diesem Baum hat
genau ein bergeordnetes Element, mit Ausnahme des Wurzel-Elements (root), das kei-
nes hat.
Untergeordnetes Element („Kind“)
Ein Element A wird als untergeordnetes Element oder Kind von Element B bezeichnet, dann
und nur dann, wenn B das bergeordnete Element („Elternelement“) von A ist.
Nachkomme
Ein Element A wird als Nachkomme von Element B bezeichnet, wenn (1) A ein untergeord-
netes Element von B ist, oder (2) A das untergeordnete Element eines Elements C ist, das
Nachkomme von B ist.
Vorfahre
Ein Element A wird als Vorfahre von Element B bezeichnet, dann und nur dann, wenn B ein
Nachkomme von A ist.
Gleichrangiges oder Geschwisterelement
Ein Element A wird als gleichrangiges oder Geschwisterelement eines Elements B bezeich-
net, dann und nur dann, wenn B und A dasselbe bergeordnete Element haben. Element A
ist ein vorhergehendes gleichrangiges Element, wenn es im Elementbaum vor B steht. Ele-
ment B ist ein nachfolgendes gleichrangiges Element, wenn es im Elementbaum nach A
steht.
Vorhergehendes Element
Ein Element A wird als vorhergehendes Element eines Elements B bezeichnet, dann und nur
dann, wenn (1) A ein Vorfahre von B ist, oder (2) A ein vorhergehendes gleichrangiges Ele-
ment von B ist.
Nachfolgendes Element
Ein Element A wird als nachfolgendes Element eines Elements B bezeichnet, dann und nur
dann, wenn B ein vorhergehendes Element von A ist.
Autor
Ein Autor ist eine Person, die Dokumente und zugeh=rige Stylesheets schreibt. Ein Auto-
renwerkzeug erzeugt Dokumente und zugeordnete Stylesheets.
Benutzer
Ein Benutzer ist eine Person, die mit einem Benutzerprogramm arbeitet, um ein Dokument
und das ihm zugeordnete Stylesheet anzusehen, anzuh=ren oder es anderweitig zu nutzen.
Der Benutzer kann ein pers=nliches Stylesheet bereitstellen, das seine pers=nlichen Vorlie-
ben codiert.
Beispiel
Nachfolgend sehen Sie ein Beispiel fr ein in HTML codiertes Quelldokument:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<TITLE>Meine Homepage</TITLE>
<BODY>
<edition
[Link]>
<H1>Meine Homepage</H1>
<P>Willkommen auf meiner Homepage. Ich will Ihnen
etwas Uber meine Lieblingskomponisten erz]hlen:
<UL>
<LI> Elvis Costello
<LI> Johannes Brahms
<LI> Georges Brassens
</UL>
</BODY>
</HTML>
HTML
HEAD BODY
TITLE H1 P UL
LI LI LI
Gem@ß der HTML-Definition werden HEAD-Elemente w@hrend des Parsings abgeleitet und
werden Teil des Dokumentbaums, selbst wenn die HEAD-Tags nicht in der Dokumentquelle
enthalten sind. Analog dazu erkennt der Parser, wo P und LIs enden, obwohl es in der Quelle
keine </P>- und </LI>-Tags gibt.
Anmerkung der bersetzer: Hier ist zu beachten, dass das obige Beispiel und die
Cascading Style Sheets, Level 2
nachfolgende Bemerkung mit XHTML nicht mehr gltig ist. Als Anwendung von SGML
ist das obige HTML-Beispiel korrekt. Im Gegensatz dazu ist das Weglassen von Tags
(Start-, End-Tags) bei XHTML nicht mehr m=glich. Der Ursache liegt darin, dass XML
als Grundlage von XHTML diese Freiheit nicht mehr erlaubt. Nicht-leere Elemente
mssen dann immer vollst@ndig (mit Start- und End-Tag) geschrieben werden.
3.2 Konformit.t
Dieser Abschnitt definiert nur die Konformit@t mit der CSS2-Spezifikation. In der Zukunft wird
es m=glicherweise noch andere CSS-Levels geben, fr die es unter Umst@nden erforderlich ist,
dass ein Benutzerprogramm andere Funktionsmerkmale definiert, um Konformit@t zu erzielen.
Im Allgemeinen muss ein Benutzerprogramm, das konform zu dieser Spezifikation arbeiten will,
die folgenden Aspekte bercksichtigen:
<edition
[Link]>
3.3 Fehlerbedingungen
Im Allgemeinen spezifiziert dieses Dokument keine Verhaltensweisen fr die Fehlerverarbei-
tung durch Benutzerprogramme (z. B. wie sie sich verhalten, wenn sie eine durch eine URI
angegebene Ressource nicht finden).
Die Benutzerprogramme mssen jedoch den Regeln fr die Verarbeitung von Parsing-Fehlern
gehorchen.
Weil sich die Vorgehensweise der Benutzerprogramme bei der Verarbeitung von Fehlerbedin-
gungen unterscheiden kann, drfen sich Autoren und Benutzer nicht auf ein bestimmtes Verhal-
ten bei der Fehlerverarbeitung verlassen.
Dieser Abschnitt beschreibt eine Grammatik (sowie vorw,rts-kompatible Parsing-Regeln), die fr
jede CSS-Version gltig sind (auch fr CSS2). Zuknftige CSS-Versionen werden dieser Kern-
syntax entsprechen, fhren aber m=glicherweise zus@tzliche syntaktische Einschr@nkungen ein.
Diese Beschreibungen sind normativ. Sie werden erg@nzt durch die normativen Grammatik-
regeln, die Sie in Anhang D finden.
4.1.1 Token-Bildung
Alle CSS-Level – Level 1, Level 2 und alle zuknftigen Level – verwenden dieselbe Kernsyntax.
Auf diese Weise ist es m=glich, dass ein Benutzerprogramm auch Stylesheets in CSS-Levels
parst (auch wenn er sie nicht vollst@ndig versteht), die noch gar nicht existiert haben, als das
Benutzerprogramm entwickelt wurde. Die Designer k=nnen dieses Funktionsmerkmal nutzen,
um Stylesheets anzulegen, die auch mit @lteren Benutzerprogrammen eingesetzt werden k=n-
nen, w@hrend sie gleichzeitig alle M=glichkeiten der neuesten CSS-Level aussch=pfen.
Auf der lexikalischen Ebene bestehen CSS-Stylesheets aus einer Folge von Token. Diese
Token-Liste fr CSS2 sieht wie im Folgenden gezeigt aus. Die Definitionen verwenden regul@re
Ausdrcke im Stil von Lex. Bytecodes beziehen sich auf ISO 10646 ([ISO10646]). Wie in Lex
legt im Fall von mehreren bereinstimmungen die l@ngste bereinstimmung das Token fest.
Anmerkung der bersetzer: Lex ist ein auf Unix-Systemen verbreitetes Werk-
zeug, das dazu dient, Programme zum Parsing einer Sprache zu generieren.
Token Definition
IDENT {ident}
ATKEYWORD @{ident}
STRING {string}
HASH #{name}
NUMBER {num}
PERCENTAGE {num}%
DIMENSION {num}{ident}
URI url\({w} {string} {w}\) | url\ ([!#$%&*-~]| {escape})*{w})
UNICODE-RANGE U\+[0-9-F?]{1,6}(-[0-9A-F]{1,6})?
CDO <!- -
CDC - ->
; ;
{ \{
} \}
( \(
) \)
<edition
[Link]>
Die Makros in den geschweiften Klammern ({}) sind wie folgt definiert:
Makro Definition
ident {nmstart}{nmchar}*
name {nmchar}+
nmstart [a-zA-Z_]|{nonascii}|{escape}
nonascii [^\0-\177]
unicode \\[0-9a-f]{1,6}[ \n\r\t\f]?
escape \\[0-9a-f]{1,6}[ \n\r\t\f]?
nmchar [a-zA-Z0-9-_]|{nonascii}|{escape}
num [0-9]+|[0-9]*\.[0-9]+
string {string1}|{string2}
nl \n|\r\n|\r|\f
w [ \t\r\n\f]*
Nachfolgend sehen Sie die Kernsyntax fr CSS. Die folgenden Abschnitte beschreiben, wie sie
zu verwenden ist. Anhang D beschreibt eine einschr@nkendere Grammatik, die n@her an der
CSS Level 2-Sprache ist.
In der Grammatik treten (der Lesbarkeit halber) keine COMMENT-Token auf, zwischen den
anderen Token sind jedoch an beliebiger Stelle beliebig viele solcher Token erlaubt.
Das Token S in der obigen Grammatik steht fr Leerraum. In Leerraum k=nnen nur die
Zeichen „Leerzeichen“ (Unicode-Code 32), „Tabulator“ (9), „Line Feed“ (10, Zeilenvor-
schub), „Carriage Return“ (13, Wagenrcklauf) und „Form Feed“ (12, Seitenvorschub)
auftreten. Andere leerzeichen@hnliche Zeichen, wie beispielsweise das „em-Leerzeichen“
(8195) und das „ideographische Leerzeichen“ (12288), sind niemals Teil eines Whitespace.
4.1.2 Schl-sselwUrter
Schlsselw=rter haben die Form von Bezeichnern. Schlsselw=rter drfen nicht zwischen
Anfhrungszeichen ("..." oder '...') stehen. Damit ist
red
ein Schlsselwort,
"red"
dagegen nicht. (Es handelt sich um eine Zeichenkette.) Weitere fehlerhafte Beispiele:
width: "auto";
border: "none";
font-family: "serif";
background: "red";
· In CSS2 drfen Bezeichner (inklusive Elementnamen, Klassen und IDs in Selektoren) nur die
Zeichen [A-Za-z0-9_] und ISO 10646-Zeichen 161 und h=her enthalten, ebenso wie den
<edition
[Link]>
Zweitens, er verwirft die Bedeutung spezieller CSS-Zeichen. Alle Zeichen (außer einer
hexadezimalen Ziffer) k=nnen mit einem Backslash gekennzeichnet („escaped“) werden,
um ihre spezielle Bedeutung aufzuheben. Beispielsweise ist "\"" ein String, der aus einem
doppelten Anfhrungszeichen besteht. Stylesheet-Pr@prozessoren drfen diese Backslas-
hes nicht aus einem Stylesheet entfernen, weil das die Bedeutung des Stylesheets ver-
@ndern wrde.
Drittens, die Backslash-Escapes erlauben den Autoren, Zeichen zu verwenden, die nicht
ganz einfach in ein Dokument aufgenommen werden k=nnen. In diesem Fall folgen dem
Backslash h=chstens sechs hexadezimale Ziffern (0..9A..F), was fr die ISO 10646-Zeichen
([ISO10646]) mit der jeweiligen Nummer steht. Wenn der hexadezimalen Nummer eine
Ziffer oder ein Buchstabe folgt, muss das Ende der Nummer erkennbar sein. Dazu gibt es
zwei M=glichkeiten:
1. Durch Einfgen eines Leerzeichens (oder eines anderen Leerraum-Zeichens): "\26 B"
("&B")
2. Durch die Angabe von genau 6 hexadezimalen Ziffern: "\000026B" ("&B")
Diese beiden Methoden k=nnen auch kombiniert werden. Hinter einem hexadezimalen
Escape wird nur ein Leerraum-Zeichen ignoriert. Beachten Sie, dass das bedeutet, dass ein
„reales“ Leerzeichen hinter der Escape-Folge mit Escape gekennzeichnet oder verdoppelt
werden muss.
· Backslash-Escapes werden immer als Teil eines Bezeichners oder eines Strings betrachtet
(z. B. ist "\7B" kein Interpunktionszeichen, obwohl "{" das ist, und "\32" darf am Anfang eines
Klassennamens stehen, obwohl "2" nicht dort stehen darf).
4.1.4 Anweisungen
Ein CSS-Stylesheet besteht in jeder CSS-Version aus einer Liste mit Anweisungen (siehe nachfol-
gende Grammatik). Es gibt zwei Arten von Anweisungen: at-Regeln und Regelmengen. Um die
Anweisungen herum darf Whitespace stehen.
Cascading Style Sheets, Level 2
In dieser Spezifikation bedeuten die Ausdrcke „unmittelbar vor“ oder „unmittelbar hinter“,
dass keine Whitespaces oder Kommentare dazwischen stehen.
4.1.5 At-Regeln
At-Regeln beginnen mit einem At-Schlsselwort, einem '@'-Zeichen, unmittelbar gefolgt von
einem Bezeichner (z. B. '@import', '@page').
Eine At-Regel umfasst alles bis und inklusive des n@chsten Semikolons (;) oder dem n@chsten
Block, abh@ngig davon, was zuerst kommt. Ein CSS-Benutzerprogramm, das auf eine nicht
erkannte At-Regel trifft, muss die gesamte At-Regel ignorieren und das Parsing hinter dieser
At-Regel fortsetzen.
CSS2-Benutzerprogramme mssen jede @import-Regel ignorieren, die innerhalb eines Blocks
steht oder die nicht vor allen anderen Regelmengen steht.
@import "[Link]";
H1 { color: blue }
@import "[Link]";
Das zweite '@import' ist gem@ß CSS2 nicht erlaubt. Der CSS2-Parser ignoriert die gesamte At-
Regel, wodurch das Stylesheet letztlich auf Folgendes reduziert wird:
@import "[Link]";
H1 { color: blue }
Im folgenden Beispiel ist die zweite '@import'-Regel ungltig, weil sie innerhalb eines '@me-
dia'-Blocks steht.
@import "[Link]";
@media print {
@import "[Link]";
BODY { font-size: 10pt }
}
H1 {color: blue }
4.1.6 BlUcke
Ein Block beginnt mit einer =ffnenden geschweiften Klammer ({) und endet mit der zugeh=rigen
schließenden geschweiften Klammer (}). Innerhalb der geschweiften Klammern drfen beliebige
Zeichen stehen. Klammern (()), eckige Klammern ([ ]) und geschweifte Klammern ({}) mssen
immer paarweise auftreten und drfen verschachtelt werden. Einfache (') und doppelte Anfh-
rungszeichen (") mssen ebenfalls paarweise auftreten, und die Zeichen zwischen ihnen werden
als Zeichenkette („String“) geparst. Die Definition eines Strings finden Sie im Abschnitt ber
Beachten Sie, dass die obige Regel kein gltiges CSS2 ist, aber nach der obigen Definition den-
noch einen Block darstellt.
<edition
[Link]>
Eine Regelmenge (auch als „Regel “ bezeichnet) besteht aus einem Selektor gefolgt von einem
Deklarationsblock.
Ein Deklarationsblock (im Folgenden auch als {}-Block bezeichnet) beginnt mit einer =ffnenden
geschweiften Klammer ({) und endet mit einer paarweise dazugeh=rigen schließenden
geschweiften Klammer (}). Zwischen diesen Klammern muss sich eine Liste mit null oder mehr
durch Semikolons (;) voneinander abgetrennten Deklarationen befinden.
Der Selektor besteht aus allem bis (aber nicht inklusive) zu der ersten =ffnenden geschweiften
Klammer ({). Ein Selektor existiert immer in Kombination mit einem {}-Block. Wenn ein Benut-
zerprogramm den Selektor nicht parsen kann (wenn es sich dabei beispielsweise nicht um glti-
ges CSS2 handelt), muss er den {}-Block ebenfalls ignorieren.
In CSS2 hat das Komma (,) in Selektoren eine spezielle Bedeutung. Weil jedoch nicht bekannt
ist, ob dem Komma in zuknftigen Versionen von CSS eine andere Bedeutung zuteil wird, sollte
die gesamte Anweisung ignoriert werden, falls sich irgendwo im Selektor ein Fehler befindet,
auch wenn der restliche Selektor CSS2 entsprechend korrekt aussieht.
Beispiel
Weil beispielsweise "&" kein gltiges Token in einem CSS2-Selektor ist, muss ein
CSS2-Benutzerprogramm die gesamte zweite Zeile ignorieren und darf die Farbe von
H3 nicht auf rot setzen:
H1, H2 {color: green }
H3, H4 & H5 {color: red }
H6 {color: black }
Nachfolgend sehen Sie ein komplexeres Beispiel. Die beiden ersten Paare geschweifter Klam-
mern befinden sich innerhalb einer Zeichenkette und markieren nicht das Ende des Selektors.
Dies ist eine gltige CSS2-Anweisung.
Cascading Style Sheets, Level 2
Eine Deklaration ist entweder leer oder besteht aus einer Eigenschaft gefolgt von einem Dop-
pelpunkt (:) gefolgt von einem Wert. Vor und hinter diesen Bestandteilen k=nnen sich beliebige
Leerraum-Zeichen befinden.
Aufgrund der Arbeitsweise von Selektoren k=nnen mehrere Deklarationen fr denselben
Selektor in durch Semikolons (;) voneinander getrennten Gruppen angeordnet werden.
Beispiel
Die folgenden Regeln:
H1 { font-weight: bold }
H1 { font-size: 12pt }
H1 { line-height: 14pt }
H1 { font-family: Helvetica }
H1 { font-variant: normal }
H1 { font-style: normal }
H1 {
font-weight: bold;
font-size: 12pt;
line-height: 14pt;
font-family: Helvetica;
font-variant: normal;
font-style: normal
}
Eine Eigenschaft ist ein Bezeichner. Innerhalb des Wertes drfen beliebige Zeichen auftre-
ten, wobei jedoch Klammern ("()"), eckige Klammern ("[ ]"), geschweifte Klammern ("{}"),
einfache Anfhrungszeichen (') und doppelte Anfhrungszeichen (") nur paarweise auftre-
ten drfen. Semikolons, die sich nicht innerhalb von Strings befinden, mssen mit dem
Escape-Zeichen gekennzeichnet werden. Klammern, eckige Klammern und geschweifte
Klammern drfen verschachtelt werden. Innerhalb der Anfhrungszeichen werden Zei-
chen als String geparst.
Die Syntax von Werten wird fr jede Eigenschaft separat angegeben, aber in jedem Fall werden
Werte aus Bezeichnern, Strings, Zahlen, L@ngen, Prozentwerten, URIs, Farben, Winkeln, Zei-
ten und Frequenzen zusammengesetzt.
Die zweite Deklaration der ersten Zeile enth@lt den ungltigen Wert '12pt'. Die zweite Dekla-
ration in der zweiten Zeile enth@lt eine undefinierte Eigenschaft 'font-vendor'. Der CSS2-Parser
ignoriert diese Deklarationen, wodurch er das Stylesheet letztlich auf Folgendes reduziert:
H1 { color: red; }
P { color: blue; font-variant: small-caps }
EM EM { font-style: normal }
<edition
[Link]>
Anmerkung der bersetzer: Der Wert '12pt' ist zwar syntaktisch korrekt,
jedoch nicht fr die Eigenschaft 'font-style' gltig.
4.1.9 Kommentare
Kommentare beginnen mit den Zeichen "/*" und enden mit den Zeichen "*/". Sie k=nnen ber-
all zwischen Token stehen, und ihr Inhalt hat keinerlei Einfluss auf die Darstellung. Kommentare
drfen nicht verschachtelt werden.
CSS erlaubt an einigen Stellen auch die SGML-Kommentarkennzeichner ("<!- -" und "- ->"), aber
sie kennzeichnen keine CSS-Kommentare. Sie sind erlaubt, damit Formatierungsregeln, die in
einem HTML-Quelldokument (im STYLE-Element) enthalten sind, vor Benutzerprogrammen,
die @lter als HTML 3.2 sind, verborgen werden k=nnen. Weitere Informationen finden Sie in
der HTML 4.0-Spezifikation ([HTML40]).
Anmerkung der bersetzer: Es ist zu beachten, dass <!- -...- -> gltige SGML-
Kommentare sind – wie oben gesagt –, dass SGML aber eine allgemeinere Form der
Kommentare kennt (fr Fachkundige: - - ... - - innerhalb einer Markup-Deklaration). Es
ist blich, den Inhalt des STYLE-Elements in <!- - und - -> einzuschließen. Diese Form
der Kommentierung ist heute kaum mehr relevant, da praktisch alle g@ngigen Web-
Browser das STYLE-Element kennen und nicht auf die Idee kommen, den Inhalt anzuzei-
gen.
Unbekannte Eigenschaften
Benutzerprogramme mssen eine Deklaration mit einer unbekannten Eigenschaft ignorie-
ren. Fr das folgende Stylesheet beispielsweise:
H1 { color: red; rotation: 70minutes }
verh@lt sich der Benutzerprogramm genau so, als l@ge das folgende Stylesheet vor:
H1 { color: red }
Fehlerhafte Werte
Benutzerprogramme mssen eine Deklaration mit fehlerhaftem Wert ignorieren. Beispiel:
IMG { float: left } /* korrektes CSS2 */
IMG { float: left here } /* "here" ist kein Wert von 'float' */
IMG { background: "red" } /* SchlUsselw^rter dUrfen in CSS2 nicht in doppelten
AnfUhrungszeichen stehen */
IMG { border-width: 3 } /* fUr L]ngenangaben muss eine Einheit
angegeben werden */
Ein CSS2-Parser wrde die erste Regel bercksichtigen, den Rest aber ignorieren, als s@he
das Stylesheet wie folgt aus:
IMG { float: left }
IMG { }
IMG { }
IMG { }
Ein Benutzerprogramm, das zu einer zuknftigen CSS-Spezifikation konform ist, kann m=gli-
cherweise eine oder mehrere der anderen Regeln ebenfalls akzeptieren.
Ung-ltige At-Schl-sselworte
Benutzerprogramme mssen ein ungltiges At-Schlsselwort mit allem Folgenden bis und
einschließlich dem n@chsten Semikolon (;) oder Block ({...}) ignorieren – je nach dem, was
zuerst kommt. Betrachten Sie zum Beispiel Folgendes:
@three-dee {
@background-lighting {
azimuth: 30deg;
elevation: 190deg;
}
H1 { color: red }
}
H1 { color: blue }
4.3 Werte
4.3.1 Integer und reelle Zahlen
<edition
[Link]>
Beachten Sie, dass viele Eigenschaften, fr die eine ganze oder eine reelle Zahl als Wert angegeben
werden kann, einen bestimmten Wertebereich vorgeben, h@ufig einen nicht negativen Wert.
4.3.2 [Link]
Einige Eigenschaften erlauben die Angabe negativer L@ngenwerte, aber das kann das Formatie-
rungsmodell verkomplizieren, und es kann von der jeweiligen Implementierung abh@ngige
Beschr@nkungen geben. Wenn kein negativer Wert untersttzt werden kann, sollte er in den
n@chsten Wert umgewandelt werden, der untersttzt werden kann.
Es gibt zwei Arten L@ngeneinheiten: relative und absolute. Relative L,ngeneinheiten geben eine
L@nge relativ zu einer anderen L@ngeneigenschaft an. Stylesheets, die relative Einheiten verwen-
Cascading Style Sheets, Level 2
den, k=nnen einfacher von einem Medium auf ein anderes skaliert werden (z. B. von einer Bild-
schirmanzeige auf einen Laserdrucker).
Relative Einheiten sind:
·· em : die 'font-size' der betreffenden Schrift
ex : die 'x-height' der betreffenden Schrift.
· px : Pixel, relativ zum Anzeigeger@t
H1 { margin: 0.5em } /* em */
H1 { margin: 1ex } /* ex */
P { font-size: 12px } /* px */
Anmerkung der bersetzer: Dass em und ex relative Einheiten sind, ist offen-
sichtlich, da ihre Gr=ße von der aktuellen Schrift abh@ngt. Sie stellen also gute M=glich-
keiten zur Verfgung, den Benutzer die Gr=ße w@hlen zu lassen (ber die Schriftgr=ße)
und andere Werte (z. B. R@nder) davon abh@ngig zu machen. Im Gegensatz dazu ist ein
Pixel im allgemeinen Verst@ndnis keine relative Gr=ße. Im Folgenden wird beschrieben,
was es damit auf sich hat. Ob die g@ngigen Ausgabeger@te ein Pixel als relative Gr=ße
ansehen, darf jedoch zumindest bezweifelt werden. Aus praktischer Sicht sind deshalb
em und ex zu empfehlen.
Die Einheit 'em' ist gleich dem berechneten Wert der Eigenschaft 'font-size' des Elements, auf
das sie angewendet wird. Die Ausnahme ist, wenn 'em' im Wert der Eigenschaft 'font-size'
selbst vorkommt, dann bezieht es sich auf die Schriftgr=ße des bergeordneten Elements. Sie
kann fr vertikale oder horizontale Maße verwendet werden. (Diese Einheit wird in typographi-
schen Texten manchmal auch als die „Geviert-Breite“ bezeichnet.)
Die Einheit 'ex' ist durch die 'x-height' der Schrift definiert. Die x-H=he wird so bezeichnet,
weil sie h@ufig gleich der H=he des kleinen „x“ ist. 'ex' ist jedoch selbst fr Schriften definiert, in
denen kein „x“ enthalten ist.
Beispiel
Die Regel
H1 { line-height: 1.2em }
bedeutet, dass die Zeilenh=he von H1-Elementen 20% gr=ßer als die Schriftgr=ße von H1-Ele-
menten ist. Andererseits bedeutet
H1 { font-size: 1.2em }
dass die Schriftgr=ße von H1-Elementen um 20% gr=ßer als die von H1-Elementen geerbte
Schriftgr=ße ist.
Wenn 'em' und 'ex' fr die Wurzel (Root) des Dokumentbaums (z. B. "HTML" in HTML) ange-
geben werden, beziehen sie sich auf den Ausgangswert der Eigenschaft.
<edition
[Link]>
1.4 mm
0.28 mm
viewer
28 inch
71 cm
140 inch
3.5 m
Im zweiten Bild wird ein Bereich von 1px mal 1px durch einen einzigen Punkt auf einem gering
aufl=senden Ger@t (einem Computerbildschirm) abgedeckt, w@hrend derselbe Bereich auf
einem h=her aufl=senden Ger@t (wie beispielsweise einem 400dpi-Laserdrucker) von 16 Punk-
ten abgedeckt wird.
laserprint
Cascading Style Sheets, Level 2
monitor screen
1px
1px
= 1 device pixel
Untergeordnete Elemente erben nicht die fr ihre bergeordneten Elemente angegebenen
relativen Werte; sie erben (im Allgemeinen) die berechneten Werte.
Beispiel
In den folgenden Regeln ist der berechnete Wert von 'text-indent' fr H1-Elemente
gleich 36pt, nicht 45pt, falls H1 ein untergeordnetes Element des BODY-Elements ist.
BODY {
font-size: 12pt;
text-indent: 3em; /* z. B. 36pt */
}
H1 { font-size: 15pt }
Absolute L,ngeneinheiten sind nur dann sinnvoll, wenn die physischen Eigenschaften des Aus-
gabemediums bekannt sind. Die absoluten Einheiten sind:
·· in : Inch (Zoll) – 1 Zoll ist gleich 2,54 Zentimeter.
cm : Zentimeter
·· mm : Millimeter
pt : Punkte – die in CSS2 verwendeten Punkte entsprechen 1/72 Zoll.
· pc : Picas – 1 Pica entspricht 12 Punkten.
In F@llen, in denen die angegebene L@nge nicht untersttzt werden kann, mssen Benutzerpro-
gramme den tats@chlichen Wert approximieren.
4.3.3 Prozentwerte
Das Format eines Prozentwerts (in dieser Spezifikation als <percentage> gekennzeichnet) ist
Beispiel
Weil untergeordnete Elemente (im Allgemeinen) die berechneten Werte ihres berge-
ordneten Elements erben, erben im folgenden Beispiel die untergeordneten Elemente
des P-Elements einen Wert von 12pt fr 'line-height', nicht etwa den Prozentwert
(120%):
P { font-size: 10pt }
P { line-height: 120% } /* 120% von 'font-size' */
<edition
[Link]>
URLs (Uniform Resource Locators, siehe [RFC1738] und [RFC1808]) stellen die Adresse einer
Ressource im Web bereit. Eine voraussichtlich neue Methode, Ressourcen zu identifizieren, ist
URN (Uniform Resource Name). Zusammen werden sie als URIs (Uniform Resource Identi-
fiers, siehe [URI]) bezeichnet. In dieser Spezifikation wird der Begriff URI verwendet.
URI-Werte in dieser Spezifikation werden als <uri> gekennzeichnet. Die funktionale Notation
zur Angabe von URIs in Eigenschaftswerten ist ‘url()’, wie in:
Das Format eines URI-Wertes ist 'url(', gefolgt von optionalem Leerraum, gefolgt von
einem optionalen einfachen Anfhrungszeichen (') oder doppelten Anfhrungszeichen ("),
gefolgt von dem eigentlichen URI, gefolgt von einem optionalen einfachen Anfhrungszei-
chen (') oder doppelten Anfhrungszeichen ("), gefolgt von optionalem Whitespace,
gefolgt von ')'. Die beiden Anfhrungszeichen mssen gleich sein.
Beispiel
Ein Beispiel ohne Anfhrungszeichen:
LI { list-style: url([Link] disc }
Abschnitt 3 definiert den normativen Algorithmus fr diesen Prozess. Fr CSS-Stylesheets ist
der Basis-URI der des Stylesheets, nicht der des Quelldokuments.
Beispiel
Angenommen, die folgende Regel:
BODY { background: url("yellow") }
befindet sich in einem Stylesheet, das durch die folgende URI angegeben wird:
[Link]
Der Hintergrund des BODY des Quelldokuments wird kachelartig mit dem Bild gefllt, das in
der durch den folgenden URI angegebenen Ressource bereitgestellt ist:
[Link]
Benutzerprogramme k=nnen dahingehend variieren, wie sie URIs verarbeiten, die nicht verfg-
bare oder nicht anwendbare Ressourcen bezeichnen.
4.3.5 [Link]
Beispiel
Nachfolgend sehen Sie ein Stylesheet, das die Abs@tze (P) fr jedes Kapitel (H1) num-
meriert. Die Abs@tze werden mit r=mischen Zahlen nummeriert, gefolgt von einem
Punkt und einem Leerzeichen:
P {counter-increment: par-num}
H1 {counter-reset: par-num}
P:before {content: counter(par-num, upper-roman) ". "}
Fr Z@hler, die nicht im Gltigkeitsbereich eines 'counter-reset' liegen, nimmt man an, dass sie
durch einen 'counter-reset' fr das Wurzel-Element auf 0 zurckgesetzt wurden.
4.3.6 Farben
Eine <color> ist entweder ein Schlsselwort oder eine numerische RGB-Angabe.
Die Liste der Schlsselwort-Farbnamen ist: aqua, black, blue, fuchsia, gray, green, lime, maroon,
navy, olive, purple, red, silver, teal, white und yellow (aquamarinblau, schwarz, blau, fuchsia,
grau, grn, limonengelb, kastanienbraun, navygrn, olivgrn, violett, rot, silber, (blau-grn (teal),
weiß und gelb). Diese 16 Farben sind in HTML 4.0 ([HTML40]) definiert. Neben diesen Farb-
schlsselw=rtern k=nnen Benutzer auch Schlsselw=rter angeben, die den von bestimmten
Objekten in der Benutzerumgebung verwendeten Farben entsprechen. Weitere Informationen
finden Sie im Abschnitt ber Systemfarben.
Beispiel
BODY {color: black; background: white }
H1 { color: maroon }
H2 { color: olive }
<edition
[Link]>
Beispiel
EM { color: #f00 } /* #rgb */
EM { color: #ff0000 } /* #rrggbb */
EM { color: rgb(255,0,0) } /* Integer-Bereich 0 - 255 */
EM { color: rgb(100%, 0%, 0%) } /* Float-Bereich 0.0% - 100.0% */
Das Format eines RGB-Werts in hexadezimaler Notation ist ein '#', unmittelbar gefolgt von
drei oder sechs hexadezimalen Zeichen. Die dreistellige RGB-Notation (#rgb) wird in eine
sechsstellige Form (#rrggbb) umgewandelt, indem die Ziffern repliziert werden, nicht, indem
Nullen hinzugefgt werden. Beispielsweise wird #fb0 zu #ffbb00 expandiert. Damit wird sicher-
gestellt, dass weiß (#ffffff) mit der Kurznotation (#fff) dargestellt werden kann, und es werden
alle Abh@ngigkeiten von der Farbtiefe der Anzeige ausgeschlossen.
Das Format eines RGB-Wertes in der funktionalen Notation ist 'rgb(' gefolgt von einer Liste
mit durch Kommas voneinander getrennten Eintr@gen der drei numerischen Werte (entweder
drei ganzzahlige Werte oder drei Prozentwerte), gefolgt von ')'. Der ganzzahlige Wert 255 ent-
spricht 100%, und F oder FF in der hexadezimalen Notation: rgb(255,255,255) = rgb(100%,
100%, 100%) = #FFF. Leerraum-Zeichen um die numerischen Werte herum sind erlaubt.
Alle RGB-Farben werden im sRGB-Farbraum angegeben (siehe [SRGB]). Benutzerprogramme
k=nnen sich darin unterscheiden, in welcher Farbtreue sie diese Farben darstellen, aber die
Verwendung von sRGB stellt eine eindeutige und objektiv messbare Definition dessen dar, wie
die Farbe aussehen soll, was mit internationalen Standards in Verbindung gebracht werden kann
(siehe [COLORIMETRY]).
Konforme Benutzerprogramme k=nnen ihre Bemhungen zur Farbanzeige darauf begrenzen,
eine Gammakorrektur darauf auszufhren. sRGB gibt ein Anzeigegamma von 2.2 unter vor-
gegebenen Anzeigebedingungen. Benutzerprogramme sollten die in CSS angegebenen Farben
Cascading Style Sheets, Level 2
Andere Ger@te wie beispielsweise Drucker haben andere Skalen fr sRGB; einige Farben
außerhalb des sRGB-Bereichs 0..255 sind darstellbar (innerhalb der Ger@teskala), w@hrend
andere Farben innerhalb des sRGB-Bereichs 0..255 außerhalb der Ger@teskala liegen und damit
ausgeschlossen werden.
4.3.7 Winkel
Winkelwerte (im Text als <angle> angegeben) werden in Kombination mit akustischen Style-
sheets verwendet.
Ihr Format ist ein optionales Vorzeichen ('+'oder '-', wobei '+' der Standard ist), unmittelbar
gefolgt von einer <number>, unmittelbar gefolgt von einem Winkeleinheitenbezeichner.
Winkeleinheitenbezeichner sind:
·· deg : Grad
grad : Gradienten
· rad : Bogenmaß
Winkelwerte k=nnen negativ sein. Sie sollten vom Benutzerprogramm in den Bereich 0-360deg
normalisiert werden. Beispielsweise sind –10deg und 350deg @quivalent.
Beispielsweise ist ein rechter Winkel '90deg' oder '100grad' oder '1.570796326794897rad'.
4.3.8 Zeiten
Zeitwerte (im Text durch <time> gekennzeichnet) werden in Kombination mit akustischen
Stylesheets verwendet.
Ihr Format ist eine <number> unmittelbar gefolgt von einem Zeiteinheitenbezeichner.
Zeiteinheitenbezeichner sind:
·· ms : Millisekunden
s : Sekunden
4.3.9 Frequenzen
<edition
[Link]>
4.3.10 Zeichenketten
Eine Zeichenkette darf nicht direkt ein Neuezeile-Zeichen enthalten. Um ein Neuezeile-Zeichen
in einen String aufzunehmen, verwenden Sie das Escape-Zeichen ‘\A’ (hexadezimal A ist das Zei-
lenvorschub-Zeichen in Unicode, stellt aber in CSS das allgemeine Konzept von „Neue Zeile“
dar). Ein Beispiel dafr finden Sie in der Beschreibung der Eigenschaft 'content'.
Es ist m=glich, Zeichenketten aus @sthetischen oder anderen Grnden ber mehrere Zeilen zu
umbrechen, aber in diesem Fall muss das eigentliche Neuezeile-Zeichen mit einem Backslash (\)
als Escape gekennzeichnet werden. Die beiden folgenden Selektoren beispielsweise sind identisch:
A[TITLE="ein nicht s\
o sehr langer Titel"] {/*...*/}
A[TITLE="ein nicht so sehr langer Titel"] {/*...*/}
4.4 CSS-Dokumentdarstellung
Ein CSS-Stylesheet ist eine Zeichenfolge aus dem Universal Character Set (siehe [ISO10646]).
Zur bertragung und Speicherung mssen diese Zeichen durch eine Zeichencodierung codiert
werden, die den in US-ASCII verfgbaren Zeichensatz untersttzt (z. B. ISO 8859-x, SHIFT JIS
Cascading Style Sheets, Level 2
usw.). Eine gute Einfhrung in Zeichens@tze und Zeichencodierungen finden Sie in der HTML
4.0-Spezifikation ([HTML40], Kapitel 5), und auch in der XML 1.0-Spezifikation ([XML10]),
Abschnitte 2.2 und 4.3.3 und in Anhang F.
Wenn ein Stylesheet in ein anderes Dokument eingebettet wird, wie beispielsweise in das
STYLE-Element oder „style“-Attribut von HTML, verwendet das Stylesheet dieselbe Zeichen-
codierung wie das gesamte Dokument.
Wenn sich ein Stylesheet in einer separaten Datei befindet, mssen Benutzerprogramme die
nachfolgend aufgelisteten Priorit@ten befolgen, wenn die Zeichencodierung eines Dokuments
festgelegt werden soll (angeordnet von der h=chsten zur geringsten Priorit@t):
1. Ein HTTP-‘charset’-Parameter in einem ‘Content-Type’-Feld.
2. Die At-Regel @charset.
3. Mechanismen der Sprache des referenzierenden Dokuments (z. B. in HTML das "char-
set"-Attribut des LINK-Elements).
In einem externen Stylesheet darf h=chstens eine @charset-Regel erscheinen – sie darf nicht in
einem eingebetteten Stylesheet erscheinen –, und sie muss ganz am Anfang des Dokuments ste-
hen, und es drfen ihr keine Zeichen vorangehen. Nach "@charset" geben Autoren den
Namen einer Zeichencodierung an. Bei dem Namen muss es sich um einen Zeichensatznamen
handeln, wie in der IANA-Registrierung beschrieben (siehe [IANA]; eine vollst@ndige Liste der
Zeichens@tze finden Sie in [CHARSETS]. Beispiel:
@charset "ISO-8859-1";
Ein Stylesheet kann auf Zeichen verweisen, die nicht in der aktuellen Zeichencodierung dar-
gestellt werden k=nnen. Diese Zeichen mssen als durch Escape gekennzeichnete Verweise auf
ISO 10646-Zeichen geschrieben werden. Diese Escapes dienen demselben Zweck wie numeri-
sche Zeichenverweise in HTML- oder XML-Dokumenten (siehe [HTML40], Kapitel 5 und 25).
Die Zeichen-Escape-Mechanismen sollten verwendet werden, wenn nur ein paar wenige Zei-
chen auf diese Weise dargestellt werden sollen. Wenn fr einen Großteil eines Dokuments
eine Escape-Kennzeichnung erforderlich ist, sollten die Autoren es mit einer geeigneteren
Codierung darstellen (z. B. wenn das Dokument sehr viele griechische Zeichen enth@lt, k=nn-
ten Autoren "ISO-8859-7" oder "UTF-8" verwenden).
Zwischengeschaltete Prozessoren, die eine andere Zeichencodierung verwenden, k=nnen diese
statt
<edition
[Link]>
5 Selektoren
5.1 Mustervergleich
In CSS legen die Regeln fr den Mustervergleich fest, welche Stilregeln auf die Elemente im
Dokumentbaum angewendet werden. Diese Muster, die so genannten Selektoren, k=nnen von
einfachen Elementnamen bis hin zu umfassenden Kontextmustern reichen. Wenn alle Bedin-
gungen eines Musters fr ein bestimmtes Element zutreffen, stimmt der Selektor mit dem Ele-
ment berein.
Die folgende Tabelle bietet einen berblick ber die Syntax fr CSS-Selektoren:
<edition
[Link]>
5.2 Selektorsyntax
Ein einfacher Selektor ist entweder ein Typselektor oder ein universeller Selektor, unmittelbar
gefolgt von null oder mehr Attribut-Selektoren, ID-Selektoren oder Pseudo-Klassen in beliebi-
ger Reihenfolge. Der einfache Selektor bringt eine bereinstimmung, wenn alle seine Kom-
ponenten bereinstimmen.
Ein Selektor ist eine Verkettung aus einem oder mehreren einfachen Selektoren, durch Kombina-
torzeichen voneinander getrennt. Kombinatorzeichen sind: Leerraum, „>“ und „+“. Leerraum kann
zwischen einem Kombinatorzeichen und den umgebenden einfachen Selektoren stehen.
Die Elemente des Dokumentbaums, die mit einem Selektor bereinstimmen, werden als Sub-
jekte des Selektors bezeichnet. Ein Selektor, der aus einem einzigen einfachen Selektor besteht,
stimmt mit jedem Element berein, das seine Anforderungen erfllt. Das Vorschalten eines ein-
fachen Selektors und eines Kombinatorzeichens vor eine Kette bewirkt zus@tzliche berein-
stimmungsbeschr@nkungen, so dass die Subjekte eines Selektors immer eine Untermenge der
Elemente sind, die mit dem ganz rechts stehenden einfachen Selektor bereinstimmen.
Ein Pseudo-Element kann an den letzten einfachen Selektor in einer Kette angeh@ngt werden.
In diesem Fall gilt die Stilinformation fr eine Unterkomponente eines jeden Subjekts.
5.2.1 Gruppierung
Wenn mehrere Selektoren dieselben Deklarationen haben, k=nnen sie in einer Liste gruppiert
werden, deren Eintr@ge durch Kommas voneinander getrennt sind.
Beispiel
In diesem Beispiel fassen wir drei Regeln mit identischen Deklarationen zu einer ein-
zigen Regel zusammen. Damit gilt:
H1 { font-family: sans-serif }
H2 { font-family: sans-serif }
Cascading Style Sheets, Level 2
H3 { font-family: sans-serif }
5.4 Typselektoren
Ein Typselektor stimmt mit dem Namen eines Elementtyps der Dokumentsprache berein. Ein
Typselektor stimmt mit jeder Instanz des Elementtyps im Dokumentbaum berein.
Beispiel
Die folgende Regel stimmt mit allen H1-Elementen im Dokumentbaum berein:
H1 { font-family: sans-serif }
Beispiel
Betrachten Sie beispielsweise die folgenden Regeln:
H1 { color: red }
EM { color: red }
Obwohl diese Regeln beabsichtigen, den Text zus@tzlich zu betonen, indem sie die Textfarbe
@ndern, geht der Effekt in einem Fall wie dem folgenden verloren:
Wir bercksichtigen diesen Fall, indem wir die obigen Regeln durch eine Regel erg@nzen, die
die Textfarbe auf blau setzt, wenn irgendwo in einem H1-Element ein EM auftritt:
H1 { color: red }
EM { color: red }
H1 EM { color: blue }
Die dritte Regel bringt eine bereinstimmung mit dem EM im folgenden Ausschnitt:
DIV * P
<edition
[Link]>
stimmt mit einem P-Element berein, das ein Nachkomme zweiter Generation oder sp@ter
eines DIV-Elements ist. Beachten Sie den Leerraum auf jeder Seite des „*“.
Der Selektor in der folgenden Regel, die abgeleitete und Attributselektoren kombiniert, stimmt
mit jedem Element berein, fr das (1) das Attribut „href“ gesetzt ist, und das sich (2) in einem
P befindet, das sich wiederum in einem DIV befindet:
DIV P *[href]
Anmerkung der bersetzer: Bei den Nachfahren ist wichtig, dass sie beliebig tief
in den bergeordneten Elementen verschachtelt sein k=nnen. Wie man nur direkte
Nachfahren anspricht, erkl@rt der n@chste Abschnitt.
5.6 Kind-Selektoren
Ein Kind-Selektor erzeugt eine bereinstimmung, wenn ein Element ein direkt untergeordnetes
Element eines anderen Elements ist. Ein Kind-Selektor besteht aus einem oder mehreren Selek-
toren, die durch „>“ voneinander getrennt sind.
Beispiel
Die folgende Regel bestimmt den Stil aller P-Elemente, die Kindelemente von BODY
sind:
BODY > P { line-height: 1.3 }
DIV OL>LI P
Es stimmt mit einem P-Element berein, das ein Nachfahre von einem LI ist; das LI-Element muss
ein Kind-Element eines OL-Elements sein; das OL-Element muss ein Nachfahre eines DIV sein.
Beachten Sie, dass der optionale Leerraum um das Kombinatorzeichen „>“ weggelassen wurde.
Weitere Informationen ber die Auswahl des ersten untergeordneten Elements eines Elements
finden Sie im Abschnitt ber die Pseudoklasse :first-child sp@ter in diesem Kapitel.
Beispiel
Die folgende Regel gibt demnach an, dass ein P-Element nicht eingerckt werden soll,
wenn es unmittelbar einem MATH-Element folgt:
MATH + P { text-indent: 0 }
Das n@chste Beispiel reduziert den vertikalen Abstand zwischen einem H1- und einem unmit-
telbar darauffolgenden H2-Element:
H1 + H2 { margin-top: -5mm }
Die folgende Regel ist der aus dem vorhergehenden Beispiel @hnlich, fgt aber einen Attribut-
Selektor hinzu. Die spezielle Formatierung findet damit nur dann statt, wenn H1 die Klasse
class="opener" hat:
5.8 Attribut-Selektoren
CSS2 erlaubt Autoren, Regeln anzugeben, die mit im Quelldokument definierten Attributen
bereinstimmen.
[att]
Erzielt eine bereinstimmung, wenn das Element das Attribut „att“ gesetzt hat, egal mit
welchem Wert.
<edition
[Link]>
Anmerkung der bersetzer: Der letzte Fall bezieht sich auf die Angabe von Spra-
chen. Sprachen werden in der Form de-DE, de-CH, en-US (hier Angaben der Sprachen
fr Deutschland, Schweiz und USA) usw. bezeichnet.
Attributwerte mssen Bezeichner oder Zeichenketten sein. Ob fr Attributnamen und Werte
in Selektoren die Groß-/Kleinschreibung bercksichtigt wird, ist von der Dokumentsprache
abh@ngig.
Beispiel
Der folgende Attribut-Selektor beispielsweise stimmt mit allen H1-Elementen berein,
die das Attribut „title“ angeben, unabh@ngig davon, welchen Wert es enth@lt:
H1[title] { color: blue; }
Im folgenden Beispiel stimmt der Selektor mit allen SPAN-Elementen berein, deren
„class“-Attribut genau den Wert „example“ hat:
Beispiel
Hier stimmt der Selektor mit allen SPAN-Elementen berein, deren „hello“-Attribut
genau den Wert „Cleveland“ hat, und deren „goodbye“-Attribut genau den Wert
„Columbus“ hat:
Cascading Style Sheets, Level 2
SPAN[hello="Cleveland"][goodbye="Columbus"]
{ color: blue; }
Die folgenden Selektoren zeigen die Unterschiede zwischen „=“ und „~=“. Der erste Selektor
beispielsweise erzielt eine bereinstimmung mit dem Wert „copyright copyleft copyeditor“ fr
das Attribut „rel“. Der zweite Selektor erzielt nur eine bereinstimmung, wenn das „href“-
Attribut den Wert „[Link] hat.
A[rel~="copyright"]
A[href="[Link]
Die folgende Regel verbirgt alle Werte, fr die der Wert des Attributs „lang“ gleich „fr“ ist
(d. h. die Sprache ist Franz=sisch).
Die folgende Regel erzielt eine bereinstimmung fr Werte des Attributs „lang“, das mit „en“
beginnt, inklusive „en“, „en-US“ und „en-cockney“:
Analog dazu erlauben die folgenden Regeln fr ein akustisches Stylesheet, dass ein Skript laut
mit unterschiedlichen Stimmen fr jede Rolle gelesen wird:
DIALOGUE[character=romeo]
{ voice-family: "Lawrence Olivier", charles, male }
DIALOGUE[character=juliet]
{ voice-family: "Vivien Leigh", victoria, female }
Der Vergleich erfolgt fr Attributwerte im Dokumentbaum. Fr andere Dokumentsprachen als
HTML k=nnen Standardattributwerte in einer DTD oder an anderer Stelle definiert werden.
Stylesheets sollten so entworfen werden, dass sie auch dann funktionieren, wenn die Standard-
werte nicht im Dokumentbaum enthalten sind.
Anmerkung der bersetzer: Mittlerweile wird CSS auch zur Formatierung von
beliebigen XML-Sprachen benutzt. Zum Beispiel setzt der Editor XMetal CSS fr die
Bildschirmdarstellung ein. Der hier gegebene Hinweis, an Vorgabewerte in einer DTD
zu denken, ist also heute noch sinnvoller als zur Zeit, zu der die CSS-Spezifikation
geschrieben wurde.
EXAMPLE[notation=decimal] {
/*... Standardeigenschaftseinstellungen ...*/ }
EXAMPLE[notation=octal] { /*... andere
Einstellungen...*/ }
und man will alle F@lle auffangen, in denen dieses Attribut standardm@ßig und nicht explizit
gesetzt ist, k=nnte man die folgende Regel einfgen:
<edition
[Link]>
Weil dieser Selektor weniger spezifisch ist als ein Attribut-Selektor, wird er nur fr den Stan-
dardfall verwendet. Es muss darauf geachtet werden, dass alle anderen Attributwerte, die nicht
denselben Stil wie der Standard erhalten sollen, explizit abgedeckt werden.
5.8.3 Klassen-Selektoren
Fr Stylesheets, die in Kombination mit HTML eingesetzt werden, k=nnen Autoren die Punkt-
notation (.) als Alternative zur „~=„-Notation verwenden, wenn mit dem „class“-Attribut ver-
glichen wird. Fr HTML haben also „[Link]“ und „DIV[class~=value]“ dieselbe Bedeutung.
Der Attributwert muss dem „.“ unmittelbar folgen.
Beispiel
Beispielsweise k=nnen wir folgendermaßen allen Elementen mit class~="pastoral" eine
Stilinformation zuweisen:
*.pastoral { color: green } /* alle Elemente mit
class~=pastoral */
oder einfach
Die folgende Regel weist nur H1-Elementen mit class~="pastoral" einen Stil zu:
Mit diesen Regeln wrde die erste folgende H1-Instanz nicht mit grnem Text dargestellt, die
zweite dagegen sehr wohl:
Cascading Style Sheets, Level 2
<H1>Nicht grUn</H1>
<H1 class="pastoral">Sehr grUn</H1>
Um eine bereinstimmung mit einer Untermenge der „class“-Werte zu erzielen, muss jedem
Wert ein „.“ vorausgehen, in beliebiger Reihenfolge.
Beispiel
Die folgende Regel beispielsweise erzielt eine bereinstimmung mit einem beliebigen
P-Element, dessen „class“-Attribut eine Liste mit durch Leerzeichen voneinander abge-
trennten Werten zugewiesen wurde, die „pastoral“ und „marine“ enthalten:
[Link] { color: green }
Diese Regel erzielt eine bereinstimmung, wenn class="pastoral blue aqua marine" ist, aber
nicht fr class="pastoral blue".
Hinweis: CSS stattet das „class“-Attribut mit so viel Leistungsf@higkeit aus, dass Autoren ganz
bequem ihre eigene „Dokumentsprache“ entwickeln k=nnten, die auf Elementen basiert, die
fast keine zugeh=rigen Darstellung besitzen (wie beispielsweise DIV und SPAN in HTML), und
die Stilinformation ber das „class“-Attribut zuweisen. Autoren sollten diese Vorgehensweise
jedoch vermeiden, weil die strukturellen Elemente einer Dokumentsprache h@ufig bekannte
und anerkannte Bedeutungen haben, vom Autor definierte Klassen dagegen m=glicherweise
nicht. n
Anmerkung der bersetzer: Es ist durchaus m=glich, nur mit einem einzigen Ele-
menttyp, etwa p auszukommen. In der Form <p class="vorwort">... <p class="kapitel">
usw. k=nnten dann die Elemente beginnen. Ihre Darstellung wrde vollst@ndig ber CSS
gesteuert.
Diese Verwendung von HTML kann wohl mit Recht als unsinnig bezeichnet werden, da
HTML keine Rolle mehr spielt. Hier bietet es sich an, auf XML umzusteigen, einen eige-
nen Dokumenttyp zu definieren und die neuen Elementtypen in einer eigenen DTD zu
deklarieren. In der Folge wrden die Elemente dann etwa so beginnen: <vorwort> ...
<kapitel>...
Die Modularisierung von XHTML erlaubt auch, eigene Elementtypen mit vorhandenen
XHTML-Modulen zu kombinieren.
5.9 ID-Selektoren
Dokumentsprachen k=nnen Attribute enthalten, die als vom Typ ID deklariert sind. Was Attri-
bute vom Typ ID so besonders macht, ist die Tatsache, dass keine zwei solchen Attribute den-
selben Wert haben k=nnen; unabh@ngig davon, um welche Dokumentsprache es sich handelt –
ein ID-Attribut kann genutzt werden, um sein Element eindeutig zu identifizieren. In HTML
Beispiel
Der folgende ID-Selektor erzielt eine bereinstimmung mit dem H1-Element, dessen
ID-Attribut den Wert „Kapitel1“ hat:
H1#Kapitel1 { text-align: center }
<edition
[Link]>
Im folgenden Beispiel erzeugt die Stilregel eine bereinstimmung mit dem Element, das den ID-
Wert „z98y“ hat. Die Regel erzeugt damit eine bereinstimmung fr das P-Element:
<HEAD>
<TITLE>dbereinstimmung mit P</TITLE>
<STYLE type="text/css">
*#z98y { letter-spacing: 0.3em }
</STYLE>
</HEAD>
<BODY>
<P id=z98y>Breiter Text</P>
</BODY>
Im n@chsten Beispiel erzeugt die Stilregel jedoch nur eine bereinstimmung fr ein H1-Element,
das den ID-Wert „z98y“ hat. Die Regel erzeugt in diesem Beispiel keine bereinstimmung mit
dem P-Element:
<HEAD>
<TITLE>dbereinstimmung nur mit H1</TITLE>
<STYLE type="text/css">
H1#z98y { letter-spacing: 0.5em }
</STYLE>
</HEAD>
<BODY>
<P id=z98y>Breiter Text</P>
</BODY>
ID-Selektoren haben eine h=here Spezifit@t als Attribut-Selektoren. In HTML beispielsweise ist
der Selektor #p123 spezifischer als [ID=p123], was die Kaskade betrifft.
In XML 1.0 [XML10] ist die Information darber, welches Attribut die ID eines Elements ent-
h@lt, in einer DTD enthalten. Beim Parsen von XML lesen Benutzerprogramme nicht immer die
Cascading Style Sheets, Level 2
DTD und wissen damit m=glicherweise nicht, um welches Element es sich bei der DTD han-
delt. Wenn ein Stylesheet-Designer weiß oder vermutet, dass dies der Fall ist, sollte er statt-
dessen normale Attribut-Selektoren verwenden: [name=p371] statt #p371. Die kaskadierende
Reihenfolge normaler Attribut-Selektoren unterscheidet sich jedoch von ID-Selektoren. Es
kann erforderlich sein, den Deklarationen eine „!important“-Priorit@t hinzuzufgen: [na-
me=p371] {color: red ! important}. Natrlich haben Elemente in XML 1.0-Dokumenten ohne
eine DTD berhaupt keine IDs. n
· Pseudo-Elemente erzeugen Abstraktionen zum Dokumentbaum, die ber die von der
Dokumentsprache spezifizierten hinausgehen. Beispielsweise untersttzen Dokumentspra-
chen keinen Mechanismus, um auf den ersten Buchstaben oder die erste Zeile eines Ele-
mentinhalts zuzugreifen. CSS-Pseudo-Elemente erlauben es Stylesheet-Entwicklern, auf
diese anderweitig nicht verfgbare Information zu verweisen. Pseudo-Elemente k=nnen
außerdem eine M=glichkeit fr Stylesheet-Entwickler darstellen, Inhalt Stil zuzuweisen, der
im Quelldokument nicht existiert (z. B. die Pseudo-Elemente :before und :after erm=glichen
erzeugten Inhalt).
· Pseudo-Klassen klassifizieren Elemente nach Charakteristika neben ihrem Namen, Attribu-
ten oder Inhalten; im Allgemeinen solche Charakteristika, die nicht vom Dokumentbaum
abgeleitet werden k=nnen. Pseudo-Klassen k=nnen dynamisch sein, das heißt, ein Element
kann eine Pseudo-Klasse erhalten oder verlieren, w@hrend der Benutzer mit dem Doku-
ment arbeitet. Die Ausnahme dazu ist ':first-child', das vom Dokumentbaum abgeleitet wer-
den kann. Die Pseudo-Klasse ':lang' kann in einigen F@llen vom Dokumentbaum abgeleitet
werden.
Weder Pseudo-Elemente noch Pseudo-Klassen erscheinen in der Dokumentquelle oder im
Dokumentbaum.
Pseudo-Klassen k=nnen berall in Selektoren auftreten, w@hrend Pseudo-Elemente nur nach
dem Subjekt des Selektors auftreten k=nnen.
Fr die Namen von Pseudo-Elementen und Pseudo-Klassen wird die Groß-/Kleinschreibung
nicht bercksichtigt.
Einige Pseudo-Klassen schließen sich wechselseitig aus, w@hrend andere gleichzeitig auf das-
selbe Element angewendet werden k=nnen. Falls Regeln einen Konflikt erzeugen, bestimmt die
normale Kaskadenreihenfolge das Ergebnis.
Konforme HTML-Benutzerprogramme drfen alle Regeln mit :first-line oder :first-letter im
Selektor ignorieren oder alternativ nur eine Untermenge der Eigenschaften dieser Pseudo-Ele-
mente untersttzen.
Die Pseudo-Klasse :first-child erzielt eine bereinstimmung mit einem Element, welches das
erste Kindelement eines anderen Elements ist.
Beispiel
Im folgenden Beispiel erzeugt der Selektor eine bereinstimmung mit jedem P-Element,
welches das erste Kindelement eines DIV-Elements ist. Die Regel unterdrckt die Ein-
rckung fr den ersten Absatz eines DIV:
DIV > P:first-child { text-indent: 0 }
<edition
[Link]>
Dieser Selektor wrde mit dem P innerhalb des DIV des folgenden Ausschnitts bereinstim-
men:
Die folgende Regel setzt die Schriftgewichtung fr jedes EM-Element, das irgendein Nachfahre
eines P-Elements ist, das ein erstes untergeordnetes Element ist, auf 'bold':
Beachten Sie, dass anonyme Boxen nicht Teil des Dokumentbaums sind und deshalb nicht
bercksichtigt werden, wenn das erste untergeordnete Element berechnet wird.
Beispiel
Beispielsweise ist das EM in
<P>abc <EM>default</EM>
Benutzerprogramme zeigen normalerweise nicht besuchte Links anders an als bereits besuchte.
CSS untersttzt die Pseudo-Klassen ':link' und ':visited', um sie voneinander zu unterscheiden:
·· Die Pseudo-Klasse :link gilt fr Links, die noch nicht besucht wurden.
Die Pseudo-Klasse :visited gilt fr einen Link, nachdem er vom Benutzer besucht wurde.
Hinweis: Nach einer bestimmten Zeit k=nnen Benutzerprogramme einen bereits besuchten
Link wieder in den unbesuchten Status versetzen, ':link'. n
Anmerkung der bersetzer: Die meisten Browser versetzen einen Link nicht
willkrlich in den Zustand „unbesucht“. In der Regel kann der Benutzer selbst bestim-
men, wann dies geschehen soll. Im Mozilla sieht der entsprechende Dialog zum Beispiel
wie folgt aus:
Beispiel
Wenn der folgende Link
<A class="external"
href="[Link] link</A>
<edition
[Link]>
Interaktive Benutzerprogramme @ndern manchmal die Darstellung, um damit auf Aktionen der
Benutzer zu reagieren. CSS untersttzt drei Pseudo-Klassen fr allgemeine F@lle:
· Die Pseudo-Klasse :hover wird angewendet, wenn der Benutzer ein Element zwar markiert
(mit irgendeinem Zeigeger@t), es aber nicht aktiviert. Beispielsweise k=nnte ein Benutzer-
programm diese Pseudo-Klasse anwenden, wenn der Cursor (Mauszeiger) ber eine von
einem Element erzeugte Box geschoben wird. Benutzerprogramme, die keine interaktiven
Medien untersttzen, untersttzen auch diese Pseudo-Klasse nicht. Einige konforme Benut-
zerprogramme, die interaktive Medien untersttzen sind m=glicherweise ebenfalls nicht in
der Lage, diese Pseudo-Klasse zu untersttzen (z. B. ein Stiftger@t).
· Die Pseudo-Klasse :active gilt, w@hrend ein Element vom Benutzer aktiviert wird. Beispiels-
weise k=nnte das zwischen den Zeitpunkten sein, wo der Benutzer die Maustaste drckt
und sie wieder losl@sst.
· Die Pseudo-Klasse :focus gilt, w@hrend ein Element den Fokus hat (es akzeptiert Tastatur-
ereignisse oder andere Arten der Texteingabe).
Diese Pseudo-Klassen schließen sich nicht wechselseitig aus. Ein Element kann mit mehreren
davon gleichzeitig bereinstimmen.
CSS definiert nicht, welche Elemente sich in den oben beschriebenen Status befinden k=nnen,
oder wie man in einen der Status gelangt oder ihn verl@sst. Mit Hilfe von Skripting kann
bestimmt werden, ob Elemente auf Benutzerereignisse reagieren oder nicht, und unterschiedli-
che Ger@te und Benutzerprogramme k=nnen unterschiedliche Methoden aufweisen, wie auf
Elemente gezeigt wird bzw. wie diese aktiviert werden.
Benutzerprogramme mssen bei berg@ngen zwischen den einzelnen Pseudo-Klassen ein aktu-
ell angezeigtes Dokument nicht unbedingt neu aufbauen. Beispielsweise k=nnte ein Stylesheet
angeben, dass die 'font-size' eines :active-Links gr=ßer sein soll als die eines nicht aktiven Links.
Weil das jedoch zur Folge haben kann, dass die Buchstaben ihre Position ver@ndern, wenn der
Benutzer den Link ausw@hlt, kann das Benutzerprogramm die entsprechende Stilregel ignorie-
Cascading Style Sheets, Level 2
ren.
Beispiel
A:link { color: red } /* nicht besuchte Links */
A:visited { color: blue } /* besuchte Links */
A:hover { color: yellow } /* Benutzer selektiert */
A:active { color: lime } /* Aktive Links */
Beachten Sie, dass die Regel A:hover nach den Regeln fr A:link und A:visited platziert werden
muss, weil die kaskadierenden Regeln sonst die 'color'-Eigenschaft der Regel fr A:hover ver-
bergen. Weil A:active hinter A:hover platziert ist, wird analog dazu die aktive Farbe (lime) ange-
wendet, wenn der Benutzer das A-Element markiert und aktiviert.
Ein Beispiel fr die Kombination dynamischer Pseudo-Klassen:
Der letzte Selektor erzielt bereinstimmungen mit A-Elementen, die sich in den Pseudo-Klas-
sen :focus und :hover befinden.
Weitere Informationen ber die Darstellung von Fokusumrissen finden Sie im Abschnitt ber
dynamische fokussierte Umrisse.
Hinweis: In CSS1 war die Pseudo-Klasse ':active' wechselseitig ausschließend zu ':link' und ':vi-
sited'. Das ist jetzt nicht mehr der Fall. Ein Element kann sowohl ':visited' als auch ':active' (oder
':link' und ':active' sein), und die normalen Kaskadenregeln bestimmen, welche Eigenschaften
gelten. n
Wenn die Dokumentsprache angibt, wie die menschliche Sprache eines Elements ermittelt
wird, ist es m=glich, Selektoren in CSS zu schreiben, die eine bereinstimmung fr ein Element
abh@ngig von seiner Sprache erzielen. In HTML [HTML40] beispielsweise wird die Sprache
durch eine Kombination des Attributs „lang“, das META-Element und m=glicherweise Pro-
tokollinformationen (wie beispielsweise HTTP-Header) ermittelt. XML verwendet das Attribut
xml:lang, und es kann andere von der Dokumentsprache abh@ngige Methoden geben, um die
Sprache zu ermitteln.
Die Pseudo-Klasse ':lang(C)' erzielt eine bereinstimmung, wenn das Element in der Sprache C
geschrieben ist. Hier ist C ein Sprachcode, wie in HTML 4.0 [HTML40] und RFC 1766
[RFC1766] angegeben. Er wird genau so verglichen wie fr den '|='-Operator.
Beispiel
Die folgenden Regeln setzen die Anfhrungszeichen fr ein HTML-Dokument, das ent-
weder in Franz=sisch oder in Deutsch verfasst ist:
HTML:lang(fr) { quotes: '\( ' ' \;' }
HTML:lang(de) { quotes: '\;' '\(' '\2039' '\203A' }
:lang(fr) > Q { quotes: '\( ' ' \;' }
:lang(de) > Q { quotes: '\;' '\(' '\2039' '\203A' }
5.12 Pseudo-Elemente
5.12.1 Das Pseudo-Element :first-line
Das Pseudo-Element :first-line wendet spezielle Stile auf die erste formatierte Zeile eines
Absatzes an. Ein Beispiel:
Die obige Regel bedeutet, „tausche die Buchstaben der ersten Zeile jedes Absatzes in Groß-
buchstaben“. Der Selektor „P:first-line“ erzielt keine bereinstimmung mit einem realen
<edition
[Link]>
HTML-Element. Sie erzielt eine bereinstimmung mit einem Pseudo-Element, das konforme
Benutzerprogramme am Anfang jedes Absatzes einfgen.
Beachten Sie, dass die L@nge der ersten Zeile von verschiedenen Faktoren abh@ngig ist, unter
anderem der Seitenbreite, der Schriftgr=ße usw. Damit muss ein gew=hnlicher HTML-Absatz,
wie beispielsweise
wie folgt von Benutzerprogrammen „umgeschrieben“ werden, um die fiktive Tag-Folge fr
:first-line einzufgen. Diese fiktive Tag-Folge hilft zu zeigen, wie Eigenschaften vererbt werden.
Wenn ein Pseudo-Element ein reales Element durchbricht, kann der gewnschte Effekt h@ufig
Cascading Style Sheets, Level 2
durch eine fiktive Tag-Folge beschrieben werden, die das Element schließt und dann erneut =ff-
net. Wenn wir also den obigen Absatz mit einem SPAN-Element versehen:
k=nnte das Benutzerprogramm geeignete Start- und Ende-Tags fr SPAN erzeugen, wenn es
die fiktive Tag-Folge fr :first-line einfgt.
Das Pseudo-Element :first-line kann nur einem Element auf Blockebene zugeordnet werden.
Das Pseudo-Element :first-line ist @hnlich einem Element auf Inline-Ebene, aber mit einigen Ein-
schr@nkungen. Nur die folgenden Eigenschaften gelten fr ein :first-line-Pseudo-Element:
Schrifteigenschaften, Farbeigenschaften, Hintergrundeigenschaften, 'word-spacing', 'letter-spa-
cing', 'text-decoration', 'vertical-align', 'text-transform', 'line-height', 'text-shadow' und 'clear' .
Anmerkung der bersetzer: Folgendes ist eine Erg@nzung aus den CSS2-Errata:
Im Fall, dass eine bestimmte erste Zeile sowohl die erste Zeile eines Block-Elements A
als auch die erste Zeil des Vorfahren B von A ist, sieht die fiktive Tag-Folge so aus:
<B>...<A>...<B:first-line><A:first-line>
This is the first line</A:first-line></B:first-line>
Alle fiktiven Tags fr die erste Zeile befinden sich innerhalb des kleinsten, umgebenden
Block-Elements. Des Weiteren ist die Verschachtelungsreihenfolge der fiktiven Tags
A:first-line und B-first-line die gleiche wie die der Elemente A und B.
Die „erste formatierte Zeile“ eines Elements auf Blockebene ist die erste Zeile im Ele-
mentfluss, das heißt, gleitende oder absolut positionierte Elemente werden diesbezg-
lich ignoriert.
Zum Beispiel wirkt sich in
<div>
<p style="float: left">Floating paragraph...</p>
<p>First line starts here...</p>
</div>
der Selektor 'div:first-line' auf die erste Zeile des zweiten p aus, weil das erste p aus
dem Fluss genommen ist (ein gleitendes Element).
Beispiel
Das folgende CSS2 erzeugt ein Kapit@lchen als Anfangsbuchstaben, der sich ber zwei
Zeilen nach unten erstreckt:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Anfangsbuchstabe, der sich Uber die Zeile nach unten erstreckt</TITLE>
<STYLE type="text/css">
P { font-size: 12pt; line-height: 14pt }
P:first-letter { font-size: 200%; font-style: italic;
<edition
[Link]>
<P>
<SPAN>
<P:first-letter>
D
</P:first-letter>ie ersten
</SPAN>
paar W^rter eines Artikels in der Wochenzeitschrift.
</P>
Beachten Sie, dass die Pseudo-Element-Tags fr :first-letter an den Inhalt (d. h. den Anfangs-
Cascading Style Sheets, Level 2
buchstaben) angrenzen, w@hrend das Start-Tag fr das Pseudo-Element :first-line unmittelbar
hinter dem Start-Tag des Elements eingefgt wird, dem es zugeordnet ist.
Anmerkung der bersetzer: Die obige Abbildung zeigt die Darstellung des Bei-
spiels im Mozilla 1.1.
Um eine Formatierung mit traditionellen Kapit@lchen ber Zeilen nach unten zu erzielen, k=n-
nen Benutzerprogramme Schriftgr=ßen ann@hern, beispielsweise zur Ausrichtung von Grund-
linien. Außerdem kann der Glyphenumriss fr die Formatierung bercksichtigt werden.
Die Interpunktion (also die Zeichen, die in Unicode [UNICODE] in den Interpunktionsklassen
„open“ (Ps), „close“ (Pe) und „other“ (Po) definiert sind), die dem ersten Buchstaben voraus-
geht, sollte bercksichtigt werden, beispielsweise wie folgt:
Das Pseudo-Element :first-letter erzielt eine bereinstimmung nur mit Teilen der Elemente auf
Blockebene.
Anmerkung der bersetzer: Fr die oben gezeigte Abbildung wurden die glei-
chen Formatierungsregeln benutzt, wie fr das vorherige Beispiel. Die relevante HTML-
Zeile sieht wie folgt aus:
<p>"Lieber einen Spatz in der Hand als eine Taube auf dem Dach", sagt ein
altes Sprichwort</p>
Auf den ersten Blick funktioniert die Bercksichtigung von Interpunktionszeichen gut.
Ersetzt man jedoch die englischen Anfhrungszeichen durch andere, sieht das Ergebnis
wie folgt aus:
Die Zeile
<p>\;Lieber einen Spatz in der Hand als eine Taube auf dem Dach\(, sagt ein
altes Sprichwort</p>
<edition
[Link]>
Beispiel
Das folgende Beispiel zeigt, wie berlappende Pseudo-Elemente zusammenarbeiten
k=nnen. Der erste Buchstabe jedes P-Elements wird grn mit einer Schriftgr=ße von
'24pt' dargestellt. Die restliche erste formatierte Zeile ist 'blue', w@hrend der restliche
Absatz 'red' ist.
P { color: red; font-size: 12pt }
P:first-letter { color: green; font-size: 200% }
P:first-line { color: blue }
<P>Text, der in zwei Zeilen angezeigt wird</P>
Angenommen, vor dem Wort „Zeilen“ erfolgt ein Zeilenumbruch, dann k=nnte die fiktive Tag-
Folge fr diesen Abschnitt wie folgt aussehen:
<P>
<P:first-line>
<P:first-letter>
T
</P:first-letter>ext, der in zwei
</P:first-line>
Zeilen angezeigt wird
</P>
Beachten Sie, dass sich das Element :first-letter innerhalb des Elements :first-line befindet.
Eigenschaften, die fr :first-line gesetzt werden, werden von :first-letter geerbt, aber ber-
schrieben, wenn dieselbe Eigenschaft fr :first-letter gesetzt ist.
Die Pseudo-Elemente ':before' und ':after' k=nnen genutzt werden, um erzeugten Inhalt vor
oder hinter dem Inhalt eines Elements einzufgen. Sie werden im Abschnitt ber erzeugten
Cascading Style Sheets, Level 2
Text erkl@rt.
Wenn die Pseudo-Elemente :first-letter und :first-line mit :before und :after kombiniert wer-
den, beziehen sie sich auf den ersten Buchstaben oder die erste Zeile des Elements, inklusive
des eingefgten Texts.
Beispiel
[Link]:before {content: "Special! "}
[Link]:first-letter {color: #ffd800}
6 Eigenschaftswerte zuweisen,
Kaskaden und Vererbung
6.1 Spezifizierte, berechnete und [Link] Werte
Nachdem ein Benutzerprogramm ein Dokument geparst und einen Dokumentbaum aufgebaut
hat, muss es fr jedes Element in dem Baum jeder Eigenschaft einen Wert zuweisen, die sich
auf den Ziel-Medientyp bezieht.
Der endgltige Wert einer Eigenschaft ist das Ergebnis einer dreistufigen Berechnung: Der
Wert wird ber die Spezifizierung ermittelt (der „spezifizierte Wert“), dann gegebenenfalls in
einen absoluten Wert aufgel=st (den „berechneten Wert“) und schließlich entsprechend der
Einschr@nkungen der lokalen Umgebung umgewandelt (der „tats@chliche Wert“).
Angegebene Werte k=nnen absolut sein (das heißt, sie werden nicht relativ zu einem anderen
Wert angegeben, wie beispielsweise in 'red' oder '2mm') oder relativ sein (das heißt, sie sind
relativ zu anderen Werten spezifiziert, wie beispielsweise 'auto', '2em' und '12%'). Fr absolute
Werte ist keine Verarbeitung erforderlich, um den berechneten Wert zu ermitteln.
<edition
[Link]>
Ein berechneter Wert kann im Prinzip sofort verwendet werden, aber m=glicherweise kann ein
Benutzerprogramm den Wert in einer bestimmten Umgebung nicht nutzen. Beispielsweise kann
es sein, dass ein Benutzerprogramm Rahmen nur mit ganzzahligen Pixelbreiten darstellen kann
und deshalb einen ann@hernden Wert fr die berechnete Breite verwenden muss. Der tats@ch-
liche Wert ist der berechnete Wert, nachdem die Ann@herung darauf angewendet wurde.
6.2 Vererbung
Einige Werte werden von den untergeordneten Elementen eines Elements im Dokumentbaum
geerbt. Jede Eigenschaft definiert, ob sie geerbt wird oder nicht.
Angenommen, es gibt ein H1-Element mit einem darin enthaltenen Betonungselement (EM):
Wurde dem EM-Element keine Farbe zugeordnet, erbt das betonte „ist“ die Farbe des berge-
ordneten Elements, wenn also H1 die Farbe blau hat, ist das EM-Element auch blau.
Um eine „Standard“-Stileigenschaft fr ein Dokument einzurichten, k=nnen die Autoren die
Eigenschaft in der Wurzel des Dokumentbaums festlegen. In HTML beispielsweise k=nnen die
HTML- oder BODY-Elemente diese Funktion bernehmen. Beachten Sie, dass das auch dann
funktioniert, wenn der Autor das BODY-Tag in der HTML-Quelle wegl@sst, weil der HTML-
Parser das fehlende Tag einfgt.
Anmerkung der bersetzer: Das Weglassen von Start- oder End-Tags (oder von
beiden) ist eine Eigenschaft, die HTML dank seiner SGML-Abstammung besitzt; dort
heißt die M=glichkeit „Tag-Minimierung“. Die Tag-Minimierung ist wohldefiniert und in
der HTML-DTD festgehalten. In der Praxis ist es oft vorgekommen, dass Autoren
irgendwelche Tags weggelassen haben. Da die bekannten Web-Browser kein wirkliches
Parsing „gegen die DTD“ machen, tolerieren sie fast jeden Fehler; der Qualit@t des im
Web zu findenden HTML hat das nicht gedient.
Seit XML und damit auch XHTML geh=rt die Tag-Minimierung der Vergangenheit an:
Bei XHTML mssen alle Tags angegeben werden.
Weil beispielsweise die Eigenschaft 'color' geerbt ist, erben alle Ableitungen des BODY-Ele-
ments die Farbe 'black':
<BODY>
<H1>Eine <EM>große</EM> dberschrift</H1>
</BODY>
Die Eigenschaft 'font-size' fr das H1-Element hat den berechneten Wert '12 pt' (120% von 10
pt, dem Wert des bergeordneten Elements). Weil der berechnete Wert von 'font-size' geerbt
ist, hat das EM-Element ebenfalls den berechneten Wert '12pt'. Falls dem Benutzerprogramm
die Schrift nicht in12pt zur Verfgung steht, k=nnte der tats@chliche Wert sowohl fr H1 als
auch fr EM beispielsweise '11pt' sein.
Anmerkung der bersetzer: Wrde statt des berechneten Werts doch der
angegebene Prozentwert vererbt, h@tte das EM-Element ebenfalls den Wert 120%.
Diese 120% beziehen sich auf die aktuelle Schriftgr=ße, das sind hier 12pt. Folglich
wrde die Schriftgr=ße des EM-Inhalts bei 1,2 · 12pt = 14,4pt liegen. Der Inhalt von ein-
gebetteten Elementen wrde also fortlaufend gr=ßer dargestellt. Es macht daher nur
Sinn, den berechneten absoluten Wert zu vererben.
Jede Eigenschaft kann außerdem einen angegebenen Wert von 'inherit' haben, das heißt, fr ein
bestimmtes Element verwendet die Eigenschaft denselben berechneten Wert wie die Eigen-
schaft fr das bergeordnete Element des Elements. Der geerbte Wert, der normalerweise
nur als Fallback-Wert verwendet wird, kann erzwungen werden, indem 'inherit' explizit gesetzt
wird.
Anmerkung der bersetzer: In den Errata ist zu lesen: „Der Wert 'inherit' sorgt
dafr, dass der Eigenschaftswert vererbt wird. Dies gilt auch fr Eigenschaften, deren
Werte normalerweise nicht vererbt werden.“
<edition
[Link]>
Beispiel
Im nachfolgenden Beispiel sind die Eigenschaften 'color' und 'background' auf das
BODY-Element gesetzt. Fr alle anderen Elemente wird der Wert von 'color' geerbt
und der Hintergrund ist transparent. Sind diese Regeln Teile des Stylesheets des Benut-
zers, wird im gesamten Dokument schwarzer Text auf weißem Hintergrund erzwun-
gen.
BODY {
color: black !important;
background: white !important;
}
* {
color: inherit !important;
background: transparent;
}
@import "[Link]";
@import url("[Link]");
Importe listen hinter dem URI die durch Kommas voneinander getrennten Medientypen auf.
Die nachfolgenden Regeln haben dieselbe Wirkung, als w@re das importierte Stylesheet in eine
@media-Regel fr dasselbe Medium eingepackt, sie ersparen dem Benutzerprogramm jedoch
einen sinnlosen Download.
Wenn berhaupt keine Medientypen angegeben sind, ist der Import unbedingt. Die Angabe von
'all' fr das Medium hat dieselbe Wirkung.
Autor
Der Autor gibt Stylesheets fr ein Quelldokument gem@ß den Konventionen der Doku-
mentsprache an. In HTML beispielsweise k=nnen Stylesheets in das Dokument aufgenom-
men oder extern verknpft werden.
Benutzer
Der Benutzer kann Stilinformationen fr ein bestimmtes Dokument angeben. Beispiels-
weise kann der Benutzer eine Datei angeben, die ein Stylesheet enth@lt, oder das Benutzer-
programm kann eine Schnittstelle bereitstellen, die ein Benutzer-Stylesheet erzeugt (oder
sich so verh@lt, als t@te sie das).
Benutzerprogramm
Konforme Benutzerprogramme mssen vor allen anderen Stylesheets fr ein Dokument
ein Standard-Stylesheet anwenden (oder sich so verhalten, als ob sie das t@ten). Das Stan-
dard-Stylesheet eines Benutzerprogramms sollte die Elemente der Dokumentsprache so
pr@sentieren, dass sie den allgemeinen Darstellungserwartungen fr die Dokumentsprache
entsprechen (z. B. wird das EM-Element in HTML bei visuellen Browsern unter Verwen-
dung einer kursiven Schrift dargestellt). Ein empfohlenes Standard-Stylesheet fr HTML
4.0-Dokumente finden Sie unter „Ein Beispiel-Stylesheet fr HTML 4.0“ (Anhang A).
Beachten Sie, dass sich das Standard-Stylesheet @ndern kann, wenn der Benutzer die Sys-
temeinstellungen ver@ndert (z. B. die Systemfarben) Aufgrund der Einschr@nkungen der
internen Implementierung des Benutzerprogramms ist es jedoch unter Umst@nden nicht
m=glich, die Werte im Standard-Stylesheet zu @ndern.
Stylesheets aus diesen drei Ursprngen berlappen sich im Gltigkeitsbereich und arbeiten
6.4.1 Kaskaden-Reihenfolge
<edition
[Link]>
2. Prim@r werden die Deklarationen nach Gewichtung und Ursprung sortiert: Fr normale
Deklarationen berschreiben Autor-Stylesheets die Benutzer-Stylesheets, die wiederum
das Standard-Stylesheet berschreiben. Fr „!important“-Deklarationen berschreiben
Benutzer-Stylesheets Autor-Stylesheets, die wiederum das Standard-Stylesheet berschrei-
ben. Eine „!important“-Deklaration berschreibt normale Deklarationen. Ein importiertes
Stylesheet hat denselben Ursprung wie das Stylesheet, von dem es importiert wurde.
3. Die zweite Sortierung erfolgt nach der Spezifit@t des Selektors: Spezifischere Selektoren
berschreiben allgemeinere Selektoren. Pseudo-Elemente und Pseudo-Klassen werden als
normale Elemente bzw. Klassen betrachtet.
4. Schließlich werden sie nach der vorgegebenen Reihenfolge sortiert: Haben zwei Regeln die-
selbe Gewichtung, denselben Ursprung und dieselbe Spezifit@t, erh@lt die jeweils zuletzt
angegebene den Vorrang. Regeln in importierten Stylesheets werden als vor allen anderen
Regeln im eigentlichen Stylesheet befindlich betrachtet.
Neben der Einstellung „!important“ fr einzelne Deklarationen erteilt diese Strategie den Style-
sheets des Autors eine h=here Gewichtung als denen des Lesers. Deshalb ist es wichtig, dass
das Benutzerprogramm dem Benutzer die M=glichkeit gibt, die Beeinflussung durch ein
bestimmtes Stylesheet zu deaktivieren, beispielsweise in einem Pulldown-Men.
6.4.2 !important-Regeln
CSS versucht, einen Leistungsausgleich zwischen Stylesheets des Autors und des Benutzers
herzustellen. Standardm@ßig berschreiben die Regeln im Stylesheet eines Autors diejenigen
aus dem Stylesheet eines Benutzers (siehe Kaskadenregel 3).
Des Ausgleichs halber erh@lt jedoch eine „!important“-Deklaration (die Schlsselw=rter „!“
und „important“ folgen der Deklaration) Priorit@t gegenber einer normalen Deklaration.
Sowohl Autor- als auch Benutzer-Stylesheets k=nnen „!important“-Deklarationen enthalten,
und die „!important“-Regeln des Benutzers berschreiben die „!important“-Regeln des Autors.
Dieses Funktionsmerkmal von CSS verbessert den Zugriff auf Dokumente, indem es Benutzern
Cascading Style Sheets, Level 2
mit speziellen Anforderungen (große Schriften, Farbkombinationen usw.) die Kontrolle ber
die Darstellung erteilt.
Hinweis: Dies ist eine semantische Onderung gegenber CSS1. In CSS1 hatten die „!impor-
tant“-Regeln des Autors Priorit@t gegenber den „!important“-Regeln des Benutzers. n
Anmerkung der bersetzer: Die Festlegung der Semantik in der oben beschrie-
benen Form ist sinnvoll: Beispielsweise k=nnte ein Benutzer mit Sehschw@chen die
Schriftgr=ße auf einen sehr großen Wert setzen, damit er den Text berhaupt lesen
kann. H@tte das Stylesheet des Autors trotz einer !important-Regel des Benutzers Vor-
rang, so w@re eine Seite in diesem Fall gar nicht mehr zu gebrauchen.
Autoren sollten deshalb die Formatierung ihrer Seiten sehr flexibel zum Beispiel mit
relativen CSS-Werten steuern. Es ist niemals ausgeschlossen, dass Einstellungen des
Benutzers diejenigen des Autors berschreiben. Auch wenn es hier um CSS2 geht und
derzeit die Browser noch keine vollst@ndige Untersttzung anbieten, hat diese Empfeh-
lung bestand. Denn tats@chlich k=nnen Benutzer ja schon seit langem in ihren Browsern
einstellen, ob Schriftangaben des Autors bercksichtigt werden sollen oder nicht.
Ebenso kann das automatische Laden von Bildern unterdrckt werden usw.
Im Internet Explorer kann man darber hinaus ein pers=nliches Stylesheet (Benutzer-
Stylesheet) angeben, das fr die Darstellung von Web-Seiten verwendet werden soll:
Die Deklaration einer zusammenfassenden Eigenschaft (z. B. 'background') als „!important“ ist
@quivalent zur Deklaration aller ihrer untergeordneten Eigenschaften als „!important“.
Beispiel
Im folgenden Beispiel zeigt die erste Regel im Stylesheet des Benutzers eine „!impor-
tant“-Deklaration, die die entsprechende Deklaration im Stylesheet des Autors ber-
schreibt. Die zweite Deklaration setzt sich ebenfalls durch, weil sie als „!important“
markiert ist. Die dritte Regel im Stylesheet des Benutzers jedoch ist nicht „!important“
und wird deshalb durch die zweite Regel im Stylesheet des Autors berschrieben (die
<edition
[Link]>
Beispiel
Einige Beispiele:
* {} /* a=0 b=0 c=0 -> Spezifit]t = 0 */
LI {} /* a=0 b=0 c=1 -> Spezifit]t = 1 */
UL LI {} /* a=0 b=0 c=2 -> Spezifit]t = 2 */
UL OL+LI {} /* a=0 b=0 c=3 -> Spezifit]t = 3 */
H1 + *[REL=up]{} /* a=0 b=1 c=1 -> Spezifit]t = 11 */
UL OL [Link] {} /* a=0 b=1 c=3 -> Spezifit]t = 13 */
[Link] {} /* a=0 b=2 c=1 -> Spezifit]t = 21 */
#x34y {} /* a=1 b=0 c=0 -> Spezifit]t = 100 */
In HTML sind die Werte eines „style“-Attributs fr ein Element Stylesheet-Regeln. Diese
Regeln haben keine Selektoren, aber fr die Ausfhrung von Schritt 3 des Kaskadenalgorithmus
werden sie behandelt, als h@tten sie einen ID-Selektor (Spezifit@t: a=1, b=0, c=0). Fr die Aus-
fhrung von Schritt 4 werden sie behandelt, als stnden sie hinter allen anderen Regeln.
Beispiel
<HEAD>
<STYLE type="text/css">
#x97z { color: blue }
</STYLE>
</HEAD>
<BODY>
Cascading Style Sheets, Level 2
Im obigen Beispiel w@re die Farbe des P-Elements rot. Obwohl die Spezifit@t fr beide Deklara-
tionen dieselbe ist, berschreibt die Deklaration im „style“-Attribut diejenige im STYLE-Ele-
ment, und zwar aufgrund von Kaskadenregel 4.
Anmerkung der bersetzer: Die Errata erg@nzen folgende Erkl@rung: „Die Spezi-
fit@t wird ausschließlich auf Basis der Gestalt des Selektors bestimmt. Beispielsweise
wird ein Selektor der Form [id=p33] als Attributselektor gewertet (a=0, b=1, c=0),
selbst wenn das id-Attribut in der DTD den Typ ID zugewiesen bekam.“
Des Weiteren erkl@ren die CSS2-Errata aber auch den gesamten Abschnitt fr ungltig
und ersetzen ihn durch den nachfolgend angegebenen Text.
Beispiel
Einige Beispiele, nach steigender Spezifit@t geordnet:
* {} /* a=0 b=0 c=0 d=0 -> Spezifit]t = 0,0,0,0 */
LI {} /* a=0 b=0 c=0 d=1 -> Spezifit]t = 0,0,0,1 */
UL LI {} /* a=0 b=0 c=0 d=2 -> Spezifit]t = 0,0,0,2 */
UL OL+LI {} /* a=0 b=0 c=0 d=3 -> Spezifit]t = 0,0,0,3 */
H1 + *[REL=up]{} /* a=0 b=0 c=1 d=1 -> Spezifit]t = 0,0,1,1 */
UL OL [Link] {} /* a=0 b=0 c=1 d=3 -> Spezifit]t = 0,0,1,3 */
[Link] {} /* a=0 b=0 c=2 d=1 -> Spezifit]t = 0,0,2,1 */
#x34y {} /* a=0 b=1 c=0 d=0 -> Spezifit]t = 0,1,0,0 */
style="" /* a=1 b=0 c=0 d=0 -> Spezifit]t = 1,0,0,0 */
<HEAD>
<TITLE>Specificity Example</TITLE>
<STYLE type="text/css">
p#x97z { color: red }
</STYLE>
Im obigen Beispiel w@re die Farbe des P-Elements grn. Die Deklaration im style-Attribut hat
eine h=here Spezifit@t und berschreibt die Deklaration im STYLE-Element aufgrund der Kaska-
denregel 3.
6.4.4 Priorit.t von Darstellungsanweisungen, die nicht Teil von CSS sind
Das Benutzerprogramm kann festlegen, dass Darstellungsanweisungen aus anderen Quellen als
Stylesheets bercksichtigt werden sollen, beispielsweise das FONT-Element oder das
„align“-Attribut in HTML. In diesem Fall muss die Darstellungsanweisung, die nicht aus CSS
stammt, in die entsprechenden CSS-Regeln bersetzt werden, und zwar mit einer Spezifit@t
gleich 0. Man geht davon aus, dass sich die Regeln ganz am Anfang des Autor-Stylesheets befin-
den, und sie k=nnen von nachfolgenden Stylesheet-Regeln berschrieben werden.
<edition
[Link]>
7 Medientypen
7.1 Einf-hrung in Medientypen
Eines der wichtigsten Funktionsmerkmale von Stylesheets ist, dass sie angeben, wie ein Doku-
ment auf unterschiedlichen Medien ausgegeben wird: auf dem Bildschirm, auf Papier, mit einem
Sprachsynthesizer, mit einem Braille-Ger@t usw.
Bestimmte CSS-Eigenschaften sind nur fr bestimmte Medien vorgesehen (z. B. die 'cue-befo-
re'-Eigenschaft fr akustische Benutzerprogramme). Manchmal k=nnen Stylesheets fr unter-
schiedliche Medientypen dieselbe Eigenschaft einsetzen, allerdings unterschiedliche Werte
dafr fordern. Beispielsweise ist die Eigenschaft 'font-size' sowohl fr Bildschirm- als auch fr
Druckmedien sinnvoll. Die beiden Medien sind jedoch unterschiedlich genug, um unterschiedli-
che Werte fr die gemeinsame Eigenschaft zu fordern; ein Dokument ben=tigt auf einem Com-
puterbildschirm normalerweise eine gr=ßere Schrift als auf Papier. Die Erfahrung hat außerdem
gezeigt, dass serifenlose Schriften auf dem Bildschirm einfacher zu lesen sind, w@hrend Serifen-
schriften auf Papier besser lesbar sind. Aus diesen Grnden ist es notwendig, auszudrcken,
dass sich ein Stylesheet – oder ein Teil eines Stylesheets – auf bestimmte Medientypen bezieht.
· Die Angabe des Zielmediums innerhalb der Dokumentsprache. In HTML 4.0 ([HTML40])
beispielsweise gibt das „media“-Attribut fr das LINK-Element das Zielmedium eines exter-
nen Stylesheets an:
Eine @media-Regel gibt durch Kommas voneinander getrennt die Ziel-Medientypen einer
Menge von Regeln (in geschweifte Klammern eingeschlossen) an. Das @media-Konstrukt
gestattet den Gebrauch von Stylesheet-Regeln fr verschiedene Medien in ein und demselben
Stylesheet:
@media print {
BODY { font-size: 10pt }
}
@media screen {
BODY { font-size: 12pt }
}
@media screen, print {
BODY { line-height: 1.2 }
}
all
Fr alle Ger@te geeignet.
aural
Fr Sprachsynthesizer vorgesehen. Weitere Informationen finden Sie im Abschnitt ber
akustische Stylesheets.
braille
Fr Braille-Ger@te mit taktilem Feedback vorgesehen.
embossed
Fr Braille-Seitendrucker vorgesehen.
handheld
Fr Handheld-Ger@te vorgesehen (normalerweise mit kleinem Schwarzweißbildschirm und
begrenzter Bandbreite).
<edition
[Link]>
print
Fr ausgedrucktes, undurchsichtiges Material vorgesehen, ebenso wie fr Dokumente, die
im Druckvorschaumodus auf dem Bildschirm angezeigt werden. Weitere Informationen
ber Formatierungsaspekte, die spezifisch fr Druckmedien sind, finden Sie im Abschnitt
ber Seitenmedien.
projection
Fr projizierte Pr@sentationen vorgesehen, wie zum Beispiel Projektoren oder den Aus-
druck auf Folien. Weitere Informationen ber Formatierungsaspekte, die spezifisch fr
Druckmedien sind, finden Sie im Abschnitt ber Seitenmedien.
screen
Haupts@chliche fr Computer-Farbbildschirme vorgesehen.
tty
Fr Medien vorgesehen, die ein festes Zeichenraster verwenden, wie beispielsweise Fern-
schreiber, Terminals oder portable Ger@te mit begrenzten Anzeigem=glichkeiten. Autoren
sollten keine Pixeleinheiten verwenden, wenn sie den Medientyp „tty“ einsetzen.
tv
Fr fernsehartige Ger@te vorgesehen (geringe Aufl=sung, Farbe, begrenzt rollbare Bildschir-
me, mit Sound).
Bei der Angabe der Medientypnamen wird die Groß-/Kleinschreibung nicht bercksichtigt.
Weil sich die Technologien so schnell @ndern, gibt CSS2 keine definitive Liste der Medientypen
an, die als Werte fr @media verwendet werden k=nnten.
Hinweis: Zuknftige Versionen von CSS werden diese Liste m=glicherweise erweitern. Die
Autoren sollten sich nicht auf Medientypnamen verlassen, die noch nicht von einer CSS-Spezifi-
kation definiert sind. n
„projection“ und erlaubt es damit, HTML-Seiten fr Vortr@ge im Stil von MS Power-
Point zu verwenden.
7.3.1 Mediengruppen
Jede CSS-Eigenschaftsdefinition gibt die Medientypen an, fr die die Eigenschaft durch ein kon-
formes Benutzerprogramm implementiert werden muss. Weil sich die Eigenschaften im All-
gemeinen auf mehrere Medien beziehen, gibt der Abschnitt „Anwendung auf Medien“ Medien-
gruppen statt einzelner Medientypen an. Jede Eigenschaft gilt fr alle Medientypen in den in
ihrer Definition aufgelisteten Mediengruppen.
CSS2 definiert die folgenden Mediengruppen:
· continuous oder paged (endlos oder seitenorientiert). „Both“ bedeutet, dass die betref-
fende Eigenschaft fr beide Mediengruppen gilt.
·· visual, aural oder tactile (visuell, akustisch und taktil).
grid (fr Ger@te mit einem Zeichenraster) oder bitmap. „Both“ bedeutet, dass die betref-
fende Eigenschaft fr beide Mediengruppen gilt.
· interactive (fr Ger@te, die eine Interaktion mit dem Benutzer erlauben) oder static (fr
solche, die keine Interaktion zulassen). „Both“ bedeutet, dass die betreffende Eigenschaft
fr beide Mediengruppen gilt.
· all (beinhaltet alle Medientypen).
Die folgende Tabelle zeigt die Beziehungen zwischen Mediengruppen und Medientypen:
<edition
[Link]>
Top
TM Margin (Transparent)
TB Border
TP Padding
BP
BB
BM
Bottom
Margin edge
Border edge
Padding edge
Content edge
Rand, Rahmen und Polsterung k=nnen in linke (left), rechte (right), obere (top) und untere
(bottom) Segmente unterteilt werden (z. B. in der Zeichnung „LM“ fr „Left Margin“, „RP“ fr
„Right Padding“, „TB“ fr „Top Border“ usw.).
Der Abschluss jedes der vier Bereiche (Inhalt, Polsterung, Rahmen und Rand) wird auch als
„Kante“ bezeichnet, jede Box hat also vier Kanten:
Jede Kante kann in eine linke, rechte, untere und obere Kante zerlegt werden.
Die Ausmaße des Inhaltsbereichs einer Box – die Inhaltsbreite und Inhaltsh he – sind von mehre-
ren Faktoren abh@ngig: ob fr das Element, das die Box erzeugt, die Eigenschaften 'width' oder
'height' gesetzt sind, ob die Box Text oder andere Boxen enth@lt, ob es sich bei der Box um
eine Tabelle handelt usw. Die H=he und die Breite von Boxen werden im Kapitel ber die
Details zu visuellen Formatmodellen beschrieben.
Die Box-Breite ist die Summe der linken und rechten R@nder, Rahmen und Polsterung sowie der
Inhaltsbreite. Die H he ergibt sich aus den unteren und oberen R@ndern, Rahmen und Pols-
terung sowie der Inhaltsh=he.
Der Hintergrundstil von Inhalt, Polsterung und Rahmen einer Box wird durch die Eigenschaft
'background' des erzeugenden Elements bestimmt. R@nder haben immer einen transparenten
Hintergrund.
Daraus ergibt sich ein Dokumentbaum u. a. mit einem UL-Element, das zwei untergeordnete LI-
Elemente aufweist.
Die erste der nachfolgenden Abbildungen zeigt die Ausgabe dieses Beispiels. Die zweite Abbil-
dung zeigt die Beziehung zwischen den R@ndern, der Polsterung und den Rahmen des UL-Ele-
ments sowie die seiner untergeordneten LI-Elemente.
<edition
[Link]>
Content width of LI
Content width of UL
Cascading Style Sheets, Level 2
Box width of UL
<length>
Gibt eine feste Breite an.
<percentage>
Der Prozentsatz wird relativ zur Breite des umschließenden Blocks der erzeugenden Box
berechnet. Das gilt fr 'margin-top' und 'margin-bottom', außer im Seitenkontext, wo sich
Prozentwerte auf die H=he des Seitenrahmens beziehen.
auto
Weitere Informationen ber die Verhaltensweise finden Sie im Abschnitt 10.3 ber die
Berechnung von Breiten und R,ndern.
Negative Werte fr Randeigenschaften sind erlaubt, aber es kann von der jeweiligen Implemen-
tierung abh@ngige Obergrenzen geben.
Diese Eigenschaften legen den oberen, rechten, unteren und linken Rand einer Box fest.
Beispiel
H1 { margin-top: 2em }
<edition
[Link]>
'margin'
Die Eigenschaft 'margin' ist eine zusammenfassende Eigenschaft fr die Zuordnung der Einstel-
lungen fr 'margin-top', 'margin-right', 'margin-bottom' und 'margin-left' an einer einzigen Stelle
im Stylesheet.
Falls nur ein Wert angegeben ist, gilt dieser fr alle Seiten. Sind zwei Werte angegeben, werden
der obere und der untere Rand auf den ersten Wert, der rechte und der linke Rand auf den
zweiten Wert gesetzt. Sind drei Werte angegeben, wird der obere Rand auf den ersten Wert,
der linke und der rechte Rand auf den zweiten Wert und der untere Rand auf den dritten Wert
gesetzt. Sind alle vier Werte angegeben, beziehen sie sich auf den oberen, rechten, unteren
bzw. linken Rand.
Beispiel
BODY { margin: 2em } /* alle R]nder auf 2em gesetzt */
BODY { margin: 1em 2em } /* top & bottom = 1em, right & left = 2em */
BODY { margin: 1em 2em 3em } /* top=1em, right=2em, bottom=3em, left=2em */
Die letzte Regel des obigen Beispiels ist @quivalent zum nachfolgenden Beispiel:
Cascading Style Sheets, Level 2
BODY {
margin-top: 1em;
margin-right: 2em;
margin-bottom: 3em;
margin-left: 2em; /* von der entgegengesetzten Seite (rechts) kopiert */
}
In dieser Spezifikation bedeutet der Ausdruck zusammenfallende R,nder, dass benachbarte R@n-
der (die durch keine Polsterungs- oder Rahmenbereiche voneinander getrennt sind) von zwei
oder mehr Boxen (die nebeneinander liegen oder verschachtelt sein k=nnen) so zusammenfal-
len k=nnen, dass sie einen einzigen Rand bilden.
In CSS2 kann es nicht vorkommen, dass horizontale R@nder zusammenfallen.
<length>
Gibt eine feste Breite an.
<percentage>
Der Prozentsatz wird relativ zur Breite des umschließenden Blocks der erzeugenden Box
berechnet, sogar fr 'padding-top' und 'padding-bottom'.
Anders als die Randeigenschaften k=nnen die Werte fr die Polsterung nicht negativ sein. Wie
Diese Eigenschaften setzen die obere, rechte, untere und linke Polsterung einer Box.
Beispiel
BLOCKQUOTE { padding-top: 0.3em }
<edition
[Link]>
'padding'
Die Eigenschaft 'padding' ist eine zusammenfassende Eigenschaft fr die Einstellung von 'pad-
ding-top', 'padding-right', 'padding-bottom' und 'padding-left' an einer einzigen Stelle im Style-
sheet.
Ist nur ein einziger Wert angegeben, gilt er fr alle Seiten. Sind zwei Werte angegeben, werden
die untere und die obere Polsterung auf den ersten Wert, die rechte und die linke Polsterung
auf den zweiten Wert gesetzt. Sind drei Werte angegeben, wird die obere Polsterung auf den
ersten Wert, die linke und die rechte Polsterung auf den zweiten Wert, und die untere Pols-
terung auf den dritten Wert gesetzt. Sind vier Werte angegeben, gelten sie fr die obere, rech-
te, untere bzw. linke Polsterung.
Die Oberfl@chenfarbe oder das Bild des Polsterbereichs werden mit der Eigenschaft 'back-
ground' angegeben:
Beispiel
H1 {
background: white;
padding: 1em 2em;
}
Cascading Style Sheets, Level 2
Das obige Beispiel gibt eine vertikale Polsterung ('padding-top' und 'padding-bottom') von '1em'
sowie eine horizontale Polsterung ('padding-right' und 'padding-left') von '2em' an. Die Einheit
'em' ist relativ zur Schriftgr=ße des Elements: '1em' entspricht der Gr=ße der verwendeten
Schrift.
Insbesondere fr HTML k=nnen Benutzerprogramme Rahmen fr bestimmte Elemente (z. B.
Schaltfl@chen, Mens usw.) anders darstellen als fr „normale“ Elemente. n
Die Eigenschaften fr die Rahmenbreite geben die Breite des Rahmenbereichs an. Die in diesem
Abschnitt definierten Eigenschaften beziehen sich auf den Wertetyp <border-width>, der
einen der folgenden Werte annehmen kann:
thin
Ein dnner Rahmen
medium
Ein mittlerer Rahmen
thick
Ein dicker Rahmen
<length>
Die Rahmendicke hat einen expliziten Wert. Explizite Rahmenbreiten k=nnen nicht negativ
sein.
Die Interpretation der ersten drei Werte ist vom Benutzerprogramm abh@ngig. Es mssen
jedoch die folgenden Beziehungen gelten:
'thin' <= 'medium' <= 'thick'
Darber hinaus mssen diese Breiten innerhalb eines Dokuments konstant sein.
Diese Eigenschaften legen die Breite des oberen, rechten, unteren und linken Rahmens einer
Box fest.
<edition
[Link]>
'border-width'
Diese Eigenschaft ist eine zusammenfassende Eigenschaft fr die Einstellung von 'border-top-
width', 'border-right-width', 'border-bottom-width' und 'border-left-width' an einer einzigen
Stelle im Stylesheet.
Ist nur ein Wert angegeben, gilt er fr alle Seiten. Sind zwei Werte angegeben, werden der
untere und der obere Rahmen auf den ersten Wert, der rechte und der linke Rahmen auf den
zweiten Wert gesetzt. Sind drei Werte angegeben, wird der obere Rahmen auf den ersten
Wert, der linke und der rechte Rahmen auf den zweiten Wert, und der untere Rahmen auf
den dritten Wert gesetzt. Sind vier Werte angegeben, gelten sie fr den oberen, rechten, unte-
ren bzw. linken Rahmen.
Beispiel
In den nachfolgenden Beispielen zeigen die Kommentare die resultierenden Breiten fr
den oberen, rechten, unteren und linken Rahmen an:
H1 { border-width: thin } /* dUnn dUnn dUnn dUnn */
H1 { border-width: thin thick } /* dUnn dick dUnn dick */
H1 { border-width: thin thick medium } /* dUnn dick mittel dick */
Cascading Style Sheets, Level 2
Die Eigenschaften fr die Rahmenfarbe geben die Farbe fr den Rahmen einer Box an.
'border-color'
Anmerkung der bersetzer: Fr 'border-color' muss der Wert korrekt wie folgt
lauten:
[ <color> | transparent ]{1,4} | inherit
<color>
Gibt einen Farbwert an.
transparent
Der Rahmen ist transparent (kann aber eine Breite haben).
Die Eigenschaft 'border-color' kann einen bis vier Werte haben, und die Werte werden fr die
verschiedenen Seiten wie fr 'border-width' gesetzt.
Wenn die Rahmenfarbe eines Elements nicht mit einer Rahmeneigenschaft angegeben wird,
mssen Benutzerprogramme den Wert der 'color'-Eigenschaft des Elements als berechneten
Wert der Rahmenfarbe verwenden.
<edition
[Link]>
Beispiel
In diesem Beispiel ist der Rahmen eine durchgezogene schwarze Linie.
P {
color: black;
background: white;
border: solid;
}
Die Rahmenstileigenschaften geben den Linienstil fr den Rahmen einer Box an (durchgezogen,
doppelt, gestrichelt usw.). Die in diesem Abschnitt definierten Eigenschaften beziehen sich auf
den Wertetyp <border-style>, der einen der folgenden Werte annehmen kann:
none
Kein Rahmen. Dieser Wert erzwingt, dass der berechnete Wert von 'border-width' gleich
'0' ist.
hidden (versteckt)
Wie 'none', außer in Hinblick auf Rahmenkonfliktaufl=sung fr Tabellenelemente.
dotted
Der Rahmen wird als punktierte Linie dargestellt.
dashed
Der Rahmen wird als gestrichelte Linie dargestellt.
solid
Der Rahmen wird als durchgezogene Linie dargestellt.
double
Der Rahmen besteht aus zwei durchgezogenen Linien. Die Summe der beiden Linien und
Cascading Style Sheets, Level 2
der Abstand zwischen ihnen ist gleich dem Wert von 'border-width'.
groove (Rille)
Der Rahmen sieht aus, als w@re er in die Zeichenfl@che eingemeißelt.
ridge (Grat)
Das Gegenteil von 'groove': der Rahmen sieht aus, als k@me er aus der Zeichenfl@che her-
vor.
inset
Der Rahmen bewirkt, dass die gesamte Box aussieht, als w@re sie in die Zeichenfl@che ein-
gebettet.
outset
Das Gegenteil von 'inset': Der Rahmen bewirkt, dass die gesamte Box aussieht, als k@me sie
aus der Zeichenfl@che heraus.
Alle Rahmen werden auf dem Hintergrund der Box gezeichnet. Die Farbe fr Rahmen, die mit
den Werten 'groove', 'ridge', 'inset' und 'outset' gezeichnet werden, sind von der Eigenschaft
'color' des Elements abh@ngig.
'border-style'
Die Eigenschaft 'border-style' legt den Stil der vier Rahmen fest. Sie kann einen von vier Wer-
ten annehmen, und die Werte werden auf die verschiedenen Seiten, wie oben, gezeigt fr 'bor-
der-width' angewendet.
Beispiel
#xy34 { border-style: solid dotted }
<edition
[Link]>
In diesem Beispiel sind die horizontalen Rahmen 'solid' (durchgezogen), die vertikalen Rahmen
sind 'dotted' (punktiert).
Weil der Ausgangswert der Rahmenstile 'none' ist, sind keine Rahmen sichtbar, wenn der Rah-
menstil nicht explizit festgelegt wird.
Dies ist eine zusammenfassende Eigenschaft fr die Einstellung von Breite, Stil und Farbe des
oberen, rechten, unteren und linken Rahmen einer Box.
Beispiel
H1 { border-bottom: thick solid red }
Die oben gezeigte Regel setzt die Breite, den Stil und die Farbe des Rahmens unterhalb des
H1-Elements. Weggelassene Werte werden auf ihre Ausgangswerte gesetzt. Weil die nachfol-
gende Regel keine Rahmenfarbe angibt, erh@lt der Rahmen die in der 'color'-Eigenschaft fest-
gelegte Farbe:
'border'
Die Eigenschaft 'border' ist eine zusammenfassende Eigenschaft, mit der dieselbe Breite, die-
selbe Farbe und derselbe Stil fr alle vier Rahmen einer Box festgelegt werden. Anders als die
zusammenfassenden Eigenschaften 'margin' und 'padding', kann die Eigenschaft 'border' keine
unterschiedlichen Werte fr die vier Rahmen festlegen. Dazu mssen eine oder mehrere der
anderen Rahmeneigenschaften verwendet werden.
Beispiel
Beispielsweise ist die erste nachfolgende Regel @quivalent zu den vier anschließend
gezeigten Regeln:
P { border: solid red }
P {
border-top: solid red;
border-right: solid red;
border-bottom: solid red;
border-left: solid red
}
Weil die Eigenschaften in gewissem Ausmaß eine berlappende Funktionalit@t aufweisen, ist die
Beispiel
Betrachten Sie das folgende Beispiel:
BLOCKQUOTE {
border-color: red;
border-left: double;
color: black
}
In diesem Beispiel ist die Farbe des linken Rahmens schwarz, w@hrend die anderen Rahmen rot
sind. Das liegt daran, dass 'border-left' die Breite, den Stil und die Farbe festgelegt hat. Weil der
Farbwert durch die Eigenschaft 'border-left' nicht angegeben ist, wird er aus der Eigenschaft
'color' bernommen. Die Tatsache, dass die Eigenschaft 'color' nach der Eigenschaft 'border-
left' gesetzt wird, ist nicht relevant.
<edition
[Link]>
9 Visuelles Formatierungsmodell
9.1 Einf-hrung in das visuelle Formatierungsmodell
Dieses und das n@chste Kapitel beschreiben das visuelle Formatierungsmodell: wie Benutzer-
programme den Dokumentbaum fr visuelle Medien verarbeiten.
Beim visuellen Formatierungsmodell erzeugt jedes Element im Dokumentbaum gem@ß dem
Box-Modell null oder mehr Boxen. Das Layout dieser Boxen wird bestimmt durch:
·· Gr=ße und Typ der Box
Positionierungsschema (normaler Fluss, Floating und absolute Positionierung)
·· Beziehungen zwischen Elementen im Dokumentbaum
Externe Information (z. B. Viewport-Gr=ße, eigene Gr=ße von Bildern usw.)
Die in diesem und dem n@chsten Kapitel definierten Eigenschaften beziehen sich sowohl auf
Endlosmedien als auch auf Seitenmedien. Die Bedeutung der Randeigenschaften variiert jedoch
bei Anwendung auf Seitenmedien (weitere Informationen finden Sie bei der Beschreibung des
Seitenmodells, Kapitel 13).
Das visuelle Formatierungsmodell spezifiziert nicht alle Aspekte der Formatierung (z. B. keinen
Algorithmus fr den Buchstabenabstand). Konforme Benutzerprogramme k=nnen fr die von
dieser Spezifikation nicht abgedeckten Aspekte unterschiedliche Verhaltensweisen zeigen.
sollte das Benutzerprogramm einen Mechanismus zum Bl@ttern bereitstellen. Es gibt h=chstens
einen Viewport pro Zeichenfl@che, aber die Benutzerprogramme k=nnen mehrere Zeichenfl@-
chen anzeigen (und damit unterschiedliche Ansichten desselben Dokuments bieten).
In CSS2 werden viele Positionen und Gr=ßen von Boxen relativ zu den Kanten einer rechtecki-
gen Box berechnet, dem so genannten umschließenden Block. Im Allgemeinen dienen erzeugte
Boxen als umschließende Boxen fr abgeleitete Boxen; wir sagen, eine Box „richtet den
umschließenden Block fr ihre Nachkommen ein“. Die Formulierung „der umschließende Block
einer Box“ bedeutet „der umschließende Block, in dem sich die Box befindet“, und bezeichnet
nicht den Block, den eine Box erzeugt.
Jede Box erh@lt eine Position relativ zu ihrem umschließenden Block, ist jedoch nicht auf diesen
umschließenden Block begrenzt; sie kann berlaufen.
Die Wurzel (Root) des Dokumentbaums erzeugt eine Box, die als umschließender Ausgangsblock
fr ein nachfolgendes Layout dient.
Die Breite des anf@nglichen umschließenden Blocks kann mit Hilfe der 'width'-Eigenschaft fr
das Wurzelelement angegeben werden. Hat diese Eigenschaft den Wert 'auto', gibt das Benut-
zerprogramm die Ausgangsbreite vor (zum Beispiel verwendet er dazu die aktuelle Breite des
Viewports).
Die H=he des umschließenden Ausgangsblocks kann mit der 'height'-Eigenschaft fr das Wur-
zelelement angegeben werden. Hat diese Eigenschaft den Wert 'auto', vergr=ßert sich die H=he
des umschließenden Blocks, um dem Dokumentinhalt zu gengen.
Der umschließende Ausgangsblock kann nicht positioniert oder gefloatet werden (das heißt,
Benutzerprogramme ignorieren die 'position'- und 'float'-Eigenschaften fr das Wurzelele-
ment).
Detaillierte Informationen darber, wie die Gr=ße des umschließenden Blocks berechnet wird,
sind im n@chsten Kapitel zu finden.
Elemente auf Blockebene sind die Elemente des Quelldokuments, die visuell als Bl=cke (z. B.
Abs@tze) formatiert sind. Verschiedene Werte der 'display'-Eigenschaft machen ein Element zu
einem Element auf Blockebene: 'block', 'list-item', 'compact' und 'run-in' (teilweise; siehe Com-
pact- und Run-in-Boxen) sowie 'table'.
Elemente auf Blockebene erzeugen eine Hauptblock-Box, die nur Block-Boxen enth@lt. Die Haupt-
block-Box richtet den umschließenden Block fr abgeleitete Boxen und erzeugten Inhalt ein
und stellt außerdem die in jedem Positionierungsschema beteiligte Box dar. Hauptblock-Boxen
Anonyme Block-Boxen
In einem Dokument wie dem Folgenden
<DIV>
Some Text
<P>More Text</P>
</DIV>
(und vorausgesetzt, fr DIV und P ist 'display: block' vorgegeben), scheint DIV sowohl Inline-In-
halt als auch Blockinhalt zu haben. Um die Definition der Formatierung zu vereinfachen, setzen
wir voraus, dass es einen anonymen Block um „Some Text“ herum gibt.
<edition
[Link]>
DIV box
anonymous box
Some text
More text
P box
Abbildung 9.1: Diese Skizze fr das obige Beispiel zeigt drei Boxen, von denen eine anonym ist.
Mit anderen Worten: wenn eine Block-Box (wie beispielsweise die oben fr DIV erzeugte) eine
weitere Block-Box enth@lt (wie oben beispielsweise P), erzwingen wir, dass sie nur Block-Boxen
enth@lt, indem wir alle Inline-Boxen in eine anonyme Block-Box einhllen.
Beispiel
Dieses Modell wrde fr das folgende Beispiel gelten, wenn die folgenden Regeln:
/* Hinweis: HTML-Benutzerprogramme berUcksichtigen diese
Regeln m^glicherweise nicht */
BODY { display: inline }
P { display: block }
Das BODY-Element enth@lt ein Stck (S1) anonymen Text, gefolgt von einem Element auf
Blockebene, gefolgt von einem weiteren Stck (S2) anonymem Text. Daraus resultieren eine
anonyme Block-Box fr BODY, die eine anonyme Block-Box um S1 herum enth@lt, die P-Block-
Box sowie eine weitere anonyme Block Box um S2 herum.
Die Eigenschaften anonymer Boxen werden von der umschließenden nicht anonymen Box
geerbt (in diesem Beispiel ist das die Box fr DIV). Nicht vererbte Eigenschaften haben ihren
Ausgangswert. Beispielsweise wird die Schrift der anonymen Box von DIV geerbt, die R@nder
dagegen sind 0.
Inzeilige Elemente sind die Elemente des Quelldokuments, die keine neuen Inhaltsbl=cke bilden;
der Inhalt ist auf Zeilen verteilt (z. B. betonte Teile eines Texts innerhalb eines Abschnittes,
inzeilige Bilder usw.). Verschiedene Werte der 'display'-Eigenschaft machen ein Element inzeilig:
'inline', 'inline-table', 'compact' und 'run-in' (teilweise; lesen Sie dazu auch im Abschnitt ber
Compact- und Run-in-Boxen nach). Inzeilige Elemente erzeugen inzeilige Boxen.
Inzeilige Boxen k=nnen an mehreren Formatierungskontexten beteiligt sein:
· Innerhalb einer Block-Box befinden sich inzeilige Boxen in einem inzeiligen Formatierungskon-
text.
·· Eine kompakte inzeilige Box erh@lt eine Position im Rand einer Block-Box.
Markierungs-Boxen erhalten immer Positionen außerhalb einer Block-Box.
Anmerkung der bersetzer: Hier wurde der englische Begriff „inline“ mit „inzei-
lig“ bersetzt, was im Deutschen eine dafr bliche bersetzung ist. Dennoch kann „inli-
ne“ nicht durchg@ngig bersetzt werden. berall dort, wo die entsprechende Angabe in
einem CSS auftaucht, muss natrlich „inline“ stehen. Aus diesem Grund tauchen beide
Worte hier und im Folgenden gemischtsprachig auf; und deshalb wurden bereits in der
berschrift beide Formen genannt.
Anonyme Inline-Boxen
In einem Dokument wie dem Folgenden
<edition
[Link]>
Anmerkung der bersetzer: Hier sei darauf hingewiesen, dass der Rand keine
Linie, sondern eine Fl@che ist. Deshalb k=nnen Boxen im Rand platziert werden.
Die Compact-Box erh@lt wie folgt eine Position im Rand: Sie liegt außerhalb (links oder rechts)
der ersten Zeilen-Box des Blocks, wird aber in der Berechnung der H=he dieser Zeilen-Box
bercksichtigt. Die 'vertical-align'-Eigenschaft der Compact-Box bestimmt die vertikale Position
der Compact-Box relativ zu dieser Zeilen-Box. Die horizontale Position der Compact-Box ist
immer der Rand der Block-Box.
Ein Element, das nicht innerhalb einer Zeile formatiert werden kann, kann nicht im Rand des
folgenden Blocks platziert werden. Beispielsweise wird ein 'compact'-Element in HTML, das ein
BR-Element enth@lt, immer als Block-Box formatiert (die Standardformatierung fr BR voraus-
gesetzt, die einen Zeilenumbruch einfgt). Fr die Platzierung von mehrzeiligem Text im Rand
ist die 'float'-Eigenschaft h@ufig besser geeignet.
Cascading Style Sheets, Level 2
Beispiel
Das folgende Beispiel zeigt eine Compact-Box:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>A compact box example</TITLE>
<STYLE type="text/css">
DT { display: compact }
DD { margin-left: 4em }
</STYLE>
</HEAD>
<BODY>
<DL>
<DT>Kurz
<DD><P>Beschreibung steht hier
<DT>Zu lang fUr den Rand
<DD><P> Beschreibung steht hier
</DL>
</BODY>
</HTML>
9.2.4 Run-in-Boxen
Beispiel
Eine 'run-in'-Box ist praktisch fr Run-in- berschriften, wie etwa im folgenden Beispiel
gezeigt:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
Die Eigenschaften erbt das Run-in-Element von seinen bergeordneten Elementen im Doku-
mentbaum, nicht von der Block-Box, deren visueller Teil es wird.
<edition
[Link]>
Weitere Informationen darber, wie Run-in-Boxen mit erzeugtem Inhalt zusammenspielen, fin-
den Sie im Abschnitt ber erzeugten Inhalt (12.3).
'display'
block
Dieser Wert veranlasst ein Element, eine Hauptblock-Box zu erzeugen.
inline
Dieser Wert veranlasst ein Element, eine oder mehrere Inline-Boxen zu erzeugen.
list-item
Dieser Wert veranlasst ein Element (z. B. LI in HTML), eine Hauptblock-Box und eine inzei-
lige Listenelement-Box zu erzeugen. Weitere Informationen ber Listen und Beispiele fr
Cascading Style Sheets, Level 2
Beachten Sie, dass der Ausgangswert von 'display' zwar 'inline' ist, die Regeln im Standard-Sty-
lesheet des Benutzerprogramms diesen Wert jedoch berschreiben k=nnen. Betrachten Sie
dazu auch das Beispiel-Stylesheet fr HTML 4.0 im Anhang.
Beispiel
Hier einige Beispiele fr die 'display'-Eigenschaft:
P { display: block }
EM { display: inline }
LI { display: list-item }
IMG { display: none } /* Keine Bilder anzeigen */
9.3 Positionierungsschemata
In CSS2 kann eine Box gem@ß den drei folgenden Positionierungsschemata ausgelegt werden:
Normaler Fluss
Hinweis: Die Positionierungsschemata von CSS2 helfen den Autoren, einen besseren Zugriff
auf ihre Dokumente zu realisieren, indem sie ihnen erlauben, Markup-Tricks zu vermeiden
(zum Beispiel unsichtbare Bilder), die fr Layout-Effekte verwendet werden. n
<edition
[Link]>
Die Eigenschaften 'position' und 'float' legen fest, welcher der Positionierungsalgorithmen von
CSS2 fr die Berechnung der Position einer Box verwendet wird.
'position'
static
Bei der Box handelt es sich um eine normale Box gem@ß dem normalen Fluss. Die Eigen-
schaften 'left' und 'top' finden keine Anwendung.
relative
Die Position der Box wird gem@ß dem normalen Fluss berechnet (man spricht auch von
der Position im normalen Fluss). Anschließend wird die Box relativ zu ihrer normalen Posi-
tion verschoben. Wird eine Box B relativ positioniert, wird die Position der nachfolgenden
Box so berechnet, als w@re B nicht verschoben worden.
absolute
Die Position (und m=glicherweise Gr=ße) der Box wird mit Hilfe der Eigenschaften 'left',
Cascading Style Sheets, Level 2
'right', 'top' und 'bottom' angegeben. Diese Eigenschaften geben Abst@nde relativ zum
umschließenden Block der Box an. Absolut positionierte Boxen werden aus dem normalen
Fluss entfernt. Das bedeutet, sie haben keinen Einfluss auf das Layout sp@terer gleichrangi-
ger Elemente. Obwohl absolut positionierte Boxen R@nder haben, fallen sie nicht mit ande-
ren R@ndern zusammen.
fixed
Die Position der Box wird gem@ß des 'absolute'-Modells berechnet, aber darber hinaus ist
die Box feststehend hinsichtlich einer bestimmten Referenz. Bei Endlosmedien ist die Box
feststehend relativ zu dem Viewport (und bewegt sich beim Bl@ttern nicht). Bei Seiten-
medien ist die Box feststehend relativ zur Seite, auch wenn diese Seite durch einen
Viewport betrachtet wird (beispielsweise bei einer Druckvorschau). Autoren wollen 'fixed'
m=glicherweise von einem Medium unabh@ngig angeben. Beispielsweise k=nnte ein Autor
beabsichtigen, dass eine Box oben im Viewport auf dem Bildschirm bleibt, aber nicht oben
auf jeder gedruckten Seite. Die beiden Spezifikationen k=nnen mit Hilfe einer @media-
Regel voneinander getrennt werden, beispielsweise wie folgt:
@media screen {
H1#first { position: fixed }
}
@media print {
H1#first { position: static }
}
Ein Element ist positioniert, wenn seine 'position'-Eigenschaft einen anderen Wert als 'static' hat.
Positionierte Elemente erzeugen positionierte Boxen, die gem@ß vier Eigenschaften ausgelegt
werden:
'top'
Diese Eigenschaft gibt an, wie weit die oberste Inhaltskante einer Box unter die oberste Kante
des umschließenden Blocks der Box verschoben wird.
'right'
Diese Eigenschaft gibt an, wie weit die rechte Inhaltskante einer Box links neben die rechte
Kante des umschließenden Blocks der Box verschoben wird.
<edition
[Link]>
'bottom'
Diese Eigenschaft gibt an, wie weit die unterste Inhaltskante einer Box ber die unterste Kante
des umschließenden Blocks der Box verschoben wird.
'left'
Diese Eigenschaft gibt an, wie weit die linke Inhaltskante einer Box nach rechts neben die linke
Kante des umschließenden Blocks der Box verschoben wird.
Die Werte fr die vier Eigenschaften haben die folgenden Bedeutungen:
Cascading Style Sheets, Level 2
<length>
Der Abstand ist ein feststehender Abstand von der Referenzkante.
<percentage>
Der Abstand ist ein Prozentwert der Breite (fr 'left' und 'right') oder H=he (fr 'top' und
'bottom') des umschließenden Blocks. Fr 'top' und 'bottom' wird der Prozentwert als
'auto' interpretiert, wenn die H=he des umschließenden Blocks nicht explizit angegeben ist
(das heißt, sie ist von der Inhaltsh=he abh@ngig).
auto
Die Wirkung dieses Werts ist davon abh@ngig, welche „verwandten“ Eigenschaften eben-
falls den Wert 'auto' haben. Weitere Informationen finden Sie in den Abschnitten ber
Breite und H=he absolut positionierter, nicht ersetzter Elemente (10.3.7, 10.6.4 und 9.6).
Fr absolut positionierte Boxen beziehen sich die Abst@nde auf den umschließenden Block der
Box. Fr relativ positionierte Boxen beziehen sich die Offsets auf die @ußeren Kanten der
eigentlichen Box (d. h. die Box erh@lt eine Position im normalen Fluss, und wird dann gem@ß
dieser Eigenschaften von dieser Position aus verschoben).
9.4.1 Block-Formatierungskontext
9.4.2 Inline-Formatierungskontext
<edition
[Link]>
Ist die Gesamtbreite der inzeiligen Boxen in einer Zeile kleiner als die Breite der Zeilen-Box,
die sie enth@lt, wird ihre horizontale Verteilung innerhalb der Zeilen-Box durch die 'text-
align'-Eigenschaft bestimmt. Hat diese Eigenschaft den Wert 'justify', kann das Benutzerpro-
gramm die inzeiligen Boxen auch strecken.
Weil eine inzeilige Box die Breite einer Zeilen-Box nicht berschreiten kann, werden lange
inzeilige Boxen in mehrere Boxen zerlegt und dann ber mehrere Zeilen-Boxen verteilt. Wenn
eine inzeilige Box aufgeteilt wird, haben R@nder, Rahmen und Auffllung keine sichtbare Wir-
kung, wo die Aufteilung stattfindet. Die Formatierung von R@ndern, Rahmen und Auffllung ist
m=glicherweise nicht vollst@ndig definiert, wenn die Aufteilung innerhalb einer bidirektionalen
Einbettung stattfindet.
Inzeilige Boxen k=nnen aufgrund einer bidirektionalen Textverarbeitung auch innerhalb dersel-
ben Zeilenbox aufgeteilt werden.
Beispiel
Nachfolgend sehen Sie ein Beispiel fr eine inzeilige Box. Der folgende Absatz (erzeugt
durch das HTML-Blockebenenelement P) enth@lt anonymen Text, unterbrochen durch
die Elemente EM und STRONG:
<P>Mehrere <EM>betonte W^rter</EM> findet man
<STRONG>in diesem einzigen</STRONG> Satz, mein Lieber.</P>
Das P-Element erzeugt eine Block-Box, die fnf inzeilige Boxen enth@lt, von denen drei anonym
sind:
·· Anonym: „Mehrere“
EM: „betonte W=rter“
·· Anonym: „findet man“
STRONG: „in diesem einzigen“
· Anonym: „Satz, mein Lieber.“
Cascading Style Sheets, Level 2
Um den Absatz zu formatieren, ordnet das Benutzerprogramm die fnf Boxen in Zeilen-Boxen
an. In diesem Beispiel richtet die Box, die fr das P-Element erzeugt wird, den umschließenden
Block fr die Zeilen-Boxen ein. Ist der umschließende Block breit genug, passen alle inzeiligen
Boxen in eine einzige Box:
Mehrere betonte W rter findet man in diesem einzigen Satz, mein Lieber.
Andernfalls werden die Inline-Boxen getrennt und ber mehrere Zeilen-Boxen verteilt. Der
obige Abschnitte k=nnte wie folgt aufgeteilt werden:
Mehrere betonte W rter findet man
in diesem einzigen Satz, mein Lieber.
Oder so:
Mehrere betonte
W rter findet man in diesem einzigen
Satz, mein Lieber.
Im obigen Beispiel wurde die EM-Box in zwei EM-Boxen unterteilt (nennen wir sie „split1“ und
„split2“). R@nder, Rahmen, Auffllung oder Textausschmckung haben keinen sichtbaren Effekt
nach split1 oder vor split2.
Beispiel
Betrachten Sie das folgende Beispiel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Beispiel fUr Inline-Fluss Uber mehrere Zeilen</TITLE>
<STYLE type="text/css">
EM {
padding: 2px;
margin: 1em;
border-width: medium;
border-style: dashed;
line-height: 2.4em;
}
</STYLE>
</HEAD>
<BODY>
<P>Several <EM>emphasized words</EM> appear here.</P>
</BODY>
</HTML>
Abh@ngig von der Breite von P k=nnen die Boxen wie folgt verteilt werden:
Width of paragraph
··
Nachdem eine Box einem normalen Fluss entsprechend ausgerichtet wurde, kann sie relativ zu
ihrer Position verschoben werden. Man spricht auch von einer relativen Positionierung. Ver-
schiebt man eine Box (B1) auf diese Weise, hat das keine Auswirkung auf die nachfolgende Box
(B2): B2 erh@lt eine Position, als w@re B1 nicht verschoben, und B2 wird nicht neu positioniert,
nachdem B1 verschoben wurde. Das bedeutet gleichzeitig, dass sich die Boxen aufgrund der
relativen Positionierung berlappen k=nnen.
Relativ positionierte Boxen behalten ihre normale Flussgr=ße bei, inklusive der Zeilenumbr-
che und dem Platz, der ursprnglich fr sie reserviert wurde. Eine relativ positionierte Box
richtet einen neuen umschließenden Block fr untergeordnete Elemente und positionierte
abgeleitete Elemente im normalen Fluss ein.
Eine relativ positionierte Box wird erzeugt, wenn die 'position'-Eigenschaft fr ein Element den Wert
'relative' hat. Der Offset wird durch die Eigenschaften 'top', 'bottom', 'left' und 'right' angegeben.
<edition
[Link]>
9.5 Floats
Ein Float ist eine Box, die in der aktuellen Zeile nach links oder rechts verschoben wird. Das
interessanteste Merkmal eines Floats (oder „Floated-“ oder „Floating“-Box) ist, dass Inhalt an
seiner Seite vorbeifließen kann (oder dass dies durch die 'clear'-Eigenschaft unterbunden wer-
den kann). Inhalt fließt an der rechten Seite einer links-floated Box vorbei, und links von einer
rechts-floated Box. Nachfolgend finden Sie eine Einfhrung in die Float-Positionierung und den
Inhaltsfluss; die genauen Regeln zum Float-Verhalten finden Sie in der Beschreibung der
'float'-Eigenschaft.
Eine Floating-Box muss eine explizite Breite haben (die ber die 'width'-Eigenschaft zugewiesen
wird oder bei der es sich im Fall von ersetzten Elementen um eine eigene Breite handelt). Eine
Floating-Box wird zu einer Block-Box, die nach links oder rechts verschoben wird, bis ihre
@ußere Kante die Kante des umschließenden Blocks oder die @ußere Kante eines anderen Flo-
ats berhrt. Die obere Kante der Floating-Box wird an der oberen Kante der aktuellen Zeilen-
Box (oder der unteren Kante des vorhergehenden Blocks, falls es keine Zeilen-Box gibt) aus-
gerichtet. Falls nicht gengend horizontaler Platz in der aktuellen Zeile fr den Float vorhanden
ist, wird er Zeile fr Zeile nach unten verschoben, bis eine Zeile gengend Platz dafr bietet.
Weil sich ein Float nicht im Fluss befindet, fließen nicht-positionierte Block-Boxen, die vor und
nach der Floating-Box erzeugt werden, vertikal vorbei, als wrde der Float gar nicht existieren.
Zeilen-Boxen jedoch, die neben dem Float erzeugt werden, werden gekrzt, um Platz fr die
Cascading Style Sheets, Level 2
Floating-Box zu schaffen. Der Inhalt in der aktuellen Zeile vor einer Floating-Box wird in der
ersten verfgbaren Zeile auf der anderen Seite des Floats neu angeordnet.
Mehrere Floats k=nnen benachbart sein, und dieses Modell gilt auch fr benachbarte Floats
innerhalb derselben Zeile.
Beispiel
Die folgende Regel bewirkt, dass alle IMG-Boxen mit class="icon" links vorbeifließen
(der linke Rand wird auf '0' gesetzt).
[Link] {
float: left;
margin-left: 0;
}
<STYLE type="text/css">
IMG { float: left }
BODY, P, IMG { margin: 2em }
</STYLE>
</HEAD>
<BODY>
<P><IMG src=[Link] alt="This image will illustrate floats">
Some sample text that has no other...
</BODY>
</HTML>
Die IMG-Box wird nach links verschoben. Der nachfolgende Inhalt wird rechts vom Float forma-
tiert, in derselben Zeile wie der Float beginnend. Die Zeilen-Boxen rechts vom Float werden
durch das Vorhandensein des Floats gekrzt, nehmen aber nach dem Float ihre „normale“ Breite
wieder an (das ist die Breite des durch das P-Element eingerichteten umschließenden Blocks).
Die Formatierung w@re genau dieselbe, h@tte das Dokument wie folgt ausgesehen:
weil der Inhalt links vom Float durch den Float verdr@ngt wird und auf dessen rechten Seite
entlang verl@uft.
Die R@nder der Floating-Boxen fallen niemals mit R@ndern benachbarter Boxen zusammen. Im
vorigen Beispiel fallen also die vertikalen R@nder zwischen P-Box und der Floating-IMG-Box
nicht zusammen.
Ein Float kann andere Boxen im normalen Fluss berlappen (z. B. wenn eine Box im normalen
Fluss neben einem Float negative R@nder hat). berlappt eine inzeilige Box einen Float, werden
der Inhalt, der Hintergrund und die Rahmen der inzeiligen Box vor dem Float dargestellt. ber-
lappt eine Block-Box, werden der Hintergrund und die Rahmen der Block-Box hinter dem
Float dargestellt und sind nur dann sichtbar, wenn die Box transparent ist. Der Inhalt der Block-
Box wird vor dem Float dargestellt.
Nachfolgend sehen Sie eine weitere Darstellung, die zeigt, was passiert, wenn ein Float die Rah-
men von Elementen im normalen Fluss berlappt.
<edition
[Link]>
Abbildung 9.2: Ein Floating-Bild verdeckt die Rahmen von Block-Boxen, wenn eine berlappung
stattfindet.
Das folgende Beispiel zeigt die Verwendung der 'clear'-Eigenschaft, um zu verhindern, dass
Inhalt neben einem Float vorbeifließt.
Beispiel
Nehmen wir die folgende Regel an:
P { clear: left }
Abbildung 9.3: Beide Abs@tzen haben 'clear: left' gesetzt, so dass der zweite Absatz auf eine
Position unterhalb des Floats nach unten geschoben wird – sein oberer Rand wird erweitert,
um dies zu bewerkstelligen (siehe auch den Abschnitt ber die 'clear'-Eigenschaft).
'float'
Diese Eigenschaft gibt an, ob eine Box nach links, rechts oder berhaupt nicht gleiten soll. Sie
kann fr alle Elemente gesetzt werden, die Boxen erzeugen, die nicht absolut positioniert sind.
Die Werte dieser Eigenschaft haben die folgenden Bedeutungen:
left
Das Element erzeugt eine Block-Box, die nach links gleitet. Der Inhalt fließt an der rechten
Seite der Box vorbei, beginnend oben (der 'clear'-Eigenschaft unterliegend). Die 'display'-
Eigenschaft wird ignoriert, es sei denn, sie hat den Wert 'none'.
right
Wie 'left', außer dass der Inhalt an der linken Seite der Box vorbeifließt, beginnend von
oben.
none
Die Box gleitet nicht.
Nachfolgend die genauen Regeln, die das Verhalten von Floats steuern:
<edition
[Link]>
7. Eine Links-Floating-Box, zu deren Linken sich eine weitere Links-Floating-Box befindet, darf
ihre rechte @ußere Kante nicht rechts von der rechten Kante ihres umschließenden Blocks
haben. (Locker ausgedrckt: Ein linker Float darf nicht an der rechten Kante herausragen,
es sei denn, er befindet sich schon so weit links wie m=glich.) Eine analoge Regel gilt fr
Rechts-Floating-Elemente.
8. Eine Floating-Box muss so hoch wie m=glich platziert werden.
9. Eine Links-Floating-Box muss so weit wie m=glich links, eine Rechts-Floating-Box so weit
wie m=glich rechts liegen. Eine h=here Position wird gegenber einer weiter links/rechts
liegenden bevorzugt.
'clear'
Diese Eigenschaft gibt an, welche Seiten der Boxen eines Elements nicht neben einer vorher-
gehenden Floating-Box stehen drfen. (Es kann sein, dass das eigentliche Element Floating-Ab-
leitungen hat; auf diese Nachkommen hat 'clear' keine Auswirkungen.)
Diese Eigenschaft kann fr Elemente auf Blockebene (auch Floats) angegeben werden. Fr
Compact- und Run-in-Boxen bezieht sich diese Eigenschaft auf die letzte Block-Box, zu der die
Cascading Style Sheets, Level 2
left
Der obere Rand der erzeugten Box wird so weit vergr=ßert, dass sich die obere Rahmen-
kante unterhalb der unteren @ußeren Kante aller Links-Floating-Boxen befindet, die aus fr-
heren Elementen des Quelldokuments resultieren.
right
Der obere Rand der erzeugten Box wird so weit vergr=ßert, dass die obere Rahmenkante
unterhalb der unteren @ußeren Kante aller Rechts-Floating-Boxen liegt, die aus frheren
Elementen des Quelldokuments resultieren.
both
Die erzeugte Box wird an eine Position unterhalb aller Floating-Boxen frherer Elemente
des Quelldokuments geschoben.
none
Es gibt keine Beschr@nkungen fr die Position der Box relativ zu Floats.
Wenn die Eigenschaft fr Floating-Elemente gesetzt wird, fhrt das zu einer Onderung der Posi-
tionierungsregeln fr den Float. Eine zus@tzliche Bedingung (#10) wird eingefgt:
· Die obere @ußere Kante des Float muss sich unterhalb der unteren @ußeren Kante aller fr-
heren Links-Floating-Boxen befinden (fr 'clear: left') oder unterhalb aller Rechts-Floating-
Boxen (fr 'clear: right') oder beides ('clear: both') liegen.
Die feste Positionierung ist eine Unterkategorie der absoluten Positionierung. Der einzige
Unterschied ist, dass der umschließende Block fr eine fest positionierte Box von dem
Viewport eingerichtet wird. Bei Endlosmedien werden feste Boxen nicht verschoben, wenn das
Dokument weitergebl@ttert wird. In dieser Hinsicht sind sie mit festen Hintergrundbildern ver-
gleichbar. Bei Seitenmedien werden Boxen mit festen Positionen auf jeder Seite wiederholt.
Das ist praktisch, um beispielsweise eine Signatur unten auf jeder Seite zu platzieren.
100%
header 15%
s
i
d
e main "the rest"
b
a
r
10em
footer 100px
<edition
[Link]>
Das k=nnte mit dem folgenden HTML-Dokument und diesen Stilregeln erzielt werden:
}
#footer {
position: fixed;
width: 100%;
height: 100px;
top: auto;
right: 0;
bottom: 0;
left: 0;
}
</STYLE>
</HEAD>
<BODY>
<DIV id="header"> ... </DIV>
<DIV id="sidebar"> ... </DIV>
<DIV id="main"> ... </DIV>
<DIV id="footer"> ... </DIV>
</BODY>
</HTML>
Hinweis: CSS2 gibt kein Layoutverhalten vor, wenn die Werte fr diese Eigenschaften durch
Skripte ge@ndert werden. Was passiert beispielsweise, wenn ein Element mit 'width: auto' neu
positioniert wird? Wird der Inhalt neu dargestellt, oder wird die ursprngliche Formatierung
beibehalten? Im Rahmen dieses Dokuments gibt es keine Antwort darauf, und in diesem Verhal-
ten werden sich frhe Implementierungen von CSS2 wahrscheinlich voneinander unterschei-
den. n
<edition
[Link]>
Die endgltigen Positionen von Boxen, die durch @ußere und innere Elemente erzeugt werden,
variieren in jedem Beispiel. Die Zahlen links von jeder Abbildung geben die Position der Zeilen
(die der Verst@ndlichkeit halber doppelten Zeilenabstand besitzen) fr den normalen Fluss an.
(Hinweis: die Abbildungen verwenden unterschiedliche horizontale und vertikale Maßst@be.)
Betrachten Sie die folgenden CSS-Deklarationen fr outer und inner, die den normalen Fluss der
Boxen nicht ver@ndern:
Das P-Element enth@lt den gesamten Inline-Inhalt: anonymen Inline-Text und zwei SPAN-Ele-
mente. Aus diesem Grund wird der gesamte Inhalt in einem Inline-Formatierungskontext aus-
gelegt, und zwar innerhalb eines von dem P-Element eingerichteten umschließenden Blocks,
woraus sich etwa Folgendes ergibt:
Cascading Style Sheets, Level 2
Um die Auswirkungen der relativen Positionierung zu beobachten, geben wir Folgendes an:
Text fließt normalerweise bis zum outer-Element. Der outer-Text fließt dann an seine normale
Flussposition und in seiner normalen Gr=ße an das Ende von Zeile 1. Anschließend werden die
Inline-Boxen, die den Text enthalten (ber drei Zeilen verteilt) alle zusammen um '-12px' (nach
oben) verschoben.
Der Inhalt von inner, als untergeordnetes Element von outer, wrde normalerweise unmittelbar
hinter die W=rter „of outer contents“ (in Zeile 15) fließen. Die inner-Inhalte werden jedoch
selbst relativ zum outer-Inhalt um '12px' (nach unten) verschoben, zurck an ihre ursprngliche
Position in Zeile 2.
Beachten Sie, dass der Inhalt nach outer nicht von der relativen Positionierung von outer beein-
flusst wird.
Betrachten Sie jetzt, was passiert, wenn der Text des Elements inner mit Hilfe der folgenden
Regeln nach rechts gleitet:
Text fließt normalerweise bis zur inner-Box, die aus dem Fluss genommen und an den rechten
Rand verschoben wird (ihre 'width'-Eigenschaft wurde explizit zugewiesen). Zeilen-Boxen links
von dem Float werden gekrzt, und der verbleibende Text des Dokuments fließt in sie hinein.
<edition
[Link]>
Um die Wirkung der 'clear'-Eigenschaft zu demonstrieren, fgen wir dem Beispiel ein gleichran-
giges Element hinzu:
bewirken, dass die inner-Box wie zuvor rechts vorbeifließt und dass der restliche Text des
Dokuments in den freien Platz einfließt:
Wird die 'clear'-Eigenschaft des gleichrangigen Elements jedoch auf 'right' gesetzt (das heißt, die
erzeugte Box fr das gleichrangige Element akzeptiert keine Position neben Floating-Boxen
rechts von ihm), beginnt der Inhalt des gleichrangigen Elements, unter diesen Float zu fließen:
<edition
[Link]>
Schließlich betrachten wir die Auswirkung einer absoluten Positionierung. Betrachten Sie die
folgenden CSS-Deklarationen fr outer und inner:
#outer {
position: absolute;
top: 200px; left: 200px;
width: 200px;
color: red;
}
#inner { color: blue }
Sie bewirken, dass die obere Kante der outer-Box relativ zu ihrem umschließenden Block posi-
tioniert wird. Der umschließende Block fr eine positionierte Box wird durch den n@chsten
positionierten Vorfahren eingerichtet (oder, falls es keinen solchen gibt, durch den umschlie-
ßenden Ausgangsblock, wie in unserem Beispiel gezeigt). Die obere Seite der outer-Box liegt
'200px' unterhalb der oberen Kante des umschließenden Blocks, und die linke Seite liegt
'200px' von der linken Seite entfernt. Die untergeordnete Box von outer fließt normalerweise
relativ zu ihrem bergeordneten Element.
4
Cascading Style Sheets, Level 2
(200, 200)
5 Start of outer
6 contents. Inner
7 contents. End of
8 outer contents.
(400, 0) (400, 400)
Das folgende Beispiel zeigt eine absolut positionierte Box, die ein untergeordnetes Element
einer relativ positionierten Box ist. Obwohl die bergeordnete outer-Box nicht wirklich ver-
schoben wird, bedeutet es, dass diese Box als umschließender Block fr positionierte Nach-
kommen dienen kann, wenn ihre 'position'-Eigenschaft auf 'relative' gesetzt wird. Weil die
outer-Box eine inzeilige Box ist, die ber mehrere Zeilen verteilt wird, dienen die oberen und
linken Kanten der ersten inzeiligen Box (in der nachfolgenden Abbildung durch dicke gestri-
chelte Linien dargestellt) als Referenzpunkte fr die Abst@nde von 'top' und 'left'.
#outer {
position: relative;
color: red
}
#inner {
position: absolute;
top: 200px; left: -100px;
height: 130px; width: 130px;
color: blue;
}
wird der umschließende Block fr inner zum umschließenden Ausgangsblock (in unserem Bei-
spiel). Die folgende Abbildung zeigt, wo die inner-Box in diesem Fall angeordnet wrde.
<edition
[Link]>
Zun@chst fließt der Absatz (die Seiten seines umschließenden Blocks werden in der Abbildung
gezeigt) normal. Anschließend wird er um '10px' von der linken Kante des umschließenden
Blocks verschoben (deshalb wurde ein rechter Rand von '10px' reserviert, weil ein Offset vor-
hergesehen wurde). Die beiden Trennstriche, die als Onderungskennzeichner dienen, werden
aus dem Fluss genommen und in der aktuellen Zeile positioniert (aufgrund von 'top: auto'),
'-1em' von der linken Kante des umschließenden Blocks entfernt (eingerichtet durch das P an
seiner endgltigen Position). Das Ergebnis ist, dass die Onderungskennzeichner links in die aktu-
elle Zeile zu „fließen“ scheinen.
<integer>
Diese ganze Zahl ist die Stapelebene der erzeugten Box im aktuellen Stapelkontext. Außer-
dem richtet die Box einen lokalen Stapelkontext ein, indem ihre Stapelebene gleich '0' ist.
auto
Die Stapelebene der erzeugten Box im aktuellen Stapelkontext ist dieselbe wie die der Box
seines bergeordneten Elements. Die Box richtet keinen neuen lokalen Stapelkontext ein.
<edition
[Link]>
Beispiel
Im folgenden Beispiel sind die Stapelebenen (angegeben durch ihre „id“-Attribute)
„text2“=0, „image“=1, „text3“=2 und „text1“=3. Die Stapelebene „text2“ wurde von
der Wurzel-Box geerbt. Die anderen sind mit der 'z-index'-Eigenschaft spezifiziert.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Positionierung in Z-Reihenfolge</TITLE>
<STYLE type="text/css">
.pile {
position: absolute;
left: 2in;
top: 2in;
width: 3in;
height: 3in;
}
</STYLE>
</HEAD>
<BODY>
<P>
<IMG id="image" class="pile"
src="[Link]" alt="A butterfly image"
style="z-index: 1">
<DIV id="text1" class="pile"
style="z-index: 3">
Dieser Text Uberlagert das Schmetterlingsbild.
</DIV>
<DIV id="text2">
Dieser Text befindet sich unterhalb von allem.
</DIV>
<DIV id="text3" class="pile"
style="z-index: 2">
Cascading Style Sheets, Level 2
Dieses Biespiel demonstriert das Konzept der Transparenz. Standardm@ßig verh@lt sich eine
Box so, dass dahinterliegende Boxen durch die transparenten Bereiche in ihrem Inhalt sichtbar
sind. Im Beispiel berlagert jede Box transparent die darunterliegende Box. Dieses Verhalten
kann mit Hilfe einer der existierenden Hintergrundeigenschaften berschrieben werden.
Diese Eigenschaft gibt die grundlegende Schreibrichtung sowie die Richtung von Einbettungen
und berschreibungen (siehe 'unicode-bidi') fr den Unicode-Bidirektionalit@tsalgorithmus an.
Darber hinaus gibt er die Richtung von Tabellenspalten, die Richtung von horizontalem ber-
lauf sowie die Positionierung einer unvollst@ndigen letzten Zeile in einem Block mit 'text-align:
justify' an.
<edition
[Link]>
ltr
Richtung links nach rechts (left to right)
rtl
Richtung rechts nach links (right to left)
Damit die 'direction'-Eigenschaft Wirkung in Elementen auf Inline-Ebene zeigt, mssen die
Werte der 'unicode-bidi'-Eigenschaft gleich 'embed' oder 'override' sein.
Hinweis: Die 'direction'-Eigenschaft wird, wenn sie fr Tabellenspaltenelemente angegeben ist,
nicht von Zellen in der Spalte geerbt, weil es im Dokumentbaum keine Spalten gibt. Damit kann
CSS nicht einfach die Attributvererbungsregeln fr „dir“ nachbilden, die in [HTML40] Abschnitt
[Link] beschrieben sind. n
'unicode-bidi'
normal
Das Element er=ffnet keine zus@tzliche Einbettungsebene fr den Bidirektionalit@tsalgorith-
mus. Fr Elemente auf Inline-Ebene funktioniert die implizite Neuanordnung ber Element-
grenzen hinweg.
embed
Befindet sich das Element auf Inline-Ebene, er=ffnet dieser Wert eine zus@tzliche Einbet-
tungsebene fr den Bidirektionalit@tsalgorithmus. Die Richtung dieser Einbettungsebene
wird durch die 'direction'-Eigenschaft vorgegeben. Innerhalb des Elements erfolgt die Neu-
anordnung implizit. Das entspricht dem Hinzufgen von LRE (U+202A; fr 'direction: ltr')
oder RLE (U+202B; fr 'direction: rtl') am Anfang des Elements und einer PFD (U+202C)
am Ende des Elements.
bidi-override
Handelt es sich um ein Element auf Inline-Ebene oder um ein Element auf Blockebene, das
Elemente auf Inline-Ebene enth@lt, wird ein berschreiben veranlasst. Das bedeutet, dass
innerhalb des Elements die Neuanordnung streng in Folge nach der 'direction'-Eigenschaft
erfolgt; der implizite Teil des Bidirektionalit@tsalgorithmus wird dabei ignoriert. Das ent-
spricht einem Hinzufgen einer LRO (U+202D; fr 'direction: ltr') oder RLO (U+202E; fr
'direction: rtl) am Anfang des Elements und einer PDF (U+202C) am Ende des Elements.
Die endgltige Reihenfolge der Zeichen in jedem Element auf Blockebene ist dieselbe, als
w@ren
·· die bidi-Steuercodes, wie oben beschrieben, eingefgt,
die Auszeichnungen entfernt und
· als w@re die resultierende Zeichenfolge an eine Implementierung des Unicode- Bidirek-
tionalit@tsalgorithmus fr reinen Text weitergereicht, die dieselben Zeilenumbrche wie
der formatierte Text erzeugt.
In diesem Ablauf werden nicht-textuelle Entities wie etwa Bilder als neutrale Zeichen behan-
delt, es sei denn, ihre 'unicode-bidi'-Eigenschaft hat einen anderen Wert als 'normal'. In diesem
Fall werden sie als Zeichen in der fr das Element angegebenen 'direction' behandelt.
Bitte beachten Sie: Um in der Lage zu sein, inzeilige Boxen in eine einheitliche Richtung fließen
zu lassen (entweder alle links-nach-rechts oder alle rechts-nach-links), mssen weitere inzeilige
Boxen (einschließlich anonymer inzeiliger Boxen) erzeugt werden, und einige inzeilige Boxen
mssen geteilt und neu angeordnet werden, bevor der Fluss bestimmt wird.
Da der Unicode-Algorithmus auf maximal 15 Verschachtelungsebenen beschr@nkt ist, sollte
man darauf achten, 'unicode-bidi' mit einem anderen Wert als 'normal' nicht zu verwenden, falls
es nicht notwendig ist. Insbesondere sollte der Wert 'inherit' mit h=chster Vorsicht eingesetzt
werden. Fr Elemente, die im Allgemeinen fr die Anzeige als Block bestimmt sind, wird die
Einstellung 'unicode-bidi: embed' bevorzugt, um das Element zusammenzuhalten, falls die Dar-
stellung auf inzeilig ge@ndert wird (siehe Beispiel unten).
Das folgende Beispiel zeigt ein XML-Dokument mit bidirektionalem Text. Es veranschaulicht
ein wichtiges Entwurfsprinzip: DTD-Designer sollten bidi sowohl bei der Sprache (Elemente
und Attribute) als auch bei zugeh=rigen Stylesheets bercksichtigen. Stylesheets sollten so ent-
worfen sein, dass bidi-Regeln von anderen Formatierungsregeln getrennt sind. Die bidi-Regeln
Beispiel
In diesem Beispiel stehen kleine Buchstaben fr links-nach-rechts-Zeichen und große
Buchstaben fr rechts-nach-links-Zeichen:
<HEBREW>
<PAR>HEBREW1 HEBREW2 english3 HEBREW4 HEBREW5</PAR>
<PAR>HEBREW6 <EMPH>HEBREW7</EMPH> HEBREW8</PAR>
</HEBREW>
<ENGLISH>
<PAR>english9 english10 english11 HEBREW12 HEBREW13</PAR>
<PAR>english14 english15 english16</PAR>
<PAR>english17 <HE-QUO>HEBREW18 english19 HEBREW20</HE-QUO></PAR>
</ENGLISH>
Da dies XML ist, ist das Stylesheet fr die Einstellung der Schreibrichtung verantwortlich. Hier
ist das Stylesheet:
<edition
[Link]>
Das HEBREW-Element ist ein Block mit einer Grundrichtung von rechts nach links. Das ENG-
LISH-Element ist ein Block mit einer Grundrichtung von links nach rechts. Die PARs sind Bl=-
cke, die ihre Grundrichtung von ihren Eltern erben. Folglich werden die beiden ersten PARs
von oben rechts beginnend gelesen, die letzten drei werden von oben links beginnend gelesen.
Beachten Sie, dass die Namen HEBREW und ENGLISH fr die Elemente nur zur Veranschauli-
chung gew@hlt wurden. Im Allgemeinen sollten Elementnamen die Struktur widerspiegeln und
keinen Bezug zur Sprache enthalten.
Das EMPH-Element ist ein inzeiliges Element und, da der Wert fr 'unicode-bidi' 'normal' (Aus-
gangswert) ist, hat es keine Auswirkung auf die Anordnung des Textes. Andererseits erzeugt
das HE-QUO-Element eine Einbettung.
Die Formatierung dieses Texte kann wie folgt aussehen, falls die Zeilenl@nge zu lang ist:
Beachten Sie, dass die HE-QUO-Einbettung dafr sorgt, dass HEBREW18 rechts von english19
steht.
Falls Zeilen umgebrochen werden mssen, kann es etwa wie folgt aussehen:
2WERBEH 1WERBEH
-EH 4WERBEH english3
Cascading Style Sheets, Level 2
5WERB
-EH 7WERBEH 6WERBEH
8WERB
english9 english10 en-
glish11 12WERBEH
13WERBEH
english14 english15
english16
english17 18WERBEH
20WERBEH english19
Da HEBREW18 vor english19 gelesen werden muss, steht es in der Zeil ber english19. Nur
der Umbruch der langen Zeile der frheren Formatierung h@tte nicht funktioniert.
Beachten Sie auch, dass die erste Silbe von english19 in die n@chste Zeile h@tte passen k=nnen,
aber die Trennung von links-nach-rechts-W=rtern in einem rechts-nach-links-Kontext (und
umgekehrt) wird normalerweise unterdrckt, um die Darstellung eines Trennstrichs in der
Mitte der Zeile zu vermeiden.
Beispiel
Ohne Positionierung werden die umschließenden Bl=cke im folgenden Dokument wie
nachfolgend eingerichtet.
<HTML>
<HEAD>
<TITLE>Demonstration umschließender Bl^cke</TITLE>
</HEAD>
<BODY id="body">
<DIV id="div1">
<P id="p1">Dieser Text befindet sich im ersten Absatz...</P>
<P id="p2">Dies ist Text <EM id="em1"> im
<STRONG id="strong1">zweiten</STRONG> Absatz.</EM></P>
</DIV>
</BODY>
</HTML>
<edition
[Link]>
ist sein umschließender Block nicht mehr „body“; er wird zum anf@nglichen umschließenden
Block (weil es keine anderen positionierten Vorfahren-Boxen gibt).
Wenn wir „em1“ ebenfalls positionieren:
Durch die Positionierung von „em1“ wird sein umschließender Block die am n@chsten posi-
tionierte Vorfahren-Box (also jene, die durch „div1“ erzeugt wurde).
Diese Eigenschaft gibt die Inhaltsbreite von Boxen an, die auf Blockebene erzeugt wurden,
sowie die Inhaltsbreite von ersetzten Elementen.
Diese Eigenschaft gilt nicht fr nicht ersetzte Elemente auf Inline-Ebene. Die Breite der Boxen
fr ein nicht ersetztes inzeiliges Element ist die des in ihnen dargestellten Inhalts (vor jedem
relativen Offset von untergeordneten Elementen). Beachten Sie, dass Inline-Boxen in Zeilen-
Boxen einfließen. Die Breite von Zeilen-Boxen wird durch ihren umschließenden Block vor-
gegeben, ist aber bei Vorhandensein von Floats m=glicherweise gekrzt.
Ein ersetztes Element hat eine eigene Box-Breite, die vom Benutzerprogramm skaliert werden
kann, wenn diese Eigenschaft einen anderen Wert als 'auto' hat.
Die Werte haben die folgenden Bedeutungen:
<length>
Gibt eine feste Breite an.
<percentage>
Beispiel
Die folgende Regel beispielsweise legt die Inhaltsbreite von Abs@tzen mit 100 Pixel fest:
P { width: 100px }
<edition
[Link]>
Die 'width'-Eigenschaft wird nicht angewendet. Wird fr 'left', 'right', 'margin-left' oder 'margin-
right' der Wert 'auto' angegeben, wird daraus ein berechneter Wert von '0'.
Wird fr 'left', 'right', 'margin-left' oder 'margin-right' der Wert 'auto' angegeben, wird daraus
der berechnete Wert '0'. Wird fr 'width' der Wert 'auto' angegeben, wird die eigene Breite
des Elements als berechneter Wert angenommen.
Cascading Style Sheets, Level 2
Werden 'left' oder 'right' als 'auto' angegeben, ist ihr berechneter Wert gleich 0. Zwischen den
anderen Eigenschaften mssen die folgenden Bedingungen gelten:
'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-
width' + 'margin-right' = Breite des umschließenden Blocks
(Ist der Rahmenstil gleich 'none', verwenden Sie '0' als Rahmenbreite.) Ist fr alle oben auf-
gefhrten Werte ein anderer Wert als 'auto' angegeben, sagt man, die Werte sind „berspezifi-
ziert“ und einer der berechneten Werte muss sich von dem angegebenen Wert unterscheiden.
Hat die 'direction'-Eigenschaft den Wert 'ltr', wird der angegebene Wert von 'margin-right'
ignoriert, und der Wert wird berechnet, so dass die Gleichung stimmt. Ist der Wert von
'direction' gleich 'ltr', findet dies stattdessen auf 'margin-left' Anwendung.
Ist genau ein Wert als 'auto' angegeben, folgt sein berechneter Wert aus der Gleichung.
Ist 'width' auf 'auto' gesetzt, werden alle anderen 'auto'-Werte zu '0', und 'width' folgt aus der
resultierenden Gleichung.
Sind sowohl 'margin-left' als auch 'margin-right' gleich 'auto', dann sind ihre berechneten Werte
gleich.
Sind 'left' oder 'right' gleich 'auto', ist ihr berechneter Wert gleich 0. Ist 'width' als 'auto' angege-
ben, ist sein Wert die eigene Breite des Elements. Ist einer der R@nder als 'auto' angegeben,
wird sein berechneter Wert durch die obigen Bedingungen festgelegt. Sind darber hinaus
beide R@nder gleich 'auto', sind ihre berechneten Werte gleich.
Sind 'left', 'right', 'width', 'margin-left' oder 'margin-right' als 'auto' angegeben, ist ihr berech-
neter Wert gleich '0'.
Sind 'left', 'right', 'width', 'margin-left' oder 'margin-right' als 'auto' angegeben, ist ihr berech-
neter Wert gleich '0'. Ist 'width' gleich 'auto', ist sein Wert die eigene Breite des Elements.
Die Bedingung, die die Berechnung fr diese Elemente festlegt, ist die folgende:
'left' + 'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-
right-width' + 'margin-right' + 'right' = Breite des umschließenden Blocks
(Ist der Rahmenstil gleich 'none', verwenden Sie '0' als Rahmenbreite.) Die L=sung fr diese
Bedingung wird gefunden, indem einige Ersetzungen in der folgenden Reihenfolge vorgenom-
men werden:
1. Wenn 'left' den Wert 'auto' hat, w@hrend 'direction' gleich 'ltr' ist, ersetzen Sie 'auto' durch
den Abstand von der linken Kante des umschließenden Blocks zur linken Randkante einer
hypothetischen Box, die die erste Box des Elements w@re, wenn dessen 'position'-Eigen-
schaft gleich 'static' w@re. (Statt jedoch diese Box tats@chlich zu berechnen, steht es den
<edition
[Link]>
Diese Situation ist vergleichbar der vorherigen, außer dass das Element eine eigene Breite hat.
Die Abfolge der Ersetzungen ist jetzt:
1. Ist 'width' gleich 'auto', ersetzen Sie die eigene Breite des Elements.
2. Wenn 'left' den Wert 'auto' hat, w@hrend 'direction' gleich 'ltr' ist, ersetzen Sie 'auto' durch
den Abstand von der linken Kante des umschließenden Blocks zur linken Randkante einer
hypothetischen Box, die die erste Box des Elements w@re, wenn dessen 'position'-Eigen-
schaft gleich 'static' w@re. (Statt jedoch diese Box tats@chlich zu berechnen, steht es den
Benutzerprogrammen frei, eine Sch@tzung an der wahrscheinlichen Position vorzunehmen.)
Der Wert ist negativ, wenn sich die hypothetische Box links vom umschließenden Block
befindet.
3. Wenn 'rigth' den Wert 'auto' hat und 'direction' gleich 'rtl' ist, ersetzen Sie 'auto' durch den
Abstand von der rechten Kante des umschließenden Blocks zur rechten Randkante dersel-
ben hypothetischen Box wie oben. Der Wert ist positiv, wenn sich die hypothetische Box
links von der Kante des umschließenden Blocks befindet.
4. Sind 'left' oder 'right' gleich 'auto' , ersetzen Sie jedes 'auto' fr 'margin-left' oder 'margin-
right' durch '0'.
5. Sind an dieser Stelle sowohl 'margin-left' als auch 'margin-right' immer noch 'auto', l=sen Sie
die Gleichung unter der zus@tzlichen Bedingung, dass die beiden R@nder denselben Wert
erhalten mssen.
6. Ist an dieser Stelle nur noch ein 'auto' brig, l=schen Sie die Gleichung fr diesen Wert.
7. Sie die Werte an dieser Stelle berspezifiziert, ignorieren Sie den Wert fr 'left' (falls
'direction' gleich 'rtl' ist) oder 'right' (falls 'direction' gleich 'ltr' ist) und l=sen fr diesen
Wert.
'min-width'
'max-width'
Diese beiden Eigenschaften erlauben es Autoren, Box-Breiten auf einen bestimmten Bereich
einzugrenzen. Die Werte haben die folgenden Bedeutungen:
<length>
Gibt eine feste minimale oder maximale berechnete Breite an.
<percentage>
Gibt einen Prozentwert fr die Ermittlung des berechneten Werts an. Der Prozentwert
wird relativ zur Breite des umschließenden Blocks der erzeugten Box berechnet.
none
(Nur fr 'max-width') Es gibt keine Beschr@nkung fr die Breite der Box.
Der folgende Algorithmus beschreibt, wie die beiden Eigenschaften den berechneten Wert der
'width'-Eigenschaft beeinflussen:
1. Die Breite wird nach den unter „Berechnung von Breiten und R@ndern“ beschriebenen
Regeln berechnet (ohne 'min-width' und 'max-width').
2. Ist der berechnete Wert von 'min-width' gr=ßer als der Wert von 'max-width', wird 'max-
<edition
[Link]>
Diese Eigenschaft gibt die Inhaltsh=he von Boxen an, die auf Blockebene erzeugt wurden, sowie
von ersetzten [Link] Eigenschaft bezieht sich nicht auf nicht ersetzte inzeilige Ele-
mente. Die H=he der Boxen eines nicht-ersetzten Inline-Elements wird durch den (m=glicher-
weise geerbten) 'line-height'-Wert des Elements [Link] Werte haben die folgenden
Bedeutungen:
<length>
Gibt eine feste H=he an.
<percentage>
Gibt eine prozentuale H=he an. Der Prozentwert wird relativ zur H=he des umschließen-
den Blocks der erzeugten Box berechnet. Wird die H=he des umschließenden Blocks nicht
explizit angegeben (das heißt, ist sie demnach von der Inhaltsh=he abh@ngig), wird der Wert
als 'auto' interpretiert.
auto
Cascading Style Sheets, Level 2
Die H=he ist von den Werten anderer Eigenschaften abh@ngig. Weitere Informationen fin-
den Sie im nachfolgenden Text.
Beispiel
Die folgende Regel beispielsweise legt die H=he von Abs@tzen auf 100 Pixel fest:
P { height: 100px }
Abs@tze, fr die eine H=he von mehr als 100 Pixel erforderlich ist, erzeugen gem@ß der 'over-
flow'-Eigenschaft einen berlauf.
Wird fr 'top', 'bottom', 'margin-top' oder 'margin-bottom' der Wert 'auto' angegeben, wird
daraus ein berechneter Wert von '0'. Die 'height'-Eigenschaft wird nicht angewendet, aber die
H=he der Box wird durch die 'line-height'-Eigenschaft angegeben.
Wird fr 'top', 'bottom', 'margin-top' oder 'margin-bottom' der Wert 'auto' angegeben, wird
daraus der berechnete Wert '0'. Ist 'height' gleich 'auto', ist der berechnete Wert die eigene
H=he.
Sind 'top', 'bottom', 'margin-top' oder 'margin-bottom' gleich 'auto', ist ihr berechneter Wert 0.
Ist 'height' gleich 'auto', ist die H=he davon abh@ngig, ob das Element untergeordnete Elemente
auf Blockebene hat. Wenn es nur untergeordnete inzeilige Elemente hat, reicht die H=he von
der obersten Kante der obersten Zeilen-Box bis zur untersten Kante der untersten Zeilen-
Box. Hat es untergeordnete Elemente auf Blockebene, ist sie der Abstand zwischen der obers-
ten Rahmenkante der Box des obersten untergeordneten Elements auf Blockebene bis zur
untersten Rahmenkante der Box des untersten untergeordneten Elements auf Blockebene.
Nur untergeordnete Elemente im normalen Fluss werden bercksichtigt (das heißt, Floating-
Boxen und absolut positionierte Boxen werden ignoriert, und relativ positionierte Boxen wer-
den ohne ihren Offset betrachtet.) Beachten Sie, dass die Box des untergeordneten Elements
eine anonyme Box sein kann.
<edition
[Link]>
Fr absolut positionierte Elemente mssen die vertikalen Ausmaße die folgende Bedingung
erfllen:
'top' + 'margin-top'+ 'border-top-width' + 'padding-top' + 'height' + 'padding-bottom' + 'bor-
der-bottom-width' + 'margin-bottom' + 'bottom' = H=he des umschließenden Blocks
(Ist der Rahmenstil gleich 'none', verwenden Sie '0' als Rahmenbreite.) Die L=sung fr diese
Bedingung wird durch mehrere Ersetzungen in der folgenden Reihenfolge erzielt:
1. Hat 'top' den Wert 'auto', ersetzen Sie es durch den Abstand von der oberen Kante des
umschließenden Blocks zur oberen Randkante einer hypothetischen Box, die die erste Box
des Elements w@re, wenn seine 'position'-Eigenschaft 'static' w@re. (Statt jedoch diese Box
zu berechnen, k=nnen die Benutzerprogramme ihre wahrscheinliche Position auch sch@t-
zen.) Der Wert ist negativ, wenn sich die hypothetische Box oberhalb des umschließenden
Blocks befindet.
2. Sind sowohl 'height' als auch 'bottom' gleich 'auto', ersetzen Sie 'bottom' durch '0'.
3. Sind 'bottom' oder 'height' (immer noch) 'auto', ersetzen Sie jedes 'auto' fr 'margin-top'
oder 'margin-bottom' durch '0'.
4. Sind an dieser Stelle 'margin-top' und 'margin-bottom' immer noch 'auto', l=sen Sie die Glei-
chung unter der zus@tzlichen Bedingung, dass die beiden R@nder gleiche Werte erhalten
mssen.
5. Ist an dieser Stelle nur noch ein 'auto' brig, l=sen Sie die Gleichung fr diesen Wert.
6. Sind an dieser Stelle die Werte berspezifiziert, ignorieren Sie den Wert fr 'bottom' und
l=sen Sie die Gleichung fr diesen Wert.
Diese Situation ist vergleichbar der vorherigen, außer dass das Element eine eigene H=he hat.
Die Abfolge der Ersetzungen sieht jetzt wie folgt aus:
1. Wenn 'height' gleich 'auto' ist, setzen Sie statt dessen die eigene H=he des Elements ein.
Cascading Style Sheets, Level 2
2. Hat 'top' den Wert 'auto', ersetzen Sie es durch den Abstand von der oberen Kante des
umschließenden Blocks zur oberen Randkante einer hypothetischen Box, die die erste Box
des Elements w@re, wenn seine 'position'-Eigenschaft 'static' w@re. (Statt jedoch diese Box
zu berechnen, k=nnen die Benutzerprogramme ihre wahrscheinliche Position auch sch@t-
zen.) Der Wert ist negativ, wenn sich die hypothetische Box oberhalb des umschließenden
Blocks befindet.
3. Ist 'bottom' gleich 'auto', ersetzen Sie jedes 'auto' fr 'margin-top' oder 'margin-bottom'
durch '0'.
4. Sind an dieser Stelle 'margin-top' und 'margin-bottom' immer noch 'auto', l=sen Sie die Glei-
chung unter der zus@tzlichen Bedingung, dass die beiden R@nder gleiche Werte erhalten
mssen.
5. Ist an dieser Stelle nur noch ein 'auto' brig, l=sen Sie die Gleichung fr diesen Wert.
6. Sind an dieser Stelle die Werte berspezifiziert, ignorieren Sie den Wert fr 'bottom' und
l=sen Sie die Gleichung fr diesen Wert.
'min-height'
'max-height'
Diese beiden Eigenschaften gestatten es Autoren, Box-H=hen auf einen bestimmten Bereich zu
begrenzen. Werte haben die folgenden Bedeutungen:
<length>
Gibt eine minimale oder maximale berechnete H=he an.
<percentage>
Gibt einen Prozentwert fr die Ermittlung des berechneten Werts an. Der Prozentwert
wird relativ zur H=he des umschließenden Blocks der erzeugten Box berechnet. Ist die
H=he des umschließenden Blocks nicht explizit angegeben (das heißt, sie ist von der Inhalt-
sh=he abh@ngig), wird der Prozentwert als 'auto' interpretiert.
none
(Nur fr 'max-height'). Es gibt keine Begrenzung fr die H=he der Box.
<edition
[Link]>
Der folgende Algorithmus beschreibt, wie diese beiden Eigenschaften den berechneten Wert
der 'height'-Eigenschaft beeinflussen:
1. Die H=he wird gem@ß den Regeln aus dem obigen Abschnitt 10.6, „H=hen und R@nder
berechnen“, berechnet (ohne 'min-height' und 'max-height').
2. Ist der berechnete Wert von 'min-height' gr=ßer als der Wert von 'max-height', wird 'max-
height' auf den Wert von 'min-height' gesetzt.
3. Ist die berechnete H=he gr=ßer als 'max-height', werden die obigen Regeln erneut ange-
wendet, aber jetzt unter Verwendung des Wertes von 'max-height' als vorgegebenen Wert
fr 'height'.
4. Ist der berechnete Wert kleiner als 'min-height', werden die obigen Regeln erneut ange-
wendet, aber jetzt unter Verwendung des Werts von 'min-height' vorgegebenen Wert fr
'height'.
Beachten Sie, dass die Zeilen-Box genau die H=he der h=chsten Box hat, wenn alle Boxen in
der Zeilen-Box ihrer unteren Kante nach ausgerichtet sind. Sind die Boxen dagegen entlang
einer gemeinsamen Grundlinie ausgerichtet, kann es sein, dass die obere und untere Kante der
Zeilen-Box die untere und obere Kante der h=chsten Box nicht berhren.
Weil sich die H=he einer inzeiligen Box von der Schriftgr=ße des Texts in der Box unterschei-
den kann (z. B. 'line-height' > 1em), kann es Platz oberhalb und unterhalb der dargestellten Gly-
phen geben. Die Differenz zwischen der Schriftgr=ße und dem berechneten Wert von 'line-
height' wird auch als Durchschuss bezeichnet. Die H@lfte des Durchschusses wird als Halb-
Durchschuss bezeichnet.
Benutzerprogramme zentrieren Glyphen vertikal in einer Inline-Box und fgen einen Halb-
Durchschuss oben und unten ein. Ist ein Textstck beispielsweise '12pt' hoch und der 'line-
height' ist '14pt', sollten 2pt zus@tzlicher Platz hinzugefgt werden: 1pt oberhalb und 1 pt unter-
halb der Buchstaben. (Das gilt auch fr leere Boxen, so als ob die leere Box einen unendlich
schmalen Buchstaben enthalten wrde.)
Ist der Wert von 'line-height' kleiner als die Schriftgr=ße, ist die H=he der endgltigen Inline-
Box kleiner als die Schriftgr=ße und die dargestellten Glypen „laufen aus der Box heraus“.
Berhrt eine solche Box die Kante einer Zeilen-Box, fließen die dargestellten Glyphen auch in
die benachbarte Zeilen-Box ein.
Obwohl R@nder, Rahmen und Auffllung nicht-ersetzter Elemente fr die H=henberechnung
der Inline-Box (und damit die Berechnung der Zeilen-Box) nicht bercksichtigt werden, wer-
den sie dennoch um die Inline-Boxen herum dargestellt. Das bedeutet, wenn die H=he einer
Zeilen-Box kleiner als die @ußeren Kanten der darin enthaltenen Boxen sind, k=nnen Hinter-
grnde und Farben von Auffllung und Rahmen in benachbarte Zeilen-Boxen „einfließen“. In
diesem Fall k=nnen die Benutzerprogramme die Zeilen-Box jedoch nutzen, um die Rahmen-
und Auffllbereiche „abzuschneiden“ (das heißt, sie nicht darzustellen).
'line-height'
Ist die Eigenschaft fr ein Element auf Blockebene gesetzt, dessen Inhalt sich aus Elementen auf
Inline-Ebene zusammensetzt, gibt sie die minimale H=he jeder erzeugten Inline-Box an.
Ist die Eigenschaft fr ein Element auf Inline-Ebene gesetzt, gibt sie die genaue H=he jeder Box
an, die von dem Element erzeugt wird. (Außer fr ersetzte Inline-Elemente, bei denen die H=he
der Box durch die 'height'-Eigenschaft angegeben wird.)
normal
Weist Benutzerprogramme an, den berechneten Wert auf einen „sinnvollen“ Wert abh@n-
gig von der Schriftgr=ße des Elements zu setzen. Der Wert hat dieselbe Bedeutung wie
<number>. Wir empfehlen einen berechneten Wert zwischen 1.0 und 1.2 fr 'normal'.
<length>
Die Box-H=he wird auf diese L@nge gesetzt. Negative Werte sind nicht erlaubt.
<number>
Der berechnete Wert der Eigenschaft ist diese Zahl multipliziert mit der Schriftgr=ße des
Elements. Negative Werte sind nicht erlaubt. Die Zahl, nicht der berechnete Wert, wird
vererbt.
<percentage>
Der berechnete Wert der Eigenschaft ist dieser Prozentwert multipliziert mit der berech-
neten Schriftgr=ße des Elements. Negative Werte sind nicht erlaubt.
<edition
[Link]>
Beispiel
Die drei Regeln im folgenden Beispiel erzeugen dieselbe Zeilenh=he:
DIV { line-height: 1.2; font-size: 10pt } /* Zahl */
DIV { line-height: 1.2em; font-size: 10pt } /* L]nge */
DIV { line-height: 120%; font-size: 10pt } /* Prozentwert */
Enth@lt ein Element Text, der in mehreren Schriften dargestellt wird, sollten die Benutzerpro-
gramme den 'line-height'-Wert anhand der gr=ßten Schriftgr=ße ermitteln.
Allgemein gilt, wenn es nur einen Wert von 'line-height' fr alle Inline-Boxen in einem Absatz
(und keine hohen Bilder) gibt, stellt die obige Aussage sicher, dass Grundlinien aufeinander fol-
gender Zeilen genau 'line-height' voneinander entfernt sind. Das ist wichtig, wenn Spalten mit
Text in unterschiedlichen Schriften ausgerichtet werden mssen, beispielsweise in einer Tabel-
le.
Beachten Sie, dass ersetzte Elemente eine 'font-size'- und eine 'line-height'-Eigenschaft haben,
selbst wenn sie nicht direkt verwendet werden, um die H=he der Box zu ermitteln. Die 'font-
size' wird jedoch verwendet, um die Einheiten 'em' und 'ex' zu definieren, und die 'line-
height'-Eigenschaft spielt eine Rolle in der 'vertical-align'-Eigenschaft.
'vertical-align'
Medium: Visual
Diese Eigenschaft beeinflusst die vertikale Positionierung innerhalb einer Zeilen-Box der von
einem Element auf Inline-Ebene erzeugten Boxen. Die folgenden Werte haben nur eine Bedeu-
tung fr ein bergeordnetes Element auf Inline-Ebene oder ein bergeordnetes Elemente auf
Blockebene, wenn dieses Element anonyme Inline-Boxen erzeugt; sie haben keine Wirkung,
wenn es keine solchen bergeordnete Elemente gibt.
baseline
Richtet die Grundlinie der Box an der Grundlinie der bergeordneten Box aus. Hat die
Box keine Grundlinie, wird die untere Kante der Box an der Grundlinie der Box des ber-
geordneten Elements ausgerichtet.
middle
Richtet den vertikalen Mittelpunkt der Box an der Grundlinie der bergeordneten Box plus
der halben x-H=he des bergeordneten Elements aus.
sub
Senkt die Grundlinie der Box fr die richtige Position von Tiefstellungen der Box des ber-
geordneten Elements ab. (Dieser Wert hat keine Wirkung fr die Schriftgr=ße des Ele-
menttexts.)
super
Hebt die Grundlinie der Box fr die richtige Position von Hochstellungen der Box des ber-
geordneten Elements an. (Dieser Wert hat keine Wirkung auf die Schriftgr=ße des Ele-
menttexts.)
text-top
Richtet die obere Kante der Box an der oberen Kante der Schrift des bergeordneten Ele-
ments.
text-bottom
Richtet die untere Kante der Box an der unteren Kante der Schrift des bergeordneten
Elements aus.
<percentage>
Hebt (positiver Wert) oder senkt (negativer Wert) die Box um diesen Abstand. Der Wert
'0cm' hat dieselbe Bedeutung wie 'baseline'.
Die restlichen Werte beziehen sich auf die Zeilen-Box, in der die erzeugte Box erscheint:
top
Richtet die obere Kante der Box an der oberen Kante der Zeilen-Box aus.
bottom
Richtet die obere Kante der Box an der oberen Kante der Zeilen-Box aus.
11 Visuelle Effekte
<edition
[Link]>
Immer wenn ein berlauf stattfindet, gibt die 'overflow'-Eigenschaft an, wie (und ob) eine Box
abgeschnitten wird. Die 'clip'-Eigenschaft gibt die Gr=ße und den Umriss des Abschneide-
bereichs an. Die Angabe eines kleinen Abschneidebereichs kann das Abschneiden eines andern-
falls sichtbaren Inhalts bewirken.
'overflow'
Diese Eigenschaft gibt an, ob der Inhalt eines Elements auf Blockebene abgeschnitten wird,
wenn er ber die Box des Elements (die als umschließender Block fr den Inhalt dient) hinaus-
geht. Die Werte haben die folgenden Bedeutungen:
visible
Dieser Wert zeigt an, dass Inhalt nicht abgeschnitten wird, das heißt, er kann außerhalb der
Block-Box angezeigt werden.
hidden
Dieser Wert gibt an, dass der Inhalt abgeschnitten wird und kein Mechanismus zum Scrol-
ling bereitgestellt werden soll, um den Inhalt außerhalb des Abschneidebereichs anzuzeigen;
Cascading Style Sheets, Level 2
die Benutzer haben keinen Zugriff auf den abgeschnittenen Inhalt. Die Gr=ße und die Form
des Abschneidebereichs wird durch die Gr=ße und die Form des 'clip'-Bereichs angegeben.
scroll
Dieser Wert gibt an, dass der Inhalt abgeschnitten wird und dass, wenn das Benutzerpro-
gramm Mechanismen zum Scrolling verwendet, die auf dem Bildschirm sichtbar sind (wie
beispielsweise eine Bildlaufleiste oder einen Panner), dieser Mechanismus fr eine Box
angezeigt werden soll, unabh@ngig davon, ob ihr Inhalt abgeschnitten wird. Damit vermeidet
man Probleme mit Bildlaufleisten, die in einer dynamischen Umgebung erscheinen und ver-
schwinden. Wird dieser Wert angegeben und das Zielmedium ist 'print', sollte berlaufen-
der Inhalt gedruckt werden.
auto
Das Verhalten des Werts 'auto' ist vom Benutzerprogramm abh@ngig, sollte aber veranlas-
sen, dass fr berlaufende Boxen ein Mechanismus zum Scrolling bereitgestellt wird.
Selbst wenn 'overflow' auf 'visible' gesetzt ist, kann Inhalt durch die systemeigene Betriebs-
umgebung auf das Dokumentfenster eines Benutzerprogramms zugeschnitten werden.
Beispiel
Betrachten Sie das folgende Beispiel eines Block-Zitats (BLOCKQUOTE), das zu groß
fr seinen umschließenden Block (der durch ein DIV eingerichtet wird) ist. Hier das
Quelldokument:
<DIV class="container">
<BLOCKQUOTE>
<P>I didn't like the play, but then I saw
it under adverse conditions - the curtain was up.
<DIV class="attributed-to">- Groucho Marx</DIV>
</BLOCKQUOTE>
</DIV>
Nachfolgend das Stylesheet, das die Gr=ße und den Stil der erzeugten Boxen steuert:
Der Ausgangswert von 'overflow' ist 'visible', deshalb wrde das BLOCKQUOTE ohne
Abschneiden formatiert, etwa wie folgt:
BLOCKQUOTE
Wird dagegen 'overflow' fr das DIV-Element auf 'hidden' gesetzt, wird das BLOCKQUOTE
auf den umschließenden Block zugeschnitten:
I didn’t li
but then
under ad
condition
<edition
[Link]>
Der Wert von 'scroll' teilt den Benutzerprogrammen, die einen sichtbaren Mechanismus zum
Scrolling untersttzen, mit, dass sie diesen auch anzeigen sollten, so dass Benutzer auf den
zugeschnittenen Inhalt zugreifen k=nnen.
Ein Abschneidebereich (clipping region) definiert, welcher Teil des dargestellten Inhalts eines Ele-
ments sichtbar ist. Standardm@ßig hat der Abschneidebereich dieselbe Gr=ße und dieselbe
Form wie die Element-Boxen. Der Abschneidebereich kann jedoch durch die 'clip'-Eigenschaft
abge@ndert werden.
'clip'
Die 'clip'-Eigenschaft bezieht sich auf Elemente, deren 'overflow'-Eigenschaft einen anderen
Wert als 'visible' hat. Die Werte k=nnen die folgenden Bedeutungen haben:
auto
Der Abschneidebereich hat dieselbe Gr=ße und Position wie die Element-Boxen.
<shape>
In CSS2 ist der einzig gltige <shape>-Wert rect(<top> <right> <bottom> <left>), wobei
Cascading Style Sheets, Level 2
<top>, <bottom>, <right> und <left> die Abst@nde von den jeweiligen Seiten der Box
angeben.
<top>, <right>, <bottom> und <left> k=nnen einen <length>-Wert oder 'auto' annehmen.
Negative L@ngen sind erlaubt. Der Wert 'auto' bedeutet, dass eine vorgegebene Kante des
Abschneidebereichs dieselbe ist wie die Kante der erzeugten Box des Elements (das heißt,
'auto' bedeutet dasselbe wie '0').
Wenn Koordinaten auf Pixelkoordinaten gerundet werden, sollte darauf geachtet werden,
dass keine Pixel sichtbar bleiben, wenn <left> + <right> gleich der Breite des Elements sind
(oder <top> + <bottom> gleich der H=he des Elements), und dass andererseits keine Pixel
verborgen bleiben, wenn diese Werte 0 sind.
Anmerkung der bersetzer: Der einzig gltige Wert fr <shape> hat gem@ß
CSS-Errata die Form rect(<top>, <right>, <bottom>, <left>). Beachten Sie die Kom-
mata!
Die Errata gestatten einem Benutzerprogramm sowohl die Erkennung von Leeraum als
auch von Kommata zum Trennen der Parameter von rect().
Eine weitere sehr interessante Bemerkung in den Errata ist Folgende:
„W@hrend CSS2 festlegt, dass die Werte von rect() Abst@nde von den jeweiligen Seiten
der Box angeben, interpretieren aktuelle Implementierungen alle vier Werte bezglich
den oberen und linken Seiten. Die Arbeitsgruppe schl@gt vor, CSS2 so zu revidieren,
dass die Spezifikation mit der g@ngigen Praxis bereinstimmt.“
Die Vorfahren des Elements k=nnen ebenfalls Abschneidebereiche haben (falls ihre 'over-
flow'-Eigenschaft nicht 'visible' ist); dargestellt wird die Schnittmenge aus den verschiedenen
Zuschneidebereichen.
berschreitet der Abschneidebereich die Grenzen des Dokumentfensters des Benutzerpro-
gramms, kann der Inhalt durch die systemeigene Betriebssystemumgebung auf dieses Fenster
zugeschnitten werden.
Beispiel
Die beiden folgenden Regeln:
P { clip: rect(5px, 10px, 10px, 5px); }
P { clip: rect(5px, -5px, 10px, 5px); }
erzeugen die rechteckigen Abschneidebereiche, die in den folgenden Abbildungen durch die
gestrichelten Linien gekennzeichnet sind:
(0, 0) (50, 0)
(0, 55)
P’s block box
(0, 0) (50, 0)
clip region
(0, 55)
P’s block box
<edition
[Link]>
Hinweis: In CSS2 sind alle Abschneidebereiche rechteckig. Wir erwarten zuknftige Erwei-
terungen, die auch ein anderes als ein rechteckiges Zuschneiden erlauben. n
Anmerkung der bersetzer: Die CSS2-Errata @ndern den Ausgangswert und den
Vererbt-Wert wie folgt:
Ausgangswert: visible
Vererbt: ja
Die Bedeutung ist die gleiche wie zuvor, jedoch vermeidet sie den undefinierten
Zustand des Wurzelelements, der zu Problemen bei einigen DOM-Implementierungen
fhrte.
Die 'visibility'-Eigenschaft gibt an, ob die durch ein Element erzeugten Boxen angezeigt werden.
Cascading Style Sheets, Level 2
Unsichtbare Boxen haben weiterhin Einfluss auf das Layout (um das Erzeugen von Boxen v=llig
zu unterdrcken, setzen Sie die 'display'-Eigenschaft auf 'none'). Die Werte haben die folgenden
Bedeutungen:
visible
Die erzeugte Box ist sichtbar.
hidden
Die erzeugte Box ist unsichtbar (v=llig transparent), beeinflusst aber das Layout.
collapse
Lesen Sie bitte den Abschnitt 17.5.5 ber dynamische Zeilen- und Spalteneffekte in Tabel-
len. Wird 'collapse' fr andere Elemente als Zeilen oder Spalten angewendet, hat es die-
selbe Bedeutung wie 'hidden'.
Diese Eigenschaft kann in Kombination mit Skripts verwendet werden, um dynamische Effekte
zu erzeugen.
Beispiel
Im folgenden Beispiel wird durch Anklicken einer Schaltfl@che auf dem Formular eine
benutzerdefinierte Skriptfunktion aufgerufen, die veranlasst, dass die betreffende Box
sichtbar wird, die andere verborgen. Weil diese Boxen dieselbe Gr=ße und Position
haben, ersetzen sie sich letztlich wechselseitig. (Der Skriptcode ist in einer hypotheti-
schen Skriptsprache formuliert. Er kann einen beliebigen Effekt in einem CSS-f@higen
Benutzerprogramm haben, muss aber nicht.)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<STYLE type="text/css">
<!- -
#container1 { position: absolute;
top: 2in; left: 2in; width: 2in }
#container2 { position: absolute;
top: 2in; left: 2in; width: 2in;
visibility: hidden; }
- ->
</STYLE>
</HEAD>
<BODY>
<P>W]hlen Sie einen Verd]chtigen:</P>
<DIV id="container1">
<IMG alt="Al Capone"
width="100" height="100"
src="[Link]">
<P>Name: Al Capone</P>
<P>Residence: Chicago</P>
</DIV>
<DIV id="container2">
<IMG alt="Lucky Luciano"
width="100" height="100"
<edition
[Link]>
Beispiel
Die folgende Regel beispielsweise fgt die Zeichenkette „Hinweis:“ vor dem Inhalt jedes
P-Elements ein, dessen „class“-Attribut den Wert „note“ hat:
[Link]:before { content: "Hinweis: " }
Die Formatierungsobjekte (zum Beispiel Boxen), die von einem Element erzeugt werden, ent-
halten den automatisch erzeugten Inhalt. Wenn man beispielsweise das obige Stylesheet wie
folgt ab@ndert:
wird ein durchgezogener grner Rahmen um den gesamten Absatz angezeigt, inklusive der ers-
ten Zeichenkette.
Die Pseudoelemente :before und :after erben alle vererbbaren Eigenschaften von dem Element
im Dokumentbaum, dem sie zugeordnet sind.
Beispiel
Beispielsweise fgen die folgenden Regeln ein =ffnendes Anfhrungszeichen vor jedem
Q-Element ein. Die Farbe des Anfhrungszeichens ist rot, aber die Schrift ist dieselbe
wie die Schrift des restlichen Q-Elements:
Q:before {
content: open-quote;
color: red
}
In der Deklaration der Pseudoelemente :before oder :after nehmen nicht geerbte Eigenschaften
ihren Ausgangswert an.
Beispiel
Weil also beispielsweise der Ausgangswert der Eigenschaft 'display' gleich 'inline' ist,
wird das Anfhrungszeichen im vorigen Beispiel als inzeilige Box eingefgt (also auf der-
selben Zeile wie der anf@ngliche Textinhalt des Elements). Das n@chste Beispiel setzt die
'display'-Eigenschaft explizit auf 'block', so dass der eingefgte Text zu einem Block
wird.
BODY:after {
content: "Das Ende";
display: block;
margin-top: 2em;
text-align: center;
}
Beachten Sie, dass ein akustisches Benutzerprogramm nach der Darstellung des restlichen
BODY-Elements die W=rter „Das Ende“ aussprechen wrde.
Benutzerprogramme mssen die folgenden Eigenschaften fr die Pseudoelemente :before und
Hinweis: In zuknftigen Versionen von CSS sind m=glicherweise auch andere Werte
erlaubt. n
<edition
[Link]>
Diese Eigenschaft wird fr die Pseudoelemente :before und :after verwendet, um Inhalt in
einem Dokument zu erzeugen. Die Werte haben die folgenden Bedeutungen:
<string>
Textinhalt (lesen Sie dazu den Abschnitt 4.3.10 ber Zeichenketten).
<uri>
Der Wert ist ein URI, der eine externe Ressource angibt. Wenn ein Benutzerprogramm
die Ressource aufgrund der von ihm untersttzen Medientypen nicht untersttzen kann,
muss es sie ignorieren.
Hinweis: CSS2 bietet keinen Mechanismus, um die Gr=ße des eingebetteten Objekts zu @ndern
oder um eine Textbeschreibung bereitzustellen, wie etwa die Attribute „alt“ oder „longdesc“
fr Bilder in HTML. Das kann sich jedoch in zuknftigen Versionen von CSS @ndern. n
Cascading Style Sheets, Level 2
<counter>
Z@hler k=nnen mit zwei verschiedenen Funktionen angegeben werden: 'counter()' oder
'counters()'. Die erste Funktion hat zwei Formen: 'counter(name)' oder 'counter(name,
style)'. Der erzeugte Text ist der Wert des benannten Z@hlers an dieser Stelle in der For-
matierungsstruktur; er wird im angegebenen Stil formatiert (standardm@ßig 'decimal'). Die
zweite Funktion hat ebenfalls zwei Formen: 'counter(name, string)' oder 'counter(name,
string, style)'. Der erzeugte Text ist der Wert aller Z@hler mit dem betreffenden Namen an
dieser Stelle der Formatierungsstruktur, abgetrennt durch den angegebenen String. Die
Z@hler werden in dem angegeben Stil dargestellt (standardm@ßig 'decimal'). Weitere Infor-
mationen finden Sie im Abschnitt 12.5 ber automatische Z@hler und Nummerierung.
open-quote und close-quote
Diese Werte werden durch die geeignete Zeichenkette aus der Eigenschaft 'quotes' ersetzt.
no-open-quote und no-close-quote
Fgt nichts ein (die leere Zeichenkette), inkrementiert (bzw. dekrementiert) aber die Ver-
schachtelungsebene fr Anfhrungszeichen.
attr(X)
Diese Funktion gibt den Wert des Attributs X fr das Subjekt des Selektors als Zeichen-
kette zurck. Die Zeichenkette wird vom CSS-Prozessor nicht geparst. Wenn das Subjekt
des Selektors kein Attribut X hat, wird eine leere Zeichenkette zurckgegeben. Ob bei den
Attributnamen die Groß-/Kleinschreibung bercksichtigt wird, ist von der Dokumentspra-
che abh@ngig.
Hinweis. In CSS2 ist es nicht m=glich, auf Attributwerte fr andere Elemente des Selektors
zuzugreifen. n
Die 'display'-Eigenschaft steuert, ob der Inhalt in einem Block, einer Inline- oder Markierungs-
Box angezeigt wird.
Autoren sollten 'content'-Deklarationen in @media-Regeln platzieren, wenn der Inhalt vom
Medium abh@ngig ist. Beispielsweise k=nnte literaler Text fr jede Mediengruppe verwendet
werden, w@hrend Bilder sich nur auf visuelle und Bitmap-Mediengruppen beziehen und Sound-
dateien nur auf die akustische Mediengruppe.
Beispiel
Die folgende Regel bewirkt, dass eine Sounddatei am Ende eines Zitats abgespielt wird
(weitere Mechanismen finden Sie im Abschnitt 19 ber akustische Stylesheets):
@media aural {
BLOCKQUOTE:after { content: url("[Link]") }
}
Die n@chste Regel fgt den Text des HTML-Attributs „alt“ vor dem Bild ein. Wenn das Bild
nicht angezeigt wird, sieht der Leser statt dessen den „alt“-Text.
Beispiel
H1:before {
display: block;
text-align: center;
content: "chapter\A hoofdstuk\A chapitre"
}
Erzeugter Inhalt ver@ndert den Dokumentbaum nicht. Insbesondere wird er nicht an den
Dokumentsprachprozessor zurckgemeldet (z. B. fr ein erneutes Parsing).
Hinweis: In zuknftigen Versionen von CSS kann es sein, dass die 'content'-Eigenschaft zus@tz-
liche Werte akzeptiert, so dass der Stil von Bereichen des erzeugten Inhalts variiert wird, aber
in CSS2 hat der gesamte Inhalt der Pseudoelemente :before und :after denselben Stil. n
<edition
[Link]>
Beispiel
Nachfolgend sehen Sie ein Beispiel fr einen 'run-in'-Header mit einem :after-Pseudoele-
Cascading Style Sheets, Level 2
ment gefolgt von einem Absatz mit einem :before-Pseudoelement. Alle Pseudoelemente
dieses Beispiels sind inline (das ist der Standard). Wenn das nachfolgende Stylesheet
H3 { display: run-in }
H3:after { content: ": " }
P:before { content: "... " }
<H3>Zentauren</H3>
<P>haben Hufe
<P>Haben einen Schwanz
12.4 Anf-hrungszeichen
In CSS2 k=nnen Autoren in einer den Stil bercksichtigenden und kontextabh@ngigen Weise
angeben, wie die Benutzerprogramme Anfhrungszeichen darstellen sollen. Die Eigenschaft
'quotes' gibt Paare von Anfhrungszeichen fr jede Ebene der eingebetteten Zitate an. Die
'content'-Eigenschaft bietet Zugriff auf diese Anfhrungszeichen und bewirkt, dass sie vor und
hinter einem Zitat eingefgt werden.
'quotes'
Diese Eigenschaft gibt die Anfhrungszeichen fr eine beliebige Anzahl eingebetteter Zitate an.
Die Werte haben die folgenden Bedeutungen:
none
Die Werte 'open-quote' und 'close-quote' der 'content'-Eigenschaft erzeugen keine Anfh-
rungsstriche.
[<string> <string>]+
Beispiel
Wendet man beispielsweise das folgende Stylesheet
/* Gibt AnfUhrungszeichenpaare fUr zwei Ebenen in zwei Sprachen an */
Q:lang(en) { quotes: '"' '"' "'" "'" }
Q:lang(no) { quotes: "\(" "\(" "<" ">" }
/* AnfUhrungszeichen vor und nach Q-Elementinhalt einfUgen */
Q:before { content: open-quote }
Q:after { content: close-quote }
<edition
[Link]>
<HTML lang="en">
<HEAD>
<TITLE>Quotes</TITLE>
</HEAD>
<BODY>
<P><Q>Quote me!</Q>
</BODY>
</HTML>
erh@lt man
"Quote me!"
<HTML lang="no">
<HEAD>
<TITLE>Quotes</TITLE>
</HEAD>
<BODY>
<P><Q>Trøndere grcter ncr <Q>Vinsjan pc kaia</Q> blir deklamert.</Q>
</BODY>
</HTML>
Hinweis: W@hrend die durch die 'quotes' in den vorigen Beispielen angegebenen Anfhrungs-
zeichen alle bequem auf den Computertastaturen liegen, wrde ein wirklich hochqualitativer
Cascading Style Sheets, Level 2
Schriftsatz andere ISO 10646-Zeichen erfordern. Die folgende informelle Tabelle listet einige
der ISO 10646-Anfhrungszeichen auf: n
Anmerkung der bersetzer: In den Entity-Mengen von XHTML sind fr einige
Anfhrungszeichen auch Zeichen-Entities definiert. Fr die blichen deutschen Anfh-
rungszeichen sind diese beiden die beste N@herung:
Der HTML-Code „ Zitat ” fhrt im Browser (hier: Mozilla) jedoch zu fol-
gender Darstellung.
<edition
[Link]>
'open-quote' bezieht sich auf das erste Anfhrungszeichen eines Paares, 'close-quote' auf das
zweite. Welches Anfhrungszeichenpaar verwendet wird, ist von der Verschachtelungstiefe
der Anfhrungszeichen abh@ngig: Die Anzahl der Auftreten von 'open-quote' wird im gesamten
erzeugten Text vor dem aktuellen Auftreten gez@hlt, minus der Anzahl des Auftretens von 'clo-
se-quote'. Ist die Tiefe gleich 0, wird das erste Paar verwendet, ist die Tiefe 1, wird das zweite
Paar verwendet usw. Ist die Tiefe gr=ßer als die Anzahl der Paare, wird das letzte Paar fortlau-
fend wiederholt.
Beachten Sie, dass diese Anfhrungszeichentiefe unabh@ngig von der Verschachtelung des
Quelldokuments oder der Formatierungsstruktur ist.
Einige typographische Stile fordern, dass =ffnende Anfhrungszeichen vor jedem Absatz eines
Zitats wiederholt werden, das sich ber mehrere Abs@tze erstreckt, aber nur der letzte Absatz
endet mit einem schließenden Anfhrungszeichen. In CSS kann das erzielt werden, indem
schließende „Phantom“-Anfhrungszeichen gesetzt werden. Das Schlsselwort 'no-close-quo-
te' dekrementiert die Zitatebene, fgt aber kein Anfhrungszeichen ein.
Beispiel
Das folgende Stylesheet setzt =ffnende Anfhrungszeichen fr jeden Absatz in einem
BLOCKQUOTE und fgt am Ende ein einzelnes schließendes Anfhrungszeichen ein:
BLOCKQUOTE P:before { content: open-quote }
BLOCKQUOTE P:after { content: no-close-quote }
BLOCKQUOTE [Link]:after { content: close-quote }
Das basiert auf dem letzten Absatz, der mit der Klasse „last“ markiert wurde, weil es keine
Selektoren gibt, die mit dem letzten untergeordneten Element eines Elements bereinstimmen
k=nnen.
Aus Symmetriegrnden gibt es auch das Schlsselwort 'no-open-quote', das nichts einfgt, son-
dern die Anfhrungszeichentiefe um eins inkrementiert.
Cascading Style Sheets, Level 2
Hinweis: Wenn ein Zitat in einer anderen Sprache vorliegt als der umschließende Text, ist es
blich, den Text mit Anfhrungszeichen der Sprache des umschließenden Texts auszuzeichnen,
nicht mit den Anfhrungszeichen der Sprache des Zitats. n
Ein Beispiel fr Franz=sisch innerhalb von Englisch:
The device of the order of the garter is "Honi soit qui mal y pense."
Beispiel
Ein Stylesheet wie das Folgende setzt die 'quotes'-Eigenschaft so, dass 'open-quote' und
'close-quote' korrekt fr alle Elemente funktionieren. Diese Regeln gelten fr Doku-
mente, die nur Englisch, Franz=sisch oder beides enthalten. Fr jede zus@tzliche Sprache
wird eine weitere Regel ben=tigt. Beachten Sie die Verwendung des untergeordneten
Kombinatorzeichens („>“), um Anfhrungszeichen fr Elemente abh@ngig von der Spra-
che des umschließenden Texts zu setzen:
Die Anfhrungszeichen fr das Englische sind hier in einer Form gezeigt, die die meisten Leute
ber die Tastatur eingeben k=nnen. Wenn Sie sie direkt eingeben k=nnen, sehen sie wie folgt aus:
'counter-reset'
'counter-increment'
Die Eigenschaft 'counter-increment' akzeptiert einen oder mehrere Namen von Z@hlern (IDs),
jeweils optional gefolgt von einer ganzen Zahl. Die ganze Zahl gibt an, um wie viel der Z@hler
bei jedem Auftreten des Elements inkrementiert wird. Das Standardinkrement ist 1. Null und
negative ganze Zahlen sind erlaubt.
<edition
[Link]>
Die Eigenschaft 'counter-reset' enth@lt außerdem eine Liste eines oder mehrerer Namen von
Z@hlern, jeweils optional gefolgt von einer ganzen Zahl. Die ganze Zahl gibt den Wert an, auf
den der Z@hler bei jedem Auftreten des Elements gesetzt wird. Der Standardwert ist 0.
Wenn 'counter-increment' auf einen Z@hler verweist, der sich nicht im Gltigkeitsbereich
(siehe unten) eines 'counter-reset' befindet, wird angenommen, dass der Z@hler vom Wurzele-
lement auf 0 zurckgesetzt wurde.
Beispiel
Dieses Beispiel zeigt eine M=glichkeit, Kapitel und Abschnitte mit „Kapitel 1“, „1.1“,
„1.2“ usw. zu nummerieren.
H1:before {
content: "Kapitel " counter(chapter) ". ";
counter-increment: chapter; /* 1 zu chapter addieren */
counter-reset: section; /* section auf 0 setzen */
}
H2:before {
content: counter(chapter) "." counter(section) " ";
counter-increment: section;
}
Wenn ein Element einen Z@hler inkrementiert/zurcksetzt und ihn auch verwendet (in der
'content'-Eigenschaft seines :before- oder :after-Pseudoelements), wird der Z@hler nach dem
Inkrementieren/Zurcksetzen verwendet.
Wenn ein Element einen Z@hler sowohl zurcksetzt als auch inkrementiert, wird der Z@hler
zuerst zurckgesetzt und dann inkrementiert.
Die Eigenschaft 'counter-reset' folgt den Kaskadierungsregeln. Aufgrund der Kaskadierung setzt
das folgende Stylesheet
H1 { counter-reset: section -1 }
Cascading Style Sheets, Level 2
H1 { counter-reset: imagenum 99 }
nur 'imagenum' zurck. Um beide Z@hler zurckzusetzen, mssen sie zusammen angegeben
werden:
Z@hler sind „selbst-verschachtelnd“, in der Hinsicht, dass eine Wiederverwendung eines Z@h-
lers in einem untergeordneten Elements automatisch eine neue Instanz des Z@hlers erzeugt.
Das ist wichtig fr Situationen wie beispielsweise Listen in HTML, wo Elemente in beliebiger
Tiefe innerhalb sich selbst verschachtelt werden k=nnen. Es w@re unm=glich, fr jede Ebene
eindeutig benannte Z@hler zu definieren.
Beispiel
Folgendes gengt also, um verschachtelte Listenelemente zu nummerieren. Das Ergeb-
nis kommt jenem sehr nahe, wenn man 'display:list-item' und 'list-style: inside' fr das
LI-Element setzt:
OL { counter-reset: item }
LI { display: block }
LI:before { content: counter(item) ". "; counter-increment: item }
Die Selbstverschachtelung basiert auf dem Prinzip, dass jedes Element, das einen 'counter-reset'
fr einen Z@hler X hat, einen neuen Z@hler X erzeugt, dessen Gltigkeitsbereich das Element ist,
seine vorhergehenden gleichrangigen Elemente und alle Ableitungen des Elements und seiner
vorhergehenden gleichrangigen Elemente.
In dem obigen Beispiel erzeugt ein OL einen Z@hler, und alle untergeordneten Elemente des
OL beziehen sich auf diesen Z@hler.
Beispiel
Wenn wir die n-te Instanz des Z@hlers „item“ als item[n] bezeichnen und den Anfang
und das Ende eines Gltigkeitsbereiches mit „(“ und „)“, verwendet das folgende
HTML-Fragment die angegebenen Z@hler. (Wir setzen dabei das Stylesheet aus dem
obigen Beispiel voraus.)
<OL> <!- - (set item[0] to 0 - ->
<LI>item <!- - increment item[0] (= 1) - ->
<LI>item <!- - increment item[0] (= 2) - ->
<OL> <!- - (set item[1] to 0 - ->
<LI>item <!- - increment item[1] (= 1) - ->
<LI>item <!- - increment item[1] (= 2) - ->
<LI>item <!- - increment item[1] (= 3) - ->
<OL> <!- - (set item[2] to 0 - ->
<LI>item <!- - increment item[2] (= 1) - ->
Die Funktion 'counters()' erzeugt einen String, der sich aus den Werten aller Z@hler mit dem-
selben Namen zusammensetzt, getrennt durch einen vorgegebenen String.
<edition
[Link]>
Beispiel
Das folgende Stylesheet nummeriert verschachtelte Listenelemente als „1“, „1.1“,
„1.1.1“ usw.
OL { counter-reset: item }
LI { display: block }
LI:before { content: counters(item, "."); counter-increment: item }
12.5.3 [Link]
Standardm@ßig werden Z@hler mit Dezimalzahlen formatiert, aber alle Stile, die fr die Eigen-
schaft 'list-style-type' zur Verfgung stehen, stehen auch fr Z@hler zur Verfgung. Die Nota-
tion sieht wie folgt aus:
counter(name)
counter(name, 'list-style-type')
Alle Stile sind erlaubt, unter anderem 'disc', 'circle', 'square' und 'none'.
Ein Element, das nicht angezeigt wird ('display' ist auf 'none' gesetzt), kann einen Z@hler nicht
inkrementieren oder zurcksetzen.
Beispiel
Beispielsweise inkrementieren nach dem folgenden Stylesheet H2s mit der Klasse
„secret“ 'count2' nicht.
[Link] {counter-increment: count2; display: none}
Elemente, deren 'visibility' auf 'hidden' gesetzt ist, inkrementieren die Z@hler dagegen sehr
wohl.
Beispiel
Das folgende Beispiel etwa zeigt, wie Markierungen dazu verwendet werden, um Punkte
hinter jeder Nummer einer geordneten Liste einzufgen. Diese HTML-Datei und das
Stylesheet
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Creating a list with markers</TITLE>
<STYLE type="text/css">
LI:before {
display: marker;
content: counter(mycounter, lower-roman) ".";
<edition
[Link]>
Mit abgeleiteten Selektoren und untergeordneten Selektoren (siehe Abschnitte 5.5 und 5.6) ist
es m=glich, unterschiedliche Markierungstypen anzugeben, abh@ngig von der Tiefe der eingebet-
teten Listen.
Markierungen werden erzeugt, indem die 'display'-Eigenschaft innerhalb eines :before- oder :af-
ter-Pseudoelements auf 'marker' gesetzt wird. W@hrend der :before- und :after-Inhalt 'block'
und 'inline' Teil der von dem Element erzeugten Haupt-Box ist, wird 'marker'-Inhalt in einer
unabh@ngigen Markierungs-Box außerhalb der Haupt-Box formatiert. Markierungs-Boxen wer-
den als einzelne Zeile formatiert (das heißt als Zeilen-Box), weshalb sie nicht so flexibel wie
Floats sind. Die Markeriungs-Box wird nur erzeugt, wenn die 'content'-Eigenschaft fr das Pseu-
doelement tats@chlich Inhalt erzeugt.
Markierungs-Boxen haben Polsterungen (padding) und Rahmen (border), aber keine R@nder
(margin).
Fr das :before-Pseudoelement wird die Grundlinie des Texts in der Markierungs-Box vertikal
an der Grundlinie des Texts in der ersten Zeile des Inhalts der Haupt-Box ausgerichtet. Enth@lt
die Haupt-Box keinen Text, wird die obere @ußere Kante der Markierungs-Box an der oberen
@ußeren Kante der Haupt-Box ausgerichtet. Fr das :after-Pseudoelement wird die Grundlinie
des Texts in der Markierungs-Box vertikal an der Grundlinie des Texts in der letzten Inhalts-
zeile der Inhalts-Box ausgerichtet. Enth@lt die Haupt-Box keinen Text, wird die untere @ußere
Kante der Markierungs-Box an der unteren @ußeren Kante der Haupt-Box ausgerichtet.
Die H=he einer Markierungs-Box wird durch die Eigenschaft 'line-height' festgelegt. Die :befo-
re- (:after-) Markierungs-Box wird in der H=henberechnung der ersten (letzten) Zeilen-Box
der Haupt-Box bercksichtigt. Markierungen werden also an der ersten und letzten Zeile eines
Elementinhalts ausgerichtet, selbst wenn sich die Markierungs-Boxen in unterschiedlichen Zei-
len-Boxen befinden. Falls es in einer Haupt-Box keine erste oder letzte Zeilen-Box gibt, richtet
die Markierungs-Box selbst eine Zeilen-Box ein.
Cascading Style Sheets, Level 2
Die vertikale Ausrichtung einer Markierungs-Box innerhalb ihrer Zeilen-Box wird mit Hilfe der
Eigenschaft 'vertical-align' festgelegt.
Ist der Wert der 'width'-Eigenschaft gleich 'auto', dann ist die Inhaltsbreite der Markierungs-
Box gleich der des Inhalts, andernfalls ist sie gleich dem Wert von 'width'. Fr Werte von
'width' kleiner als die Inhaltsbreite gibt die 'overflow'-Eigenschaft das berlaufverhalten an.
Markierungs-Boxen k=nnen Haupt-Boxen berlappen. Fr Werte von 'width' gr=ßer der
Inhaltsbreite gibt die Eigenschaft 'text-align' die horizontale Ausrichtung des Inhalts in der Mar-
kierungs-Box an.
Die Eigenschaft 'marker-offset' gibt den horizontalen Offset zwischen einer Markierungs-Box
und der zugeh=rigen Haupt-Box an. Der Abstand wird zwischen ihren am n@chsten beieinander
liegenden Rahmenkanten gemessen. Hinweis: Wenn eine Markierung rechts eines Floats in
einem von links nach rechts formatierenden Kontext verl@uft, fließt die Haupt-Box an der rech-
ten Seite des Floats vorbei, w@hrend die Markierungs-Box links vom Float erscheint. Weil die
linke Rahmenkante der Haupt-Box links von dem Float liegt (lesen Sie dazu die Beschreibung
von Floats) und die Markierungs-Boxen außerhalb der Rahmenkante der Haupt-Box liegen, liegt
die Markierung ebenfalls links von dem Float. Ein analoges Verhalten ergibt sich fr die Forma-
tierung von rechts nach links, wenn eine Markierung links von einem Float vorbeil@uft.
Wenn die Eigenschaft 'display' den Wert 'marker' fr den von einem Element mit 'display:
list-item' erzeugten Inhalt hat, ersetzt eine fr ':before' erzeugte Markierungs-Box die normale
Listenelementmarkierung.
Beispiel
Im folgenden Beispiel wird der Inhalt innerhalb einer Markierungs-Box einer festen
Breite zentriert. Das folgende Dokument
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Inhaltsausrichtung in der Markierungs-Box</TITLE>
<STYLE type="text/css">
LI:before {
display: marker;
content: "(" counter(counter) ")";
counter-increment: counter;
width: 6em;
text-align: center;
}
</STYLE>
</HEAD>
<BODY>
<OL>
<LI> Das erste Element.
<LI> Das zweite Element.
<LI> Das dritte Element.
</OL>
</BODY>
</HTML>
Das n@chste Beispiel erzeugt Markierungen vor und nach den Listeneintr@gen.
Beispiel
Das Dokument
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Markers before and after list items</TITLE>
<edition
[Link]>
<STYLE type="text/css">
@media screen, print {
LI:before {
display: marker;
content: url("[Link]");}
LI:after {
display: marker;
content: url("[Link]");
}
}
</STYLE>
</HEAD>
<BODY>
<UL>
<LI>first list item comes first
<LI>second list item comes second
</UL>
</BODY>
</HTML>
Beispiel
Das Dokument
Cascading Style Sheets, Level 2
<BODY>
<P>This is the first paragraph in this document.</P>
<P CLASS="Note">This is a very short document.</P>
<P>This is the end.</P>
</BODY>
</HTML>
'marker-offset'
Diese Eigenschaft gibt den Abstand zwischen der n@chstliegenden Rahmenkanten einer Markie-
rungs-Box und der zugeh=rigen Haupt-Box an. Der Abstand kann entweder benutzerspezifisch
Beispiel
Das folgende Beispiel zeigt, wie Markierungen dazu verwendet werden k=nnen, um
Punkte nach jedem nummerierten Listenelement einzufgen. Das nachfolgende HTML-
Programm und Stylesheet
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Markierungsbeispiel 5</TITLE>
<STYLE type="text/css">
P { margin-left: 8em } /* Platz fUr Z]hler schaffen */
LI:before {
display: marker;
marker-offset: 3em;
content: counter(mycounter, lower-roman) ".";
<edition
[Link]>
counter-increment: mycounter;
}
</STYLE>
</HEAD>
<BODY>
<P> Ein langer vorhergehender Absatz....
<OL>
<LI> Das erste Element.
<LI> Das zweite Element.
<LI> Das dritte Element.
</OL>
<P> Ein langer nachfolgender Absatz...
</BODY>
</HTML>
Die Listeneigenschaften erlauben eine grundlegende visuelle Formatierung von Listen. Wie bei
allgemeineren Markierungen erzeugt ein Element mit 'display: list-item' eine Haupt-Box fr den
Elementinhalt und eine optionale Markierungs-Box. Die anderen Listeneigenschaften erlauben
Cascading Style Sheets, Level 2
den Autoren, den Markierungstyp anzugeben (Bild, Glyphen oder Nummer) sowie die Position
relativ zur Haupt-Box (außerhalb davon oder innerhalb davon vor dem Inhalt). Sie erlauben es
den Autoren jedoch nicht, unterschiedliche Stile (Farben, Schriften, Ausrichtung und so weiter)
fr die Listenmarkierung anzugeben oder ihre Position relativ zur Haupt-Box anzupassen.
Wird darber hinaus eine Markierung M (erzeugt mit 'display: marker') fr ein durch die Listen-
eigenschaften erzeugtes Listenelement verwendet, ersetzt M die Standard-Listenelementmar-
kierung.
'list-style-type'
Diese Eigenschaft gibt das Erscheinungsbild der Listenelementmarkierung an, wenn 'list-style-
image' den Wert 'none' hat oder wenn das Bild, auf das die URI verweist, nicht angezeigt wer-
den kann. Der Wert 'none' spezifiziert keine Markierung, andernfalls gibt es drei Typen von
Markierungen: Glyphen, Nummerierungssysteme und alphabetische Systeme. Hinweis: Num-
merierte Listen verbessern den Zugriff auf ein Dokument, weil es damit einfacher wird, sich
innerhalb von Listen zu orientieren.
Glyphen werden mit disc, circle und square angegeben. Die genaue Darstellung ist vom
Benutzerprogramm abh@ngig.
Nummerierungssysteme werden wie folgt spezifiziert:
decimal
Dezimalzahlen, beginnend mit 1.
decimal-leading-zero
<edition
[Link]>
hiragana-iroha
i, ro, ha, ni, ho, he, to, ...
katakana-iroha
I, RO, HA, NI, HO, HE, TO, ...
Ein Benutzerprogramm, das ein Nummerierungssymbol nicht erkennt, sollte 'decimal' verwen-
den.
Hinweis: Dieses Dokument gibt keinen genauen Mechanismus fr die einzelnen Nummerie-
rungssymbole an (z. B. wie r=mische Nummern berechnet werden). Eine zuknftige W3C-Spe-
zifikation enth@lt m=glicherweise weitere Informationen zu diesem Thema. n
Alphabetische Systeme werden wie folgt spezifiziert:
Diese Spezifikation definiert nicht, wie alphabetische Systeme am Ende des Alphabets fort-
gesetzt werden. Nach 26 Listenelementen ist beispielsweise die Darstellung von 'lower-latin'
nicht definiert. Fr lange Listen empfehlen wir den Autoren deshalb, echte Nummern anzuge-
ben.
Beispiel
Das folgende HTML-Dokument
Cascading Style Sheets, Level 2
i Erstes Element.
ii Zweites Element.
iii Drittes Element.
Beachten Sie, dass die Ausrichtung dieser Listenmarkierungen (hier rechts ausgerichtet) vom
Benutzerprogramm abh@ngig ist.
Zuknftige Versionen von CSS stellen m=glicherweise vollst@ndigere Mechanismen fr interna-
tionale Nummerierungssysteme bereit. n
'list-style-image'
Diese Eigenschaft legt das Bild fest, das als Listenelementmarkierung verwendet wird. Wenn
das Bild zur Verfgung steht, ersetzt es die Markierung, die mit der Markierung 'list-style-type'
festgelegt wurde.
Beispiel
Das folgende Beispiel setzt die Markierung am Anfang jedes Listenelements auf das Bild
„[Link]“.
UL { list-style-image: url("[Link] }
Diese Eigenschaft gibt die Position der Markierungs-Box in der Hauptblock-Box an. Die Werte
haben die folgenden Bedeutungen:
<edition
[Link]>
outside
Die Markierungs-Box liegt außerhalb der Hauptblock-Box. Hinweis: CSS1 hat die genaue
Position der Markierungs-Box nicht angegeben, und aus Kompatibilit@tsgrnden bleibt CSS2
@hnlich mehrdeutig. Um eine genauere Kontrolle ber die Markierungs-Boxen zu gewinnen,
verwenden Sie bitte Markierungen.
inside
Die Markierungs-Box ist die erste inzeilige Box in der Hauptblock-Box, welcher der Ele-
mentinhalt folgt.
Beispiel
<HTML>
<HEAD>
<TITLE>Comparison of inside/outside position</TITLE>
<STYLE type="text/css">
UL { list-style: outside }
[Link] { list-style: inside }
</STYLE>
</HEAD>
<BODY>
<UL>
<LI>first list item comes first
<LI>second list item comes second
</UL>
<UL class="compact">
<LI>first list item comes first
<LI>second list item comes second
</UL>
</BODY>
</HTML>
In einem Text, der von rechts nach links verl@uft, befinden sich die Markierungen auf der rech-
ten Seite des Rahmens.
'list-style'
Die Eigenschaft 'list-style' ist eine zusammenfassende Notation, mit der die drei Eigenschaften
'list-style-type', 'list-style-image' und 'list-style-position' an einer einzigen Stelle im Stylesheet
festgelegt werden.
Beispiel
UL { list-style: upper-roman inside } /* Jede UL */
UL UL { list-style: circle outside } /* Jeder UL-Nachfahre einer UL */
Obwohl Autoren die 'list-style'-Information direkt fr Listenelemente angeben k=nnen (z. B. LI
in HTML), sollte das mit Vorsicht erfolgen. Die folgenden Regeln sehen ganz @hnlich aus, aber
die erste deklariert einen abgeleiteten Selektor, die zweite dagegen einen (spezifischeren)
untergeordneten Selektor.
Autoren, die nur den abgeleiteten Selektor verwenden, erzielen damit vielleicht nicht die
erwarteten Ergebnisse. Betrachten Sie die folgenden Regeln:
<HTML>
<HEAD>
<TITLE>WARNUNG: Unerwartete Ergebnisse aufgrund der Kaskade</TITLE>
<STYLE type="text/css">
[Link] LI { list-style: lower-alpha }
UL LI { list-style: disc }
</STYLE>
</HEAD>
<BODY>
<OL class="alpha">
<LI>level 1
<UL>
<LI>level 2
</UL>
<edition
[Link]>
</OL>
</BODY>
</HTML>
Die gewnschte Darstellung h@tte Listenelemente der Ebene 1 mit 'lower-alpha'-Beschrifungen und
Elemente der Ebene 2 mit 'disc'-Beschriftungen. Die kaskadierende Reihenfolge bewirkt, dass die
erste Stilregel (die spezifische Klasseninformationen enth@lt) die zweite verdeckt. Die folgenden
Regeln l=sen dieses Problem, indem sie statt dessen den untergeordneten Selektor verwenden:
Eine weitere L=sung bestnde darin, die 'list-style'-Information nur fr die Listentypelemente anzugeben:
Vererbung bertr@gt die 'list-style'-Werte von den OL- und UL-Elementen an die LI-Elemente.
Das ist die empfohlene Vorgehensweise zur Angabe der Listenstilinformation.
Ein URI-Wert kann mit einem beliebigen anderen Wert kombiniert werden, wie beispielsweise in:
Im obigen Beispiel wird 'disc' verwendet, wenn das Bild nicht zur Verfgung steht.
Der Wert 'none' fr die 'list-style'-Eigenschaft setzt sowohl 'list-style-type' als auch 'list-style-
image' auf 'none':
UL { list-style: none }
Das Ergebnis ist, dass keine Markierung fr die Listenelemente angezeigt wird.
Cascading Style Sheets, Level 2
13 Seitenmedien
13.1 Einf-hrung in Seitenmedien
Seitenmedien (Paged Media; zum Beispiel Papier, Folien, Seiten, die auf Computerbildschirmen
angezeigt werden und so weiter) unterscheiden sich von Endlosmedien, weil der Inhalt des
Dokuments auf eine oder mehrere einzelne Seiten verteilt ist. Um Seitenumbrche zu verarbei-
ten, erweitert CSS2 das visuelle Formatierungsmodell wie folgt:
1. Die Seiten-Box erweitert das Box-Modell, so dass Autoren die Gr=ße einer Seite, ihre R@n-
der usw. angeben k=nnen.
2. Das Seitenmodell erweitert das visuelle Formatierungsmodell, um Seitenumbrche zu
bercksichtigen.
Das CSS2-Seitenmodell gibt an, wie ein Dokument innerhalb eines rechteckigen Bereichs – der
Seiten-Box – formatiert wird, der eine feste Breite und H=he aufweist. Die Seiten-Box ent-
spricht nicht unbedingt einem realen Blatt, auf dem das Dokument schließlich ausgegeben wird
(Papier, Folie, Bildschirm usw.). Das CSS-Seitenmodell spezifiziert die Formatierung in der Sei-
ten-Box, aber das Benutzerprogramm ist dafr verantwortlich, die Seiten-Box auf das Blatt zu
bertragen. Einige bertragungsm=glichkeiten seien an dieser Stelle genannt:
·· bertragung einer Seiten-Box auf ein Blatt (zum Beispiel einseitiger Druck).
bertragung von zwei Seiten-Boxen auf Vorder- und Rckseite desselben Blatts (zum Bei-
spiel doppelseitiger Druck).
·· bertragung von N (kleinen) Seiten-Boxen auf ein Blatt (auch als „n-up“ bezeichnet).
bertragung einer (großen) Seiten-Box auf N x M Bl@tter (auch als „tiling“ bezeichnet).
· Anlegen von Signaturen. Eine Signatur ist eine Gruppe von Seiten, die auf ein Blatt aus-
gedruckt werden, die, wenn das Blatt gefaltet und wie ein Buch geschnitten wird, in der
richtigen Reihenfolge erscheinen.
·· Ausdruck eines Dokuments in mehrere Ausgabesch@chte.
Ausgabe in eine Datei.
Obwohl CSS2 nicht angibt, wie die Benutzerprogramme Seiten-Boxen bertragen, enth@lt es
bestimmte Mechanismen, die den Benutzerprogrammen Informationen ber die Gr=ße und die
Ausrichtung des Zielblatts mitteilen.
Hinweis: In CSS2 beziehen sich die Rahmeneigenschaften und die Auffllungseigenschaften nicht
auf Seiten, was jedoch in Zukunft m=glicherweise der Fall sein wird. n
Beispiel
Die folgende @page-Regel beispielsweise setzt die Gr=ße der Seiten-Box auf 8,5 x 11
Zoll und erzeugt '2cm' Rand auf allen Seiten zwischen der Kante der Seiten-Box und
dem Seitenbereich:
@page { size 8.5in 11in; margin: 2cm }
<edition
[Link]>
Die Eigenschaft 'marks' in einer @page-Regel gibt Schnitt- und Kreuzmarkierungen fr die Sei-
ten-Box an.
13.2.1 [Link]
Der berechnete Wert der Box-R@nder oben und unten auf dem Seitenbereich betr@gt '0'.
Der Seitenkontext besitzt kein Konzept fr Schriften, deshalb sind die Einheiten 'em' und 'ex'
nicht erlaubt. Prozentwerte fr die Randeigenschaften sind relativ zur Gr=ße der Seiten-Box;
fr linke und rechte R@nder beziehen sie sich auf die Breite der Seiten-Box, w@hrend sie sich
fr obere und untere R@nder auf die H=he der Seiten-Box beziehen. Alle anderen Einheiten,
die den betreffenden CSS2-Eigenschaften zugeordnet sind, sind erlaubt.
Negative Randwerte (entweder auf der Seiten-Box oder fr Elemente) oder die absolute Posi-
tionierung von Inhalt k=nnen dazu fhren, dass Inhalt außerhalb der Seiten-Box angeordnet ist,
aber dieser Inhalt kann „zugeschnitten“ werden – vom Benutzerprogramm, dem Drucker oder
letztlich dem Papierschneider.
'size'
Diese Eigenschaft gibt die Gr=ße und die Ausrichtung einer Seiten-Box an.
Die Gr=ße einer Seiten-Box kann entweder „absolut“ (mit fester Gr=ße) oder „relativ“ (ska-
lierbar, das heißt in die verfgbare Blattgr=ße eingepasst) sein. Relative Seiten-Boxen erlauben
den Benutzerprogrammen, ein Dokument zu skalieren, und verwenden die Zielgr=ße optimal.
Drei Werte fr die 'size'-Eigenschaft erzeugen eine relative Seiten-Box:
auto
Die Seiten-Box wird auf die Gr=ße und die Ausrichtung des Zielblatts gesetzt.
landscape
berschreibt die Zielausrichtung. Die Seiten-Box hat dieselbe Gr=ße wie das Ziel, und die
l@ngeren Seiten sind horizontal ausgerichtet.
portrait
berschreibt die Zielausrichtung. Die Seiten-Box hat dieselbe Gr=ße wie das Ziel, und die
krzeren Seiten sind horizontal ausgerichtet.
L@ngenwerte fr die 'size'-Eigenschaft erzeugen eine absolute Seiten-Box. Wird nur ein L@ngen-
wert angegeben, legt er sowohl die Breite als auch die H=he der Seiten-Box fest (das heißt bei
der Box handelt es sich um ein Quadrat). Weil es sich bei der Seiten-Box um einen umschlie-
ßenden Anfangsblock handelt, sind Prozentwerte fr die 'size'-Eigenschaft nicht erlaubt.
Beispiel
@page {
size: 8.5in 11in; /* width height */
}
<edition
[Link]>
Das obige Beispiel setzt die Breite der Seiten-Box auf 8,5 Zoll, die H=he auf 11 Zoll. Die Seiten-
Box in diesem Beispiel ben=tigt eine Zielblattgr=ße von 8,5" x 11" oder gr=ßer.
Benutzerprogramme k=nnen den Benutzern erlauben, die bertragung der Seiten-Box auf das
Blatt zu steuern (zum Beispiel eine Drehung einer absoluten Seiten-Box, die ausgedruckt wird).
'marks'
Vererbt: N/A
Prozentwerte: N/A
Medium: Visual, Paged
Bei einem hochqualitativen Druck werden die Markierungen h@ufig außerhalb der Seiten-Box
angegeben. Diese Eigenschaft gibt an, ob Kreuzmarkierungen (Cross) oder Schnittmarkierun-
gen (Crop) oder beides außerhalb der Kanten der Seiten-Box ausgegeben werden sollen.
Schnittmarkierungen zeigen, wo die Seite geschnitten werden soll. Kreuzmarkierungen (auch als
Register- oder Registrierungsmarkierungen bezeichnet) werden fr die Ausrichtung von Bl@t-
tern verwendet.
Markierungen sind nur auf absoluten Seiten-Boxen sichtbar (siehe auch 'size'-Eigenschaft). In
relativen Seiten-Boxen wird die Seiten-Box am Ziel ausgerichtet und die Markierungen befin-
den sich außerhalb des druckbaren Bereichs.
Die Gr=ße, der Stil und die Position der Kreuzmarkierungen ist vom Benutzerprogramm
abh@ngig.
Beim Ausdruck von doppelseitigen Dokumenten sollten sich die Seiten-Boxen auf linken und
rechten Seiten unterscheiden. Das kann durch zwei CSS-Pseudoklassen ausgedrckt werden,
die im Seitenkontext definiert werden k=nnen.
Alle Seiten werden automatisch vom Benutzerprogramm in die Pseudoklassen :left oder :right
eingeordnet.
@page :left {
margin-left: 4cm;
margin-right: 3cm;
}
@page :right {
margin-left: 3cm;
margin-right: 4cm;
}
Wurden fr linke und rechte Seiten unterschiedliche Deklarationen angegeben, muss das
Benutzerprogramm diese bercksichtigen, selbst wenn es die Seiten-Boxen nicht auf linke und
rechte Bl@tter bertr@gt (z. B. auf einen Drucker, der nur einen einseitigen Druck untersttzt).
Mit der Pseudoklasse :first k=nnen Autoren den Stil fr die erste Seite festlegen:
Ob es sich bei der ersten Seite eines Dokuments um :left oder :right handelt, ist von der
Hauptschreibrichtung des Dokuments abh@ngig und liegt außerhalb des Gltigkeitsbereichs die-
ser Spezifikation. Um jedoch zu erzwingen, dass eine erste Seite :left oder :right ist, k=nnen
Autoren einen Seitenumbruch vor der ersten erzeugten Box einfgen (in HTML z. B. wrde
Hinweis: Zus@tzliche Deklarationen in den Pseudoklassen :left oder :right haben keine Auswir-
kung darauf, ob das Dokument doppel- oder einseitig aus dem Drucker kommt (was nicht im
Rahmen dieser Spezifikation liegt).
Zuknftige Versionen von CSS enthalten m=glicherweise andere Seiten-Pseudoklassen. n
Bei der Formatierung von Inhalt im Seitenmodell kann Inhalt auch außerhalb der Seiten-Box
erscheinen. Beispielsweise k=nnte ein Element, dessen 'white-space'-Eigenschaft den Wert 'pre'
hat, eine Box erzeugen, die breiter als die Seiten-Box ist. Werden die Boxen außerdem absolut
positioniert, k=nnte das zu „unpraktischen“ Positionen fhren. Beispielsweise k=nnten Bilder
an der Kante der Seiten-Box oder 100.000 cm unterhalb der Seiten-Box platziert werden.
<edition
[Link]>
Die exakte Formatierung solcher Elemente kann im Rahmen dieser Spezifikation nicht fest-
gelegt werden. Wir empfehlen jedoch, dass sich Autoren und Benutzerprogramme an die fol-
genden allgemeinen Konzepte halten, die sich auf Inhalt außerhalb der Seiten-Box beziehen:
· Inhalt sollte auch etwas ber die Seiten-Box hinaus erlaubt werden, so dass die Seiten „aus-
laufen“.
· Benutzerprogramme sollten vermeiden, eine große Anzahl leerer Seiten-Boxen zu erzeu-
gen, um die Positionierung von Elementen zu bercksichtigen (Sie wollen z. B. nicht 100
leere Seiten ausdrucken). Beachten Sie jedoch, dass es erforderlich sein k=nnte, eine kleine
Anzahl leerer Seiten-Boxen zu erzeugen, um die 'left'- und 'right'-Werte fr 'page-break-be-
fore' und 'page-break-after' zu bercksichtigen.
· Autoren sollten keine Elemente an unpraktischen Positionen positionieren, nur um zu ver-
meiden, sie darzustellen. Stattdessen: Um das Erstellen von Boxen vollst@ndig zu unterdr-
cken, setzen Sie die 'display'-Eigenschaft auf 'none'. Um eine Box unsichtbar zu machen, ver-
wenden Sie die 'visibility'-Eigenschaft.
· Benutzerprogramme k=nnen Boxen, die sich außerhalb der Seiten-Box befinden, unter-
schiedlich verarbeiten, sie beispielsweise verwerfen oder Seiten-Boxen am Ende des Doku-
ments dafr erzeugen.
13.3 Seitenumbr-che
Die folgenden Abschnitte erkl@ren die Seitenformatierung in CSS. Fnf Eigenschaften geben an,
ob das Benutzerprogramm Seitenumbrche vornehmen darf oder soll, und auf welcher Seite
(links oder rechts) der nachfolgende Inhalt fortgesetzt werden soll. Jeder Seitenumbruch been-
det das Layout in der aktuellen Seiten-Box und bewirkt, dass verbleibende Teile des Doku-
mentbaums in einer neuen Seiten-Box angelegt werden.
'page-break-before'
'page-break-after'
'page-break-inside'
auto
Ein Seitenumbruch vor (nach, innerhalb) der erzeugten Box wird weder erzwungen noch
verboten.
always
<edition
[Link]>
'page'
Die 'page'-Eigenschaft kann dazu verwendet werden, einen bestimmten Seitentyp anzugeben,
auf dem ein Element angezeigt werden soll.
Beispiel
Dieses Beispiel platziert alle Tabellen auf einer rechten horizontalen Seite (namens
"rotated"):
@page rotated {size: landscape}
TABLE {page: rotated; page-break-before: right}
Die 'page'-Eigenschaft funktioniert wie folgt: Wenn eine Block-Box mit Inline-Inhalt eine 'pa-
ge'-Eigenschaft hat, die sich von der der vorherigen Block-Box mit Inline-Inhalt unterscheidet,
werden ein oder zwei Seitenumbrche zwischen ihnen eingefgt, und die Boxen hinter dem
Umbruch werden auf einer Seiten-Box des angegebenen Typs dargestellt. Weitere Informa-
tionen finden Sie im Abschnitt „Erzwungene Seitenumbrche“, sp@ter in diesem Kapitel.
Cascading Style Sheets, Level 2
Beispiel
In diesem Beispiel werden die beiden Tabellen auf horizontal ausgerichteten Seiten dar-
gestellt (falls sie Platz haben, auf derselben Seite), und der Seitentyp „narrow“ wird
berhaupt nicht verwendet, obwohl er fr DIV gesetzt wurde:
@page narrow {size: 9cm 18cm}
@page rotated {size: landscape}
DIV {page: narrow}
TABLE {page: rotated}
<DIV>
<TABLE>...</TABLE>
<TABLE>...</TABLE>
</DIV>
'orphans' (Waisen)
'widows' (Witwen)
Die 'orphans'-Eigenschaft („Waisen“, auch „Schusterjungen“ genannt) gibt an, wie viele Zeilen
eines Abschnitts mindestens unten auf einer Seite noch angezeigt werden mssen. Die
'widows'-Eigenschaft („Witwen“, auch „Hurenkinder“ genannt) gibt an, wie viele Zeilen eines
Abschnitts oben auf einer Seite mindestens noch angezeigt werden mssen. Beispiele dafr, wie
<edition
[Link]>
Regel A
Ein Umbruch an der Stelle (1) ist erlaubt, wenn die Eigenschaften 'page-break-after' und
'page-break-before' aller Elemente, die Boxen erzeugen, die auf diesen Rand treffen, dies
erlauben, das heißt, wenn mindestens eine den Wert 'always', 'left' oder 'right' hat oder
wenn alle davon auf 'auto' gesetzt sind.
Regel B
Sind alle Eigenschaften 'auto' und der n@chste gemeinsame Vorfahre aller Elemente hat den
'page-break-inside'-Wert 'avoid', ist ein Umbruch hier nicht erlaubt.
Regel C
Ein Umbruch an der Stelle (2) ist nur dann erlaubt, wenn die Anzahl der Zeilen-Boxen zwi-
schen dem Umbruch und dem Anfang der umschließenden Block-Box gleich dem Wert von
'orphans' oder h=her ist und die Anzahl der Zeilen-Boxen zwischen dem Umbruch und
dem Ende der Box gleich dem Wert von 'widows' oder h=her ist.
Regel D
Darber hinaus ist ein Umbruch an der Stelle (2) nur dann erlaubt, wenn die 'page-break-
inside'-Eigenschaft gleich 'auto' ist.
Falls die obigen Regeln nicht gengend Umbrche zulassen, um zu verhindern, dass der Inhalt in
den Seiten-Boxen berl@uft, werden die Regeln B und D verworfen, um zus@tzliche Umbrche
zu finden.
Wenn das immer noch nicht zu ausreichend vielen Umbrchen fhrt, werden auch die Regeln
A und C verworfen, um noch mehr Umbrche zu finden.
Seitenumbrche k=nnen nicht in absolut positionierten Boxen auftreten.
Ein Seitenumbruch muss an der Stelle (1) erfolgen, wenn unter den 'page-break-after'- und 'pa-
ge-break-before'-Eigenschaften aller Elemente, die Boxen erzeugen, die diesen Rand berhren,
es mindestens eine gibt, die den Wert 'always', 'left' oder 'right' hat.
CSS2 definiert nicht, welcher Seitenumbruch aus einer Menge von erlaubten Seitenumbrchen
verwendet werden muss; CSS2 verbietet einem Benutzerprogramm nicht, an jedem m=glichen
Umbruchpunkt einen Umbruch einzufgen, und auch nicht, berhaupt keine Umbrche zu ver-
wenden. CSS2 empfiehlt jedoch, dass Benutzerprogramme die folgende Heuristik befolgen
(wobei erkannt werden soll, dass sie manchmal widersprchlich sind):
·· So wenig wie m=glich umbrechen.
Alle Seiten, die keinen erzwungenen Seitenumbruch haben, sollten mit ungef@hr der glei-
chen H=he erscheinen.
·· Vermeiden von Umbrchen in Bl=cken, die einen Rahmen haben.
Vermeiden von Umbrchen innerhalb einer Tabelle.
· Vermeiden von Umbrchen innerhalb eines Floating-Elements.
Beispiel
Angenommen, ein Stylesheet enth@lt 'orphans: 4', 'widows: 2', und unten auf der aktuel-
len Seite stehen 20 Zeilen (Zeilen-Boxen) zur Verfgung:
· Wenn ein Absatz am Ende der aktuellen Seite 20 Zeilen oder weniger enth@lt, sollte
er auf der aktuellen Seite platziert werden.
· Enth@lt der Absatz 21 oder 22 Zeilen, darf der zweite Teil des Absatzes die durch
'widows' vorgegebene Beschr@nkung nicht verletzen, deshalb muss der zweite Teil
genau zwei Zeilen umfassen.
· Enth@lt der Absatz 23 Zeilen oder mehr, sollte der erste Teil 20 Zeilen und der
zweite Teil die restlichen Zeilen enthalten.
Angenommen, 'orphans' ist '10', 'widows' ist '20', und unten auf der aktuellen Seite ste-
hen 8 Zeilen zur Verfgung:
· Enth@lt ein Absatz am Ende der aktuellen Seite 8 Zeilen oder weniger, sollte er auf
der aktuellen Seite platziert werden.
· Enth@lt der Absatz 9 oder mehr Zeilen, darf er nicht geteilt werden (das wrde der
'orphan'-Beschr@nkung widersprechen), deshalb sollte er als Block auf die n@chste
Seite verschoben werden.
Beispiel
Betrachten Sie folgendes Beispiel:
@page {
margin-left: 3cm;
Weil der Pseudoklassen-Selektor spezifischer ist, ist der linke Rand auf linken Seiten '4cm', und
alle anderen Seiten (d. h. die rechten Seiten) haben einen linken Rand von '3cm'.
<edition
[Link]>
Diese Eigenschaft beschreibt die Vordergrundfarbe des Textinhalts eines Elements. Es gibt
unterschiedliche M=glichkeiten, rot festzulegen:
Der Hintergrund der Box, die vom Wurzelelement erzeugt wurde, bedeckt die gesamte Zei-
chenfl@che.
Fr HTML-Dokumente empfehlen wir jedoch, dass die Autoren den Hintergrund fr das
BODY-Element und nicht fr das HTML-Element angeben. Benutzerprogramme sollten beim
Einfgen des Hintergrunds die folgenden Priorit@tsregeln beachten: Wenn der Wert der 'back-
ground'-Eigenschaft fr das HTML-Element nicht 'transparent' ist, wird er verwendet, andern-
falls wird der Wert der 'background'-Eigenschaft fr das BODY-Element verwendet. Ist der
resultierende Wert 'transparent', ist die Darstellung nicht definiert.
Beispiel
Gem@ß diesen Regeln hat die Zeichenfl@che fr das folgende HTML-Dokument einen
marmorierten Hintergrund:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Einstellen des Hintergrunds fUr die Zeichenfl]che</TITLE>
<STYLE type="text/css">
BODY { background: url("[Link] }
</STYLE>
</HEAD>
<BODY>
<P>Mein Hintergrund ist Marmor.</P>
</BODY>
</HTML>
'background-color'
Diese Eigenschaft legt die Hintergrundfarbe eines Elements fest, entweder als <color>-Wert,
oder mit dem Schlsselwort 'transparent', so dass die darunter liegenden Farben durchschei-
nen.
Beispiel
H1 { background-color: #F00 }
Diese Eigenschaft legt das Hintergrundbild eines Elements fest. Beim Festlegen eines Hinter-
grundbildes sollten die Autoren auch eine Hintergrundfarbe angeben, die verwendet wird,
wenn das Bild nicht zur Verfgung steht. Wenn das Bild zur Verfgung steht, wird es auf der
vorgegebenen Hintergrundfarbe dargestellt. (Die Farbe wird also in den transparenten Berei-
chen des Bildes sichtbar.)
<edition
[Link]>
Wert fr diese Eigenschaft sind entweder <uri>, womit das Bild angegeben wird, oder 'none',
wenn kein Bild verwendet wird.
Beispiel
BODY { background-image: url("[Link]") }
P { background-image: none }
'background-repeat'
Wenn ein Hintergrundbild angegeben ist, gibt diese Eigenschaft an, ob und wie es wiederholt
(kachelartig angeordnet) werden soll. Die kachelartige Anordnung erstreckt sich ber die
Inhalts- und Polsterbereiche einer Box. Die Werte haben die folgenden Bedeutungen:
repeat
Das Bild wird sowohl horizontal als auch vertikal wiederholt.
repeat-x
Das Bild wird nur horizontal wiederholt.
repeat-y
Cascading Style Sheets, Level 2
Beispiel
BODY {
background: white url("[Link]");
background-repeat: repeat-y;
background-position: center;
}
Abbildung 14.1: Eine Kopie des Hintergrundbildes ist zentriert, die anderen werden unterhalb
und oberhalb angeordnet, so dass ein vertikales Band hinter dem Element entsteht.
'background-attachment'
Wenn ein Hintergrundbild angegeben ist, legt diese Eigenschaft fest, ob es in Hinblick auf den
Viewport feststehend ('fixed') ist, oder ob es zusammen mit dem Dokument weitergebl@ttert
wird ('scroll').
Selbst ein feststehendes Bild ist immer noch nur dann sichtbar, wenn es sich dabei um den Hin-
tergrund oder die Polsterung des Elements handelt. Wenn das Bild also nicht kachelartig ange-
ordnet ist ('background-repeat: repeat'), ist es m=glicherweise nicht sichtbar.
<edition
[Link]>
Beispiel
Dieses Beispiel erzeugt ein vertikales Endlosband, das beim Weiterbl@ttern des Ele-
ments am Viewport „festgemacht“ zu sein scheint.
BODY {
background: red url("[Link]");
background-repeat: repeat-y;
background-attachment: fixed;
}
'background-position'
Wenn ein Hintergrundbild angegeben wurde, legt diese Eigenschaft seine Ausgangsposition fest.
Die Werte haben die folgenden Bedeutungen:
Cascading Style Sheets, Level 2
<percentage> <percentage>
Mit einem Wertepaar von '0% 0%' ist die obere linke Ecke des Bildes an der oberen linken
Ecke der Polsterungskante der Box ausgerichtet. Ein Wertepaar von '100% 100%' platziert
die untere rechte Ecke des Bildes in der unteren rechten Ecke des Polsterbereichs. Mit
einem Wertepaar von '14% 84%' wird der Punkt 14% nach rechts und 84% nach unten im
Auffllbereich platziert.
<length> <length>
Mit einem Wertepaar von '2cm 2cm' wird die obere linke Ecke des Bildes 2cm rechts und
2cm unterhalb der oberen linken Ecke des Auffllbereichs platziert.
top left und left top
Entspricht '0% 0%'.
top, top center und center top
Entspricht '50% 0%'.
right top und top right
Entspricht '100% 0%'.
left, left center und center left
Entspricht '0% 50%'.
Wenn nur ein Prozent- oder L@ngenwert angegeben ist, setzt dieser nur die horizontale Position,
und die vertikale Position liegt bei 50%. Sind zwei Werte angegeben, bestimmt der erste die hori-
zontale Position. Kombinationen aus L@ngen- und Prozentwerten sind ebenso erlaubt (zum Bei-
spiel '50% 2cm') wie negative Positionen. Schlsselw=rter drfen nicht mit Prozentwerten oder
L@ngenwerten kombiniert werden (alle m=glichen Kombinationen sehen Sie oben).
Beispiel
BODY { background: url("[Link]") right top } /* 100% 0% */
BODY { background: url("[Link]") top center } /* 50% 0% */
BODY { background: url("[Link]") center } /* 50% 50% */
BODY { background: url("[Link]") bottom } /* 50% 100% */
Beispiel
In diesem Beispiel wird das (einzelne) Bild in der unteren rechten Ecke des Viewports platziert.
'background'
<edition
[Link]>
Die Eigenschaft 'background' ist eine zusammenfassende Eigenschaft fr die Einstellung der ein-
zelnen Hintergrundeigenschaften ('background-color', 'background-image', 'background-repeat',
'background-attachment' und 'background-position') an einer einzigen Stelle im Stylesheet.
Die Eigenschaft 'background' setzt zun@chst die einzelnen Hintergrundeigenschaften auf ihre
Ausgangswerte und weist ihnen dann die explizit in der Deklaration angegebene Werte zu.
Beispiel
In der ersten Regel des folgenden Beispiels wurde nur ein Wert fr 'background-color'
angegeben, und die anderen einzelnen Eigenschaften werden auf ihren Ausgangswert
gesetzt. In der zweiten Regel wurden alle einzelnen Eigenschaften angegeben.
BODY { background: red }
P { background: url("[Link]") gray 50% repeat fixed }
14.3 Gammakorrektur
Anmerkung: Informationen ber Gamma-Aspekte finden Sie im Gamma-Tutorial der PNG-Spezifi-
kation ([PNG10]). n
Bei der Berechnung der Gammakorrektur k=nnen Benutzerprogramme, die Ausgaben auf
einem CRT-Bildschirm vornehmen, von einem idealen CRT-Bildschirm ausgehen und alle Aus-
wirkungen auf scheinbares Gamma ignorieren, die durch Dithering entstehen. Der daraus abge-
leitete minimale Aufwand, der erforderlich ist, damit sie auf den jeweiligen Plattformen funk-
tionieren, ist unten angegeben.
Anmerkung der bersetzer: CRT ist die Abkrzung fr „Cathode Ray Tube“,
also Kathodenstrahlr=hre. Gemeint sind damit herk=mliche Monitore (oder auch Fern-
seher) im Gegensatz zu LCDs oder TFT-Bildschirmen.
Cascading Style Sheets, Level 2
PC unter MS-Windows
Nichts zu tun
Unix mit X11
Nichts zu tun
Mac mit QuickDraw
Anwendung von Gamma 1,45 [ICC32] (ColorSync-f@hige Applikationen k=nnen ColorSync
einfach das sRGB ICC-Profil bergeben, um eine korrekte Farbkorrektur vorzunehmen).
SGI mit X
Anwendung des Gammawerts aus /etc/config/[Link] (der Standardwert ist
1,70; Applikationen unter Irix 6.2 oder h=her k=nnen dem Farbverwaltungssystem einfach
das sRGB ICC-Profil bergeben).
NeXT unter NeXTStep
Anwendung von Gamma 2,22.
for i := 0 to 255 do
raw := i / 255.0;
corr := pow(raw, gamma);
table[i] := trunc (0.5 + corr * 255.0)
end
Damit vermeidet man transzendentale Mathematik fr jedes Farbattribut, und schon gar pro
Pixel.
<edition
[Link]>
Anmerkung der bersetzer: Der englische Begriff „Font“ wurde hier mit
„Schrift“ bersetzt. An einigen Stellen kann dies zu Missverst@ndnissen und Verwechs-
lungen mit verwandten Begriffen fhren. An solchen Stellen steht der englische Original-
begriff in Klammern hinter dem deutschen Begriff, so wie im vorhergehenden Absatz.
Ein visuelles Benutzerprogramm muss vor der Darstellung eines Zeichens die folgenden
Aspekte bercksichtigen:
·· Wurde fr dieses Zeichen (direkt oder per Vererbung) eine Schrift angegeben?
Steht dem Benutzerprogramm diese Schrift zur Verfgung?
· Ist dies der Fall, auf welche(n) Glyphen wird dieses Zeichen bzw. diese Zeichenfolge abge-
bildet?
· Was ist zu tun, wenn dies nicht der Fall ist? Sollte stattdessen eine andere Schrift verwendet
werden? Kann die Schrift nachgebildet werden? Kann sie aus dem Web geladen werden?
Sowohl in CSS1 als auch in CSS2 geben Autoren die Charakteristik einer Schrift unter Verwen-
dung mehrerer Schrifteigenschaften an.
Wie das Benutzerprogramm diese Eigenschaften verarbeitet, wenn es keine entsprechende
Schrift auf dem Client gibt, wurde von CSS1 auf CSS2 erweitert. In CSS1 wurde vorausgesetzt,
dass auf dem Client-System alle Schriften vorhanden seien, und sie wurden nur dem Namen
nach identifiziert. Alternative Schriften konnten ber die Eigenschaften angegeben werden, aber
darber hinaus hatten die Benutzerprogramme keine M=glichkeit, dem Benutzer außer generi-
schen Standardschriften andere Schriften vorzuschlagen (selbst stilistisch @hnliche Schriften, die
dem Benutzerprogramm zur Verfgung standen).
In CSS2 hat sich dies alles ver@ndert, und es gibt sehr viel mehr Freiheiten fr:
·· Stylesheet-Autoren, um die Schriften zu beschreiben, die verwendet werden sollen
Benutzerprogramme bei der Auswahl einer Schrift, wenn die von einem Autor angefor-
derte Schrift nicht unmittelbar zur Verfgung steht
Cascading Style Sheets, Level 2
Wie das Benutzerprogramm die Schriftdatenbank anlegt, kann im Rahmen dieser Spezifikation
nicht beschrieben werden, weil die Implementierung der Datenbank von verschiedenen Fak-
toren abh@ngig ist, wie beispielsweise dem Betriebssystem, dem Fenstersystem und dem Client.
15.2 Schriftspezifikation
Die erste Phase des CSS-Schriftmechanismus besch@ftigt sich damit, wie Stylesheet-Autoren
festlegen, welche Schriften von einem Benutzerprogramm verwendet werden sollten. Zun@chst
scheint es, dass die offensichtlichste Methode zur Angabe einer Schrift w@re, ihren Namen
anzugeben, einen einzelnen String, der in verschiedene Teile unterteilt ist, zum Beispiel „BT
Swiss 721 Heavy Italic“.
Leider gibt es keine wohldefinierte und universell akzeptierte Taxonomie fr die Klassifizierung
von Schriften abh@ngig von ihren Namen, und Begriffe, die fr einen Schriftfamiliennamen gel-
ten, sind fr andere m=glicherweise nicht geeignet. Beispielsweise wird der Begriff 'italic' (kur-
siv) im Allgemeinen verwendet, um kursiven Text zu beschreiben, aber kursiver Text kann
auch als Oblique, Slanted, Incline, Cursive oder Kursiv bezeichnet werden. Analog enthalten
Schriftnamen h@ufig Begriffe, die die „Gewichtung“ einer Schrift angeben. Die wichtigste Auf-
gabe dieser Namen ist es, Schriften unterschiedlicher Strichst@rke innerhalb einer einzelnen
Schriftfamilie voneinander zu unterscheiden. Es gibt keine allgemein akzeptierte, universelle
Bedeutung dieser Gewichtungsbezeichnungen, und ihre Verwendung variiert stark. Eine Schrift,
die Sie als „Bold“ (fett) bezeichnen wrden, k=nnte auch die Attribute Regular, Roman, Book,
Medium, Semi- oder Demi-Bold, Bold oder Black erhalten, abh@ngig davon, wie schwarz die „nor-
male“ Schrift innerhalb ihres Designs erscheint.
Dieses Fehlen einer systematischen Benennung macht es im Allgemeinen unm=glich, einen
abgewandelten Schriftnamen zu erzeugen, der sich in bestimmter Hinsicht vom Standardnamen
unterscheidet, beispielsweise durch eine fettere Darstellung.
Aufgrund dessen verwendet CSS ein anderes Modell. Schriften werden nicht ber einen
bestimmten Schriftnamen angefordert, sondern durch die Festlegung mehrerer Schrifteigen-
Anmerkung der bersetzer: Der Abschnitt 15.2 ist innerhalb dieses Kapitels fr
den Stylesheet-Autor, der Formatierungen fr Web-Seiten festlegen m=chte, der wich-
tigste Abschnitt. Die darauffolgenden Abschnitte erfordern einerseits ein geh=riges Maß
an typographischen Kenntnissen ber Schriften, andererseits kann man sich nicht auf
die Untersttzung der fortgeschrittenen Features durch Web-Browser verlassen. In
der blichen Praxis ist deshalb dieser Abschnitt maßgeblich.
<edition
[Link]>
des Texts verwendeten Glyphen relativ zu anderen Schriften derselben Schriftfamilie sind.
Schriftdehnung (Font stretch)
Die Schriftdehnung gibt an, wie stark die fr die Darstellung des Texts verwendeten Gly-
phen zusammengeschoben oder auseinandergezogen werden, relativ zu anderen Schriften
derselben Schriftfamilie.
SchriftgrUße (Font size)
Die Schriftgr=ße bezieht sich auf die Gr=ße der Schrift von Grundlinie zu Grundlinie, wenn
sie durchgezogen dargestellt ist (in CSS-Terminologie ist dies der Fall, wenn die Eigenschaf-
ten 'font-size' und 'line-height' denselben Wert haben).
Fr alle Eigenschaften außer 'font-size' beziehen sich 'em'- und 'ex'-L@ngenwerte auf die Schrift-
gr=ße des aktuellen Elements. Fr 'font-size' beziehen sich diese L@ngeneinheiten auf die Schrift-
gr=ße des bergeordneten Elements. Weitere Informationen finden Sie im Abschnitt ber L@n-
geneinheiten.
Die CSS-Schrifteigenschaften werden verwendet, um das gewnschte Erscheinungsbild von
Text im Dokument zu beschreiben. Die Schriftdeskriptoren dagegen werden verwendet, um
die Charakteristiken von Schriften zu beschreiben, so dass eine geeignete Schrift gew@hlt wer-
den kann, um das gewnschte Erscheinungsbild zu erzeugen. Weitere Informationen ber die
Klassifizierung von Schriften finden Sie im Abschnitt ber Schriftdeskriptoren.
'font-family'
Diese Eigenschaft gibt eine Liste mit bevorzugten Familiennamen und/oder generischen Famili-
ennamen an. Es k=nnen verschiedene Probleme auftreten, etwa dass eine einzige Schrift m=gli-
cherweise nicht gengend Glyphen enth@lt, um alle Zeichen in einem Dokument darzustellen,
oder dass nicht alle Schriften auf allen Systemen zur Verfgung stehen. Um mit solchen Prob-
lemen umgehen zu k=nnen, erlaubt diese Eigenschaft den Autoren, eine Liste mit Schriften
anzugeben, alle mit demselben Stil und derselben Gr=ße, die nacheinander ausprobiert werden,
um zu berprfen, ob sie eine Glyphe fr ein bestimmtes Zeichen enthalten. Diese Liste wird
auch als Schriftmenge (Font set) bezeichnet.
Beispiel
Fr Text beispielsweise, der deutsche W=rter kombiniert mit mathematischen Sym-
bolen enth@lt, k=nnte es sein, dass eine Schriftmenge mit zwei Schriften ben=tigt wird,
eine mit lateinischen Buchstaben und Ziffern, die andere mit mathematischen Symbolen.
Nachfolgend sehen Sie ein Beispiel fr eine Schriftmenge, die fr einen Text geeignet ist,
Die in der Schrift „Baskerville“ verfgbaren Glyphen (diese Schrift deckt nur lateinische Buch-
staben ab) werden dieser Schrift entnommen, japanische Buchstaben werden aus „Heisi Mincho
W3“ entnommen, und die mathematischen Symbol-Glyphen stammen aus „Symbol“. Alle ande-
ren stammen aus der generischen Schriftfamilie 'serif'.
Die generische Schriftfamilie wird verwendet, wenn eine oder mehrere der anderen Schriften
in einem Schriftsatz nicht zur Verfgung stehen. Obwohl viele Schriften den Glyph fr ein „feh-
lendes Zeichen“ bereitstellen, in der Regel ein kleines, nicht ausgeflltes Rechteck, sollte dieses,
wie der Name sagt, nicht als bereinstimmung betrachtet werden, außer in der letzten aus-
gewerteten Schrift in einem Schriftsatz.
<edition
[Link]>
<family-name>
Der Name der gew@hlten Schriftfamilie. Im vorigen Beispiel waren „Baskerville“, „Heisi
Mincho W3“ und „Symbol“ Schriftfamilien. Schriftfamiliennamen, in denen Leeraum enthal-
ten ist, sollten in Anfhrungszeichen gesetzt werden. Werden die Anfhrungszeichen weg-
gelassen, werden alle Leeraumzeichen vor und hinter dem Schriftnamen ignoriert, und eine
beliebige Folge von Leeraumzeichen innerhalb des Schriftnamens wird in ein einzelnes Leer-
zeichen umgewandelt.
<generic-family>
Die nachfolgenden generischen Familien sind definiert: 'serif', 'sans-serif', 'cursive', 'fantasy'
und 'monospace'. Eine Beschreibung dieser Familien finden Sie im Abschnitt ber generi-
sche Schriftfamilien (15.2.6). Die Namen generischer Schriftfamilien sind Schlsselw=rter
und mssten deshalb nicht in Anfhrungszeichen stehen.
Den Autoren ist zu empfehlen, dass sie mindestens eine generische Schriftfamilie als letzte
Alternative angeben, um eine gesteigerte Robustheit zu gew@hrleisten.
Beispiel
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Font test</TITLE>
<STYLE type="text/css">
BODY { font-family: "new century schoolbook", serif }
</STYLE>
</HEAD>
<BODY>
<H1 style="font-family: 'Meine eigene Schrift', fantasy">Test</H1>
Cascading Style Sheets, Level 2
Anmerkung der bersetzer: Hier sei darauf hingewiesen, dass nicht nur die
Schriften, die auf unterschiedlichen Systemen installiert sind, voneinander abweichen
k=nnen, auch kann eine Schrift unter verschiedenen Namen bekannt sein. Das Problem
wird in sp@teren Abschnitten dieses Kapitels thematisiert. Die oben benutzte New Cen-
tury Schoolbook kann zum Beispiel auch kurz „NewCent“ heißen; gegebenenfalls auch
abh@ngig von Systembeschr@nkungen wie maximalen Dateinamenl@ngen. Gerade vor
diesem Hintergrund ist die Empfehlung, eine generische Schriftfamilie anzugeben, nur zu
unterstreichen.
Die umfangreichere Selektorsyntax von CSS2 kann genutzt werden, um eine sprachabh@ngige
Typographie zu realisieren. Beispielsweise sind einige chinesische und japanische Zeichen unter
demselben Unicode-Codepunkt zusammengefasst, obwohl die abstrakten Glyphen in den bei-
den Sprachen nicht gleich sind:
Damit werden alle Elemente ausgew@hlt, die in der betreffenden Sprache enthalten sind – Japa-
nisch oder traditionelles Chinesisch –, und eine geeignete Schrift wird angefordert.
'font-style'
Die Eigenschaft 'font-style' fordert normale (manchmal auch als „roman“ oder „upright“
bezeichnet), kursive und geneigte Darstellungen innerhalb einer Schriftfamilie an. Die Werte
haben die folgenden Bedeutungen:
normal
Gibt eine Schrift an, die in der Schriftdatenbank des Benutzerprogramms als 'normal' klassi-
fiziert ist.
oblique
Beispiel
In diesem Beispiel wird normaler Text in einem H1-, H2- oder H3-Element in kursiver
Schrift dargestellt. Betonter Text (EM) in einem H1-Element dagegen erscheint in nor-
maler Schrift.
H1, H2, H3 { font-style: italic }
H1 EM { font-style: normal }
<edition
[Link]>
'font-variant'
In einer Schrift mit Kapit@lchen sehen die Glyphen fr die Kleinbuchstaben @hnlich wie die fr
die Großbuchstaben aus, aber sie sind etwas kleiner und haben etwas andere Proportionen.
Die Eigenschaft 'font-variant' fordert eine Schrift fr Situationen an, in denen zwischen Groß-
und Kleinschreibung unterschieden wird, wie beispielsweise bei der lateinischen Schrift. Diese
Eigenschaft hat keine sichtbaren Effekte in Dokumenten, in denen es keine Groß- und Klein-
schreibung gibt, wie bei den meisten Schreibsystemen der Welt. Die Werte haben die folgen-
den Bedeutungen:
normal
Gibt eine Schrift an, die nicht als Kapit@lchenschrift gekennzeichnet ist.
small-caps
Gibt eine Schrift an, die als Kapit@lchenschrift gekennzeichnet ist. Steht keine eigene Kapi-
t@lchenschrift zur Verfgung, sollten die Benutzerprogramme eine Kapit@lchenschrift simu-
lieren, indem sie beispielsweise eine normale Schrift verwenden und die Kleinbuchstaben
durch verkleinerte Großbuchstaben ersetzen. Als letzten Ausweg k=nnen nicht verklei-
nerte Großbuchstaben-Glyphen in einer normalen Schrift die Glyphen in einer Kapit@lchen-
schrift ersetzen, so dass der Text aussieht, als sei er nur in Großbuchstaben geschrieben.
Cascading Style Sheets, Level 2
Beispiel
Das nachfolgende Beispiel erzeugt ein H3-Element in Kapit@lchen mit betonten W=r-
tern (EM) in geneigten Kapit@lchen:
H3 { font-variant: small-caps }
EM { font-style: oblique }
Wenn diese Eigenschaft bewirkt, dass Text in Großbuchstaben umgewandelt wird, gelten die-
selben Betrachtungen wie fr 'text-transform'.
'font-weight'
Wert: normal | bold | bolder | lighter |100 | 200 | 300 | 400 | 500 | 600
| 700 | 800 | 900 | inherit
Ausgangswert: Normal
Angewendet auf: Alle Elemente
Vererbt: Ja
Prozentwerte: N/A
Medium: Visual
Die Eigenschaft 'font-weight' gibt die Gewichtung der Schrift an. Die Werte haben die folgen-
den Bedeutungen:
Beispiel
P { font-weight: normal } /* 400 */
H1 { font-weight: 700 } /* fett */
BODY { font-weight: 400 }
STRONG { font-weight: bolder } /* 500 falls verfUgbar */
<edition
[Link]>
'font-stretch'
Die Eigenschaft 'font-stretch' w@hlt eine normale, komprimierte oder gedehnte Darstellung aus
einer Schriftfamilie. Absolute Schlsselwortwerte haben die folgende Reihenfolge, von der
komprimiertesten bis hin zur am weitesten gedehnten Schrift:
1. ultra-condensed
2. extra-condensed
3. condensed
4. semi-condensed
5. normal
6. semi-expanded
7. expanded
8. extra-expanded
9. ultra-expanded
Das relative Schlsselwort 'wider' setzt den Wert auf den n@chstweiter gedehnten Wert ober-
halb des geerbten Werts (wobei bei 'ultra-expanded' keine weitere Steigerung m=glich ist); das
relative Schlsselwort 'narrower' setzt den Wert auf den n@chstst@rker komprimierten Wert
Cascading Style Sheets, Level 2
unterhalb des geerbten Werts (wobei unterhalb 'ultra-condensed' keine weitere Komprimie-
rung erfolgt).
'font-size'
Diese Eigenschaft beschreibt die Gr=ße der Schrift bei der Darstellung in voller Zeilenh=he.
Die Werte haben die folgenden Bedeutungen:
<absolute-size>
Ein <absolute-size>-Schlsselwort bezieht sich auf einen Eintrag in einer Tabelle mit Schriftgr=-
ßen, die vom Benutzerprogramm berechnet und verwaltet werden. M=gliche Werte sind:
[xx-small | x-small | small | medium | large | x-large | xx-large]
Auf einem Computerbildschirm wird ein Skalierungsfaktor von 1.2 zwischen benachbarten
Indizes empfohlen; wenn die Schrift 'medium' 12pt groß ist, k=nnte die Schrift 'large' 14.4pt
groß sein. Unterschiedliche Medien brauchen m=glicherweise unterschiedliche Skalierungs-
faktoren. Außerdem sollte das Benutzerprogramm bei der Berechnung der Tabelle die
Qualit@t und die Verfgbarkeit von Schriften bercksichtigen. Die Tabelle kann sich zwi-
schen einzelnen Schriftfamilien unterscheiden.
Hinweis: In CSS1 lag der empfohlene Skalierungsfaktor zwischen benachbarten Indizes bei 1,5,
was sich der Erfahrung der Benutzer nach als zu groß erwies. n
<relative-size>
Ein <relative-size>-Schlsselwort wird als relativ zur Tabelle der Schriftgr=ßen und der
Schriftgr=ße des bergeordneten Elements interpretiert. M=gliche Werte sind:
[larger | smaller]
Hat das bergeordnete Element beispielsweise die Schriftgr=ße 'medium', macht der Wert
'larger' die Schriftgr=ße des aktuellen Elements 'large'. Liegt die Gr=ße eines bergeord-
neten Elements nicht nahe an einem Tabelleneintrag, steht es dem Benutzerprogramm frei,
zwischen Tabelleneintr@gen zu interpolieren und auf den n@chsten aufzurunden. Das Benut-
zerprogramm muss m=glicherweise Tabellenwerte extrapolieren, wenn die numerischen
Werte ber die Schlsselw=rter hinausgehen.
<length>
Ein L@ngenwert gibt eine absolute Schriftgr=ße an (die von der Schrifttabelle des Benutzer-
Der tats@chliche Wert dieser Eigenschaft kann sich von dem berechneten Wert aufgrund eines
numerischen Wertes von 'font-size-adjust' und der Unverfgbarkeit mancher Schriftgr=ßen
unterscheiden.
Untergeordnete Werte erben den berechneten 'font-size'-Wert (andernfalls w@re der Effekt
von 'font-size-adjust' vermischt).
Beispiel
P { font-size: 12pt; }
BLOCKQUOTE { font-size: larger }
EM { font-size: 150% }
EM { font-size: 1.5em }
<edition
[Link]>
'font-size-adjust'
In Schriften mit Groß-/Kleinschreibung sind die subjektive sichtbare Gr=ße und Lesbarkeit
einer Schrift weniger von ihrem 'font-size'-Wert abh@ngig, als vielmehr vom Wert ihrer
'x-height', oder, was praktischer ist, vom Verh@ltnis dieser beiden Werte, dem so genannten
Aspektwert (Schriftgr=ße dividiert durch x-height). Je h=her der Aspektwert ist, desto wahr-
scheinlicher ist es, dass eine Schrift bei kleineren Gr=ßen leserlich ist. Umgekehrt gilt, dass
Schriften mit einem kleinen Aspektwert schneller unterhalb einer vorgegebenen Schwellwert-
gr=ße unleserlich werden als Schriften mit einem h=heren Aspektwert. Eine einfache Schrifter-
setzung, die sich nur nach der Schriftgr=ße richtet, k=nnte also zu unleserlichen Zeichen fh-
ren.
Die bekannte Schrift Verdana beispielsweise hat einen Aspektwert von 0,58; wenn die Schrift-
gr=ße von Verdana 100 Einheiten entspricht, dann entspricht ihre x-height 58 Einheiten. Im
Vergleich dazu hat Times New Roman einen Aspektwert von 0,46. Verdana bleibt deshalb ten-
denziell bei kleineren Gr=ßen besser lesbar als Times New Roman. Im Gegenzug dazu
erscheint Verdana h@ufig als „zu groß“, wenn sie anstelle von Times New Roman in einer zuvor
festgelegten Gr=ße eingesetzt wird.
Diese Eigenschaft erlaubt den Autoren, einen Aspektwert fr ein Element anzugeben, der die
x-height der Schrift der ersten Wahl in der Ersatzschrift beibeh@lt. Die Werte haben die folgen-
Cascading Style Sheets, Level 2
den Bedeutungen:
none
Beh@lt die x-height der Schrift nicht bei.
<number>
Gibt den Aspektwert an. Die Zahl bezieht sich auf den Aspektwert der Schrift der ersten
Wahl. Der Skalierfaktor fr verfgbare Schriften wird gem@ß der folgenden Formel berech-
net:
y(a/a') = c
Wobei Folgendes gilt:
y = 'font-size' oder Schrift der ersten Wahl
a' = Aspektwert der verfUgbaren Schrift
c = 'font-size', die auf die verfUgbare Schrift angewendet wird
Steht beispielsweise 14px Verdana (mit einem Aspektwert von 0,58) nicht zur Verfgung
und die verfgbare Schrift hat den Aspektwert 0,46, w@re die Schriftgr=ße des Ersatzes
14 & (0,58/0,46) = 17,65px.
Anpassungen der Schriftgr=ße finden statt, wenn der tats@chliche Wert von 'font-size' berech-
net wird. Weil die Vererbung auf dem berechneten Wert basiert, erben die untergeordneten
Elemente nicht angepasste Werte.
Das erste der nachfolgenden Bilder zeigt mehrere Schriften, dargestellt in einer gebr@uchlichen
Schriftgr=ße (11 pt bei 72 ppi), zusammen mit ihren Aspektwerten. Beachten Sie, dass die
Schriften mit h=heren Aspektwerten gr=ßer erscheinen als die mit kleineren. Schriften mit sehr
kleinen Aspektwerten sind in der gezeigten Gr=ße unleserlich.
<edition
[Link]>
Das n@chste Bild zeigt die Ergebnisse von 'font-size-adjust', wobei Verdana als „erste Wahl“ gilt,
zusammen mit dem angewendeten Skalierfaktor. Weil sie angepasst sind, sind die sichtbaren
Schriften ann@hernd linear ber die verschiedenen Schriften, obwohl die tats@chlichen (em-)
Gr=ßen um mehr als 100% variieren. Beachten Sie, dass 'font-size-adjust' dazu tendiert, auch
die horizontale Zeilenmetrik zu stabilisieren.
Cascading Style Sheets, Level 2
'font'
Die Eigenschaft 'font' ist, von nachfolgend beschriebenen Ausnahmen abgesehen, eine zusam-
menfassende Eigenschaft fr die Einstellung von 'font-style', 'font-variant', 'font-weight', 'font-
size', 'line-height' und 'font-family' an einer gemeinsamen Stelle im Stylesheet. Die Syntax dieser
Eigenschaft basiert auf einer traditionellen typografischen zusammenfassenden Notation, um
mehrere Eigenschaften fr Schriften zu setzen.
Alle auf die Schrift bezogenen Eigenschaften werden zun@chst auf ihre Ausgangswerte zurck-
gesetzt, auch die im vorigen Abschnitt aufgelisteten sowie 'font-stretch' und 'font-size-adjust'.
Anschließend erhalten Eigenschaften, denen in der zusammenfassenden Eigenschaft 'font' expli-
zit Werte zugeordnet sind, genau diese Werte. Eine Definition der erlaubten und der Aus-
gangswerte finden Sie in den zuvor definierten Eigenschaften. Aus Grnden der Abw@rtskom-
patibilit@t ist es nicht m=glich, 'font-stretch' und 'font-size-adjust' unter Verwendung von 'font'
auf andere als ihre Ausgangswerte zu setzen; stattdessen setzen Sie dafr die separaten Eigen-
schaften.
In der zweiten Regel bezieht sich der Prozentwert fr die Schriftgr=ße ('80%') auf die Schrift-
gr=ße des bergeordneten Elements. In der dritten Regel bezieht sich der Prozentwert fr die
Zeilenh=he ('110%') auf die Schriftgr=ße des eigentlichen Elements.
Die ersten drei Regeln treffen keine expliziten Angaben fr 'font-variant' und 'font-weight', des-
halb erhalten diese Eigenschaften ihre Ausgangswerte ('normal'). Beachten Sie, dass der Schrift-
familienname „new century schoolbook“, der Leerzeichen enth@lt, in Anfhrungszeichen einge-
schlossen ist. Die vierte Regel setzt 'font-weight' auf 'bold', 'font-style' auf 'italic' und 'font-
variant' implizit auf 'normal'.
<edition
[Link]>
Die fnfte Regel setzt 'font-variant' ('small-caps'), 'font-size' (120% der Schriftgr=ße des berge-
ordneten Elements), 'line-height' (120% der Schriftgr=ße) und die 'font-family' ('fantasy'). Es
folgt, dass sich das Schlsselwort 'normal' auf die beiden restlichen Eigenschaften bezieht, 'font-
style' und 'font-weight'.
Die sechste Regel setzt 'font-style', 'font-size' und 'font-family', die anderen Schrifteigenschaften
werden auf ihre Ausgangswerte gesetzt. Anschließend setzt sie 'font-stretch' auf 'condensed',
weil diese Eigenschaft nicht mit Hilfe der zusammenfassenden Eigenschaft 'font' auf diesen Wert
gesetzt werden kann.
Die nachfolgenden Werte beziehen sich auf Systemschriften:
caption
Die fr Steuerelemente mit Beschriftungen verwendete Schrift (z. B. Schaltfl@chen, Drop-
down-Steuerelemente usw.).
icon
Die fr die Beschriftung von Icons verwendete Schrift.
menu
Die in Mens verwendete Schrift (z. B. Dropdown-Mens oder Menlisten).
message-box
Die in Dialogfeldern verwendete Schrift.
small-caption
Die fr die Beschriftung kleiner Steuerelemente verwendete Schrift.
status-bar
Die fr Fensterstatusleisten verwendete Schrift.
Anmerkung der bersetzer: Mit diesen Werten ist es m=glich, fr Teile einer
Webseite die gleichen Schriften zu verwenden, wie sie fr das Fenstersystem (etwa
Windows oder X) benutzt werden, das auf dem Rechner des Betrachters l@uft. Beach-
Cascading Style Sheets, Level 2
Systemschriften k=nnen nur als Ganzes gesetzt werden; das bedeutet, die Schriftfamilie, Gr=ße,
Gewichtung, Stil usw. werden gleichzeitig gesetzt. Diese Werte k=nnen gegebenenfalls einzeln
ver@ndert werden. Gibt es auf einer bestimmten Plattform keine Schrift mit den vorgegebenen
Charakteristika, sollte das Benutzerprogramm entweder intelligent ersetzen (z. B. k=nnte fr
die 'small-caption'-Schrift eine kleinere Version der 'caption'-Schrift verwendet werden) oder
aber seine Standardschrift verwenden. Wie fr regul@re Schriften gilt auch fr eine System-
schrift, dass, wenn eine der einzelnen Eigenschaften nicht Teil der verfgbaren Benutzereinstel-
lungen des Betriebssystems sind, diese Eigenschaften auf ihre Ausgangswerte gesetzt werden
sollten.
Deshalb ist diese Eigenschaft „fast“ eine zusammenfassende Eigenschaft: Systemschriften k=n-
nen nur mit dieser Eigenschaft angegeben werden, nicht mit 'font-family' selbst, deshalb erlaubt
'font' den Autoren, mehr als die Summe seiner enthaltenen Eigenschaften zu setzen. Die einzel-
nen Eigenschaften wie beispielsweise 'font-weight' erhalten dennoch Werte, die aus der Sys-
temschrift stammen und unabh@ngig variiert werden k=nnen.
Beispiel
BUTTON { font: 300 italic 1.3em/1.7em "FB Armada", sans-serif }
BUTTON P { font: menu }
BUTTON P EM { font-weight: bolder }
Wenn die fr Dropdown-Mens verwendete Schrift auf einem bestimmten System beispiels-
weise 9 Punkt Charcoal ist, mit einer Gewichtung von 600, wrden die P-Elemente, die Ablei-
tungen von BUTTON sind, so dargestellt, als g@lte die folgende Regel:
Weil die zusammenfassende Eigenschaft 'font' jede Eigenschaft, der nicht explizit ein Wert
zugewiesen wird, auf ihren Ausgangswert zurcksetzt, hat das denselben Effekt wie die folgende
Deklaration:
BUTTON P {
font-style: normal;
font-variant: normal;
font-weight: 600;
font-size: 9pt;
line-height: normal;
font-family: Charcoal
}
Generische Schriftfamilien sind ein Rckgriffsmechanismus. Sie sind eine M=glichkeit, wenigs-
tens einen Teil der Absichten des Stylesheet-Autors zu realisieren, falls im schlimmsten Fall
keine der angegebenen Schriften ausgew@hlt werden kann. Einer optimalen typografischen
Steuerung halber sollten in Stylesheets bestimmte benannte Schriften verwendet werden.
serif
Glyphen von Serifen-Schriften, wie der Begriff in CSS verwendet wird, haben Abschlussstriche,
ausgestellte oder spitz zulaufende Enden oder tats@chlich Serifen-Endungen (inklusive Slab
Serifs). Serifen-Schriften sind normalerweise proportional. H@ufig weisen sie eine gr=ßere
Variation zwischen dicken und dnnen Strichen als Schriften aus der generischen Schriftfamilie
'sans-serif' (serifenlos) auf. CSS verwendet den Begriff 'serif' fr eine Schrift einer beliebigen
Sprachschrift (script), obwohl andere Namen vertrauter fr bestimmte Sprachschriften (script)
sein k=nnen, wie beispielsweise Mincho (Japanisch), Sung oder Song (Chinesisch), Totum oder
Kodig (Koreanisch). Jede auf diese Weise beschriebene Schrift kann verwendet werden, um die
generische 'serif'-Familie darzustellen.
<edition
[Link]>
Beispiele fr Schriften, die dieser Beschreibung entsprechen, sind unter anderem:
Lateinische Schriften Times New Roman, Bodoni, Garamond, Minion Web, ITC
Stone Serif, MS Georgia, Bitstram, Cyberbit
Griechische Schriften Bitstream Cyberbit
Kyrillische Schriften Adobe Minion Cyrillic, Excelcior Cyrillic Upright, Monotype
Albion 70, Bitstream Cyberbit, ER Bukinst
Hebr@ische Schriften New Peninim, Raanana, Bitstream Cyberbit
Japanische Schriften Ryumin Light-KL, Kyokasho ICA, Futo Min A101
Arabische Schriften Bitstream Cyberbit
Cherokee-Schriften Lo Cicero Cherokee
sans-serif
Glyphen in serifenlosen Schriften, wie der Begriff in CSS verwendet wird, haben Strichenden,
die gerade sind – ohne spitzes Zulaufen, vertikale Abschlussstriche oder andere Verzierungen.
Serifenlose Schriften sind in der Regel proportional. H@ufig weisen sie im Vergleich mit Schrif-
ten aus der 'serif'-Familie geringere Abweichungen zwischen dicken und dnnen Strichen auf.
CSS verwendet den Begriff 'sans-serif', um auf eine Schrift fr eine beliebige Sprachschrift
(script) zu verweisen, obwohl fr bestimmte Sprachschriften (script) andere Namen m=glicher-
weise gebr@uchlicher sind, wie beispielsweise Gothic (Japanisch), Kai (Chinesisch) oder Pathang
(Koreanisch). Jede auf diese Weise beschriebene Schrift kann verwendet werden, um die gene-
rische 'sans-serif'-Familie darzustellen.
Beispiele fr Schriften, die dieser Beschreibung entsprechen, sind unter anderem:
Griechische Schriften Attika, Typiko New Era, MS Tahoma, Monotype Gill Sans
571, Helvetica Greek
Kyrillische Schriften Helvetica Cyrillic, ER Univers, Lucida Sans Unicode, Bastion
Hebr@ische Schriften Arial Hebrew, MS Tahoma
Japanische Schriften Shin Go, Heisei Kaku Gothic W5
Arabische Schriften MS Tahoma
cursive
Glyphen in kursiven Schriften, wie der Begriff in CSS verwendet wird, haben im Allgemeinen
entweder verbindende Striche oder andere kursive Charakteristika, die ber diejenigen von
geneigten Schriften hinausgehen. Die Glyphen sind teilweise oder vollst@ndig verbunden, und
das Ergebnis sieht mehr wie eine Handschrift oder eine Pinselschrift aus, als wie ein gedrucktes
Buchstabenwerk. Schriften fr einige Sprachschriften (script), wie beispielsweise Arabisch, sind
fast immer kursiv. CSS verwendet den Begriff 'cursive' fr eine Schrift fr Sprachschriften
(script), obwohl in Schriftnamen auch andere Namen verwendet werden wie beispielsweise
Chancery, Brush, Swing oder Script.
Beispiele fr Schriften, die dieser Beschreibung entsprechen, sind unter anderem:
fantasy
Fantasy-Schriften, wie sie in CSS verwendet werden, sind haupts@chlich dekorativ, enthalten
aber immer noch Zeichendarstellungen (im Gegensatz zu Pi- oder Picture-Schriften, die keine
Buchstaben darstellen). Beispiele sind unter anderem:
monospace
Das einzige Kriterium fr eine Monospace-Schrift ist, dass alle Glyphen dieselbe feste Breite
aufweisen. (Das kann dazu fhren, dass einige Schriften, wie beispielsweise Arabisch, eher selt-
sam aussehen.) Der Effekt ist ein Schriftbild @hnlich dem einer manuellen Schreibmaschine.
Diese Schrift wird h@ufig verwendet, um Beispiele fr Computercode darzustellen.
Beispiele fr Schriften, die dieser Beschreibung entsprechen, sind unter anderem:
15.3 Schriftauswahl
Die zweite Phase des CSS2-Schriftmechanismus betrifft die Schriftauswahl, die ein Benutzer-
programm abh@ngig von den vom Autor angegebenen Schrifteigenschaften, verfgbaren Schrif-
ten und so weiter trifft. Die Details fr den Schriftvergleichalgorithmus finden Sie im Folgenden
beschrieben.
Es gibt vier m=gliche Aktionen fr die Schriftauswahl: Namensvergleich, intelligenter Vergleich,
Synthese und Download.
Schriftnamensvergleich
In diesem Fall verwendet das Benutzerprogramm eine bereits existierende, verfgbare Schrift,
die denselben Familiennamen wie die angeforderte Schrift hat. (Beachten Sie, dass das Erschei-
nungsbild und die Metrik m=glicherweise nicht bereinstimmen, wenn die Schrift, die der Autor
<edition
[Link]>
des Dokuments verwendet hat, und die Schrift auf dem Client-System aus unterschiedlichen
Quellen stammen.) Die Vergleichsinformation ist auf die CSS-Schrifteigenschaften beschr@nkt,
inklusive des Familiennamens. Dies ist die einzige Methode, die in CSS1 verwendet wird.
Intelligenter Schriftvergleich
In diesem Fall verwendet das Benutzerprogramm eine existierende, verfgbare Schrift, die die
beste bereinstimmung mit dem Erscheinungsbild der angeforderten Schrift ergibt. (Beachten
Sie, dass die Metrik m=glicherweise nicht genau bereinstimmt.) Die Vergleichsinformation
enth@lt Informationen ber die Art der Schrift (Text oder Symbol), die Art der Serifen, die
Gewichtung, die Buchstabenh=he, die x-H=he, Steigung, Gef@lle, Neigung usw.
Schriftsynthese
In diesem Fall erzeugt das Benutzerprogramm eine Schrift, die nicht nur ein ganz @hnliches
Erscheinungsbild aufweist, sondern auch in der Metrik mit der angeforderten Schrift berein-
stimmt. Die Syntheseinformation beinhaltet die Vergleichsinformationen und fordert normaler-
weise genauere Werte fr die Parameter, als fr andere Vergleichsschemata verwendet wer-
den. Insbesondere fordert die Synthese eine exakte Breitenmetrik und einen exakten Ersatz
von Zeichen durch Glyphen sowie Positionsinformationen, wenn alle Layouteigenschaften der
angegebenen Schrift beibehalten werden sollen.
Schrift-Download
Schließlich kann das Benutzerprogramm eine Schrift ber das Web laden. Das entspricht in
etwa dem Prozess, der abl@uft, wenn Bilder, Sounds oder Applets ber das Web geladen wer-
den, um sie im aktuellen Dokument anzuzeigen. Es kann hier deshalb ebenso zu gewissen Ver-
z=gerungen kommen, bevor die Seite angezeigt wird.
Die progressive Darstellung ist eine Kombination aus Download und einer der anderen Metho-
den; sie stellt tempor@r eine Ersatzschrift bereit (wozu der Namensvergleich, intelligenter Ver-
gleich oder Synthese verwendet werden), so dass der Inhalt bereits gelesen werden kann, w@h-
Cascading Style Sheets, Level 2
rend die gewnschte Schrift heruntergeladen wird. Nachdem die ben=tigte Schrift erfolgreich
heruntergeladen wurde, ersetzt sie die tempor@re Schrift, hoffentlich ohne dass eine Neudar-
stellung der Seite erforderlich wird.
Hinweis: Fr die progressive Darstellung wird Metrikinformation ber die Schrift ben=tigt, um
einen erneuten Layout-Aufbau des Inhalts zu vermeiden, wenn die gewnschte Schrift geladen
und dargestellt wurde. Diese Metrikinformation ist ausreichend umfassend, so dass sie norma-
lerweise nur h=chstens einmal pro Schrift in einem Dokument angegeben werden muss. n
Die Schriftbeschreibung stellt die Brcke zwischen der Schriftspezifikation eines Autors und
den Schriftdaten dar. Das sind die Daten, die fr die Formatierung von Text und die Darstellung
der abstrakten Glyphen, auf die die Zeichen abgebildet werden, ben=tigt werden. Schriften
werden anhand von Stylesheet-Eigenschaften beschrieben.
Die Schriftbeschreibung wird der Schriftdatenbank hinzugefgt und dann verwendet, um die
relevanten Schriftdaten auszuw@hlen. Die Schriftbeschreibung enth@lt Deskriptoren, wie bei-
spielsweise die Position der Schriftdaten im Web oder Charakteristika dieser Schriftdaten. Die
@font-face {<font-description> }
descriptor: wert;
descriptor: wert;
[...]
descriptor: wert;
Jede @font-face-Regel gibt einen Wert fr jeden Schriftdeskriptor an, entweder implizit oder
explizit. Die nicht explizit angegebenen Werte nehmen in der Regel den fr jeden Deskriptor
in dieser Spezifikation angegebenen Ausgangswert an. Diese Deskriptoren gelten ausschließlich
innerhalb des Kontexts der @font-face-Regel, in der sie definiert sind, und sind nicht auf Ele-
mente der Dokumentsprache anzuwenden. Es gibt also kein Konzept, das beschreibt, auf wel-
che Elemente sich der Deskriptor bezieht, oder das festlegt, ob die Werte von den untergeord-
Beispiel
Beispielsweise ist nachfolgend die Schrift 'Robson Celtic' definiert und wird in einem
Stylesheet, das in einem HTML-Dokument enthalten ist, verwendet.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Font test</TITLE>
<STYLE TYPE="text/css" MEDIA="screen, print">
@font-face {
font-family: "Robson Celtic";
src: url("[Link]
}
H1 { font-family: "Robson Celtic", serif }
</STYLE>
</HEAD>
<BODY>
<edition
[Link]>
Das Stylesheet (im STYLE-Element) enth@lt eine CSS-Regel, die fr alle H1-Elemente festlegt,
dass sie die Schriftfamilie 'Robson Celtic' verwenden.
Eine CSS1-Implementierung sucht client-seitig nach einer Schrift, deren Familienname und
andere Eigenschaften mit denen von 'Robson Celtic' bereinstimmen. Wenn sie keine entspre-
chende Schrift findet, verwendet sie die fr den Benutzerprogramm spezifische Fallback-Seri-
fenschrift (die definitionsgem@ß existiert).
Ein Benutzerprogramm, das CSS2 implementiert, wertet bei der Suche nach einer Schrift-
beschreibung, die 'Robson Celtic' definiert, zun@chst die @font-face-Regeln aus. Dieses Beispiel
enth@lt eine bereinstimmende Regel. Obwohl diese Regel nicht viele Schriftdaten enth@lt, hat
sie einen URI, unter dem die Schrift fr die Darstellung in diesem Dokument geladen werden
kann. Anderen Applikationen sollten die heruntergeladenen Schriften nicht zur Verfgung
gestellt werden. Wird keine bereinstimmende @font-face gefunden, wendet das Benutzer-
programm denselben Vergleich wie ein Benutzerprogramm an, das CSS1 implementiert hat.
Beachten Sie, dass wenn die Schrift 'Robson Celtic' auf dem Client-System installiert gewesen
w,re, das Benutzerprogramm veranlasst worden w@re, fr die installierte Kopie einen Eintrag in
der Schriftdatenbank vorzunehmen, wie im Abschnitt ber den Algorithmus zum Schriftver-
gleich beschrieben (15.5). Die installierte Kopie h@tte im obigen Beispiel vor der heruntergela-
denen Schrift eine bereinstimmung erzeugt.
CSS1-Implementierungen, die die @font-face-Regel nicht verstehen, treffen auf die =ffnende
geschweifte Klammer und ignorieren alles weitere bis zur bereinstimmenden schließenden
geschweiften Klammer. Diese At-Regel ist konform zu der CSS-Forderung, dass ein aufw@rts-
kompatibles Parsing m=glich sein soll. Die Parser k=nnen diese Regeln ignorieren, ohne einen
Fehler zu melden.
Legt man die Schriftdeskriptoren separat von den Schriftdaten ab, hat das außer der Schriftaus-
wahl und/oder dem Schriftersatz noch weitere Vorteile. Der Schutz der Daten sowie die Repli-
Cascading Style Sheets, Level 2
kationsbeschr@nkungen fr die Schriftdeskriptoren k=nnen sehr viel schw@cher als fr die
vollst@ndigen Schriftdaten sein. Damit k=nnte es m=glich sein, die Schriftdefinition lokal zu
installieren, oder sie zumindest in einem lokalen Cache abzulegen, wenn sie in einem allgemein
zug@nglichen Stylesheet auftritt; dafr ist es nicht erforderlich, mehr als einmal pro angegebener
Schrift auf die vollst@ndige Schriftdefinition ber das Web zuzugreifen.
Wird ein Schrift-Deskriptor dupliziert, dominiert der zuletzt aufgetretene Deskriptor und der
Rest muss ignoriert werden.
Außerdem mssen alle Deskriptoren ignoriert werden, die vom Benutzerprogramm nicht
erkannt werden oder keinen Sinn fr ihn ergeben. Zuknftige Versionen von CSS erlauben
m=glicherweise zus@tzliche Deskriptoren, um den Ersatz, den Vergleich oder die Synthese von
Schriften noch besser durchfhren zu k=nnen.
Die folgenden Deskriptoren haben dieselben Namen wie die entsprechenden CSS2-Schrift-
eigenschaften und nehmen einen einzelnen Wert oder eine Liste mit durch Kommas voneinan-
der getrennten Werten an.
Die Werte innerhalb dieser Liste sind dieselben wie die fr die entsprechende CSS2-Eigen-
schaft, außer wenn explizit anders angegeben. Gibt es einen einzelnen Wert, muss eine genaue
bereinstimmung mit diesem Wert vorliegen. Gibt es eine Liste, kann eine beliebiges Listenele-
ment eine bereinstimmung erzeugen. Wird der Deskriptor aus @font-face weggelassen, wird
der Ausgangswert fr den Deskriptor verwendet.
'font-family' (Deskriptor)
Dies ist der Deskriptor fr den Schriftfamiliennamen einer Schrift. Er nimmt dieselben Werte
wie die Eigenschaft 'font-family' an.
'font-style' (Deskriptor)
Dies ist der Deskriptor fr den Stil einer Schrift. Er nimmt dieselben Werte an wie die Eigen-
schaft 'font-style', außer wenn eine Liste erlaubt ist, deren Werte durch Kommas voneinander
getrennt sind.
'font-variant' (Deskriptor)
Damit gibt CSS an, ob diese Schrift die Kapit@lchen-Variante einer Schrift ist. Sie nimmt diesel-
ben Werte wie die Eigenschaft 'font-variant' an, außer dass eine Liste mit Werten erlaubt ist,
die durch Kommas voneinander getrennt sind.
<edition
[Link]>
'font-weight' (Deskriptor)
Wert: all | [normal | bold |100 | 200 | 300 |400 | 500 | 600 | 700 | 800 |
900] [, [normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 |
800 | 900]]*
Ausgangswert: All
Medium: Visual
Dies ist der Deskriptor fr die Gewichtung einer Schrift relativ zu anderen in derselben Schrift-
familie. Er verwendet dieselben Werte wie die Eigenschaft 'font-weight', mit drei Ausnahmen:
1. Relative Schlsselw=rter (bolder, lighter) sind nicht erlaubt.
2. Eine Liste mit durch Kommas voneinander getrennten Werten ist erlaubt fr Schriften, die
mehrere Gewichtungen enthalten.
3. Das zus@tzliche Schlsselwort 'all' ist erlaubt, das heißt, die Schrift erzeugt eine berein-
stimmung fr alle m=glichen Werte; entweder weil sie mehrere Gewichtungen enth@lt oder
weil die Schrift nur eine einzige Gewichtung hat.
'font-stretch' (Deskriptor)
Damit gibt CSS die komprimierte oder gedehnte Schriftform relativ zu anderen Schriften der-
selben Schriftfamilie an. Sie nimmt dieselben Werte an wie die Eigenschaft 'font-stretch', nur
dass hier gilt:
·· Relative Schlsselw=rter (wider, narrower) sind nicht erlaubt.
Eine Liste mit durch Kommas voneinander getrennten Werten ist erlaubt.
· Das Schlsselwort 'all' ist erlaubt.
'font-size' (Deskriptor)
Dies ist der Deskriptor fr die durch diese Schrift untersttzten Gr=ßen. Es sind nur absolute
L@ngeneinheiten erlaubt, im Gegensatz zur Eigenschaft 'font-size', die sowohl relative als auch
absolute L@ngen und Gr=ßen erlaubt. Eine Liste mit durch Kommas voneinander getrennten
absoluten L@ngen ist erlaubt.
Der Ausgangswert 'all' ist fr die meisten skalierbaren Schriften geeignet, deshalb ist dieser
Deskriptor haupts@chlich fr die Verwendung in einer @font-face fr Bitmap-Schriften oder
skalierbare Schriften geeignet, die darauf ausgelegt sind, in einem begrenzten Bereich von
Schriftgr=ßen gerastert zu werden.
Der folgende Deskriptor ist optional innerhalb einer Schriftdefinition, wird aber verwendet,
um eine berprfung oder einen Download einer Schrift zu vermeiden, die nicht ausreichend
viele Glyphen umfasst, um ein bestimmtes Zeichen darzustellen.
'unicode-range' (Deskriptor)
<edition
[Link]>
Werte k=nnen mit einer beliebigen Anzahl an Stellen angegeben werden. Fr einzelne Zahlen
steht das Zeichen '?' fr einen beliebigen Wert, wodurch ein Bereich an Zeichenpositionen
abgedeckt wird. Die Verwendung einer einzelnen Zahl bedeutet also:
Unicode-Bereich: U+20A7
keine Wildcards – es handelt sich um eine einzelne Zeichenposition (das spanische W@h-
rungssymbol fr die Peseta)
Unicode-Bereich: U+215?
eine Wildcard, deckt den Bereich 2150 bis 215F ab (die Brche)
Unicode-Bereich: U+00??
zwei Wildcards, deckt den Bereich 0000 bis 00FF (Latin-1) ab
Unicode-Bereich: U+E??
zwei Wildcards, deckt den Bereich 0E00 bis 0EFF (das Lao-Skript) ab
Ein Zahlenpaar in diesem Format kann mit dem Trennstrich kombiniert werden, um gr=ßere
Bereiche abzudecken. Beispiel:
Unicode-Bereich: U+AC00-D7FF
der Bereich deckt AC00 bis D7FF ab (der Hangul Syllables-Bereich)
Es k=nnen mehrere, durch Kommas voneinander getrennte, nicht fortlaufende Bereiche ange-
geben werden. Wie in allen Listen in CSS, deren Werte durch Kommas voneinander getrennt
sind, wird Whitespace vor und nach einem Komma ignoriert. Beispiel:
U+F9000-FAFF, U+FE30-FE4F
In Hinblick auf die Komplexit@t vermutlich der schlimmste Fall, gibt aber sehr pr@zise an,
dass diese (extrem umfangreiche) Schrift nur Chinesische Zeichen aus ISO 10646 enth@lt,
ohne irgendwelche Zeichen, die eindeutig japanisch oder koreanisch sind. Der Bereich
erstreckt sich von 3000 bis 303F (CJK-Symbole und Interpunktion) plus 3100 bis 312F (Bo-
pomofo) plus 3200 bis 32FF (inklusive CJK-Buchstaben und Monate) plus 3300 bis 33FF
(CJK-Kompatibilit@tszone) plus 4E00 bis 9FFF (vereinheitlichte CJK-Ideographien) plus F900
bis FAFF (CJK-Kompatibilit@ts-Ideographien) plus FE30 bis FE4F (CJK-Kompatibilit@tsfor-
men).
Eine angenehmere Darstellung fr eine typische chinesische Schrift w@re:
Unicode-Bereich: U+3000-33FF, U+4E00-9FFF
Unicode-Bereich: U+11E00-121FF
Diese Schrift deckt eine vorgeschlagene Registrierung fr Aztekische Piktogramme ab, n@m-
lich den Bereich von 1E00 bis 21FF in Ebene 1.
Unicode-Bereich: U+1A00-1A1F
Diese Schrift deckt eine vorgeschlagene Registrierung fr Irish Ogham ab, n@mlich den
Bereich 1A00 bis 1A1F.
Der folgende Deskriptor gibt die Anzahl der „Einheiten“ pro em an; diese Einheiten k=nnen
von verschiedenen anderen Deskriptoren genutzt werden, um verschiedene L@ngen auszudr-
cken, 'units-per-em' ist also erforderlich, wenn andere Deskriptoren davon abh@ngig sind.
'units-per-em' (Deskriptor)
Wert: <number>
Ausgangswert: Nicht definiert
Medium: Visual
Dies ist der Deskriptor fr die Anzahl der Koordinateneinheiten im em-Quadrat, die Gr=ße
des Entwurfsrasters, auf dem die Glyphen angelegt wurden.
'src' (Deskriptor)
<edition
[Link]>
Nachfolgend sehen Sie eine erste Liste mit Formatstrings, die durch diese Spezifikation definiert
sind und Formate darstellen, die sehr wahrscheinlich von Implementierungen auf verschiedenen
Plattformen verwendet werden:
Wie andere URIs in CSS kann der URI partiell sein; in diesem Fall wird er relativ zur Position
des Stylesheets aufgel=st, das das @font-face enth@lt.
Der lokal installierte <font-face-name> ist der vollst@ndige Schriftname, der in Anfhrungs-
zeichen gesetzt werden muss, weil er beliebige Zeichen enthalten kann, unter anderem Leer-
zeichen und Interpunktionszeichen. Zudem muss er in „local(“ und „)“eingeschlossen sein.
Beispiel
src: url("[Link]
Cascading Style Sheets, Level 2
Ein vollst@ndiger URI, und es stehen keine Informationen ber die dort verfgbaren
Schriftformate zur Verfgung
src: local("BT Century 751 No. 2 Semi Bold Italic")
Verweist auf eine bestimmte Schriftform einer lokal installierten Schrift
src: url("../fonts/bar") format("truedoc-pfr")
Ein partieller URI, fr den es eine Schrift im TrueDoc-Format gibt
src: url("[Link] format("opentype", "intellifont")
Ein vollst@ndiger URI, in diesem Fall fr ein (serverseitiges) Skript, das zwei verschie-
dene Formate erzeugen kann – OpenType und Intellifont
src: local("T-26 Typeka Mix"), url("[Link] format("type-1")
Es sind zwei Alternativen angegeben: erstens eine lokal installierte Schrift und zwei-
tens eine herunterladbare Schrift, die im Type 1-Format zur Verfgung steht.
Der Zugriff auf lokal installierte Schriften erfolgt ber den <font-face-name>. Der Schriftname
ist nicht wirklich eindeutig, und er ist auch nicht wirklich unabh@ngig von der Plattform oder
vom Schriftformat, aber momentan stellt er die beste M=glichkeit dar, lokal installierte Schrift-
daten zu identifizieren. Das kann erfolgen, indem der Bereich der ISO 10646-Zeichenposi-
tionen angegeben wird, fr die die Schrift Glyphen untersttzt (siehe 'unicode-range').
Diese Deskriptoren sind optional fr eine CSS2-Definition, k=nnen aber fr einen intelligenten
Schriftvergleich oder eine Schriftgr=ßenanpassung verwendet werden, wenn der Autor dies
wnscht.
'panose-1' (Deskriptor)
Wert: [<integer>]{10}
Ausgangswert: 0000000000
Medium: visual
Dieser Deskriptor fr die Panose-1-Nummer besteht aus zehn dezimalen Integern, die durch
Whitespace voneinander getrennt sind. Eine Liste mit durch Kommas voneinander getrennten
Werten ist fr diesen Deskriptor nicht erlaubt, weil es erforderlich sein kann, dass fr das Pano-
se-1-System ein Wertebereich verglichen wird. Der Ausgangswert ist Null, das heißt, „alle“ fr
jede PANOSE-Stelle; alle Schriften stimmen mit der Panose-Nummer berein, wenn dieser
Wert verwendet wird. Die Verwendung des Panose-1-Deskriptors ist fr lateinische Schriften
sehr zu empfehlen. Weitere Informationen finden Sie in Anhang C.
'stemv' (Deskriptor)
Wert: [<integer>]{10}
Ausgangswert: 0000000000
Medium: Visual
'stemh' (Deskriptor)
Wert: <number>
Ausgangswert: Nicht definiert
Medium: Visual
Dies ist der Deskriptor fr die horizontale Strichbreite der Schrift. Falls dieser Wert nicht defi-
niert ist, wird der Deskriptor nicht fr den Vergleich verwendet. Wird dieser Deskriptor ver-
wendet, muss auch der Deskriptor 'units-per-em' verwendet werden.
<edition
[Link]>
'slope' (Deskriptor)
Wert: <number>
Ausgangswert: Nicht definiert
Medium: Visual
Dies ist der Deskriptor fr den vertikalen Strichwinkel der Schrift.
'cap-height' (Deskriptor)
Wert: <number>
Ausgangswert: Nicht definiert
Medium: Visual
Dies ist der Deskriptor fr der H=he von Großbuchstaben-Glyphen der Schrift. Falls der Wert
nicht definiert ist, wird der Deskriptor nicht fr den Vergleich verwendet. Wird dieser
Deskriptor verwendet, muss auch der Deskriptor 'units-per-em' verwendet werden.
'x-height' (Deskriptor)
Wert: <number>
Ausgangswert: Nicht definiert
Medium: Visual
Dies ist der Deskriptor fr die H=he von Kleinbuchstaben-Glyphen der Schrift. Falls der Wert
Cascading Style Sheets, Level 2
nicht definiert ist, wird der Deskriptor nicht fr den Vergleich verwendet. Wird dieser
Deskriptor verwendet, muss auch der Deskriptor 'units-per-em' verwendet werden. Dieser
Deskriptor kann sehr praktisch sein, wenn die Eigenschaft 'font-size-adjust' verwendet wird,
weil fr die Berechnung des z-Werts der in Frage kommenden Schriften sowohl die Schrift-
gr=ße als auch die x-H=he erforderlich ist; deshalb ist zu empfehlen, diesen Deskriptor zu ver-
wenden.
'ascent' (Deskriptor)
Wert: <number>
Ausgangswert: Nicht definiert
Medium: Visual
Dies ist der Deskriptor fr die maximale H=he der Schrift ohne Bercksichtigung der Akzente.
Falls der Wert nicht definiert ist, wird der Deskriptor nicht fr den Vergleich verwendet. Wird
dieser Deskriptor verwendet, muss auch der Deskriptor 'units-per-em' verwendet werden.
'descent' (Deskriptor)
Wert: <number>
Ausgangswert: Nicht definiert
Medium: Visual
Dies ist der Deskriptor fr die maximale Tiefe der Schrift ohne Bercksichtigung der Akzente.
Falls der Wert nicht definiert ist, wird der Deskriptor nicht fr den Vergleich verwendet. Wird
dieser Deskriptor verwendet, muss auch der Deskriptor 'units-per-em' verwendet werden.
Die Synthese einer Schrift bedeutet, dass zumindest die Breitenmaße der angegebenen Schrift
zur Deckung gebracht werden. Fr die Synthese muss also diese Maßinformation zur Verfgung
stehen. Analog dazu ben=tigt auch die progressive Darstellung die Breitenmaße, um zu vermei-
den, dass der Inhalt neu angeordnet werden muss, nachdem die tats@chliche Schrift geladen
wurde. Obwohl die nachfolgenden Deskriptoren optional fr eine CSS2-Definition sind, wer-
den einige davon ben=tigt, wenn der Autor eine Synthese (oder eine progressive Darstellung
ohne Neuanordnung des Inhalts) wnscht. Sobald die tats@chliche Schrift zur Verfgung steht,
sollte die Ersatzschrift dagegen ausgetauscht werden. Jeder dieser vorhandenen Deskriptoren
wird verwendet, um eine bessere oder schnellere Ann@herung an die gewnschte Schrift zu
erreichen.
Von diesen Deskriptoren sind die wichtigsten 'widths' und 'bbox', die verwendet werden, um
eine Neuanordnung des Texts zu verhindern, wenn die tats@chliche Schrift zur Verfgung steht.
Darber hinaus k=nnen diese Deskriptoren in der Menge der fr den Vergleich verwendeten
Deskriptoren verwendet werden, um eine bessere Synthese der tats@chlichen Schriftdarstel-
'widths' (Deskriptor)
Dies ist der Deskriptor fr die Glyphen-Breiten. Der Wert ist eine Liste mit durch Kommas
voneinander getrennten <urange>-Werten, jeweils gefolgt von einer oder mehreren Glyphen-
Breiten. Wird dieser Deskriptor verwendet, muss auch der Deskriptor 'units-per-em' verwen-
det werden.
Wenn <urange> weggelassen wird, wird ein Bereich von U+0-7FFFFFFF angenommen, der alle
Zeichen und ihre Glyphen abdeckt. Falls nicht gengend Glyphen-Breiten zur Verfgung stehen,
wird der letzte in der Liste repliziert, um diese U-Range abzudecken. Falls zu viele Breiten ange-
geben sind, werden die berflssigen ignoriert.
<edition
[Link]>
Beispiel
widths: U+4E00-4E1F 1736 1874 1692
widths: U+1A?? 1490, U+215? 1473 1838 1927 1684 1356 1792
1815 1848 1870 1492 1715 1745 1584 1992 1978 1770
Im ersten Beispiel ist ein Bereich von 32 Zeichen vorgegeben, von 4E00 bis 4E1F. Der Glyph,
der dem ersten Zeichen entspricht (4E00), hat eine Breite von 1736, der zweite hat eine Breite
von 1874, und der dritte von 1692. Weil nicht gengend Breiten bereitgestellt wurden, wird
die letzte Breite repliziert, um den restlichen angegebenen Bereich abzudecken. Das zweite
Beispiel setzt eine einzige Breite, 1490, fr den gesamten Bereich von 256 Glyphen und dann
explizite Breiten fr einen Bereich von 16 Glyphen.
Dieser Deskriptor kann nicht mehrere Glyphen beschreiben, die einem einzelnen Zeichen oder
Ligaturen mehrerer Zeichen entsprechen. Damit kann dieser Deskriptor nur fr Schriften
(scripts) verwendet werden, die keine kontextabh@ngigen Formen oder verpflichtende Liga-
turen aufweisen. Dennoch ist er in diesen Situationen praktisch. Schriften (scripts), die eine 1:n-
oder n:n-Abbildung von Zeichen auf Glyphen verlangen, k=nnen momentan diesen Deskriptor
nicht verwenden, um eine Schriftsynthese zu aktivieren, obwohl sie dennoch Schriften herun-
terladen oder einen intelligenten Vergleich durchfhren k=nnen.
'bbox' (Deskriptor)
Dies ist der Deskriptor fr die maximal umschließende Box der Schrift. Der Wert ist eine Liste
mit durch Kommas voneinander getrennten genau vier Zahlen, die in ihrer Reihenfolge die
Cascading Style Sheets, Level 2
Koordinaten unten links x, unten links y, oben rechts x und oben rechts y der umschließenden
Box fr die gesamte Schrift angeben.
'definition-src' (Deskriptor)
Wert: <uri>
Ausgangswert: Nicht definiert
Medium: Visual
'baseline' (Deskriptor)
Wert: <number
Ausgangswert: 0
Medium: Visual
Dies ist der Deskriptor fr die untere Grundlinie einer Schrift. Falls dieser Deskriptor einen
anderen als den Standardwert (ungleich Null) erh@lt, muss auch der Deskriptor 'units-per-em'
verwendet werden.
'centerline' (Deskriptor)
Wert: <number
Ausgangswert: Nicht definiert
Medium: Visual
Dies ist der Deskriptor fr die zentrale Grundlinie einer Schrift. Falls der Wert nicht definiert
ist, kann der Benutzerprogramm verschiedene Heuristiken anwenden, wie beispielsweise den
Mittelwert der ascent- und descent-Werte.
Wert: <number>
Ausgangswert: Nicht definiert
Medium: Visual
Dies ist der Deskriptor fr die mathematische Grundlinie einer Schrift. Falls er nicht definiert
ist, kann das Benutzerprogramm die zentrale Grundlinie verwenden. Wird dieser Deskriptor
verwendet, muss auch der Deskriptor 'units-per-em' verwendet werden.
'topline' (Deskriptor)
Wert: <number>
Ausgangswert: Nicht definiert
Medium: Visual
<edition
[Link]>
Dies ist der Deskriptor fr die obere Grundlinie der Schrift. Falls er nicht definiert ist, kann das
Benutzerprogramm einen Ann@herungswert verwenden, wie beispielsweise ascent. Falls dieser
Deskriptor verwendet wird, muss auch der Deskriptor 'units-per-em' verwendet werden.
15.3.9 Beispiele
Beispiel
Die folgenden Schriftbeschreibungen k=nnten verwendet werden, um sie fr den
Download zur Verfgung zu stellen.
@font-face {
font-family: "Swiss 721";
src: url("[Link]"); /* Swiss 721 light */
font-style: normal, italic;
font-weight: 200;
}
@font-face {
font-family: "Swiss 721";
Cascading Style Sheets, Level 2
15.4 Schriftcharakteristika
15.4.1 Einleitung
In diesem Abschnitt sind die Schriftcharakteristika aufgelistet, die sich als praktisch fr den
client-seitigen Schriftvergleich, Synthese und Download fr heterogene Plattformen, die auf das
Web zugreifen, erwiesen haben. Die Daten mssen fr jedes Medium geeignet sein, das Schrif-
ten aus dem Web nutzen muss, und zwar ber einen anderen Weg als das physische Einbetten
der Schriftdaten in das Medium.
Diese Charakteristika werden herangezogen, um Schriften zu beschreiben. Sie sind nicht spezi-
fisch fr CSS oder Stylesheets. In CSS wird jede Charakteristik durch einen Schrift-Deskriptor
ausgedrckt. Diese Charakteristika k=nnten auch auf VRML-Knoten oder CGM Application
Structures oder Java API oder alternative Stylesheet-Sprachen abgebildet werden. Schriften, die
von einem Medium geladen und in einem Proxy-Cache gespeichert wurden, k=nnten von einem
anderen Medium wiederverwendet werden, wodurch Download-Zeit und Netzwerkband-
breite eingespart wird, vorausgesetzt, dass durchg@ngig ein allgemeines System von Schrift-
charakteristika verwendet wird.
Nachfolgend sehen Sie eine unvollst@ndige Liste mit Beispielen fr solche Medien:
2D-Vektorformate
··
3D-Grafikformat
··VRML
3DMF
Objekt-einbettende Technologien
··Java
Active-X
·Obliq
Dies ist der vollst@ndige Name einer bestimmten Schrift oder Schriftfamilie. Normalerweise
enth@lt er eine Vielzahl nicht standardisierter Textbezeichner oder Ausschmckungen, die an
den Schriftfamiliennamen angefgt sind. Er kann auch einen Gießereinamen oder eine Abkr-
zung davon enthalten, h@ufig dem Schriftfamiliennamen vorangestellt. Er wird nur verwendet,
<edition
[Link]>
um auf lokal installierte Schriften zu verweisen, weil sich das Format des ausfhrlichen Namens
zwischen den verschiedenen Plattformen erheblich unterscheiden kann. Er muss in Anfhrungs-
zeichen stehen.
Beispielsweise k=nnen sich der Schriftfamilienname der TrueType-Schrift und der PostScript-
Name hinsichtlich der Verwendung von Leerzeichen, Interpunktionszeichen und in der Abkr-
zung bestimmter W=rter unterscheiden (z. B. um verschiedene Beschr@nkungen fr die L@nge
von Namen auf dem System- oder Druckerinterpreter zu bercksichtigen). Beispielsweise sind
in einem PostScript-Namen keine Leerzeichen erlaubt, in vollst@ndigen Schriftnamen dagegen
sind sie gebr@uchlich. Die TrueType-Namenstabelle kann auch den PostScript-Namen enthal-
ten, der keine Leerzeichen enth@lt.
Der Name der Schriftdefinition ist wichtig, weil es sich dabei um die Verknpfung zu den lokal
installierten Schriften handelt. Es ist wichtig, dass der Name robust ist, sowohl in Hinblick auf
Plattform- als auch auf Applikationsunabh@ngigkeit. Aus diesem Grund sollte ein Name verwen-
det werden, der nicht fr bestimmte Applikationen oder Sprachen spezifisch ist.
Die ideale L=sung w@re, einen Namen zu verwenden, der alle Schriftdatenmengen eindeutig
identifiziert. Einen solchen Namen gibt es in der aktuellen Praxis fr Schriftdaten nicht. Schrif-
ten mit demselben Schriftnamen k=nnen ber mehrere Deskriptoren variieren. Einige dieser
Deskriptoren, wie beispielsweise verschiedene Glyphen-S@tze in der Schrift, k=nnen irrelevant
sein, wenn die betreffenden Glyphen in der Schrift enthalten sind. Andere Deskriptoren, wie
beispielsweise verschiedene Breitenmaße, machen Schriften desselben Namens inkompatibel.
Es scheint nicht m=glich zu sein, eine Regel zu definieren, die die Inkompatibilit@ten immer
erkennt und die Verwendung einer perfekt passenden lokalen Kopie der Schriftdaten eines
bestimmten Namens nicht verhindert. Deshalb wird nur der Bereich der ISO 10646-Zeichen
verwendet, um bereinstimmungen fr den Schriftnamen zu qualifizieren.
Weil es ein prim@res Ziel fr den Schriftnamen in der Schriftdefinition ist, einem Benutzerpro-
gramm die Entscheidung zu berlassen, ob es eine lokale Kopie der angegebenen Schriftdaten
gibt, muss es sich dabei um einen Namen handeln, der in allen legitimen Kopien der Schrift-
daten enthalten ist. Andernfalls k=nnte aufgrund fehlender bereinstimmungen in der lokalen
Cascading Style Sheets, Level 2
Dies gibt die Position im em-Quadrat auf der zentralen Grundlinie an. Die zentrale Grundlinie
wird von ideographischen Schriften (scripts) fr die Ausrichtung verwendet, so wie die untere
Grundlinie fr lateinische, griechische und kyrillische Schriften (scripts).
15.4.5 Schriftcodierung
Jeder Schrift ist explizit oder implizit eine Tabelle zugeordnet, die Schriftcodierungstabelle, die
angibt, welche Zeichen die einzelnen Glyphen darstellen. Diese Tabelle wird auch als Kodie-
rungsvektor bezeichnet.
Viele Schriften enthalten mehrere Glyphen fr dasselbe Zeichen. Welche dieser Glyphen ver-
wendet werden sollte, ist entweder von den Sprachregeln oder den Vorlieben des Entwicklers
abh@ngig.
Im Arabischen beispielsweise haben alle Buchstaben vier (oder zwei) verschiedene Formen,
abh@ngig davon, ob der Buchstabe am Wortanfang, in der Mitte, am Ende oder isoliert verwen-
det wird. Es handelt sich in allen F@llen um denselben Buchstaben, deshalb gibt es nur ein Zei-
chen im Quelldokument, aber beim Ausdruck sieht er jedes Mal anders aus.
Außerdem gibt es Schriften, die es dem Grafikdesigner berlassen, unter verschiedenen bereit-
gestellten alternativen Umrissen zu w@hlen. Leider stellt CSS2 noch keine M=glichkeit bereit,
diese Alternativen auszuw@hlen. Momentan wird immer der Standardumriss aus diesen Schrif-
ten ausgew@hlt.
15.4.6 Schriftfamilienname
Gibt den Familiennamenanteil des Schriftnamens an. Beispielsweise ist der Familienname fr
Helvetica-Bold gleich Helvetica, und der Familienname von ITC Stone Serif Semibold Italic ist
ITC Stone Serif. Einige Systeme behandeln die Ausschmckungen, die sich auf komprimierte
oder gedehnte Schriften beziehen, so, als handele es sich dabei um einen Teil des Familien-
15.4.7 Glyphenbreite
Dies ist eine Liste mit Breiten (im Entwurfsraster) fr den Glyphen, die jedem einzelnen Zei-
chen entsprechen. Die Liste ist nach ISO 10646-Codepunkten sortiert. Breiten k=nnen nicht
sinnvoll angegeben werden, wenn mehr als ein Glyph auf dasselbe Zeichen abgebildet wird oder
es zwingend vorgeschriebene Ligaturen gibt.
Dieser Wert bezieht sich auf den dominanten Strich der Schrift. Es kann zwei oder mehr ent-
worfene Breiten geben. Beispielsweise unterscheidet sich der vertikale Hauptstrich von
Roman-Zeichen von den dnnen Strichen der serifen-behafteten „M“ und „N“, und außerdem
kann es unterschiedliche Breiten fr Großbuchstaben- und Kleinbuchstabenzeichen innerhalb
derselben Schrift geben. Außerdem k=nnen alle Striche, entweder dem Entwurf entsprechend
oder aufgrund eines Fehlers, etwas unterschiedliche Breiten haben.
<edition
[Link]>
Dieses Maß stellt die y-Koordinate des oberen Abschlusses von flachen Großbuchstaben in
lateinischen, griechischen und kyrillischen Scripts dar, gemessen von der Grundlinie aus. Dieser
Deskriptor ist nicht unbedingt praktisch fr Schriften, die keine Glyphen aus diesen Scripts ent-
halten.
Dieses Maß stellt die y-Koordinate des oberen Abschlusses von nicht mit Akzenten versehe-
nen, nicht aufsteigenden Kleinbuchstaben in lateinischen, griechischen und kyrillischen Schriften
(scripts) dar, gemessen von der Grundlinie aus. Buchstaben mit flachem oberen Abschluss wer-
den verwendet, wobei alle optischen Korrekturzonen ignoriert werden. Dies wird manchmal
als Verh@ltnis zwischen Kleinbuchstaben- und Großbuchstabenh=hen verwendet, um Schrift-
familien vergleichen zu k=nnen.
Dieser Deskriptor ist nicht sinnvoll fr Schriften, die keine Glyphen aus diesen Scripts enthal-
ten. Weil die H=he von Kleinbuchstaben und Großbuchstaben h@ufig als Verh@ltnis fr den
Vergleich verschiedener Schriften verwendet wird, kann es sinnvoll sein, sowohl die Kleinbuch-
staben- als auch die Großbuchstabenh=he fr Scripts ohne Klein/Großschreibung wie beispiels-
Cascading Style Sheets, Level 2
weise Hebr@isch auf denselben Wert zu setzen, w@hrend fr einen gemischten Text aus lateini-
schem und hebr@ischem Text die hebr@ischen Zeichen normalerweise auf eine H=he zwischen
den Großbuchstaben- und Kleinbuchstabenh=hen der lateinischen Schrift gesetzt werden.
Gibt die Position des em-Quadrats der unteren Grundlinie an. Die untere Grundlinie wird von
lateinischen, griechischen und kyrillischen Schriften (scripts) fr die Ausrichtung verwendet, so
wie die obere Grundlinie fr von Sanskrit abgeleitete Schriften (scripts) verwendet wird.
Gibt die Position im em-Quadrat der mathematischen Grundlinie an. Die mathematische
Grundlinie wird fr die Ausrichtung mathematischer Symbole verwendet, so wie die untere
Grundlinie fr lateinische, griechische und kyrillische Schriften (scripts) verwendet wird.
Die maximale umschließende Box ist das kleinste Rechteck, das den Umriss umschließt, der
entsteht, wenn alle Glyphen der Schrift mit ihren Ursprngen am selben Punkt angelegt und
dann gezeichnet werden.
Dieses Maß fr das em-Quadrat verl@uft von der Grundlinie zum h=chsten Punkt, die jeder ein-
zelne Glyph erreichen kann, ohne Akzente oder diakritische Markierungen.
Dieses Maß fr das em-Quadrat verl@uft von der Grundlinie zum niedrigsten Punkt, den ein
15.4.16 Panose-1-Zahl
Panose-1 ist eine Klassifizierungs- und Vergleichstechnologie fr TrueType-Schriften nach dem
Industriestandard. Das PANOSE-System besteht aus einer Menge von zehn Zahlen, die die
Schlsselattribute einer lateinischen Schrift kategorisieren, eine Klassifizierungsprozedur zum
Erstellen dieser Zahlen und einer Mapper-Software, die die n@chstm=gliche Schrift ermittelt,
die zu einer vorgegebenen Menge an Schriftformen passt. Das System k nnte mit einigen Ab@n-
<edition
[Link]>
derungen auch fr Griechisch und Kyrillisch verwendet werden, es ist jedoch nicht fr Schriften
(scripts) ohne Klein-/Großschreibung und ideographische Schriften (scripts; Hebr@isch, Arme-
nisch, Arabisch, Chinesisch/Japanisch/Koreanisch) geeignet.
Zeigt das Glyphen-Repertoire der Schrift bezglich ISO 10646 (Unicode) an. Weil dieses
schwach besetzt ist (die meisten Schriften decken nicht das gesamte ISO 10646 ab), listet dieser
Deskriptor Bl=cke oder Bereiche auf, die eine teilweise bereinstimmung aufweisen (es wird
keine Garantie fr eine komplette Abdeckung gegeben), und wird verwendet, um ungeeignete
Schriften auszuschließen (solche, die die erforderlichen Glyphen nicht enthalten). Er bietet kei-
nen Hinweis darauf, dass die Schrift definitiv die erforderlichen Glyphen enth@lt, sondern nur,
ob es sinnvoll ist, sie herunterzuladen, und sie einzusehen. Weitere Hinweise auf informative
Dokumente finden Sie in [ISO10646].
Diese Methode ist erweiterbar auf zuknftige Reservierungen von Zeichen in Unicode, ohne
die Syntax zu @ndern und ohne existierenden Inhalt ungltig zu machen.
Schriftformate, die diese Information nicht enthalten, weder explizit noch indirekt, k=nnen
diese Charakteristik dennoch verwenden, aber der Wert muss vom Dokument- oder Style-
sheet-Autor bereitgestellt werden.
Es gibt noch andere Klassifizierungen in Schriften (scripts) wie beispielsweise das Monotype-
System (siehe [MONOTYPE]) und ein vorgeschlagenes ISO-Skriptsystem. Sie sind noch nicht
erweiterbar.
Aufgrund dessen wird in dieser Spezifikation die Klassifizierung von Glyphen-Repertoires nach
dem Bereich der ISO 10646-Zeichen verwendet, die durch eine bestimmte Schrift dargestellt
werden k=nnen. Dieses System ist erweiterbar, so dass es jede zuknftige Reservierung ab-
decken kann.
Gibt die Position im em-Quadrat der oberen Grundlinie an. Die obere Grundlinie wird von
Sanskrit abgeleiteten Schriften (scripts) fr die Ausrichtung verwendet, so wie die untere
Grundlinie fr lateinische, griechische und kyrillische Schriften (scripts) verwendet wird.
Dies ist die Breite der vertikalen (oder ann@hernd vertikalen) Striche fr Glyphen. Diese Infor-
mation wird h@ufig nur als Hinweis bereitgestellt und steht in einigen Schriftformaten nicht fr
den direkten Zugriff zur Verfgung. Dieses Maß sollte fr den dominanten vertikalen Strich in
der Schrift verwendet werden, weil es unterschiedliche Gruppierungen vertikaler Striche geben
k=nnte (zum Beispiel einen Hauptstrich und einen helleren Strich, wie beispielsweise fr ein
großes M oder N).
Dies ist der Winkel der dominanten vertikalen Striche der Schrift, angegeben in Grad im
Gegenuhrzeigersinn von der Vertikalen. Der Wert ist negativ fr Schriften, die nach rechts
geneigt sind, wie es bei fast allen kursiven Schriften der Fall ist. Dieser Deskriptor kann auch
fr geneigte Schriften, schr@ge Schriften, Handschriften und im Allgemeinen fr alle Schriften,
deren vertikalen Striche nicht genau vertikal sind, verwendet werden. Ein Wert ungleich Null
weist nicht unbedingt auf eine kursive Schrift hin.
<edition
[Link]>
4. Falls es keine bereinstimmende Schriftart fr die in Schritt 3 verarbeitete 'font-family' gibt,
k=nnen Benutzerprogramme, die das Herunterladen von Schriften implementieren fortfahren. Sie
k=nnen den Deskriptor 'src' der in Schritt 2 oder 3 identifizierten Schriftart auswerten, um
eine verfgbare Netzressource zu finden, die das korrekte Format hat. Falls es bereinstim-
mungen fr alle restlichen Deskriptoren gibt, ist das die passende Schriftart fr das betref-
fende Element, und das Benutzerprogramm kann versuchen, diese Schriftressource herunter-
zuladen. Das Benutzerprogramm kann diesen Download entweder blockieren, oder mit dem
n@chsten Schritt fortfahren, w@hrend die Schriften heruntergeladen werden. Benutzerpro-
gramme, die das Herunterladen von Schriften nicht implementieren, oder die nicht an ein
Netzwerk angeschlossen sind oder wo die Benutzereinstellungen das Herunterladen von
Schriften verhindern, oder wo die angeforderte Ressource aus irgendeinem Grund nicht zur
Verfgung steht, oder wo die heruntergeladene Schrift aus irgendeinem Grund nicht verwen-
det werden kann, verhalten sich so, als w@re dieser Schritt fehlgeschlagen.
5. Falls es keine bereinstimmende Schriftart innerhalb der in Schritt 3 verarbeiteten 'font-fa-
mily' gibt, k=nnen Benutzerprogramme, die die Schriftsynthese implementieren, weiterma-
chen und andere Deskriptoren auswerten wie beispielsweise die 'x-height', Glyphenbreite
und 'panose-1', um eine vorl@ufige Schriftfamilie fr die Synthese zu finden. Wenn es ber-
einstimmungen fr alle restlichen Deskriptoren gibt, ist das die geeignete Schriftart fr das
betreffende Element, und die Synthese der Schrift kann beginnen. Benutzerprogramme, die
keine Schriftsynthese implementieren, verhalten sich so, als w@re dieser Schritt fehlgeschla-
gen.
6. Wenn die Schritte 3, 4 und 5 alle fehlschlagen und es eine n@chste alternative 'font-family' in
der Schriftmenge gibt, erfolgt eine Wiederholung ab Schritt 2 mit der n@chsten alternativen
'font-family'.
7. Wenn es eine bereinstimmende Schriftart gibt, diese aber keine Glyphen fr die aktuellen
Zeichen enth@lt, und wenn es eine n@chste alternative 'font-family' in den Schriftmengen
gibt, erfolgt eine Wiederholung ab Schritt 2 mit der n@chsten alternativen 'font-family'. Der
'unicode-range'-Deskriptor kann verwendet werden, um schnell Schriftarten auszuschlie-
Cascading Style Sheets, Level 2
ßen, die nicht die korrekten Glyphen enthalten. Wenn der 'unicode-range'-Deskriptor
anzeigt, dass eine Schrift Glyphen im korrekten Bereich enth@lt, kann sie vom Benutzerpro-
gramm daraufhin ausgewertet werden, ob sie den ben=tigten Glyphen enth@lt.
8. Falls es keine Schrift innerhalb der in 2 ausgew@hlten Familie gibt, wird der geerbte oder
vom Benutzerprogramm abh@ngige 'font-family'-Wert verwendet, und es erfolgt eine Wie-
derholung ab Schritt 2, unter Verwendung der besten bereinstimmung, die mit Hilfe die-
ser Schrift erzielt werden kann. Wenn ein bestimmtes Zeichen mit dieser Schrift nicht
angezeigt werden kann, sollte das Benutzerprogramm darauf hinweisen, dass ein Zeichen
nicht angezeigt wird (z. B. mit dem Glyphen fr „fehlendes Zeichen“).
9. Benutzerprogramme, die eine progressive Darstellung implementieren und ausstehende
Schrift-Downloads haben, verwenden die heruntergeladene Schrift als Schriftfamilie. Wenn
in der heruntergeladenen Schrift einige Glyphen fehlen, die die vorbergehende progressive
Schrift enthielt, wird die heruntergeladene Schrift fr dieses Zeichen nicht verwendet, und
es wird weiterhin die tempor@re Schrift verwendet.
Hinweis: Der obige Algorithmus kann optimiert werden, um zu vermeiden, dass fr jedes Zei-
chen die CSS2-Eigenschaften erneut eingesehen werden mssen. n
Die 'font-weight'-Eigenschaftswerte werden auf einer numerischen Skala dargestellt, wobei der
Wert '400' (oder 'normal') der normalen Textdarstellung fr diese Familie entspricht. Der die-
ser Schrift zugeordnete Gewichtungsname ist normalerweise Book, Regular, Roman, Normal
oder manchmal auch Medium. Die Zuordnung anderer Gewichtungen innerhalb einer Familie
fr die numerischen Gewichtungswerte soll nur die Reihenfolge der Gewichtungen innerhalb
dieser Familie beibehalten. Die Benutzerprogramme mssen Namen Werte zuordnen, und
zwar so, dass die visuelle Reihenfolge beibehalten wird; eine Schrift, die auf einen Wert abgebil-
<edition
[Link]>
Beispiel
Angenommen, in der Familie „Rattlesnake“ gibt es vier Gewichtungen, von der hellsten
bis zur dunkelsten: Regular, Medium, Bold, Heavy.
Erstes Beispiel fr die Zuordnung der Schriftgewichtung:
Angenommen, es gibt sechs Gewichtungen in der Familie „Ice Prawn“: Book, Medium,
Bold, Heavy, Black, ExtraBlack. Beachten Sie, dass das Benutzerprogramm in diesem
Beispiel entschieden hat, „Ice Prawn ExtraBlack“ keinen numerischen Wert zuzuwei-
sen.
Zweites Beispiel fr die Zuordnung der Schriftgewichtung:
Das folgende Beispiel definiert eine bestimmte Schrift, Alabama Italic. Eine Panose-Schrift-
beschreibung und einen Quell-URI fr das Laden einer TrueType-Server-Schrift sind ebenfalls
bereitgestellt. Deskriptoren fr die Schriftgewichtung und den Schriftstil liegen vor, um die
Schrift zu beschreiben. Die Deklaration besagt, dass die Gewichtung auch mit allen Anforde-
rungen im Bereich zwischen 300 und 500 bereinstimmt. Die Schriftfamilie ist Alabama, der
ausfhrliche Schriftname ist Alabama Italic.
@font-face {
src: local("Alabama Italic"),
url([Link] format("truetype");
panose-1: 2 4 5 2 5 4 5 9 3 3;
font-family: Alabama, serif;
Das folgende Beispiel gruppiert drei physische Schriften zu einer virtuellen Schrift mit erweiter-
ter Abdeckung. In jedem Fall wird im src-Deskriptor der ausfhrliche Schriftname angegeben,
um zu erm=glichen, dass lokal installierte Versionen bevorzugt verwendet werden, falls sie zur
Verfgung stehen. Eine vierte Regel verweist auf eine Schrift mit derselben Abdeckung, die
jedoch innerhalb einer einzigen Ressource enthalten ist.
@font-face {
font-family: Excelsior;
src: local("Excelsior Roman"), url("[Link] format("intellifont");
unicode-range: U+??; /* Latin-1 */
}
@font-face {
font-family: Excelsior;
src: local("Excelsior EastA Roman"), url("[Link] format("intellifont");
unicode-range: U+100-220; /* Latin Extended A and B */
}
@font-face {
font-family: Excelsior;
src: local("Excelsior Cyrillic Upright"), url("[Link]
format("intellifont");
unicode-range: U+4??; /* Cyrillic */
}
@font-face {
font-family: Excelsior;
src: url("[Link] format("truedoc");
unicode-range: U+??,U+100-220,U+4??;
}
@font-face {
src: local("Palatino"),
local("Times New Roman"),
local("New York"),
local("Utopia"),
url("[Link]
font-family: serif;
font-weight: 100, 200, 300, 400, 500;
font-style: normal;
font-variant: normal;
font-size: all
}
<edition
[Link]>
16 Text
Die in den folgenden Abschnitten definierten Eigenschaften beeinflussen die visuelle Darstellung
von Zeichen, Leerzeichen, W=rtern und Abs@tzen.
Diese Eigenschaft gibt die Einrckung der ersten Textzeile in einem Block an. Genauer gesagt,
sie gibt die Einrckung der ersten Box an, die in die erste Zeilen-Box des Blocks einfließt. Die
Box wird relativ zur linken Kante der Zeilenbox eingerckt (fr ein Rechts-nach-Links-Layout
relativ zur rechten Kante). Benutzerprogramme sollten diese Einrckung als Leerzeichen dar-
stellen.
Die Werte haben die folgenden Bedeutungen:
<length>
Die Einrckung erfolgt um einen feststehenden Betrag.
Cascading Style Sheets, Level 2
<percentage>
Die Einrckung erfolgt um einen Prozentsatz der Breite des umschließenden Blocks.
Der Wert 'text-indent' kann negativ sein, aber es gibt von der Implementierung abh@ngige
Grenzen.
Beispiel
Das folgende Beispiel bewirkt eine Texteinrckung um '3em'.
P { text-indent: 3em }
Anmerkung der bersetzer: Wendet man das obige Beispiel auf die HTML-Fas-
sung dieses Textes an, erh@lt man fr einen Textabschnitt weiter unten in diesem Kapi-
tel etwa folgende Darstellung:
<edition
[Link]>
Diese Eigenschaft beschreibt, wie Inline-Inhalt eines Blocks ausgerichtet wird. Die Werte haben
die folgenden Bedeutungen:
Ein Textblock ist ein Stapel aus Zeilen-Boxen. Fr 'left', 'right' und 'center' gibt diese Eigenschaft
an, wie die inzeiligen Boxen innerhalb jeder Zeilen-Box entlang der linken oder rechten Seiten
der Zeilen-Box ausgerichtet sind; die Ausrichtung erfolgt nicht relativ zum Viewport. Im Fall
von 'justify' kann das Benutzerprogramm die inzeiligen Boxen zus@tzlich strecken, um sie an
ihren Positionen auszurichten. (Weitere Informationen finden Sie auch unter 'letter-spacing'
und 'word-spacing', siehe weiter unten).
Beispiel
Beachten Sie, dass 'text-align' in diesem Beispiel vererbt ist, und deshalb fr alle Ele-
mente auf Blockebene innerhalb des DIV-Elements mit 'class=center' der Inline-Inhalt
zentriert ist.
[Link] { text-align: center }
Hinweis: Welcher Algorithmus fr die eigentliche Ausrichtung verwendet wird, ist vom Benut-
zerprogramm und der geschriebenen Sprache abh@ngig.
Konforme Benutzerprogramme drfen den Wert 'justify' als 'left' oder 'right' interpretieren,
Cascading Style Sheets, Level 2
abh@ngig davon, ob die Standardschreibrichtung des Elements von links nach rechts oder von
rechts nach links ist. n
16.3 Ausschm-ckung
16.3.1 Unterstreichen , berstreichen , Durchstreichen und Blinken:
die 'text-decoration'-Eigenschaft
'text-decoration'
Diese Eigenschaft beschreibt Ausschmckungen, die dem Text eines Elements hinzugefgt wer-
den. Wird die Eigenschaft fr ein Element auf Blockebene angegeben, beeinflusst sie alle Ablei-
tungen des Elements auf Inline-Ebene. Wird sie fr ein Element auf Inline-Ebene angegeben
(oder betrifft sie dieses), beeinflusst sie auch alle von dem Element erzeugten Boxen. Hat das
Element keinen Inhalt oder keinen Textinhalt (z. B. das IMG-Element in HTML), mssen Benut-
zerprogramme diese Eigenschaft ignorieren .
Die Werte haben die folgenden Bedeutungen:
none
Erzeugt keine Textausschmckung.
underline
Jede Textzeile ist unterstrichen.
overline
Jede Textzeile hat eine berstreichung.
line-through
Jede Textzeile ist mittig durchgestrichen.
blink
Der Text blinkt (er wechselt zwischen sichtbar und unsichtbar). Konforme Benutzerpro-
gramme mssen diesen Wert nicht untersttzen.
Die fr die Textausschmckung ben=tigten Farben sollen vom Wert der 'color'-Eigenschaft
abgeleitet werden.
Die Eigenschaft wird nicht vererbt, aber die abgeleiteten Boxen einer Block-Box sollten mit
derselben Ausschmckung formatiert werden (z. B. sollten sie alle unterstrichen dargestellt
sein). Die Farbe der Ausschmckungen sollte immer dieselbe bleiben, selbst wenn die abgelei-
teten Elemente andere 'color'-Werte haben.
Beispiel
'text-shadow'
<edition
[Link]>
Diese Eigenschaft nimmt eine Liste durch Kommas voneinander getrennter Schatteneffekte
entgegen, die auf den Text des Elements angewendet werden. Die Schatteneffekte werden in
der angegebenen Reihenfolge angewendet und k=nnen sich somit berlagern, aber sie ber-
lagern niemals den eigentlichen Text. Schatteneffekte ver@ndern die Gr=ße einer Box nicht,
k=nnen sich aber ber ihre Grenzen hinaus erstrecken. Die Stapelebene der Schatteneffekte ist
dieselbe wie fr das eigentliche Element.
Jeder Schatteneffekt muss einen Abstand fr den Schatten und kann optional einen berblend-
radius und eine Schattenfarbe angeben.
Ein Schattenabstand wird mit zwei <length>-Werten angegeben, die den Abstand vom Text
spezifizieren. Der erste L@ngenwert bestimmt den horizontalen Abstand zur rechten Textseite.
Ein negativer Wert fr die horizontale L@nge platziert den Schatten links vom Text. Der zweite
L@ngenwert gibt den vertikalen Abstand unterhalb des Texts an. Ein negativer Wert fr die ver-
tikale L@nge platziert den Schatten oberhalb des Textes.
Optional kann nach dem Schattenabstand ein berblendradius angegeben werden. Der ber-
blendradius ist ein L@ngenwert, der die Grenzen des berblendeffekts bestimmt. Der genaue
Algorithmus fr die Berechnung des berblendeffekts ist nicht vorgegeben.
Optional kann vor oder hinter den L@ngenwerten des Schatteneffekts ein Farbwert angegeben
werden. Der Farbwert wird als Grundlage fr den Schatteneffekt verwendet. Wird keine Farbe
angegeben, wird stattdessen auf den Wert der 'color'-Eigenschaft zurckgegriffen.
Textschatten k=nnen in Kombination mit den Pseudo-Elementen :first-letter und :first-line ver-
wendet werden.
Beispiel
Das folgende Beispiel setzt einen Textschatten rechts und unterhalb des Elementtexts.
Weil keine Farbe angegeben wurde, hat der Schatten dieselbe Farbe wie das eigentliche
Element, und weil kein berblendradius angegeben ist, wird der Textschatten langsam
ausgeblendet:
Cascading Style Sheets, Level 2
Das n@chste Beispiel platziert einen Schatten rechts und unterhalb des Elementtexts. Der
Schatten hat eine 5px breiten berblendradius und ist rot.
Das n@chste Beispiel gibt eine Liste mit Schatteneffekten an. Der erste Schatten liegt rechts und
unterhalb des Elementtexts und ist rot ohne berblendung. Der zweite Schatten berlagert
den ersten Schatteneffekt, er ist gelb, wird langsam ausgeblendet und links und unterhalb des
Texts platziert. Der dritte Schatteneffekt wird rechts und oberhalb des Texts platziert. Weil
fr den dritten Schatteneffekt keine Schattenfarbe angegeben ist, wird der Wert der 'color'-
Eigenschaft des Elements verwendet:
H2 { text-shadow: 3px 3px red, yellow -3px 3px 2px, 3px -3px }
[Link] {
background: white;
color: white;
text-shadow: black 0px 0px 5px;
}
Hier haben die 'background'- und 'color'-Eigenschaften denselben Wert, und die 'text-
shadow'-Eigenschaft wird verwendet, um einen „Sonnenfinsterniseffekt“ zu erzeugen:
Hinweis: Diese Eigenschaft ist in CSS1 nicht definiert. Einige Schatteneffekte (wie beispiels-
weise der aus dem letzten Beispiel) zeigt diesen Text in Benutzerprogrammen, die nur CSS1
untersttzen, m=glicherweise unsichtbar an. n
Diese Eigenschaft gibt das Abstandsverhalten zwischen Textzeichen an. Die Werte haben die
folgenden Bedeutungen:
normal
Der Abstand ist der normale Abstand fr die aktuelle Schrift. Dieser Wert erlaubt, dass das
Benutzerprogramm den Abstand zwischen Zeichen @ndert, um Text auszurichten.
<length>
Dieser Wert gibt den Abstand zwischen den Zeichen zus,tzlich zu dem Standardabstand
zwischen Zeichen an. Werte k=nnen negativ sein, aber es kann von der jeweiligen Imple-
mentierung abh@ngige Grenzen geben. Benutzerprogramme drfen den Leeraum zwischen
den Buchstaben nicht weiter vergr=ßern oder verkleinern, um Text auszurichten.
<edition
[Link]>
Algorithmen fr die Zeichenabst@nde sind vom Benutzerprogramm abh@ngig. Die Zeichen-
abst@nde k=nnen auch durch die Ausrichtung beeinflusst werden (siehe auch die Beschreibung
der 'text-align'-Eigenschaft oben).
Beispiel
In diesem Beispiel wird der Abstand zwischen Zeichen in BLOCKQUOTE-Elementen
um '0,1 em' vergr=ßert:
BLOCKQUOTE { letter-spacing: 0.1em }
Im folgenden Beispiel ist es dem Benutzerprogramm nicht erlaubt, den Abstand zwischen den
Zeichen zu ver@ndern:
Wenn der resultierende Abstand zwischen zwei Zeichen nicht derselbe wie der Standard-
abstand ist, sollten die Benutzerprogramme keine Ligaturen verwenden.
Konforme Benutzerprogramme k=nnten den Wert der 'letter-spacing'-Eigenschaft als 'normal'
interpretieren.
'word-spacing'
Diese Eigenschaft gibt das Abstandsverhalten zwischen W=rtern an. Die Werte haben die fol-
genden Bedeutungen:
normal
Der normale Abstand zwischen W=rtern, wie durch die aktuelle Schrift und/oder das
Benutzerprogramm definiert.
<length>
Dieser Wert gibt den Abstand zwischen W=rtern zus,tzlich zum Standardabstand zwischen
W=rtern an. Die Werte k=nnen negativ sein, aber m=glicherweise gibt es von der Imple-
mentierung abh@ngige Obergrenzen.
Algorithmen fr den Wortabstand sind vom Benutzerprogramm abh@ngig. Der Wortabstand
wird außerdem durch die Ausrichtung beeinflusst (siehe auch die Informationen zur 'text-
align'-Eigenschaft).
Beispiel
In diesem Beispiel wird der Wortabstand zwischen jedem Wort in H1-Elementen um
'1em' erh=ht.
H1 { word-spacing: 1em }
Diese Eigenschaft steuert die Effekte zur Großschreibung von Text. Die Werte haben die fol-
genden Bedeutungen:
capitalize
Schreibt das erste Zeichen eines jeden Wortes in Großbuchstaben.
uppercase
Wandelt alle Zeichen eines jeden Wortes in Großbuchstaben um.
<edition
[Link]>
lowercase
Wandelt alle Zeichen eines jeden Wortes in Kleinbuchstaben um.
none
Keine Effekte zur Großschreibung.
Die eigentliche Umwandlung ist fr jeden dieser F@lle von der geschriebenen Sprache abh@ngig.
M=glichkeiten, die Sprache eines Elements festzustellen, finden Sie in RFC 2070 ([RFC2070]).
Konforme Benutzerprogramme k=nnen den Wert von 'text-transform' fr Zeichen, die nicht
aus dem Latin-1-Repertoire stammen auf 'none' setzen, ebenso fr Elemente in Sprachen, fr
die sich die Umwandlung von der in den Fallumwandlungstabellen von ISO 10646 ([ISO10646])
unterscheidet.
Beispiel
In diesem Beispiel wird der gesamte Text in einem H1-Element in Großbuchstaben
umgewandelt.
H1 { text-transform: uppercase }
Medium: Visual
Diese Eigenschaft deklariert, wie Leerraum innerhalb des Elements behandelt wird. Die Werte
haben die folgenden Bedeutungen:
normal
Dieser Wert weist Benutzerprogramme an, Leerraum-Folgen zu komprimieren und bei
Bedarf Zeilen zu umbrechen, um Zeilen-Boxen zu fllen. Es k=nnen zus@tzliche Zeilen-
umbrche erzeugt werden, wenn „\A“ in erzeugtem Inhalt (z. B. fr das BR-Element in
HTML) auftritt.
pre
Dieser Wert verhindert, dass Benutzerprogramme Leerraum-Folgen komprimieren. Zeilen
werden nur an Neuezeile-Zeichen der Quelle umbrochen, oder wenn im erzeugten Inhalt „\A“
auftritt.
nowrap
Dieser Wert komprimiert Leerraum wie fr 'normal', unterdrckt aber Zeilenumbrche
innerhalb von Text, außer diejenigen, die durch „\A“ in erzeugtem Inhalt erzeugt werden
(z. B. fr das BR-Element in HTML).
Beispiel
Die folgenden Beispiele zeigen, welches Leerraum-Verhalten von den PRE- und P-Ele-
menten erwartet wird, und zudem das "nowrap"-Attribut in HTML.
PRE { white-space: pre }
P { white-space: normal }
TD[nowrap] { white-space: nowrap }
17 Tabellen
Beispiel
Nachfolgend sehen Sie eine einfache dreizeilige, dreispaltige Tabelle, die in HTML 4.0
beschrieben ist:
<TABLE>
<CAPTION>Dies ist eine einfache 3x3-Tabelle</CAPTION>
<TR id="row1">
<TH>dberschrift 1 <TD>Zelle 1 <TD>Zelle 2
<TR id="row2">
<TH>dberschrift 2 <TD>Zelle 3 <TD>Zelle 4
<TR id="row3">
<TH>dberschrift 3 <TD>Zelle 5 <TD>Zelle 6
</TABLE>
<edition
[Link]>
Dieser Code erzeugt eine Tabelle (das TABLE-Element), drei Zeilen (die TR-Elemente), drei
berschriftszellen (die TH-Elemente) und sechs Datenzellen (die TD-Elemente). Beachten Sie,
dass die drei Spalten dieses Beispiels implizit angegeben sind: Es gibt so viele Spalten in der
Tabelle, wie von berschrift und Datenzellen ben=tigt werden.
Die folgende CSS-Regel zentriert den Text horizontal in den berschriftszellen und stellt die
Daten fett ausgezeichnet dar:
Die n@chste Regel richtet den Text der berschriftszellen an ihrer Grundlinie aus und zentriert
den Text vertikal in jeder Datenzelle:
TH { vertical-align: baseline }
TD { vertical-align: middle }
Die n@chste Regel gibt an, dass die oberste Zeile von einem 3px breiten durchgezogenen
blauen Rahmen umgeben ist, und dass alle anderen Zeilen von einem 1px breiten durchgezoge-
nen schwarzen Rahmen umgeben sind.
Beachten Sie jedoch, dass sich die Rahmen um die Zeilen herum dort berlappen, wo die Zeilen
zusammentreffen. Welche Farbe (schwarz oder blau) und welche St@rke (1px oder 3px) erh@lt
der Rahmen zwischen Zeile 1 (row1) und Zeile 2 (row2)? Wir werden im Abschnitt ber die
Konfliktaufl=sung bei Rahmen noch einmal darauf zurckkommen.
Die folgende Regel schreibt die Tabellenberschrift ber die Tabelle:
Cascading Style Sheets, Level 2
Die nachfolgende Regel schließlich gibt an, dass jede Datenzeile bei der akustischen Darstellung
als „ berschrift, Daten, Daten“ gelesen wird.
TH { speak-header: once }
Die erste Zeile beispielsweise wrde als „ berschrift1 Zelle1 Zelle2“ gelesen. Mit der folgen-
den Regel hingegen:
TH { speak-header: always }
Anmerkung der bersetzer: Das folgende Beispiel zeigt eine Tabelle eines XML-
Dokumenttyps, der nicht die bekannten HTML- oder CALS-Tabellen verwendet. Es
handelt sich um die Tabelle der ersten Fußball-Bundesliga. Zu sehen ist der Stand nach
einem Spieltag in der Saison 2002/2003. Zur Beschreibung der Daten werden Element-
typnamen verwendet, die beschreiben, worum es sich bei den Daten handelt: verein,
tore, punkte.
<edition
[Link]>
</pos>
<pos>
<verein>VfB Stuttgart</verein>
<punkte>21</punkte>
<tore>21:15</tore>
</pos>
<pos>
<verein>VfL Bochum</verein>
<punkte>20</punkte>
<tore>27:21</tore>
</pos>
<pos>
<verein>1860 MUnchen</verein>
<punkte>20</punkte>
<tore>18:15</tore>
</pos>
<pos>
<verein>VfL Wolfsburg</verein>
<punkte>19</punkte>
<tore>15:16</tore>
</pos>
<pos>
<verein>Hamburger SV</verein>
<punkte>19</punkte>
<tore>16:19</tore>
</pos>
<pos>
<verein>Bayer Leverkusen</verein>
<punkte>16</punkte>
<tore>17:20</tore>
</pos>
<pos>
<verein>1. FC NUrnberg</verein>
Cascading Style Sheets, Level 2
<punkte>16</punkte>
<tore>16:21</tore>
</pos>
<pos>
<verein>Borussia M^nchengladbach</verein>
<punkte>15</punkte>
<tore>16:12</tore>
</pos>
<pos>
<verein>Hansa Rostock</verein>
<punkte>15</punkte>
<tore>15:14</tore>
</pos>
<pos>
<verein>Hannover 96</verein>
<punkte>15</punkte>
<tore>22:27</tore>
</pos>
<pos>
<verein>Armenia Bielefeld</verein>
<punkte>14</punkte>
<tore>13:22</tore>
</pos>
<pos>
<verein>Energie Cottbus</verein>
<punkte>8</punkte>
<tore>7:27</tore>
</pos>
<pos>
<verein>FC Kaiserslautern</verein>
<punkte>7</punkte>
<tore>12:22</tore>
</pos>
</liga>
<edition
[Link]>
Mozilla 1.1 stellt dieses Beispiel wie in der Abbildung zu sehen dar.
Cascading Style Sheets, Level 2
Im weiteren Verlauf des Kapitels werden die einzelnen CSS-Anweisungen, die fr die
Darstellung als Tabelle verantwortlich sind, detailliert erkl@rt.
<edition
[Link]>
Elemente, fr die 'display' auf 'table-column' oder 'table-column-group' gesetzt ist, werden nicht
dargestellt (so, als w@re 'display' auf 'none' gesetzt), aber sie sind praktisch, weil sie m=glicher-
weise Attribute haben, die einen bestimmten Stil fr die Spalten vorgeben, die sie darstellen.
Das Standard-Stylesheet fr HTML 4.0 im Anhang zeigt die Verwendung dieser Werte fr
HTML 4.0:
Andere Dokumentsprachen als HTML enthalten m=glicherweise nicht alle Elemente aus dem
CSS2-Tabellenmodell. In diesen F@llen mssen die „fehlenden“ Elemente vorausgesetzt werden,
damit das Tabellenmodell funktioniert. Die fehlenden Elemente erzeugen anonyme Objekte
(z. B. anonyme Boxen im visuellen Tabellenlayout), die den folgenden Regeln entsprechen:
1. Jedes Tabellenelement erzeugt automatisch anonyme Tabellenobjekte um sich selbst
herum, die aus mindestens drei verschachtelten Objekten bestehen, die einem 'table'/'in-
line-table'-Element, einem 'table-row'-Element und einem 'table-cell'-Element entsprechen.
2. Wenn das bergeordnete P eines 'table-cell'-Elements T keine 'table-row' ist, wird ein
Objekt, das einer 'table-row' entspricht, zwischen P und T erzeugt. Dieses Objekt erstreckt
Cascading Style Sheets, Level 2
Beispiel
In diesem XML-Beispiel wird angenommen, dass ein 'table' Element das HBOX-Element
enth@lt:
<HBOX>
<VBOX>George</VBOX>
<VBOX>4287</VBOX>
<VBOX>1998</VBOX>
</HBOX>
In diesem Beispiel werden drei 'table-cell'-Elemente angenommen, die den Text in den ROWs
enthalten. Beachten Sie, dass der Text weiter in anonyme Inline-Boxen eingekapselt ist, wie im
Abschnitt ber das visuelle Formatierungsmodell erkl@rt:
<STACK>
<ROW>This is the <D>top</D> row.</ROW>
<ROW>This is the <D>middle</D> row.</ROW>
<ROW>This is the <D>bottom</D> row.</ROW>
</STACK>
17.3 Spaltenselektoren
Tabellenzellen k=nnen zu zwei Kontexten geh=ren: Zeilen und Spalten. Im Quelldokument sind
Zellen jedoch Ableitungen von Zeilen, nie von Spalten. Trotzdem k=nnen einige Aspekte von
Zellen beeinflusst werden, indem man Eigenschaften fr Spalten setzt.
Die folgenden Eigenschaften gelten fr Spalten- und Spaltengruppenelemente:
'border'
Die verschiedenen Rahmeneigenschaften gelten fr Spalten nur dann, wenn 'border-collap-
se' fr das Tabellenelement auf 'collapse' gesetzt ist. In diesem Fall werden Rahmen, die fr
Spalten und Spaltengruppen gesetzt sind, in den Algorithmus zur Konfliktaufl=sung (17.6.2)
eingegeben, der den Rahmenstil an jeder Zellkante festlegt.
<edition
[Link]>
'background'
Die Hintergrundeigenschaften setzen den Hintergrund fr Zellen in der Spalte, aber nur,
wenn sowohl die Zelle als auch die Zeile transparente Hintergrnde haben. Weitere Infor-
mationen finden Sie im Abschnitt 17.5.1 ber Tabellenebenen und Transparenz.
'width'
Die 'width'-Eigenschaft gibt die Mindestbreite fr die Spalte vor.
'visibility'
Wenn die 'visibility' einer Spalte auf 'collapse' gesetzt ist, werden keine Zellen der Spalte
dargestellt, und Zellen, die sich in andere Spalten erstrecken, werden abgeschnitten. Dar-
ber hinaus wird die Breite der Tabelle um die Breite der Spalte verringert, die diese Spalte
eingenommen h@tte. Weitere Informationen finden Sie im Abschnitt „Dynamische Effekte“,
sp@ter in diesem Kapitel. Andere Werte fr 'visibility' zeigen keine Wirkung.
Beispiel
Nachfolgend finden Sie einige Beispiele fr Stilregeln, die Eigenschaften fr Spalten set-
zen. Die beiden ersten Regeln implementieren zusammen das „rules“-Attribut von
HTML 4.0 mit einem Wert „cols“. Die dritte Regel macht die Spalte „totals“ blau, die
beiden letzten Regeln zeigen, wie man einer Spalte mit Hilfe des Algorithmus fr ein
fixes Layout eine feste Gr=ße zuweist.
COL { border-style: none solid }
TABLE { border-style: hidden }
[Link] { background: blue }
TABLE { table-layout: fixed }
[Link] { width: 5em }
ein ersetztes Element auf Inline-Ebene verhalten. Tabellen haben Inhalt, Polsterung, Rahmen
und R@nder.
In beiden F@llen erzeugt das Tabellenelement eine anonyme Box, die sowohl die eigentliche
Tabellen-Box als auch die Box fr die berschrift (falls vorhanden) enth@lt. Die Boxen fr
Tabelle und berschrift behalten ihre eigenen Inhalts-, Polsterungs-, Rand- und Rahmenberei-
che, und die Gr=ße der rechteckigen anonymen Box ist die kleinste Gr=ße, die erforderlich ist,
um beides aufzunehmen. Vertikale R@nder fallen zusammen, wenn sich die Tabellen-Box und
die berschrifts-Box berhren. Eine Neupositionierung der Tabelle muss die gesamte anonyme
Box verschieben, nicht nur die Tabellen-Box, damit die berschrift der Tabelle folgt.
caption’s margin
} collapsed mar
table’s margin
Abbildung 17.1: Skizze einer Tabelle mit einer darber liegenden berschrift; der untere Rand
der berschrift f@llt mit dem oberen Rand der Tabelle zusammen.
'caption-side'
Diese Eigenschaft gibt die Position der berschrifts-Box relativ zur Tabellen-Box an. Die
Werte haben die folgenden Bedeutungen:
top
Positioniert die berschrifts-Box oberhalb der Tabellen-Box.
bottom
Positioniert die berschrifts-Box unterhalb der Tabellen-Box.
left
Positioniert die berschrifts-Box links von der Tabellen-Box.
right
Positioniert die berschrifts-Box rechts von der Tabellen-Box.
<edition
[Link]>
berschriften oberhalb oder unterhalb eines 'table'-Elements werden fast so formatiert, als
handle es sich dabei um ein Blockelement vor oder nach der Tabelle, außer dass (1) sie nicht
vererbbare Eigenschaften von der Tabelle erben und (2) nicht als Block-Box betrachtet werden,
was 'compact'- oder 'run-in'-Elemente betrifft, die der Tabelle m=glicherweise vorausgehen.
Eine berschrift, die sich oberhalb oder unterhalb einer Tabellen-Box befindet, verh@lt sich
ebenfalls wie eine Block-Box fr Breitenberechnungen; die Breite wird relativ zur Breite des
umschließenden Blocks der Tabellen-Box berechnet.
Fr eine berschrift, die sich rechts oder links von einer Tabellen-Box befindet, setzt dagegen
ein anderer Wert als 'auto' fr 'width' die Breite explizit; 'auto' weist das Benutzerprogramm
an, eine „sinnvolle Breite“ zu w@hlen. Das reicht von „der schmalsten m=glichen Box“ bis hin
zu „eine einzelne Zeile“, wir empfehlen also, dass die Autoren fr die Breite einer linken und
rechten berschrift nicht 'auto' angeben.
Um den berschriftsinhalt horizontal innerhalb der berschrifts-Box auszurichten, verwenden
Sie die 'text-align'-Eigenschaft. Fr die vertikale Ausrichtung einer linken oder rechten ber-
schrifts-Box relativ zur Tabellen-Box ist die 'vertical-align'-Eigenschaft zust@ndig. Die einzigen
sinnvollen Werte sind in diesem Fall 'top', 'middle' und 'bottom'. Alle anderen Werte werden
genau wie 'top' behandelt.
Beispiel
In diesem Beispiel platziert die 'caption-side'-Eigenschaft berschriften unterhalb von
Tabellen. Die berschrift ist so breit wie das bergeordnete Element der Tabelle, und
der berschriftstext ist linksbndig ausgerichtet.
CAPTION { caption-side: bottom;
width: auto;
text-align: left }
Das folgende Beispiel zeigt, wie man eine berschrift im linken Rand platziert. Die eigentliche
Tabelle ist zentriert, weil ihre linken und rechten R@nder auf 'auto' gesetzt wurden, und die
Cascading Style Sheets, Level 2
gesamte Box mit Tabelle und berschrift wird in den linken Rand verschoben, und zwar um
dieselbe Breite wie die berschrift.
BODY {
margin-left: 8em
}
TABLE {
margin-left: auto;
margin-right: auto
}
CAPTION {
caption-side: left;
margin-left: -8em;
width: 8em;
text-align: right;
vertical-align: bottom
}
Angenommen, die Breite der Tabelle w@re kleiner als die verfgbare Breite, dann s@he die For-
matierung wie folgt aus:
current margins
text text text previous paragraph text text above the table text text
more text text text normal paragraph text text etc. etc.
Abbildung 17.2: Skizze, die eine zentrierte Tabelle zeigt, wobei die berschrift in den linken
Rand hinausragt, weil eine negative 'margin-left'-Eigenschaft angegeben wurde.
<edition
[Link]>
lich links befinden, aber es darf sich nicht mit anderen Zell-Boxen berlappen. Zudem muss
es rechts von allen Zellen derselben Zeile stehen, die im Quelldokument vorher vorkom-
men. (Diese Beschr@nkung gilt, wenn die 'direction'-Eigenschaft der Tabelle gleich 'ltr' ist;
wenn die 'direction' 'rtl' ist, vertauschen Sie im vorigen Satz „links“ und „rechts“).
6. Eine Zellen-Box kann nicht ber die letzte Zeilen-Box einer Tabellen- oder Zeilengruppe
hinausgehen; Benutzerprogramme mssen sie krzen, bis sie passt.
Hinweis: Tabellenzellen k=nnen relativ und absolut positioniert werden, das ist jedoch nicht zu
empfehlen: die Positionierung und das Floating entfernen eine Box aus dem Fluss und beeinflus-
sen die Tabellenausrichtung. n
Beispiel
Hier zwei Beispiele. Das erste soll in einem HTML-Dokument auftreten:
<TABLE>
<TR><TD>1 <TD rowspan="2">2 <TD>3 <TD>4
<TR><TD colspan="2">5
</TABLE>
<TABLE>
<ROW><CELL>1 <CELL rowspan="2">2 <CELL>3 <CELL>4
<ROW><CELL colspan="2">5
</TABLE>
Die zweite Tabelle ist formatiert, wie in der Abbildung rechts gezeigt; die Darstellung der
HTML-Tabelle ist von HTML explizit nicht definiert, und CSS versucht nicht, sie zu definieren.
Benutzerprogramme k=nnen sie nach Belieben darstellen, z. B. wie in der Abbildung links
gezeigt.
Cascading Style Sheets, Level 2
1 2 3 4 1 2 3 4
5 5
Abbildung 17.3: Links sehen Sie eine m=gliche Darstellung einer fehlerhaften HTML 4.0-Tabelle;
rechts sehen Sie die einzig m=gliche Formatierung einer @hnlichen Tabelle, die nicht in HTML
formuliert ist.
Um den Hintergrund jeder Tabellenzelle zu ermitteln, kann man sich die verschiedenen Tabel-
lenelemente als sechs bereinander geschichtete Ebenen vorstellen. Der Hintergrund, der fr
ein Element in einer der Ebenen gesetzt wird, ist nur sichtbar, wenn die darber liegenden Ebe-
nen einen transparenten Hintergrund haben.
cells
rows
row groups
columns
column groups
table
1. Unterste Ebene ist eine einzelne Ebene, die die eigentliche Tabellen-Box darstellt. Wie alle
Boxen kann sie transparent sein.
2. Die n@chste Ebene enth@lt die Spaltengruppen. Die Spaltengruppen sind so groß wie die
Tabelle, aber sie mssen nicht die gesamte Tabelle horizontal abdecken.
3. ber den Spaltengruppen gibt es die Bereiche, die die Spalten-Boxen darstellen. Wie Spal-
tengruppen sind Spalten so hoch wie die Tabelle, mssen aber nicht die gesamte Tabelle
horizontal abdecken.
4. Es folgt die Ebene, die die Zeilengruppen enth@lt. Jede Zeilengruppe ist so breit wie die
Beispiel
Im folgenden Beispiel enth@lt die erste Zeile vier Zellen, die zweite Zeile dagegen keine
Zellen, deshalb scheint der Tabellenhintergrund durch, außer wenn sich eine Zelle von
der ersten Zeile in diese Zeile weitererstreckt. Der nachfolgende HTML-Code und die
Stilregeln:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<STYLE type="text/css">
TABLE { background: #ff0; border-collapse: collapse }
TD { background: red; border: double black }
<edition
[Link]>
</STYLE>
</HEAD>
<BODY>
<P>
<TABLE>
<TR>
<TD> 1
<TD rowspan="2"> 2
<TD> 3
<TD> 4
</TR>
<TR><TD></TD></TR>
</TABLE>
</BODY>
</HTML>
1 2 3 4
Abbildung 17.5: Tabelle mit drei leeren Zellen in der unteren Zeile
CSS definiert kein „optimales“ Layout fr Tabellen, weil es in vielen F@llen Geschmackssache
ist, was optimal ist. CSS definiert des Weiteren keine Beschr@nkungen, die die Benutzerpro-
gramme beim Anlegen einer Tabelle bercksichtigen mssen. Benutzerprogramme k=nnen
beliebige Algorithmen verwenden, und es steht ihnen frei, Darstellungsgeschwindigkeit einer
genaue Darstellung vorzuziehen, außer wenn der „Algorithmus fr ein festes Layout“ (fixed)
ausgew@hlt wird.
'table-layout'
Die 'table-layout'-Eigenschaft steuert den Algorithmus fr das Anlegen der Zellen, Zeilen und
Spalten der Tabelle. Die Werte haben die folgenden Bedeutungen:
fixed
Verwendet den Algorithmus fr ein festes Tabellen-Layout
auto
Verwendet einen beliebigen Algorithmus fr ein automatisches Tabellenlayout
Festes Tabellenlayout
Bei diesem (schnellen) Algorithmus ist das horizontale Layout der Tabelle nicht vom Inhalt der
Zellen, sondern nur von der Breite der Tabelle, der Breite der Spalten sowie den Rahmen oder
Zellauffllungen abh@ngig.
Die Tabellenbreite kann explizit mit der 'width'-Eigenschaft angegeben werden. Der Wert 'au-
to' (sowohl fr 'display: table' als auch fr 'display: inline-table') bedeutet, dass der Algorithmus
fr das automatische Tabellenlayout verwendet wird.
Beim Algorithmus fr ein festes Tabellenlayout wird die Breite jeder Spalte wie folgt ermittelt:
1. Ein Spaltenelement mit einem anderen Wert als 'auto' fr die 'width'-Eigenschaft legt die
Breite fr diese Spalte fest.
2. Andernfalls legt eine Zelle in der ersten Zeile mit einem anderen Wert als 'auto' fr die
'width'-Eigenschaft die Breite fr diese Spalte fest. Wenn sich die Zelle ber mehrere Spal-
ten erstreckt, wird die Breite ber die Spalten aufgeteilt.
3. Der restliche horizontale Tabellenraum wird auf alle restlichen Spalten aufgeteilt (abzglich
der Rahmen oder Zellauffllungen).
Die Breite einer Tabelle ist dann der gr=ßere Wert aus dem Wert der 'width'-Eigenschaft fr
das Tabellenelement und der Summe der Spaltenbreiten (plus Zellauffllung oder Rahmen). Ist
die Tabelle breiter als die Summe der Spaltenbreiten, sollte der zus@tzliche Platz gleichm@ßig
Automatisches Tabellenlayout
Bei diesem Algorithmus (der im Allgemeinen mehr als zwei Durchg@nge ben=tigt), wird die
Tabellenbreite durch die Breite ihrer Spalten (und dazwischenliegenden Rahmen) festgelegt.
Dieser Algorithmus reflektiert das Verhalten mehrerer bekannter HTML-Benutzerprogramme
zum Zeitpunkt der Drucklegung dieser Spezifikation. Benutzerprogramme mssen diesen Algo-
rithmus nicht implementieren, um das Tabellenlayout im Falle von 'table-layout' gleich 'auto' zu
implementieren; sie k=nnen einen beliebigen anderen Algorithmus verwenden.
Dieser Algorithmus kann ineffizient sein, weil er einerseits fordert, dass das Benutzerprogramm
Zugriff auf den gesamten Tabelleninhalt hat, bevor das endgltige Layout festgelegt werden
kann, und weil andererseits dafr mehrere Durchg@nge erforderlich sein k=nnen.
<edition
[Link]>
(MAX) erforderlich ist, kleiner als die des umschließenden Blocks, wird MAX verwendet.
Ein Prozentwert fr eine Spaltenbreite ist relativ zur Tabellenbreite. Hat die Tabelle die Eigen-
schaft 'width: auto', stellt ein Prozentwert eine Beschr@nkung fr die Spaltenbreite dar, die ein
Benutzerprogramm einhalten sollte. (Offensichtlich ist das nicht immer m=glich: Ist die Spalten-
breite gleich '110%', kann die Beschr@nkung nicht mehr eingehalten werden.)
Hinweis: In diesem Algorithmus werden Zeilen (und Zeilengruppen) und Spalten (und Spalten-
gruppen) durch die Gr=ße der enthaltenen Zellen beschr@nkt und beschr@nken diese. Durch
die Festlegung der Breite einer Spalte kann die H=he einer Zeile indirekt beeinflusst werden
und umgekehrt. n
Die H=he einer Tabelle wird durch die 'height'-Eigenschaft fr das 'table'- oder 'inline-table'-Ele-
ment festgelegt. Der Wert 'auto' bedeutet, dass die H=he gleich der Summe der Zeilenh=hen
plus aller Zellenabst@nde oder Rahmen ist. Jeder andere Wert gibt die H=he explizit an; die
Tabelle kann also h=her oder niedriger als die H=he ihrer Zeilen sein. CSS2 gibt nichts fr die
Darstellung vor, wenn sich die angegebene Tabellenh=he von der Inhaltsh=he unterscheidet,
insbesondere, ob die Inhaltsh=he die angegebene H=he berschreiben soll; ist dies nicht der
Fall, wie soll dann der zus@tzliche Platz ber die Zeilen verteilt werden, der sich aus einer H=he
geringer als die angegebene Tabellenh=he ergibt; oder soll das Benutzerprogramm, falls die
Inhaltsh=he die angegebene Tabellenh=he berschreitet, einen Mechanismus bereitstellen, mit
dem der Inhalt weitergebl@ttert werden kann?
Hinweis: Zuknftige Versionen von CSS werden diese Problematik vielleicht genauer behan-
deln. n
Die H=he der Box eines 'table-row'-Elements wird berechnet, nachdem dem Benutzerpro-
gramm alle Zellen der Zeile zur Verfgung stehen: Es ist der Maximalwert aus der angegebenen
H=he der Zeile ('height') und der Mindesth=he (MIN), die fr die Zellen erforderlich ist. Ein
'height'-Wert von 'auto' fr eine 'table-row' bedeutet, die berechnete Zeilenh=he ist MIN. MIN
ist von der Zell-Box-H=he und der Zell-Box-Ausrichtung abh@ngig (@hnlich wie die Berechnung
einer Zeilen-Box-H=he). CSS2 definiert nicht, worauf sich Prozentwerte von 'height' beziehen,
wenn sie fr Tabellenzeilen und Zeilengruppen angegeben werden.
In CSS2 ist die H=he einer Zell-Box der Maximalwert aus der 'height'-Eigenschaft der Tabellen-
zelle und der fr den Inhalt erforderlichen Mindesth=he (MIN). Der Wert 'auto' fr 'height'
impliziert einen berechneten Wert von MIN. CSS2 definiert nicht, worauf sich Prozentwerte
von 'height' beziehen, wenn sie fr Tabellenzellen angegeben sind.
CSS2 gibt nicht an, wie Tabellenzellen, die sich ber mehrere Zeilen erstrecken, die Zeilenh=-
henberechnungen beeinflussen. Es wird nur vorgegeben, dass die Summe der betreffenden Zei-
lenh=hen groß genug sein muss, um die Zelle aufzunehmen, die sich ber die Zeilen erstreckt.
Die 'vertical-align'-Eigenschaft jeder Tabellenzelle legt ihre Ausrichtung innerhalb der Zeile fest.
Der Inhalt jeder Zelle hat eine Grundlinie, ein Oben, eine Mitte und ein Unten, genau wie die
eigentliche Zeile auch. Im Kontext von Tabellen haben die Werte fr 'vertical-align' die folgen-
den Bedeutungen:
baseline
<edition
[Link]>
Die Grundlinie einer Zelle ist die Grundlinie der ersten Zeilen-Box in der Zelle. Falls es keinen
Text gibt, ist die Grundlinie die Grundlinie des Objekts, das in der Zelle angezeigt wird, oder,
falls es kein solches gibt, die untere Kante der Zell-Box. Der maximale Abstand zwischen der
oberen Kante der Zell-Box und der Grundlinie ber alle Zellen, fr die 'vertical-align: baseline'
gilt, wird verwendet, um die Grundlinie der Zeile zu setzen. Hier ein Beispiel:
Beispiel
Abbildung 17.6: Skizze, die die Auswirkung verschiedener Werte von 'vertical-align' auf
Tabellenzellen verdeutlicht.
Die Zell-Boxen 1 und 2 werden an ihren Grundlinien ausgerichtet. Zell-Box 2 hat die
gr=ßte H=he ber der Grundlinie und legt damit die Grundlinie der Zeile fest. Beachten
Cascading Style Sheets, Level 2
Sie, dass die Zeile keine Grundlinie hat (oder braucht), wenn keine Zell-Box an ihrer
Grundlinie ausgerichtet ist.
Um mehrdeutige Situationen zu vermeiden, geht die Ausrichtung der Zellen in der nachstehen-
den Reihenfolge vor:
1. Zuerst werden die Zellen positioniert, die an ihrer Grundlinie ausgerichtet sind. Damit
wird die Grundlinie der Zeile eingerichtet. Anschließend werden die Zellen mit 'vertical-
align: top' positioniert.
2. Jetzt hat die Zeile eine obere Kante, m=glicherweise eine Grundlinie sowie eine provisori-
sche H=he, n@mlich den Abstand von der oberen Kante zu der untersten Kante der bisher
positionierten Zellen. (Weitere Bedingungen der Zellauffllung finden Sie nachfolgend.)
3. Falls eine der weiteren Zellen, die unten oder in der Mitte ausgerichtet sind, eine H=he hat,
die gr=ßer als die aktuelle H=he der Zeile ist, wird die Zeilenh=he auf das Maximum dieser
Zellen erh=ht, indem die Unterkante abgesenkt wird.
4. Schließlich werden die restlichen Zellen positioniert.
Zellboxen, die kleiner als die Zeilenh=he sind, erhalten eine zus@tzliche Polsterung oben oder
unten.
Die horizontale Ausrichtung eines Zellinhalts innerhalb einer Zell-Box wird mit Hilfe der 'text-
align'-Eigenschaft angegeben.
Wenn die 'text-align'-Eigenschaft fr mehr als eine Zelle in einer Spalte auf einen Zeichenket-
tenwert gesetzt ist, wird der Inhalt dieser Zellen entlang einer vertikalen Achse ausgerichtet.
Der Anfang der Zeichenkette berhrt diese Achse. Die Richtung der Zeichen bestimmt, ob die
Zeichenkette links oder rechts von der Achse liegt.
Die Ausrichtung des Texts auf diese Weise ist nur dann sinnvoll, wenn der Text in eine Zeile
passt. Das Ergebnis ist nicht definiert, wenn sich der Zellinhalt ber mehr als eine Zeile erstreckt.
Falls der Wert von 'text-align' fr eine Tabellenzelle eine Zeichenkette ist, die Zeichenkette
aber nicht im Zellinhalt auftritt, berhrt das Ende des Zellinhalts die vertikale Achse der Aus-
richtung.
Beachten Sie, dass die Zeichenketten nicht fr alle Zellen gleich sein mssen, obwohl dies nor-
malerweise der Fall ist.
CSS untersttzt keine Methode, um den Abstand der vertikalen Ausrichtungsachse relativ zur
Kante einer Spalten-Box anzugeben.
Beispiel
Das folgende Stylesheet:
TD { text-align: "." }
TD:before { content: "$" }
<TABLE>
<COL width="40">
<TR> <TH>Ferngespr]che
<TR> <TD> 1.30
entlang des Dezimalpunkts ausgerichtet werden. Spaßeshalber haben wir das Pseudo-Element
:before verwendet, um vor jeder Zahl ein Dollarzeichen einzufgen. Die Tabelle k=nnte wie
folgt dargestellt werden:
Ferngespr]che
$1.30
$2.50
$10.80
$111.01
$85.
$90
$.05
$.06
<edition
[Link]>
Die 'visibility'-Eigenschaft nimmt den Wert 'collapse' fr Zeilen-, Zeilengruppen-, Spalten- und
Spaltengruppenelemente an. Dieser Wert bewirkt, dass die ganze Zeile oder Spalte aus der
Anzeige entfernt und der Platz, der normalerweise von der Zeile oder Spalte belegt wird, fr
anderen Inhalt verfgbar gemacht wird. Die Unterdrckung der Zeile oder Spalte wirkt sich
jedoch nicht anderweitig auf das Layout der Tabelle aus. Das erlaubt dynamische Effekte zum
Entfernen von Tabellenzeilen oder -spalten, ohne eine Neudarstellung der Tabelle zu erzwin-
gen, um die m=glichen Onderungen in Spaltenbeschr@nkungen zu bercksichtigen.
17.6 Rahmen
Es gibt zwei verschiedene Modelle, um in CSS Rahmen fr Tabellenzellen zu setzen. Das eine
ist am besten fr so genannte trennende Rahmen um einzelne Zellen herum geeignet, das
andere fr Rahmen, die fortlaufend vom einen Ende der Tabelle zum anderen verlaufen. Mit
jedem dieser Modelle k=nnen viele Rahmenstile generiert werden, deshalb ist es h@ufig
Geschmackssache, welches von beiden verwendet wird.
'border-collapse'
Diese Eigenschaft legt das Rahmenmodell fr eine Tabelle fest. Der Wert 'separate' w@hlt das
Rahmenmodell mit trennenden Rahmen aus. Der Wert 'collapse' w@hlt das Modell mit zusam-
menfallenden Rahmen aus. Die Modelle sind nachfolgend beschrieben.
'border-spacing'
Die L@nge gibt den Abstand an, der benachbarte Zellrahmen voneinander trennt. Wird nur eine
L@nge angegeben, gibt sie sowohl den horizontalen als auch den vertikalen Abstand an. Werden
zwei L@ngen angegeben, bezieht sich die erste auf den horizontalen Abstand, die zweite auf den
vertikalen Abstand. L@ngen drfen nicht negativ sein.
In diesem Modell hat jede Zelle einen eigenen Rahmen. Die 'border-spacing'-Eigenschaft gibt
den Abstand zwischen den Rahmen benachbarter Zellen an. Dieser Abstand wird mit dem Hin-
tergrund des Tabellenelements gefllt. Zeilen, Spalten, Zeilengruppen und Spaltengruppen k=n-
nen keine Rahmen haben (das heißt, Benutzerprogramme mssen die Rahmeneigenschaften fr
diese Elemente ignorieren).
Beispiel
Die Tabelle in der nachfolgenden Abbildung k=nnte das Ergebnis etwa des folgenden
Stylesheets sein:
TABLE { border: outset 10pt;
border-collapse: separate;
border-spacing: 15pt }
TD { border: inset 5pt }
[Link] { border: inset 10pt } /* Die obere linke Zelle */
table width
table border
(outset)
vertical
cell−spacing
Abbildung 17.7: Eine Tabelle, deren 'border-spacing' auf einen L@ngenwert gesetzt ist. Beachten
Sie, dass jede Zelle einen eigenen Rahmen hat und die Tabelle einen separaten Rahmen hat.
<edition
[Link]>
'empty-cells'
Bei dem Modell der trennenden Rahmen steuert diese Eigenschaft die Darstellung von Rahmen
um Zellen, die keinen sichtbaren Inhalt haben. Leere Zellen und Zellen, deren 'visibility'-Eigen-
schaft auf 'hidden' gesetzt ist, werden so behandelt, als h@tten sie keinen sichtbaren Inhalt.
Sichtbarer Inhalt beinhaltet „ “ und anderen Leeraum außer ASCII Wagenrcklauf
(„\0D“), Zeilenvorschub („\0A“), Tabulator („\09“) und Leerzeichen („\20“).
Wenn diese Eigenschaft den Wert 'show' hat, werden Rahmen um leere Zellen (wie um nor-
male Zellen) gezogen.
Der Wert 'hide' bedeutet, dass um leere Zellen keine Rahmen gezogen werden. Haben darber
hinaus alle Zellen in einer Zeile den Wert 'hide' und keinen sichtbaren Inhalt, verh@lt sich die
gesamte Zeile so, als w@re 'dispay: none'.
Beispiel
Die folgende Regel bewirkt, dass Rahmen um alle Zellen gezogen werden:
TABLE { empty-cells: show }
Cascading Style Sheets, Level 2
Im Modell mit den zusammenfallenden Rahmen ist es m=glich, Rahmen anzugeben, die einen
Teil oder eine gesamte Zelle, Zeile, Zeilengruppe, Spalte und Spaltengruppe umrahmen. Auf
diese Weise k=nnen Rahmen fr das „rule“-Attribut angegeben werden.
Rahmen sind an den Rasterlinien zwischen den Zellen zentriert. Benutzerprogramme mssen
eine konsistente Regel finden, um im Fall einer ungeraden Nummer diskreter Einheiten (Bild-
schirmpixel, Druckerpunkte) abzurunden.
Die folgende Skizze zeigt, wie die Breite der Tabelle, die Breite der Rahmen, die Auffllung und
die Zellbreite zusammenspielen. Ihre Beziehung wird durch die folgende Gleichung beschrie-
ben, die fr jede Zeile der Tabelle gilt:
Zeilenbreite = (0.5 * border-width0) + padding-left1 + width1 + padding-right1 + border-
width1 + padding-left2 + ... + padding-rightn + (0.5 * border-widthn)
Hier ist n die Anzahl der Zellen in der Zeile, und border-widthi bezieht sich auf den Rahmen
zwischen den Zellen i und i+1. Beachten Sie, dass fr die Tabellenbreite nur die H@lfte der bei-
den @ußeren Rahmen bercksichtigt wird; die andere H@lfte dieser beiden Rahmen liegt im
Randbereich.
border−width
border−width
border−width
border−width
padding
padding
padding
padding
padding
padding
cell
width width width
Abbildung 17.8: Schema, das die Breiten von Zellen und Rahmen und die Auffllung von Zellen
zeigt
Beachten Sie, dass die Breite der Tabelle in diesem Modell die H@lfte des Tabellenrahmens ent-
h@lt. Darber hinaus hat eine Tabelle in diesem Modell keine Auffllung (aber R@nder).
RahmenkonfliktauflUsung
Im Modell fr zusammenfallende Rahmen kann jede Kante jeder Zelle durch Rahmeneigenschaf-
ten fr eine Vielzahl von Elementen gesetzt werden, die diese Kanten treffen (Zellen, Zeilen,
<edition
[Link]>
Beispiel
Das folgende Beispiel zeigt die Anwendung dieser Priorit@tsregeln. Das folgende Style-
sheet:
TABLE { border-collapse: collapse;
border: 5px solid yellow; }
*#col1 { border: 3px solid black; }
TD { border: 1px solid red; padding: 1em; }
[Link]-blue { border: 5px dashed blue; }
[Link]-green { border: 5px solid green; }
<P>
<TABLE>
<COL id="col1"><COL id="col2"><COL id="col3">
<TR id="row1">
<TD> 1
<TD> 2
<TD> 3
</TR>
<TR id="row2">
<TD> 4
<TD class="solid-blue"> 5
<TD class="solid-green"> 6
</TR>
<TR id="row3">
<TD> 7
<TD> 8
<TD> 9
</TR>
<TR id="row4">
<TD> 10
Cascading Style Sheets, Level 2
<TD> 11
<TD> 12
</TR>
<TR id="row5">
<TD> 13
<TD> 14
<TD> 15
</TR>
</TABLE>
Das n@chste Beispiel zeigt eine Tabelle mit horizontalen Linien zwischen den Zeilen. Der
oberste Rahmen der Tabelle ist auf 'hidden' gesetzt, um den obersten Rahmen der ersten Zeile
zu unterdrcken. Das implementiert das „rules“-Attribut von HTML 4.0 (rules=„rows“).
a b c
3 4 5
In diesem Fall kann derselbe Effekt auch erzielt werden, ohne einen 'hidden'-Rahmen fr TABLE
zu setzen, indem die erste Zeile separat adressiert wird. Welche Methode bevorzugt wird, ist
Geschmackssache.
<edition
[Link]>
HTML-Quelle:
17.6.3 Rahmenstile
Einige Werte von 'border-style' haben in Tabellen andere Bedeutungen als fr andere Elemen-
te. In der nachfolgenden Liste sind sie mit einem Stern markiert.
none
Kein Rahmen.
*hidden
Wie 'none', außer im Modell fr kollabierende Rahmen; verbietet alle anderen Rahmen
(siehe vorhergehenden Abschnitt ber Rahmenkonflikte).
dotted
Der Rahmen besteht aus einer Reihe von Punkten.
dashed
Der Rahmen ist eine Folge aus kurzen Liniensegmenten.
solid
Der Rahmen ist ein einzelnes Liniensegment.
double
Der Rahmen besteht aus zwei durchgezogenen Linien. Die Summe der beiden Linien und
der Platz zwischen ihnen ist gleich dem Wert von 'border-width'.
groove
Cascading Style Sheets, Level 2
cherweise, sich im zweidimensionalen Raum zu bewegen, so dass sie die M=glichkeit erhalten,
die r@umlich dargestellten Relationen auszudrcken. Wenn dies nicht m=glich ist, muss das
Stylesheet angeben, an welchen Stellen die berschriften gesprochen werden:
'speak-header'
Diese Eigenschaft gibt an, ob Tabellenberschriften vor jeder Zelle gesprochen werden oder
nur vor einer Zelle, wenn diese einer anderen berschrift zuzuordnen ist als die vorher-
gehende Zelle. Die Werte haben die folgenden Bedeutungen:
once
Die berschrift wird einmal vor einer Folge von Zellen gesprochen.
always
Die berschrift wird vor jeder passenden Zelle gesprochen.
Abbildung 17.12: Bild einer Tabelle mit berschriftszellen („San Jose“ und „Seattle“), die sich
nicht in derselben Spalte oder Zeile befinden wie die Daten, auf die sie sich beziehen
<edition
[Link]>
Beispiel
Dieses HTML-Beispiel zeigt das Geld, das fr Mahlzeiten, Hotels und Transport an zwei
Orten (San Jose und Seattle) an aufeinanderfolgenden Tagen ausgegeben wurde. Grund-
s@tzlich k=nnen Sie sich die Tabelle wie einen n-dimensionalen Raum vorstellen. Die
berschriften dieses Raums sind: Ort, Tag, Kategorie und Zwischensumme. Einige Zel-
len definieren Markierungen entlang einer Achse, w@hrend andere das Geld an den
Punkten innerhalb dieses Raums angeben. Die Quellcode fr diese Tabelle lautet:
<TABLE>
<CAPTION>Travel Expense Report</CAPTION>
<TR>
<TH></TH>
<TH>Meals</TH>
<TH>Hotels</TH>
<TH>Transport</TH>
<TH>subtotal</TH>
</TR>
<TR>
<TH id="san-jose" axis="san-jose">San Jose</TH>
</TR>
<TR>
<TH headers="san-jose">25-Aug-97</TH>
<TD>37.74</TD>
<TD>112.00</TD>
<TD>45.00</TD>
<TD></TD>
</TR>
<TR>
<TH headers="san-jose">26-Aug-97</TH>
<TD>27.28</TD>
<TD>112.00</TD>
<TD>45.00</TD>
<TD></TD>
Cascading Style Sheets, Level 2
</TR>
<TR>
<TH headers="san-jose">subtotal</TH>
<TD>65.02</TD>
<TD>224.00</TD>
<TD>90.00</TD>
<TD>379.02</TD>
</TR>
<TR>
<TH id="seattle" axis="seattle">Seattle</TH>
</TR>
<TR>
<TH headers="seattle">27-Aug-97</TH>
<TD>96.25</TD>
<TD>109.00</TD>
<TD>36.00</TD>
<TD></TD>
</TR>
<TR>
<TH headers="seattle">28-Aug-97</TH>
<TD>35.00</TD>
<TD>109.00</TD>
<TD>36.00</TD>
<TD></TD>
</TR>
<TR>
<TH headers="seattle">subtotal</TH>
<TD>131.25</TD>
<TD>218.00</TD>
<TD>72.00</TD>
<TD>421.25</TD>
</TR>
<TR>
<TH>Totals</TH>
<TD>196.27</TD>
<TD>442.00</TD>
<TD>162.00</TD>
<TD>800.27</TD>
</TR>
</TABLE>
Durch diese Bereitstellung des Datenmodells machen es Autoren fr sprachf@hige Browser
m=glich, eine Tabelle auf die unterschiedlichsten Arten zu erkunden, z. B. k=nnte jede Zelle als
Liste gesprochen werden, wobei die betreffenden berschriften vor jeder Datenzelle wieder-
holt werden:
Der Browser k=nnte auch entscheiden, die berschriften nur dann zu sprechen, wenn sie sich
@ndern:
<edition
[Link]>
18 [Link]
18.1 Cursor: die 'cursor'-Eigenschaft
'cursor'
Diese Eigenschaft gibt den Typ des Cursors an, der fr das Zeigeger@t angezeigt wird. Die
Werte haben die folgenden Bedeutungen:
auto
Das Benutzerprogramm ermittelt den anzuzeigenden Cursor abh@ngig vom aktuellen Kon-
text.
crosshair
Ein einfaches Fadenkreuz (z. B. kurze Liniensegmente, die an ein "+"-Zeichen erinnern).
default
Der von der Plattform abh@ngige Standard-Cursor. Wird h@ufig als Pfeil dargestellt.
Cascading Style Sheets, Level 2
pointer
Der Cursor ist ein Zeiger, der einen Link anzeigt.
move
Kennzeichnet, dass etwas verschoben werden soll.
e-resize, ne-resize, nw-resize, n-resize, se-resize, sw-resize, s-resize, w-resize
Gibt an, dass eine Fensterkante verschoben werden soll. Beispielsweise wird der 'se-re-
size'-Cursor verwendet, wenn das Verschieben in der rechten unteren Ecke der Box beginnt.
text
Gibt an, dass Text markiert werden kann. Wird h@ufig auch als I-Balken dargestellt.
wait
Zeigt an, dass das Programm besch@ftigt ist und der Benutzer warten soll. Wird h@ufig als
Uhr oder Sanduhr dargestellt.
help
Es steht Hilfe fr das Objekt unter dem Cursor zur Verfgung. Wird h@ufig auch als Frage-
zeichen oder Sprechblase dargestellt.
<uri>
Das Benutzerprogramm l@dt den Cursor aus der durch den URI angegebene Ressource.
Wenn das Benutzerprogramm den ersten Cursor aus einer Liste mit Cursorn nicht ver-
arbeiten kann, sollte er versuchen, den zweiten zu verarbeiten usw. Wenn das Benutzer-
programm keine benutzerdefinierten Cursor verarbeiten kann, muss es den generischen
Cursor am Ende der Liste verwenden.
Beispiel
P { cursor : url("[Link]"), url("[Link]"), text; }
ActiveBorder
Aktiver Fensterrahmen
ActiveCaption
Aktiver Fenstertitel
AppWorkspace
Hintergrundfarbe eines Multiple Document Interfaces
Background
Desktop-Hintergrund
ButtonFace
Schriftfarbe fr dreidimensionale Anzeigeelemente
ButtonHighlight
Helle Farbe fr dreidimensionale Anzeigeelemente
ButtonShadow
Schattenfarbe fr dreidimensionale Anzeigeelemente (fr Kanten, die von der Lichtquelle
weg zeigen)
ButtonText
Text auf Schaltfl@chen
<edition
[Link]>
CaptionText
Text in berschriften, Size Boxes und Pfeilfeld der Bildlaufleiste
GrayText
Grau unterlegter (deaktivierter) Text. Diese Farbe wird auf #000 gesetzt, wenn der aktu-
elle Anzeigetreiber keine durchg@ngige graue Farbe untersttzt.
Highlight
Elemente, die in einem Steuerelement markiert sind
HighlightText
Text von Elementen, die in einem Steuerelement markiert sind
InactiveBorder
Nicht aktiver Fensterrahmen
InactiveCaption
Nicht aktiver Fenstertitel
InactiveCaptionText
Farbe des Texts in einem nicht aktiven Titel
InfoBackground
Hintergrundfarbe fr Tooltip-Steuerelemente
InfoText
Textfarbe fr Tooltip-Steuerelemente
Menu
Menhintergrund
MenuText
Text in Mens
Scrollbar
Grauer Bereich der Bildlaufleiste
ThreeDDarkShadow
Dunkler Schatten fr dreidimensionale Anzeigeelemente
ThreeDFace
Cascading Style Sheets, Level 2
Beispiel
Um beispielsweise die Hintergrund- und Vordergrundfarben eines Absatzes auf die Vor-
dergrund- und Hintergrundfarben des Benutzerfensters zu setzen, schreiben Sie Folgen-
des:
P { color: WindowText; background-color: Window }
'outline'
'outline-width'
<edition
[Link]>
'outline-color'
Die durch die Einrahmungseigenschaften erzeugten Einrahmungen werden „ber“ eine Box
gezeichnet, das heißt, die Einrahmung befindet sich immer oben und beeinflusst die Position
oder die Gr=ße der Box oder irgendwelcher anderer Boxen nicht. Die Anzeige oder das
Unterdrcken von Einrahmungen verursacht also kein Neuzeichnen.
Die Einrahmung wird unmittelbar außerhalb der Rahmenkante beginnend gezeichnet.
Einrahmungen mssen nicht rechteckig sein. Ist das Element beispielsweise ber mehrere Zei-
len umbrochen, ist die Einrahmung der kleinste Umriss, der alle Boxen des Elements beinhaltet.
Im Gegensatz zu Rahmen ist die Einrahmung am Ende oder Anfang einer Zeilen-Box nicht
ge=ffnet, sondern immer vollst@ndig geschlossen.
Die 'outline-width'-Eigenschaft akzeptiert dieselben Werte wie 'border-width'.
Die 'outline-style'-Eigenschaft akzeptiert dieselben Werte wie 'border-style', nur dass 'hidden'
kein erlaubter Einrahmungsstil ist.
Die 'outline-color'-Eigenschaft akzeptiert alle Farben sowie das Schlsselwort 'invert'. 'invert'
nimmt eine Farbumkehrung der Pixel auf dem Bildschirm vor. Dies ist ein gebr@uchlicher Trick,
um sicherzustellen, dass der Fokusrahmen sichtbar ist, unabh@ngig von farbigem Hintergrund.
Die 'outline'-Eigenschaft ist eine zusammenfassende Eigenschaft und setzt 'outline-style', 'out-
line-width' und 'outline-color'.
Cascading Style Sheets, Level 2
Beachten Sie, dass die Einrahmung auf allen Seiten dieselbe ist. Im Gegensatz zu Rahmen gibt es
keine 'outline-top'- oder 'outline-left'-Eigenschaft. n
Diese Spezifikation definiert nicht, wie mehrere berlappende Einrahmungen oder wie Einrah-
mungen fr Boxen gezeichnet werden, die teilweise von anderen Elementen verdeckt sind.
Hinweis: Weil die Fokuseinrahmung keinen Einfluss auf die Formatierung hat (das heißt, es ist
kein Platz mehr dafr im Box-Modell), kann sie m=glicherweise andere Elemente auf der Seite
berlappen. n
Beispiel
Nachfolgend sehen Sie ein Beispiel, das eine dicke Einrahmung um ein BUTTON-Ele-
ment zeichnet:
BUTTON { outline-width : thick }
Mit Hilfe von Skriptprogrammen kann die Breite der Einrahmung dynamisch ver@ndert werden,
ohne ein Neuzeichnen zu verursachen.
Beispiel
Um beispielsweise eine dicke schwarze Linie um ein Element zu zeichnen, wenn es den
Fokus hat, und eine dicke rote Linie, wenn es aktiv ist, k=nnen die folgenden Regeln
angewendet werden:
:focus { outline: thick solid black }
:active { outline: thick solid red }
18.5 VergrUßerung
Die CSS Working Group hat beschlossen, dass die Vergr=ßerung eines Dokuments oder von
Teilen eines Dokuments nicht ber Stylesheets festgelegt werden sollte. Benutzerprogramme
k=nnen eine solche Vergr=ßerung auf unterschiedliche Weise untersttzen (z. B. gr=ßere Bil-
der, lautere Sounds usw.).
Wenn Benutzerprogramme eine Seite vergr=ßern, sollten sie die Beziehungen zwischen posi-
tionierten Elementen beibehalten. Ein Comic-Strip k=nnte beispielsweise aus Bildern mit ber-
19 Akustische Stylesheets
<edition
[Link]>
sheet-Eigenschaften fr eine akustische Darstellung k=nnen mit den visuellen Eigenschaften (ge-
mischte Medien) kombiniert oder als akustische Alternative zur visuellen Darstellung verwen-
det werden.
Neben den offensichtlichen Vorteilen, die sie in Hinblick auf den Zugriff bringen, gibt es noch
andere große M@rkte fr rein akustisch angebotene Informationen, wie beispielsweise fr Auto-
fahrer, industrielle und medizinische Dokumentationssysteme, Home-Entertainment, oder um
Benutzer zu untersttzen, die gerade lesen lernen oder Probleme mit dem Lesen haben.
Bei der Verwendung akustischer Eigenschaften besteht die Zeichenfl@che aus einem dreidimen-
sionalen physischen Raum (Klangumgebung) und einem tempor@ren Raum (man kann Klang vor
w@hrend und nach anderen Kl@ngen spezifizieren). Darber hinaus erlauben die CSS-Eigen-
schaften den Autoren, die Qualit@t synthetisierter Sprache zu variieren (Sprachtyp, Frequenz,
Modulation usw.).
Beispiel
H1, H2, H3, H4, H5, H6 {
voice-family: paul;
stress: 20;
richness: 90;
cue-before: url("[Link]")
}
[Link] { azimuth: center-left }
[Link] { azimuth: right }
[Link] { volume: x-soft }
Damit wird der Sprachsynthesizer angewiesen, die berschriften in der Sprache (eine Art „Au-
dio-Schrift“) namens „paul“ zu sprechen, in einem flachen Ton, aber mit einer sehr umfangrei-
chen Stimme zu sprechen. Bevor die berschriften gesprochen werden, wird ein Sound-Sample
von dem angegebenen URL abgespielt. Abs@tze mit der Klasse „heidi“ sollen so erscheinen,
dass sie von vorne links kommen (falls das Soundsystem r@umliches Audio beherrscht), und
Cascading Style Sheets, Level 2
Abs@tze mit der Klasse „peter“ von rechts. Abs@tze mit der Klasse „ziege“ werden sehr weich
gesprochen.
'volume' bezieht sich auf die Medien-Lautst@rke der Wellenform. Mit anderen Worten, eine
hochmodulierte Stimme mit einer Lautst@rke von 50 k=nnte sehr viel h=here Spitzenwerte
haben. Die Gesamtwerte k=nnen sehr wahrscheinlich fr den Menschen annehmbar angepasst
werden, beispielsweise mit einer physischen Lautst@rkenregelung (die sowohl die 0- als auch
die 100-Werte proportional vergr=ßern wrde); diese Eigenschaft passt also den dynamischen
Bereich an.
Die Werte haben die folgende Bedeutung:
<number>
Eine beliebige Zahl zwischen '0'und '100'. '0' stellt die minimale h rbare Lautst@rke dar, '100'
die maximale ertr,gliche Lautst@rke.
<percentage>
Prozentwerte werden relativ zum geerbten Wert berechnet und dann auf den Bereich
zwischen '0'und '100' zugeschnitten.
silent
Es wird berhaupt nichts ausgegeben. Der Wert '0' hat nicht dieselbe Bedeutung wie
'silent'.
x-soft
Entspricht '0'.
soft
Entspricht '25'.
medium
Entspricht '50'.
loud
Entspricht '75'
x-loud
Entspricht '100'.
<edition
[Link]>
In all diesen F@llen k=nnte dasselbe Autor-Stylesheet verwendet werden, indem die Einstellun-
gen fr '0' und '100' auf der Client-Seite festgelegt werden.
Diese Eigenschaft gibt an, ob und wie Text akustisch dargestellt wird (etwa vergleichbar mit
der Eigenschaft 'display'). Die m=glichen Werte sind:
none
Unterdrckt die akustische Darstellung, so dass keine Zeit fr die Darstellung dieses Ele-
ments aufgewendet werden muss. Beachten Sie jedoch, dass Ableitungen diesen Wert
berschreiben k=nnen und m=glicherweise gesprochen werden. (Um sicher zu gehen, dass
die Darstellung eines Elements und seiner Ableitungen unterdrckt wird, verwenden Sie
die Eigenschaft 'display'.)
normal
Verwendet sprachabh@ngige Ausspracheregeln fr die Darstellung eines Elements und sei-
ner untergeordneten Elemente.
Cascading Style Sheets, Level 2
spell-out
Buchstabiert den Text (praktisch fr Akronyme und Abkrzungen).
Beachten Sie den Unterschied zwischen einem Element, dessen 'volume'-Eigenschaft den Wert
'silent' hat, und einem Element, dessen 'speak'-Eigenschaft den Wert 'none' hat. Das erstere
ben=tigt dieselbe Zeit, als w@re es ausgesprochen worden, inklusive der Pause vor und nach
dem Element, aber es wird keine h=rbare Ausgabe erzeugt. Das letztere ben=tigt keine Zeit
und wird nicht dargestellt (w@hrend seine Ableitungen sehr wohl dargestellt werden k=nnen).
'pause-after'
Diese Eigenschaften geben eine Pause an, die vor (oder nach) dem Sprechen eines Element-
inhalts eingehalten werden soll. Die Werte haben die folgenden Bedeutungen:
Die Pause wird zwischen dem Elementinhalt und dem Inhalt von 'cue-before' oder 'cue-after',
falls vorhanden, eingefgt.
Autoren sollten relative Einheiten verwenden, um angesichts großer Abweichungen der
Sprechgeschwindigkeiten robustere Stylesheets zu erstellen.
<edition
[Link]>
'pause'
Die 'pause'-Eigenschaft ist eine Abkrzung fr die Einstellung von 'pause-before' und 'pause-
after'. Werden zwei Werte angegeben, ist der erste Wert 'pause-before', der zweite Wert ist
'pause-after'. Ist nur ein Wert angegeben, gilt er fr beide Eigenschaften.
Beispiel
H1 { pause: 20ms } /* pause-before: 20ms; pause-after: 20ms */
H2 { pause: 30ms 40ms } /* pause-before: 30ms; pause-after: 40ms */
H3 { pause-after: 10ms } /* pause-before: ?; pause-after: 10ms */
Vererbt: Nein
Prozents,tze: N/A
Medium Aural
'cue-after'
Akustische Icons stellen eine weitere M=glichkeit dar, semantische Elemente voneinander zu
unterscheiden. Kl@nge k=nnen vor und/oder nach dem Element abgespielt werden, um sie von-
einander abzugrenzen. Die Werte haben die folgenden Bedeutungen:
<uri>
Der URI gibt die Ressource fr ein akustisches Icon an. L=st sich der URI zu etwas anderem
auf als zu einer Audio-Datei, beispielsweise zu einem Bild, sollte die Ressource ignoriert
werden, und die Eigenschaft wird behandelt, als h@tte sie den Wert 'none'.
none
Es wurde kein akustisches Icon angegeben.
Beispiel
A {cue-before: url("[Link]"); cue-after: url("[Link]") }
H1 {cue-before: url("[Link]"); cue-after: url("[Link]") }
'cue'
Beispiel
Die beiden folgenden Regeln sind @quivalent:
H1 {cue-before: url("[Link]"); cue-after: url("[Link]") }
H1 {cue: url("[Link]") }
Kann ein Benutzerprogramm ein akustisches Icon nicht darstellen (wenn es beispielsweise die
Umgebung des Benutzers nicht erlaubt), empfehlen wir, einen alternativen Hinweis zu erzeugen
(z. B. die Anzeige einer Warnung, die Ausgabe eines Warntons usw.).
<edition
[Link]>
Ohnlich den Eigenschaften 'cue-before' und 'cue-after' gibt diese Eigenschaft einen Sound an,
der als Hintergrund abgespielt werden soll, w@hrend der Inhalt eines Elements gesprochen
wird. Die Werte haben die folgenden Bedeutungen:
<uri>
Der durch diesen <uri> angegebene Sound wird als Hintergrund abgespielt, w@hrend der
Inhalt des Elements gesprochen wird.
mix
Falls dieses Schlsselwort angegeben ist, bedeutet es, dass der Sound, der von der 'play-
during'-Eigenschaft des bergeordneten Elements geerbt wurde, weiterhin abgespielt der in
<uri> angegebene Sound damit gemischt wird. Ist 'mix' nicht angegeben, ersetzt der Hinter-
grundton des Elements den des bergeordneten Elements.
repeat
Falls dieses Schlsselwort angegeben ist, bedeutet es, dass der Sound wiederholt wird, falls
er zu kurz ist, um die Gesamtdauer des Elements abzudecken. Andernfalls wird der Sound
Cascading Style Sheets, Level 2
einmal abgespielt und dann beendet. Das ist vergleichbar mit der 'background-repeat'-
Eigenschaft. Ist der Sound zu lang fr das Element, wird er abgebrochen, nachdem das Ele-
ment gesprochen wurde.
auto
Der Sound des bergeordneten Elements wird weiterhin abgespielt (er wird nicht neu
gestartet, was der Fall w@re, w@re diese Eigenschaft vererbt worden).
none
Dieses Schlsselwort bedeutet Stille. Der Sound des bergeordneten Elements (falls vor-
handen) ist still, w@hrend das aktuelle gesprochen wird, und wird nach dem aktuellen Ele-
ment fortgesetzt.
Beispiel
[Link] { play-during: url("[Link]") }
BLOCKQUOTE Q { play-during: url("[Link]") mix }
[Link] { play-during: none }
'azimuth'
<angle>
<edition
[Link]>
far-right
Wie '60deg'. Mit 'behind', '120deg'.
right-side
Wie '90deg'. Mit 'behind', '90deg'.
leftwards
Verschiebt den Sound nach links, relativ zum aktuellen Winkel. Genauer gesagt, werden
dabei 20 Grad subtrahiert. Die Arithmetik wird als modulo 360 Grad ausgefhrt. Beachten
Sie, dass 'leftwards' genauer als „gedreht im Gegen-Uhrzeigersinn“ beschrieben wird, weil
dabei immer 20 Grad subtrahiert werden, selbst wenn der geerbte Azimuth bereits hinter
dem Zuh=rer liegt (in diesem Fall scheint der Sound nach rechts zu gehen).
rightwards
Verschiebt den Sound nach rechts, relativ zum aktuellen Winkel. Genauer gesagt, werden
20 Grad addiert. Die Arithmetik ist unter 'leftwards' beschrieben.
Beispiel
H1 { azimuth: 30deg }
TD.a { azimuth: far-right } /* 60deg */
#12 { azimuth: behind far-right } /* 120deg */
[Link] { azimuth: behind } /* 180deg */
Wird ein r@umlicher Azimuth angegeben und das Ausgabeger@t kann keine Sounds hinter der
Cascading Style Sheets, Level 2
Position des Zuh=rers erzeugen, sollten die Benutzerprogramme Werte der rckw@rtigen
Halbkugel in Werte der vorderen Halbkugel umwandeln. Eine Methode sieht wie folgt aus:
·· if 90deg < x <= 180deg then x := 180deg – x
if 180deg < x <= 270deg then x := 540deg – x
'elevation'
<angle>
Gibt die Steigung als Winkel zwischen '-90deg' und '90deg' an. '0deg' bedeutet, auf dem vor-
deren Horizont, was in etwa derselben Ebene mit dem Zuh=rer entspricht. '90deg' bedeu-
tet direkt ber und '-90deg' bedeutet direkt unter dem Zuh=rer.
below
Wie '-90deg'.
level
Wie '0deg'.
above
Wie '90deg'.
higher
Addiert 10 Grad zur aktuellen Steigung.
Welche Mittel fr die Erzielung dieses Effekts eingesetzt werden und die Anzahl der verwende-
ten Lautsprecher, ist nicht definiert. Diese Eigenschaft definiert nur das gewnschte Endergeb-
nis.
Beispiel
H1 { elevation: above }
TR.a { elevation: 60deg }
TR.b { elevation: 30deg }
TR.c { elevation: level }
Diese Eigenschaft gibt die Sprechgeschwindigkeit an. Beachten Sie, dass sowohl absolute als
auch relative Schlsselwortwerte erlaubt sind (siehe auch 'font-size', 15.2.4). Die Werte haben
die folgende Bedeutung:
<edition
[Link]>
<number>
Gibt die Sprechgeschwindigkeit in W=rtern pro Minute an, eine Maßzahl, die abh@ngig von
der jeweiligen Sprache variiert, aber dennoch von Sprachsynthesizern allgemein untersttzt
wird.
x-slow
Entspricht 80 W=rtern pro Minute.
slow
Entspricht 120 W=rtern pro Minute.
medium
Entspricht 180 – 200 W=rtern pro Minute.
fast
Entspricht 300 W=rtern pro Minute.
x-fast
Entspricht 500 W=rtern pro Minute.
faster
Addiert 40 W=rter pro Minute zur aktuellen Sprechgeschwindigkeit.
slower
Subtrahiert 40 W=rter pro Minute von der aktuellen Sprechgeschwindigkeit.
'voice-family'
Prozents,tze N/A
Medium Aural
Der Wert ist eine durch Kommas getrennte, nach Priorit@t geordnete Liste mit Sprachfamilien-
namen (zu vergleichen mit 'font-family'). Die Werte haben die folgenden Bedeutungen:
<generic-voice>
Die Werte stellen Stimmfamilien dar. M=gliche Werte sind 'male', 'female' und 'child'
(m@nnlich, weiblich, Kind).
<specific-voice>
Bei den Werten handelt es sich um spezifische Instanzen (z. B. Schauspieler, Trinoide,
Carlos, Lani).
Beispiel
H1 { voice-family: announcer, male }
[Link] { voice-family: romeo, male }
[Link] { voice-family: juliet, female }
'pitch'
Gibt die durchschnittliche Stimmung (eine Frequenz) der Sprechstimme an. Die durchschnitt-
liche Stimmung einer Stimme ist von der Stimmfamilie abh@ngig. Die durchschnittliche Stim-
mung fr eine m@nnliche Standardstimme beispielsweise liegt bei etwa 120 Hz, fr eine weib-
liche Stimme etwa bei 210 Hz.
Die Werte haben die folgenden Bedeutungen:
<frequency>
Gibt die durchschnittliche Stimmung der Sprechstimme in Hertz (Hz) an.
x-low, low, medium, high, x-high
'pitch-range'
<edition
[Link]>
Gibt die Abweichung von der durchschnittlichen Stimmung an. Die wahrgenommene Stimmung
einer menschlichen Stimme wird durch die Grundfrequenz festgelegt und weist normalerweise
einen Wert von 120 Hz fr eine m@nnliche Stimme und 210 Hz fr eine weibliche Stimme auf;
diese Abweichungen vermitteln zus@tzliche Bedeutung und Betonung. Eine hoch animierte
Stimme, das heißt, eine Stimme, die stark abgewandelt ist, weist einen hohen Stimmungsbereich
auf. Diese Eigenschaft bestimmt den Bereich, ber den diese Variationen auftreten, das heißt,
wie stark die Grundfrequenz von der durchschnittlichen Stimmung abweichen darf.
Die Werte haben die folgenden Bedeutungen:
<number>
Ein Wert zwischen '0' und '100'. Ein Stimmungsbereich von '0' erzeugt eine flache, mono-
tone Stimme. Ein Stimmungsbereich von '50' erzeugt eine normale Variation. Stimmungs-
bereiche gr=ßer 50 erzeugen animierte Stimmen.
'stress'
Gibt die H=he „lokaler Spitzen“ in der Intonationskontur einer Stimme an. Beispielsweise ist
Englisch eine betonte Sprache, und unterschiedliche Abschnitte eines Satzes erhalten eine pri-
m@re, sekund@re oder terti@re Betonung. Der Wert von 'stress' steuert die Abweichung, die
Cascading Style Sheets, Level 2
aus diesen Betonungszeichen resultiert. Diese Eigenschaft begleitet die Eigenschaft 'pitch-range'
und wird bereitgestellt, um den Entwicklern die M=glichkeit zu er=ffnen, professionelle akus-
tische Ausgabeger@te zu nutzen.
Die Werte haben die folgenden Bedeutungen:
<number>
Ein Wert zwischen '0' und '100'. Die Bedeutung dieses Werts ist von der gesprochenen
Sprache abh@ngig. Ein Wert von '50' beispielsweise fr eine standardm@ßige englisch spre-
chende M@nnerstimme (durchschnittliche Stimmung = 122 Hz), die mit normaler Intonation
und Betonung spricht, h@tte eine andere Bedeutung als der Wert '50' fr eine italienische
Stimme.
'richness'
Gibt den Umfang der Sprechstimme an. Eine umfassende Stimme „tr@gt“ in einem großen
Raum, eine glatte Stimme nicht. (Der Begriff „glatt“ bezieht sich auf die Darstellung der Wellen-
form.)
Die Werte haben die folgenden Bedeutungen:
<number>
Ein Wert zwischen '0' und '100'. Je h=her dieser Wert ist, desto mehr tr@gt die Stimme. Ein
geringerer Wert erzeugt eine sanfte, honigsße Stimme.
'speak-punctuation'
Diese Eigenschaft legt fest, wie die Interpunktion ausgesprochen wird. Die Werte haben die fol-
genden Bedeutungen:
code
Die Interpunktion wie beispielsweise Semikolons, Klammern usw. werden w=rtlich aus-
gesprochen.
none
Die Interpunktion wird nicht gesprochen, sondern durch unterschiedliche natrliche Pau-
sen dargestellt.
<edition
[Link]>
'speak-numeral'
Diese Eigenschaft steuert, wie Zahlen ausgesprochen werden. Die Werte haben die folgenden
Bedeutungen:
digits
Die Zahlen werden als einzelne Ziffern ausgesprochen. „237“ wird also als „Zwei Drei Sie-
ben“ ausgesprochen.
continuous
Die Zahl wird als vollst@ndige Zahl ausgesprochen. „237“ wird also als „Zweihundertsieben-
unddreißig“ ausgesprochen. Die Wortdarstellungen sind sprachabh@ngig.
ADDRESS,
BLOCKQUOTE,
BODY, DD, DIV,
DL, DT,
FIELDSET, FORM,
FRAME, FRAMESET,
H1, H2, H3, H4,
H5, H6, IFRAME,
NOFRAMES,
OBJECT, OL, P,
UL, APPLET,
CENTER, DIR,
HR, MENU, PRE { display: block }
LI { display: list-item }
<edition
[Link]>
@media print {
@page { margin: 10% }
H1, H2, H3,
H4, H5, H6 { page-break-after: avoid; page-break-inside: avoid }
BLOCKQUOTE,
PRE { page-break-inside: avoid }
UL, OL, DL { page-break-before: avoid }
}
@media aural {
H1, H2, H3,
H4, H5, H6 { voice-family: paul, male; stress: 20; richness: 90 }
H1 { pitch: x-low; pitch-range: 90 }
H2 { pitch: x-low; pitch-range: 80 }
H3 { pitch: low; pitch-range: 70 }
H4 { pitch: medium; pitch-range: 60 }
H5 { pitch: medium; pitch-range: 50 }
H6 { pitch: medium; pitch-range: 40 }
LI, DT, DD { pitch: medium; richness: 60 }
DT { stress: 80 }
PRE, CODE, TT { pitch: medium; pitch-range: 0; stress: 0; richness: 80 }
EM { pitch: medium; pitch-range: 60; stress: 60; richness: 50 }
STRONG { pitch: medium; pitch-range: 60; stress: 90; richness: 90 }
DFN { pitch: high; pitch-range: 60; stress: 60 }
S, STRIKE { richness: 0 }
I { pitch: medium; pitch-range: 60; stress: 60; richness: 50 }
Cascading Style Sheets, Level 2
<edition
[Link]>
· Die Bedeutung von „!important“ hat sich ge@ndert. In CSS1 hatte „!important“ im Style-
sheet eines Autors Priorit@t gegenber „!important“ im Stylesheet eines Benutzers. Das
wurde in CSS2 umgekehrt.
· In CSS2 werden Farbwerte relativ zur Ger@te-Skala abgeschnitten, nicht relativ zur sRGB-
Skala, wie in CSS1.
· CSS1 sagte einfach aus, dass 'margin-right' ignoriert wird, wenn sowohl 'margin-left' als auch
'width' vorgegeben waren. In CSS2 ist es von der Schreibrichtung abh@ngig, ob 'margin-right'
oder 'margin-left' ignoriert wird.
· In CSS1 hatten mehrere Eigenschaften (z. B. 'padding') Werte, die sich auf die Breite des
bergeordneten Elements bezogen. Das war ein Fehler; der Wert sollte sich immer auf die
Breite eines Elements auf Blockebene beziehen, und diese Spezifikation reflektiert dies
durch Einfhrung des Begriffs „umschließender Block“.
·· Der Ausgangswert von 'display' ist in CSS2 'inline', nicht 'block' wie in CSS1.
In CSS1 wird die Eigenschaft 'clear' auf alle Elemente angewendet. Das war ein Fehler. In
CSS2 wird die Eigenschaft nur auf Elemente auf Blockebene angewendet.
· In CSS1 schlossen sich ':link', ':visited' und ':active' wechselseitig aus; in CSS1 kann ':active'
gleichzeitig mit ':link' oder ':visited' gesetzt werden.
· Der vorgeschlagene Skalierungsfaktor zwischen benachbarten 'font-size'-Indizies in der
Tabelle der Schriftgr=ßen wurde von 1.5 auf 1.2 reduziert.
·· Der berechnete Wert von 'font-size' wird vererbt, nicht der tats@chliche Wert.
Die CSS1-Beschreibung von 'inside' (fr 'list-style-position') erlaubte die Interpretation,
dass der linke Rand des Texts gemeint war, und nicht die Position der Kugel-Markierung. In
CSS2 wurde diese Interpretationsm=glichkeit entfernt.
· Lesen Sie bitte auch den normativen Abschnitt ber die Unterschiede zwischen der CSS1-
und dem CSS2-Tokenbildung.
Cascading Style Sheets, Level 2
Schrift-Caching
Das Schrift-Caching erlaubt, dass auf dem Client-System eine tempor@re Kopie von Schrif-
ten bereitgestellt wird. H@ufig werden sie zusammen mit anderen Elementen aus dem
Cache auf der Festplatte gespeichert, wie beispielsweise Grafik, insbesondere fr den User
Agent.
Schriftart (Font Face)
Ein „Handle“, der auf eine bestimmte Variante einer Schrift verweist, ohne dabei die Schrift-
gr=ße zu bercksichtigen.
Schriftvergleich
Ein Prozess, unter Verwendung einer oder mehrerer Attribute der prim@ren Schrift eine
@hnliche Schrift auszuw@hlen. Gebr@uchliche Attribute sind unter anderem serif, sans-serif,
weight, cap height, x-height, spacing, language und posture. Der Schriftvergleich ist von dem
verwendeten Algorithmus und der zur Auswahl stehenden Schriften abh@ngig.
Glyphen-Darstellung Untereinstellung
Der Prozess, durch den unerwnschte Glyphen-Darstellungen (zusammen mit ihren
Nebeneffekten und Kerning-Informationen) aus einer Prim@rschrift entfernt werden, um
eine kleinere Schrift-Untermenge zu erzeugen, die ein bestimmtes Dokument oder meh-
rere Dokumente abdeckt. Das ist insbesondere ein Vorteil fr Dokumente, die ideographi-
sche Schriften (scripts) verwenden, bei denen der Glyphen-Vorrat der Grundschrift sehr
groß sein kann. Die Untereinstellung der Glyphen-Darstellung fr Dokumente, die Schriften
(scripts) einsetzen, fr die Ligaturen erforderlich sind, wie beispielsweise Arabisch, ist
schwierig, wenn man die Ligatur-Regeln des endgltigen Anzeigesystems nicht kennt.
Intellifont
Die Intellifont-Technologie wurde von Agfa entwickelt und ist das systemeigene Format fr
Hewlett-Packard und andere Drucker, die die Sprache PCL5 verwendet. Außerdem stellt
es das systemeigene Schriftformat auf den Amiga-Computern dar.
Infinifont
Eine Schriftsynthesetechnik, die aus einer Panose-1-Zahl (und optional zus@tzlichen Schrift-
<edition
[Link]>
Kerning
Eine Ver@nderung des Abstands zwischen ausgew@hlten Glyphen-Darstellungen, die andern-
falls zu eng beisammen oder zu weit auseinander stehen wrden, um ein gleichm@ßigeres
Schriftbild zu erzielen.
Cascading Style Sheets, Level 2
Open Type
Open Type ist eine Erweiterung des TrueType-Schriftformats, die zus@tzliche Informa-
tionen enth@lt, um zus@tzliche M=glichkeiten fr Schriften zu bieten, die eine hochqualitative
internationale Typographie untersttzen. Open Type kann einem einzelnen Zeichen meh-
rere Glyphen-Darstellungen oder einer einzelnen Glyphendarstellung eine Zeichenkom-
bination (Ligaturbildung) zuordnen. Open Type beinhaltet zweidimensionale Informationen
zur Untersttzung von Funktionsmerkmalen fr die komplexe Positionierung und Glyphen-
Zuordnung. True Type Open und Open Type enthalten explizite Schrift- und Sprachinfor-
mationen, so dass eine Textverarbeitung ihr Verhalten entsprechend anpassen kann (siehe
[OPENTYPE]).
Server Font
Eine Schriftressource, die sich auf dem Webserver befindet, auf den in der WebFont-Defi-
nition verwiesen wird. Das Benutzerprogramm kann diese Ressource fr die Darstellung
der Seite verwenden.
Speedo
Diese Schrifttechnologie wurde von Bitstream entwickelt und ist das systemeigene Schrift-
format fr Atari ST- und Falcon-Computer. Des weiteren wird sie von Computern unter
dem X Window-System verwendet.
TrueDoc
Diese Technologie wurde von Bitstream entwickelt, um plattformunabh@ngige, skalierbare
Schriftobjekte im Web erstellen, transportieren und darstellen zu k=nnen. Schriftobjekte
werden mit Hilfe des True Doc Character Shape Recorders (CSR) erstellt, und die Darstel-
lung erfolgt mit dem True Doc Character Shape Player (CSP). Die Technologie ist fr die
Anzeige und das Drucken im Web vorgesehen.
TrueDoc Portable Font Resource
Eine PFR ist ein plattformunabh@ngiges Schriftobjekt, das durch einen CSP erzeugt wird.
Die Eingabe kann TrueType oder Type 1 beliebiger Varianten unter Windows, Mac oder
Unix sein. TrueDoc Portable Font Resource bietet gute Komprimierungsverh@ltnisse und
<edition
[Link]>
fr fast jeden Effekt definiert werden. Darber hinaus untersttzt TrueType GX den Aus-
tausch alternativer Glyphen-Darstellungen fr Ligaturen, Kontextformen, Brche usw.
Momentan steht TrueType GX nur auf dem Mac zur Verfgung (siehe [TRUETYPEGX]).
URI-Bindung
Der Prozess, eine bestimmten Schriftressource auf die Nutzung auf einer vorgegebenen
Website zu beschr@nken. Dabei wird ein verschlsselter URI oder eine digital signierte
Nutzungszusicherung in die Schriftressource eingebettet.
Die Zahlen fr die Familie, Serifenstil und Proportion werden von Windows95 fr die Schrift-
auswahl und den Schriftvergleich verwendet.
Die Bedeutung der zehn Zahlen und die erlaubten Werte (in Klammern angegeben) finden Sie
nachfolgend. Dabei sind die gebr@uchlichsten F@lle bercksichtigt, mit „family“-Zahl gleich 2,
Text und Digit. (Falls die erste Zahl einen anderen Wert hat, haben die anderen neun Zahlen
andere Bedeutungen.) Weitere Informationen ber Panose-1 finden Sie in [PANOSE].
Family
·· Any (0)
No Fit (1)
·· [PANOSE] Latin Text and Display (2)
[PANOSE] Latin Script (3)
·· [PANOSE] Latin Decorative (4)
[PANOSE] Latin Pictorial (5)
Serif Style
·· Any (0)
No Fit (1)
·· Cove (2)
Obtuse Cove (3)
·· Square Cove (4)
Obtuse Square Cove (5)
·· Square (6)
Thin (7)
·· Bone (8)
Exaggerated (9)
·· Triangle (10)
Normal Sans (11)
·· Obtuse Sans (12)
Perp Sans (13)
·· Flared (14)
Rounded (15)
Weight
<edition
[Link]>
Proportion
·· Any (0)
No Fit (1)
·· Old Style (2)
Modern (3)
·· Even Width (4)
Expanded (5)
·· Condensed (6)
Very Expanded (7)
·· Very Condensed (8)
Monospaced (9)
Contrast
·· Any (0)
No Fit (1)
·· None (2)
Very Low (3)
·· Low (4)
Medium Low (5)
·· Medium (6)
Medium High (7)
·· High (8)
Very High (9)
Stroke Variation
·· Any (0)
Cascading Style Sheets, Level 2
No Fit (1)
·· No Variation (2)
Gradual/Diagonal (3)
·· Gradual/Transitional (4)
Gradual/Vertical (5)
·· Gradual/Horizontal (6)
Rapid/Vertical (7)
·· Rapid/Horizontal (8)
Instant/Horizontal (9)
· Instant/Vertical (10)
Arm Style
·· Any (0)
No Fit (1)
·· Straight Arms/Horizontal (2)
Straight Arms/Wedge (3)
·· Straight Arms/Vertical (4)
Straight Arms/Single Serif (5)
Letterform
·· Any (0)
No Fit (1)
·· Normal/Contact (2)
Normal/Weighted (3)
·· Normal/Boxed (4)
Normal/Flattened (5)
·· Normal/Rounded (6)
Normal/Off Center (7)
·· Normal/Square (8)
Oblique/Contact (9)
·· Oblique/Weighted (10)
Oblique/Boxed (11)
·· Oblique/Flattened (12)
Oblique/Rounded (13)
·· Oblique/Off Center (14)
Oblique/Square (15)
Midline
·· Any (0)
XHeight
·· Any (0)
No Fit (1)
· Constant/Small (2)
<edition
[Link]>
·· Constant/Standard (3)
Constant/Large (4)
·· Ducking/Small (5)
Ducking/Standard (6)
· Ducking/Large (7)
Panose-2 (siehe [PANOSE2]) ist eine Spezifikation fr eine umfassendere Technologie der
Schriftklassifizierung und -vergleich, die nicht auf lateinische Schriftarten begrenzt ist. Beispiels-
weise k=nnen die Serifen-Eigenschaften einer lateinischen Schriftform mit den Strichabschls-
sen einer Kanji-Schrift verglichen werden.
Der Panose-2-Wert wird nicht in bekannten Schriftformaten gespeichert, kann aber gemessen
werden.
Cascading Style Sheets, Level 2
16 1 Bengali U+980-9FF
17 2 Gurmukhi U+A00-A7F
18 4 Gujarati U+A80-AFF
19 8 Oriya U+B00-B7F
20 1 Tamil U+B80-BFF
21 2 Telugu U+C00-C7F
22 4 Kannada U+C80-CFF
23 8 Malayalam U+D00-D7F
24 1 Thai U+E00-E7F
25 2 Lao U+E80-EFF
<edition
[Link]>
26 4 Georgian U+10A0-10EF
27 8 Georgian Extended U+10F0-10FF ??
56 1 Hangul U+AC00-D7FF
59 8 CJK Unified Ideographs U+4E00-9FFF
Das TrueType-Bitfeld-System weist das Problem auf, dass es an Unicode 1.1 gebunden ist und
nicht mit der Unicode-Erweiterung zurechtkommt. Beispielsweise kann es kein Tibetanisch und
auch keine anderen Schriften darstellen, die mit Unicode 2.0 oder sp@teren berarbeitungen
eingefgt wurden.
<edition
[Link]>
D.1 Grammatik
Die nachfolgende Grammatik ist LL(1) (beachten Sie jedoch, dass die meisten Benutzerpro-
gramme sie nicht direkt verwenden sollten, weil sie die Parsing-Konventionen nicht ausdrckt,
sondern nur die CSS2-Syntax). Das Format der Produktionen ist fr die menschliche Wahrneh-
mung optimiert, und es wird eine Art abkrzende Notation jenseits von Yacc (siehe [YACC])
verwendet:
·· *: 0 oder mehrmals
+: einmal oder mehrmals
·· ?: 0 oder 1
|: trennt Alternativen
· [ ]: Gruppierung
Die Produktionen sind:
stylesheet
: [ CHARSET_SYM S* STRING S* ';' ]?
[S|CDO|CDC]* [ import [S|CDO|CDC]* ]*
[ [ ruleset | media | page | font_face ] [S|CDO|CDC]* ]*
;
import
: IMPORT_SYM S*
[STRING|URI] S* [ medium [ ',' S* medium]* ]? ';' S*
;
media
: MEDIA_SYM S* medium [ ',' S* medium ]* '{' S* ruleset* '}' S*
;
<edition
[Link]>
;
property
: IDENT S*
;
ruleset
: selector [ ',' S* selector ]*
'{' S* declaration [ ';' S* declaration ]* '}' S*
;
selector
: simple_selector [ combinator simple_selector ]*
;
simple_selector
: element_name? [ HASH | class | attrib | pseudo ]* S*
;
class
: '.' IDENT
;
element_name
: IDENT | '*'
;
attrib
: '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S*
[ IDENT | STRING ] S* ]? ']'
;
pseudo
: ':' [ IDENT | FUNCTION S* IDENT S* ')' ]
;
declaration
: property ':' S* expr prio?
| /* leer */
;
prio
: IMPORTANT_SYM S*
;
Cascading Style Sheets, Level 2
expr
: term [ operator term ]*
;
term
: unary_operator?
[ NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* |
TIME S* | FREQ S* | function ]
| STRING S* | IDENT S* | URI S* | RGB S* | UNICODERANGE S* | hexcolor
;
function
: FUNCTION S* expr ')' S*
;
/*
* Es gibt eine Beschr]nkung bezUglich der
* Farbe, n]mlich, dass sie 3 oder
* 6 Hex-Ziffern (i.e., [0-9a-fA-F]) hinter
* dem "#" haben muss; e.g., "#000" ist OK,
* "#abcd" nicht
*/
hexcolor
: HASH S*
;
%option case-insensitive
h [0-9a-f]
nonascii [\200-\377]
unicode \\{h}{1,6}[ \t\r\n\f]?
escape {unicode}|\\[ -~\200-\377]
nmstart [a-z]|{nonascii}|{escape}
nmchar [a-z0-9-]|{nonascii}|{escape}
string1 \"([\t !#$%&(-~]|\\{nl}|\'|{nonascii}|{escape})*\"
string2 \'([\t !#$%&(-~]|\\{nl}|\"|{nonascii}|{escape})*\'
ident {nmstart}{nmchar}*
name {nmchar}+
num [0-9]+|[0-9]*"."[0-9]+
string {string1}|{string2}
url ([!#$%&*-~]|{nonascii}|{escape})*
w [ \t\r\n\f]*
nl \n|\r\n|\r|\f
range \?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??|{h})))))
%%
[ \t\r\n\f]+ {return S;}
\/\*[^*]*\*+([^/][^*]*\*+)*\/ /* Kommentare ignorieren */
"<!- -" {return CDO;}
"- ->" {return CDC;}
"~=" {return INCLUDES;}
"|=" {return DASHMATCH;}
{string} {return STRING;}
<edition
[Link]>
E Literaturhinweise
E.1 Normative Literaturhinweise
[COLORIMETRY]
„Colorimetry, Second Edition“, CIE Publication 15.2-1986, ISBN 3-900-734-00-3.
Verfgbar unter [Link]
[CSS1]
„Cascading Style Sheets, level 1“, H. W. Lie und B. Bos, 17. Dezember 1996.
Verfgbar unter [Link]
[FLEX]
„Flex: The Lexical Scanner Generator“, Version 2.3.7, ISBN 1882114213.
[HTML40]
„HTML 4.0 Specification“, D. Raggett, A. Le Hors, I. Jacobs, 8. Juli 1997.
Verfgbar unter [Link] Die Empfehlung definiert drei
Dokumenttypdefinitionen: Strict, Transitional und Frameset, die alle von der Spezifikation
aus erreichbar sind.
[IANA]
„Assigned Numbers“, STD 2, RFC 1700, USC/ISI, J. Reynolds und J. Postel, Oktober 1994.
Verfgbar unter [Link]
[ICC32]
„ICC Profile Format Specification, version 3.2“, 1995.
Verfgbar unter [Link]
[ISO8879]
ISO 8879:1986 „Information Processing – Text and Office Systems – Standard Generalized
Markup Language (SGML)“, ISO 8879:1986.
Eine Liste der SGML-Entities finden Sie unter [Link]
[ISO10646]
<edition
[Link]>
[RFC2068]
„HTTP Version 1.1 „, R. Fielding, J. Gettys, J. Mogul, H. Frystyk Nielsen und T. Berners-Lee,
Januar 1997.
Verfgbar unter [Link]
[RFC2070]
„Internationalization of the HyperText Markup Language“, F. Yergeau, G. Nicol, G. Adams
und M. Drst, January 1997.
Verfgbar unter [Link]
[RFC2119]
„Key words for use in RFCs to Indicate Requirement Levels“, S. Bradner, M@rz 1997.
Verfgbar unter [Link]
[RFC2318]
„The text/css Media Type“, H. Lie, B. Bos, C. Lilley, M@rz 1998.
Verfgbar unter [Link]
[RFC1738]
„Uniform Resource Locators“, T. Berners-Lee, L. Masinter und M. McCahill, Dezember
1994.
Verfgbar unter [Link]
[SRGB]
„Proposal for a Standard Color Space for the Internet - sRGB“, M. Anderson, R. Motta,
S. Chandrasekar, M. Stokes.
Verfgbar unter [Link]
[UNICODE]
„The Unicode Standard: Version 2.0“, The Unicode Consortium, Addison-Wesley Devel-
opers Press, 1996. Zur Bidirektionalit@t lesen Sie auch die Korrekturen unter
[Link] Weitere Informationen finden Sie auf
der Homepage des Unicode Consortiums unter [Link] Die neueste Ver-
sion von Unicode. Weitere Informationen finden Sei auf der Homepage des Unicode Con-
Cascading Style Sheets, Level 2
<edition
[Link]>
[RFC1766]
„Tags for the Identification of Languages“, H. Alvestrand, M@rz 1995.
Verfgbar unter [Link]
[RFC1866]
„HyperText Markup Language 2.0“, T. Berners-Lee und D. Connolly, November 1995.
Verfgbar unter [Link]
[RFC1942]
„HTML Tables“, Dave Raggett, Mai 1996.
Verfgbar unter [Link]
[TRUETYPEGX]
Detaillierte Informationen ber TrueType GX von Apple Computer finden Sie unter
[Link] inklusive Beschreibungen der hinzugefgten
Tabellen und Schriftqualit@tspezifikationen.
[W3CSTYLE]
W3C-Ressource ber Web-Stylesheets. [Link]
[WAI-PAGEAUTH]
„WAI Accesibility Guidelines: Page Authoring“ fr den Entwurf zugreifbarer Dokumente
stehen zur Verfgung unter [Link]
Cascading Style Sheets, Level 2
attachment'
'background- <color> | transparent | inhe- transparent Nein visual
color' rit
'background- <uri> | none | inherit none Nein visual
image'
'background- [ [<percentage> | <length> 0% 0% Elemente auf no Beziehen sich auf visual
position' ]{1,2} | [ [top | center | bot- Blockebene und die Gr=ße der
tom] || [left | center | right] ] ersetzte Elemente eigentlichen Box
] | inherit
< 857 >
<edition
[Link]>
'bottom' <length> | <percentage> | auto Positionierte Ele- Nein Beziehen sich auf visual
auto | inherit mente die H=he des ent-
haltenden Blocks
'caption-side' top | bottom | left | right | top 'table-caption'-Ele- Ja visual
inherit mente
'clear' none | left | right | both | none Elemente auf Nein visual
inherit Blockebene
'clip' <shape> | auto | inherit auto Elemente auf Nein visual
Blockebene und
< 859 >
ersetzte Elemente
<edition
[Link]>
Inhalt
'font' [ [ 'font-style' || 'font-variant' Siehe ein- Ja Erlaubt fr 'font-si- visual
|| 'font-weight' ]? 'font-size' [ / zelne Eigen- ze' und 'line-height'
'line-height' ]? 'font-family' ] | schaften
caption | icon | menu | mes-
sage-box | small-caption | sta-
tus-bar | inherit
'font-family' [[ <family-name> | Vom Ja visual
<generic-family> ],]* Benutzer-
< 861 >
[<family-name> | programm
<generic-family>] | inherit abh@ngig
<edition
[Link]>
<edition
[Link]>
play: marker'
'marks' [ crop || cross ] | none | inhe- none Seitenkontext N/A visual, paged
rit
'max-height' <length> | <percentage> | none Alle Elemente, Nein Beziehen sich auf visual
none | inherit außer nicht die H=he des ent-
ersetzte Inline-Ele- haltenden Blocks
mente und Tabel-
lenelemente
'max-width' <length> | <percentage> | none Alle Elemente, no Beziehen sich auf visual
none | inherit außer nicht die Breite des ent-
ersetzte Inline-Ele- haltenden Blocks
mente und Tabel-
lenelemente
'min-height' <length> | <percentage> | 0 Alle Elemente, no Beziehen sich auf visual
inherit außer nicht die H=he des ent-
ersetzte Inline-Ele- haltenden Blocks
mente und Tabel-
lenelemente
'min-width' <length> | <percentage> | UA depen- Alle Elemente, no Beziehen sich auf visual
inherit dent außer nicht die Breite des ent-
ersetzte Inline-Ele- haltenden Blocks
mente und Tabel-
lenelemente
'orphans' <integer> | inherit 2 Elemente auf Ja visual, paged
<edition
[Link]>
programm
abh@ngig
'pause-before' <time> | <percentage> | Vom Nein Siehe Text aural
inherit Benutzer-
programm
abh@ngig
'pitch' <frequency> | x-low | low | medium Ja aural
medium | high | x-high | inhe-
rit
'pitch-range' <number> | inherit 50 Ja aural
'play-during' <uri> mix? repeat? | auto | auto Nein aural
none | inherit
'position' static | relative | absolute | static Alle Elemente, Nein visual
fixed | inherit außer auf erzeug-
ten Inhalt
'quotes' [<string> <string>]+ | none | Vom Ja visual
inherit Benutzer-
programm
abh@ngig
'richness' <number> | inherit 50 Ja aural
'right' <length> | <percentage> | auto Positionierte Ele- Nein Beziehen sich auf visual
Schreib-
richtung
abh@ngig
<edition
[Link]>
<edition
[Link]>
G Deskriptor-Index
Name Werte Ausgangswert
'ascent' <number> nicht definiert
'baseline' <number> 0
'bbox' <number>, <number>, <number>, nicht definiert
<number>
'cap-height' <number> nicht definiert
'centerline' <number> nicht definiert
'definition-src' <uri> nicht definiert
'descent' <number> nicht definiert
'font-family' [ <family-name> | <generic-family> ] [, vom Benutzerprogramm
[<family-name> | <generic-family> ]]* abh@ngig
'font-size' all | <length> [, <length>]* alle
'font-stretch' all | [ normal | ultra-condensed | extra- normal
condensed | condensed | semi-condensed
| semi-expanded | expanded | extra-ex-
panded | ultra-expanded ] [, [ normal |
ultra-condensed | extra-condensed | con-
densed | semi-condensed | semi-expan-
ded | expanded | extra-expanded | ultra-
expanded] ]*
'font-style' all | [ normal | italic | oblique ] [, [normal | alle
Cascading Style Sheets, Level 2
italic | oblique] ]*
'font-variant' [normal | small-caps] [,[normal | small- normal
caps]]*
'font-weight' all | [normal | bold | 100 | 200 | 300 | 400 alle
| 500 | 600 | 700 | 800 | 900] [, [normal |
bold | 100 | 200 | 300 | 400 | 500 | 600 |
700 | 800 | 900]]*
'mathline' <number> nicht definiert
'panose-1' [<integer>]{10} 0000000000
'slope' <number> 0
'src' [ <uri> [format(<string> [, <string>]*)] | nicht definiert
<font-face-name> ] [, <uri> [for-
mat(<string> [, <string>]*)] |
<font-face-name> ]*
'stemh' <number> nicht definiert
'stemv' <number> nicht definiert
Index
<frequency> 577
! <integer> 569
<length> 570
A
!important-Regeln 606 <number> 569 Abk>rzungen und Akronyme
#FIXED 58 <percentage> 573 117
#IMPLIED 58 <time> 577 Absatz, visuelle Darstellung
#REQUIRED 58 <uri> 574 127
%attrs; 60 6berlauf 677 Abschneiden, Tabellentext
%block; 56 6berschriften 145
%Character; 77 positionieren und Abschnittsnummern,
%Charset; 77 ausrichten 791 nummeriert 103
%Color; 75 verschachtelt 103 Absenden 260
%ContentType; 77 6berstreichen 774 Abstand, um Frame 248
%Datetime; 77 'width' 665 Abstraktes Modul 393, 402
%FrameTarget; 82 :active 594 Abw@rtskompatibilit@t 553
%inline; 56 :first 713 Adressierungsmodell 553
%LanguageCode; 77 :first-child 591 after 684
%Length; 76 :first-line 595 Akustische Stylesheets 817
%MediaDesc; 80 :focus 594, 817 Alternativer Text,
%MultiLength; 76 :hover 594 spezifizieren 216
%Pixels; 76 :left 713 Alternatives Stylesheet 225
%Script; 81 :right 713 andere 372
%Text; 74 @ 564 Anf>hrungszeichen, content
%URI; 74 @font-face 746 691
<angle> 577 @import 610 Anker 178
<color> 575 @import-Regel 604 ASCII-Zeichen im Namen
@media 610 186
@media-Regel 604, 611 Definition mit A 184
@page-Regel 709, 711, 713 durch ein Skript setzen
184
Page size: 168,00 x 240,00 mm
<edition
[Link]>
Canvas 552
D Dokumentbaum 556
Dokumentdarstellung
cap-height, Deskriptor 756 Darf 368 578–579
caption 787 dashed 624 Dokumentkonformit@t,
caption-side 791 Dateiauswahl 261 XHTML 1.1 518
cascading 228 Dateiauswahl-Steuerelement, Dokumenttyp, hybrider 393
cascading style sheets 228 6bertragung 286 Dokumenttyp-Definition 50
CDATA 59, 73 Datentyp DTD-Fragmente konform
Script- und Style-Daten 73 CDATA 73 zu 63
<edition
[Link]>
<edition
[Link]>
Medien-Deskriptor
Groß-/Kleinschreibung 81
Nachkomme 557
Nachrichteneinheit 63
P
List bekannter 80 NAME 73 padding 620
parsen 81 name-Attribut 377 padding-bottom 619
Medienabh@ngigkeit, von Namensraum 372 padding-left 619
Stylesheets 610 Namensraum f>r XTHML padding-right 619
Mediengruppen 612 371 padding-top 619
Medientyp 610, 378, 611 Namensregeln, XHTML Host page 716
Medium Language 401 page-break-after 715
externe Stylesheets 229 Nicht spezifiziert 368 page-break-before 714
verwendet mit Stylesheets NUMBER 73 paged 612
224 Numerische Zeichenreferenz panose-1, Deskriptor 755
Men> 261 70 Parameter-Entity
Darstellen von Nummerierung 684, 693 %attrs; 60
AuswahlmIglichkeiten %block; 56
273
Gruppieren von
O %Character; 77
%Charset; 77
AuswahlmIglichkeiten Objekt %Color; 75
271 Ausrichtung 215 %ContentType; 77
visuelle Darstellung von Breite und HIhe 214 %Datetime; 77
Gruppierungen 274 Deklaration 204 %FrameTarget; 82
Vorauswahlen 271 im Formular 261 %inline; 56
<edition
[Link]>
<edition
[Link]>
<edition
[Link]>
Zusatzdaten
Möglicherweise liegt dem gedruckten Buch eine CD-ROM mit Zusatzdaten bei. Die
Zurverfügungstellung dieser Daten auf der Website ist eine freiwillige Leistung des
Verlags. Der Rechtsweg ist ausgeschlossen.
Hinweis
Dieses und andere eBooks können Sie rund um die Uhr
und legal auf unserer Website
([Link]
herunterladen