[Inhalt] Typos; Korrekturen

Typos korrigiert und Inhalt teilweise ergänzt/korrigiert.
This commit is contained in:
Andre Meyering 2017-07-30 17:36:55 +02:00
parent fd9601ec83
commit b4ab50ac3f
6 changed files with 95 additions and 88 deletions

View file

@ -43,42 +43,61 @@ Der \enquote{Hyperlink} ist ein Verweis mit automatischer Verweisauflösung. Er
\item \enquote{Erfinder} des Hyperlinks: Vannevar Bush, 1945
\item siehe \enquote{As we may think}, Atlantic Monthly, 1945
\item siehe Maschine \enquote{memex} (Memory extension)
$\Rightarrow$ Information auf Mikrofilm mit Verweismöglichkeit inkl. Automatischer Verweisauflösung
$\Rightarrow$ Information auf Mikrofilm mit Verweismöglichkeit inkl. automatischer Verweisauflösung
\end{itemize}
\subsection{Zwei Eigenschaften des \acs{WWW} (\enquote{Erfolgsfaktoren})\label{sec:lokations_medienunabhaengigkeit}\index{WWW}}
\begin{enumerate}[noitemsep]
\begin{enumerate}
\item \textbf{Lokationsunabhängigkeit}
$\Rightarrow$ unabhängig von der Lokation der Information und der Suchenden;
die Information kann immer \enquote{auf die gleiche Weise} beschafft werden.
Unabhängig von der Lokation der Information und des Suchenden, kann die
Information immer \enquote{auf die gleiche Weise} beschafft werden.
Beim Design des \acs{WWW} von \href{https://de.wikipedia.org/wiki/Tim_Berners-Lee}{Tim Berners-Lee} geplant
Beim Design des \acs{WWW} von \href{https://de.wikipedia.org/wiki/Tim_Berners-Lee}{Tim Berners-Lee} geplant.
\item \textbf{Medienunabhängigkeit}
$\Rightarrow$ Die Information kann grundsätzlich in verschiedenen Medienformen
\item \textbf{Medienunabhängigkeit} \hfill \newline
Die Information kann grundsätzlich in verschiedenen Medienformen
(Text, Bild, Video, Audio, \ldots ) vorliegen.
Ursprünglich nicht geplant und nicht im Web enthalten. Belege:
\begin{itemize}[noitemsep]
\begin{itemize}
\item HTML: Hyper \textbf{Text} Markup Language
\item HTTP: Hyper \textbf{Text} Transfer Protocol
\item $\Rightarrow$ in ersten Versionen \textbf{nur} Unterstützung von Text vorhanden! (\textbf{Klausurrelevant!})
\item[$\Rightarrow$] in ersten Versionen \textbf{nur} Unterstützung von Text vorhanden! (\textbf{Klausurrelevant!})
\end{itemize}
\end{enumerate}
\bigskip
\bigskip
\bigskip
\bigskip
\bigskip
\bigskip
\bigskip
\begin{table}[h]
\begin{tabular}{c|p{34mm}|p{30mm}|p{75mm}}
\newpage
\section{ISO-OSI-7-Schichten-Architektur}
Die 7 Schichten des ISO-OSI-7-Schichten-Architektur\index{OSI-7-Schichten-Architektur} werden in \autoref{tbl:osi_7_schichten} dargestellt.
\textbf{Hinweis}: Schicht 2 kann unterteilt werden.
\begin{itemize}[noitemsep]
\item Ab der Transportschicht werden nur noch Ende zu Ende Verbindungen betrachtet.
\item \textit{siehe} Wikipedia (\url{https://de.wikipedia.org/wiki/OSI-Modell})
\end{itemize}
\section{Internet-4-Schichten-Modell}\index{Internet-4-Schichten-Modell}
\hspace*{-3mm}
\begin{tabular}{rcl}
Schicht &5-7 &$\Rightarrow$ Application Layer \\
Schicht &4 &$\Rightarrow$ Transport Layer\\
Schicht &3 &$\Rightarrow$ Internet Layer\\
Schicht &1-2 &$\Rightarrow$ Network Access-Layer\\
\end{tabular}
\acs{HTTP} als Anwendungsprotokoll des 4-Schichten-Internet-Modells benötigt als unterliegendes Protokoll der Transportschicht \acs{TCP} (\acs{UDP} geht nicht!).
\medskip
\begin{table}[h!]
\hspace*{-6mm}
\begin{tabular}{c|p{33mm}|p{30mm}|p{89mm}}
Nr. & Deutsch & Englisch & Beschreibung \\
\midrule
@ -91,7 +110,8 @@ Der \enquote{Hyperlink} ist ein Verweis mit automatischer Verweisauflösung. Er
5 & Kommunikations-\newline steuerungsschicht (besser nicht: Sitzungsschicht) & Session Layer & Sychronisierung der Anwendung; Transaktionssteuerung; (\zB RPC Protokoll) \\
\midrule
4 & Transportschicht & Transport Layer & Verbindungen; Vollständigkeit/Fehlerfreiheit/Reihenfolge; Port-/Anwendungsadressierung; (\acs{TCP}/\acs{UDP}) \\
4 & Transportschicht & Transport Layer & Verbindungen; \newline Vollständigkeit/Fehlerfreiheit/Reihenfolge; \newline
Port-/Anwendungsadressierung; (\acs{TCP}/\acs{UDP}) \\
\midrule
3 & Vermittlungsschicht & Network Layer & Wegewahl/Routing; Adressierung (mit IP-Adresse) \\
@ -108,27 +128,3 @@ Der \enquote{Hyperlink} ist ein Verweis mit automatischer Verweisauflösung. Er
\caption{OSI-7-Schichten-Modell}
\label{tbl:osi_7_schichten}
\end{table}
\newpage
\section{ISO-OSI-7-Schichten-Architektur}
Die 7 Schichten des ISO-OSI-7-Schichten-Architektur\index{OSI-7-Schichten-Architektur} werden in \autoref{tbl:osi_7_schichten} auf Seite \pageref{tbl:osi_7_schichten} dargestellt.
\textbf{Hinweis}: Schicht 2 kann unterteilt werden.
\begin{itemize}[noitemsep]
\item Ab der Transportschicht werden nur noch Ende zu Ende Verbindungen betrachtet.
\item \textit{siehe} Wikipedia\footnote{\url{https://de.wikipedia.org/wiki/OSI-Modell}}
\end{itemize}
\section{Internet-4-Schichten-Modell}\index{Internet-4-Schichten-Modell}
\hspace*{-3mm}
\begin{tabular}{rcl}
Schicht &5-7 &$\Rightarrow$ Application Layer \\
Schicht &4 &$\Rightarrow$ Transport Layer\\
Schicht &3 &$\Rightarrow$ Internet Layer\\
Schicht &1-2 &$\Rightarrow$ Network Access-Layer\\
\end{tabular}
\acs{HTTP} als Anwendungsprotokoll des 4-Schichten-Internet-Modells benötigt als unterliegendes Protokoll der Transportschicht \acs{TCP} (\acs{UDP} geht nicht!).

View file

@ -1,17 +1,18 @@
\chapter{\acf{HTTP}}\index{HTTP}\label{sec:http}
\textit{Was ist ein Protokoll\index{Protokoll}?} \newline
\textit{\textbf{Was ist ein Protokoll?}} \index{Protokoll} \newline
Ein Protokoll ist verbindliche Vereinbarung (Regeln), wie zwei (oder mehr) Teilnehmer miteinander kommunizieren.
\section{HTTP 0.9 (1991) - Erste Version}\label{http09}
Request: \code{GET /pdf/zur/ressource} \newline
Response: \code{<Inhalt der Ressource>} \newline
Response: \code{<Inhalt der Ressource>}
Problem: Nur Plain-Text und \acs{HTML} (erkennbar am Anfang \html{<html>}) sind erlaubt und möglich. \newline
Problem: Fehler sind nicht sicher erkennbar.
\section{HTTP 1.0 (1992)}\label{sec:http10}
Request: \code{GET /pdf/zur/ressource HTTP/1.0} \newline
Response: beginnt mit einer Statuszeile: \code{HTTP/1.0 <statuscode> <textuelle Beschreibung des statuscodes; Reason String>}
Response: beginnt mit einer Statuszeile: \code{HTTP/1.0 <statuscode> <textuelle Beschreibung des statuscodes; Reason String>}, danach Response-Header.
\subsection{Status Codes}\label{sec:statuscodes}\index{HTTP!Statuscode}
@ -23,7 +24,7 @@ Response: beginnt mit einer Statuszeile: \code{HTTP/1.0 <statuscode> <textuelle
\begin{itemize}[noitemsep]
\item \textbf{\code{1xx}}: Informational Codes \newline
\hspace*{6mm} $\Rightarrow$ Zur Anzeige, dass weitere Daten folgen (Verhinderung von Time-Outs).
\hspace*{6mm} $\Rightarrow$ Zur Anzeige, dass weitere Daten folgen (Verhinderung von Timeouts).
\item \textbf{\code{2xx}}: Successful Client Requests
\begin{itemize}[noitemsep]
@ -44,8 +45,9 @@ Response: beginnt mit einer Statuszeile: \code{HTTP/1.0 <statuscode> <textuelle
\begin{itemize}[noitemsep]
\item \code{400} $\Rightarrow$ Bad Request $\Rightarrow$ Der Request war nicht korrekt.
\item \code{401} $\Rightarrow$ Authorization Required $\Rightarrow$ Eine Autorisierung ist erforderlich.
\item \code{403} $\Rightarrow$ Forbidden $\Rightarrow$ Der Webserver hat \zB keinen Zugriff (auf ein Verzeichnis). Oder man greift auf ein Verzeichnis zu, ohne eine Datei anzugeben (und es gibt keine \pfad{index.html} und das Verzeichnislisting ist deaktiviert). \enquote{Wenn ich eine solche Meldung erhalte, erhält sie jeder!}
\item \code{404} $\Rightarrow$ Not Found; Der Pfad wurde nicht gefunden
\item \code{403} $\Rightarrow$ Forbidden $\Rightarrow$ Der Webserver hat \zB keinen Zugriff (auf ein Verzeichnis). Oder man greift auf ein Verzeichnis zu, ohne eine Datei anzugeben (und es gibt keine \pfad{index.html} und das Verzeichnislisting ist deaktiviert). \newline
\enquote{Wenn ich eine solche Meldung erhalte, erhält sie jeder!}
\item \code{404} $\Rightarrow$ Not Found: Der Pfad wurde nicht gefunden
\end{itemize}
\item \textbf{\code{5xx}}: Server Error
@ -71,7 +73,7 @@ Die Statuszeile wird gefolgt von einer oder mehreren \acs{HTTP}-Header-Zeilen im
\end{description}
\medskip
\item \textbf{Achtung}: Alle \acsp{MIME-Type} sind standardisierte Werte! Dies ist standardisiert von \enquote{IANA} (Teil der \enquote{IETF} ) \newline
\item \textbf{Achtung}: Alle \acsp{MIME-Type} sind standardisierte Werte! Diese werden standardisiert von der \enquote{IANA} (Teil der \enquote{IETF} ) \newline
\textbf{Ausnahme}: \acs{slmt} beginnt mit \enquote{\code{x-}}, \zB \code{application/x-meinespezielleirgendwas}
\item Wird immer mitgegeben, außer man hat \textit{keinen} Content
@ -96,13 +98,14 @@ Eine Leerzeile beendet die \acs{HTTP}-Header-Zeilen, danach folgt das Dokument.
\subsection{Weitere Request-Typen}\index{HTTP!Requests}
Mit HTTP 1.0 wurden weitere Request Typen eingeführt.
Mit \acs{HTTP} 1.0 wurden weitere Request Typen eingeführt.
\subsubsection{HEAD-Request}
\code{HEAD /pfad/zur/ressource HTTP/1.0} $\Rightarrow$ liefert nur die Statuszeile und \acs{HTTP}-Headerzeile.
\code{HEAD /pfad/zur/ressource HTTP/1.0} $\Rightarrow$ liefert nur die Statuszeile und \acs{HTTP}-Headerzeilen.
\subsubsection{POST-Request}
\code{POST /pfad/zur/ressource HTTP/1.0} $\Rightarrow$ gefolgt von Parametern (signalisiert wie bei einer Response über \acs{HTTP}-Headerzeilen).
\code{POST /pfad/zur/ressource HTTP/1.0} \newline
$\Rightarrow$ gefolgt von Parametern (signalisiert wie bei einer Response über \acs{HTTP}-Headerzeilen).
\subsection{Was funktioniert nicht?}
@ -110,10 +113,12 @@ Mit HTTP 1.0 wurden weitere Request Typen eingeführt.
\acs{HTTP} 1.0 funktioniert gut, aber was funktioniert nicht bzw. was geht besser?
Ist es möglich, mehrere \acs{FQDN} auf eine IP-Adrese zu leiten? \newline
\hspace*{4mm} $\Rightarrow$ FQDN1 und FQDN2 zeigen beide auf \code{1.2.3.4}; per \acs{DNS} möglich und erlaubt! \newline
\hspace*{4mm} $\Rightarrow$ FQDN1 und FQDN2 zeigen beide auf \code{1.2.3.4}; per \acs{DNS} möglich und erlaubt!
\code{GET /pfad/zur/ressource HTTP/1.0} $\Rightarrow$ Problem: Der \acs{FQDN} steht nicht im Request bei \acs{HTTP} 1.0 und wird nicht einmal für den \acs{TCP}-Verbindungsaufbau verwendet $\Rightarrow$ Der Webserver weiss nicht, welche Präsenz angefragt ist!
\code{GET /pfad/zur/ressource HTTP/1.0} $\Rightarrow$ Problem: Der \acs{FQDN} steht nicht im Request bei \acs{HTTP} 1.0 und wird nicht einmal für den \acs{TCP}-Verbindungsaufbau verwendet \newline
$\Rightarrow$ \textit{Der Webserver weiß nicht, welche Präsenz angefragt ist!}
\medskip
\begin{Achtung}
\acs{HTTP} 1.0 kann nicht erkennen, von welchem \acs{FQDN} der Request kommt! Siehe \autoref{sec:multi_präsenzen} für Möglichkeiten, dennoch verschiedene Webpräsenzen zu unterscheiden.
\end{Achtung}
@ -123,8 +128,8 @@ Pflicht-Header im Request:
\qquad \code{Host: $\underbrace{\text{www.dhbw-karlsruhe.de}}_{\text{angefragter FQDN}}$}
Jetzt gibt es persistene Verbindungen, \dash eine \acs{TCP}-Verbindung wird nacheinander für meherere Request/Response-Paare zwischen Client und Server genutzt. \newline
$\Rightarrow$ Es muss nicht jeweils eine neue Verbindung aufgebaut werden. Bereits vorher bei \acs{HTTP} 1.0 gab es ähnliches, nämlich den \enquote{Connection: Keepalive}-Header. Dieser ist nicht standard-konform und nur teilweise implementiert!
Jetzt gibt es persistente Verbindungen, \dash eine \acs{TCP}-Verbindung wird nacheinander für meherere Request/Response-Paare zwischen Client und Server genutzt. \newline
Es muss somit nicht jeweils eine neue Verbindung aufgebaut werden. Bereits vorher bei \acs{HTTP} 1.0 gab es ähnliches, nämlich den \enquote{Connection: Keepalive}-Header. Dieser ist jedoch nicht standard-konform und nur teilweise implementiert!
\begin{figure}[h]
\begin{center}
@ -171,7 +176,7 @@ Siehe Wikipedia: \url{https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#
\item per \acf{FQDN}\index{FQDN} \enquote{Rechner} oder \enquote{Domain}-Name, welche per DNS auf eine IP-Adresse umgesetzt werden (A-Record oder Alias-Eintrag), \newline
\zB \code{http://dhbw-karlsruhe.de}, \code{http://www.uni-karlsruhe.de} $\Rightarrow$ Dies gilt als professionell
\begin{enumerate}[noitemsep]
\item mehrere IP-Adressen (je eine eigene IP Adresse pro \acs{FQDN})
\item mehrere IP-Adressen (je eine eigene IP-Adresse pro \acs{FQDN})
\begin{enumerate}[noitemsep]
\item mehrere Netzwerkkarten
\begin{itemize}[noitemsep]
@ -187,5 +192,8 @@ Siehe Wikipedia: \url{https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#
\end{itemize}
\end{enumerate}
\item mehere \acs{FQDN} für eine IP-Adresse:
Unterscheidung durch \code{Host}-Header im Request (ab \acs{HTTP} Version 1.1).
\end{enumerate}
\end{enumerate}

View file

@ -18,7 +18,7 @@ Bei einer IPv4\index{IPv4} \code{a.b.c.d} mit $a,b,c,d \in {0,...,255}$ (oder an
\end{tabular}
\item Außerdem sind in jedem Teilnetz die erste und die letzte Adresse als Netzwerkadresse bzw. Broadcast-Adresse reserviert. \newline
$\Rightarrow$ ingesamt stehen deshalb weniger als 4 Mrd. Adressen zur Verfügung.
$\Rightarrow$ insgesamt stehen deshalb weniger als 4 Mrd. Adressen zur Verfügung.
\item Außerdem: IP-Adressen sind äußerst ungerecht auf der Welt verteilt:
\begin{itemize}[noitemsep]
@ -30,6 +30,7 @@ Bei einer IPv4\index{IPv4} \code{a.b.c.d} mit $a,b,c,d \in {0,...,255}$ (oder an
\item Außerdem: immer mehr Geräte der Haushalts- und Unterhaltungselektronik sind \enquote{internetfähig} (haben einen Webserver).
\end{itemize}
\bigskip
\begin{Tipp}
\textbf{Grobe Berechnung von 2er Potenzen}

View file

@ -97,7 +97,7 @@
\begin{itemize}[noitemsep]
\item Tabellen
\item (Java-)Applets
\item \uwave{Textfluss} um Grafiken (vorher waren Grafiken \enquote{inline} und der Zeilenabstand wurde vergrößert, sodass die Grafik in die Zeile passte. Alternativ konnte man noch Zeilenumbrüche verwenden)
\item \uwave{Textfluss} um Grafiken (vorher waren Grafiken \enquote{inline} und der Zeilenabstand wurde vergrößert, sodass die Grafik in die Zeile passte. Alternativ konnte man noch \mbox{Zeilenumbrüche} verwenden) % mbox gegen die komische Silbentrennung von LaTeX: Zeile-numbrüche
\end{itemize}
\item[1997] HTML 4.0
@ -154,7 +154,7 @@
\end{itemize}
\end{enumerate}
\begin{Hinweis}
\begin{Hinweis}[frametitle={Hinweis zur Klausur}]
In der Klausur sollten keine Vereinfachungen verwendet werden! Zu hoher Wahrscheinlichkeit wird sowieso \acs{XHTML} gefordert!
\end{Hinweis}
@ -183,7 +183,7 @@
\begin{description}
\item[\code{PUBLIC}] Es handelt sich um einen öffentlichen Standard. \newline
Alternativ gibt es noch \code{SYSTEM} oder \code{PRIVATE} für selbst definierte Grammatiken mit (oder ohne) Angabe der \acs{DTD}
Alternativ gibt es noch \code{SYSTEM} oder \code{PRIVATE} für selbst definierte Grammatiken mit (oder ohne) Angabe der \acs{DTD}.
\item[\enquote{Public-ID}] Textuelle, exakt festgelegte \enquote{Beschreibung des Standards}, \zB \code{-//W3C//DTD XHTML 1.1//EN} bei XHTML 1.1
@ -265,8 +265,8 @@
\begin{itemize}[noitemsep]
\item die Datenmenge muss dennoch komplett geladen werden
\item erhöhter Speicherplatzverbrauch im Web-Browser (Arbeitsspeicher! Es ist nicht der Cache gemeint)
\item die Qualität der Skalierung im Browser ist (meist) schlechter als bei Bildverarbeitungsprogrammen
\item erhöhter Speicherplatzverbrauch im Web-Browser (Arbeitsspeicher! Es ist nicht der Cache gemeint!)
\item die Qualität der Skalierung im Browser ist (meist) schlechter als bei Bildbearbeitungsprogrammen
\end{itemize}
@ -309,13 +309,6 @@ Die Anzahl der Spalten (und Zeilen) wird nicht vorab definiert. Eine unterschied
\label{tbl:html_tabelle_anzahl_felder}
\end{table}
\begin{figure}[h]
\centering
\includegraphics[scale=0.92]{Bilder/HTML_rowspan_colspan.png}
\caption{HTML-Tabelle mit zusammengefügten Feldern}
\label{fig:html_table_colspan_row}
\end{figure}
Statt \html{<td>} kann auch überall \html{<th>} verwendet werden, um eine Art Metadaten (Beschreibung der Tabelleninhalte) anzeigen zu lassen.
Seit \acs{HTML} 4 kann \html{<table>} zusätzlich gegliedert werden in:
@ -335,6 +328,14 @@ Optionale Attribute in \html{<td>} und \html{<th>}:
Die überdeckten \html{<td>}/\html{<th>} müssen im Quelltext gestrichen/ausgelassen werden. Ein Beispiel für die Ausgabe zeigt \autoref{fig:html_table_colspan_row} mit dem dazu gehörigen \acs{HTML}-Quelltext in \autoref{lst:table_col_row_span} auf Seite~\pageref{lst:table_col_row_span}.
\bigskip
\begin{figure}[h!]
\centering
\includegraphics[scale=0.9]{Bilder/HTML_rowspan_colspan.png}
\caption{HTML-Tabelle mit zusammengefügten Feldern}
\label{fig:html_table_colspan_row}
\end{figure}
\newpage
\begin{lstlisting}[language=HTML5,caption=Tabelle -- \code{colspan} und \code{rowspan},label=lst:table_col_row_span]
<table border="1">

View file

@ -7,7 +7,7 @@
Beispiel für URL (und damit auch für URI): \pfad{http://www.dhbw-karlsruhe.de/}
\item[\acs{URI}] Gibt Informationen, wie eine Ressource erreicht werden kann. \newline
Beispiel für URI (aber nicht für eine URL): mailto:xyz@dhbw-karlsruhe.de
Beispiel für URI (aber nicht für eine URL): \pfad{mailto:xyz@dhbw-karlsruhe.de}
\end{description}
@ -57,7 +57,7 @@ Format einer \acs{URL}:\newline
\end{Achtung}
\subsection{Relative URLs}\label{sec:relative_url}
Es können auch relative \acsp{URL} angegeben werden, die jedoch mithilfe der vollständigen \acs{URL} des enthaltenden Dokuments ebenfalls zu einer vollständigen (absoluten) URL gemacht werden! Es wird zwischen folgenden relativen URLs unterschieden:
Es können auch relative \acsp{URL} angegeben werden, die jedoch mithilfe der vollständigen \acs{URL} des enthaltenden Dokuments ebenfalls zu einer vollständigen (absoluten) \acs{URL} gemacht werden! Es wird zwischen folgenden relativen URLs unterschieden:
\begin{description}
\item[Protokoll-relative URL] beginnt mit \pfad{//...}, \pfad{host/...} (\zB HTTPS)\index{URL!Protokoll-relativ}
@ -81,7 +81,8 @@ Anwendung von vollständigen (Host-absoluten) URLs
\item Verweis auf den eigenen Server mit anderem Protokoll (HTTP $\Leftrightarrow$ HTTPS $\Leftrightarrow$ FTP)
\end{itemize}
Spezielle Verzeichnisnamen, welche speziell bei relativen URLs wichtig sind:
\newpage
Spezielle Verzeichnisnamen, welche speziell bei relativen \acsp{URL} wichtig sind:
\begin{description}[noitemsep]
\item[\pfad{..}] das übergeordnete Verzeichnis (im Falle des Wurzelverzeichnisses wiederum das Wurzelverzeichnis).

View file

@ -114,7 +114,7 @@ $\Rightarrow$ Gesamtbreite: 60mm, da padding, border-width und margin doppelt ge
Falls es keine explizite Angabe durch den Autor der Seite gibt, so wird folgendes verwendet:
\begin{itemize}[noitemsep]
\item default-Vorgabe (\code{user-agent})
\item Default-Vorgabe (\code{user-agent})
\item dynamische Anpassung (hier an den Inhalt)
\end{itemize}
@ -159,7 +159,7 @@ Die tatsächliche \enquote{Position} wird angegeben mittels \code{top}, \code{bo
\code{width}, \code{right}, \code{margin}, \code{top}, \ldots erwarten Längenangaben als Werte. Diese können sein:
\begin{itemize}[noitemsep]
\begin{itemize}
\item absolute Werte, \zB $50mm$, $3in$, $2pt$ (\enquote{Punkt der Schriftsetzer}) $\Rightarrow$ werden selten verwendet
\item relative Werte, \zB \medskip
@ -338,7 +338,7 @@ Deswegen ist folgendes besser: \css{ol \{ list-style-type: decimal; \}}
\subsubsection{Kontextselektoren}\index{Selektoren!Kontext}
\begin{tabular}{ll}
\code{ol li \{\ldots \}} & $\Rightarrow$ gilt für alle \html{<li>}-Nachfolger eines \html{<ol>} \\
\code{ol li \{\ldots \}} & $\Rightarrow$ gilt für \textit{alle} \html{<li>}-Kinder eines \html{<ol>} \\
\code{ol > li \{\ldots \}} & $\Rightarrow$ gilt für alle \textit{direkten} \html{<li>}-Kinder eines \html{<ol>} (keine Kindeskinder) \\
\code{h1 \circa{} p \{\ldots \}} & $\Rightarrow$ gilt für \html{<p>}, wenn es einen vorangegangenen Geschwisterknoten \html{<h1>} gibt. \\
\code{h1 + p \{ \ldots \}} & $\Rightarrow$ gilt für alle \html{<p>}, die einen direkten Vorgänger \html{<h1>} haben. \\
@ -358,7 +358,7 @@ Kontextselektoren sind spezifischer als Selektoren ohne Kontext!
\code{a[href\^{}="http"] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, deren \code{href}-Attribut mit \enquote{http} beginnt \\
\code{a[href\^{}="http://"], a[href\^{}="https://"] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, die auf externe Seiten verlinken. \\
\code{a[href\$=".pdf"] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, die auf eine PDF verweisen.\\
\code{a[href*="google."] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, die auf Google verweisen (bzw. die \code{google.} enthalten.\\
\code{a[href*="google."] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, die auf Google verweisen (bzw. die \code{google.} enthalten).\\
\end{tabular}