Zum Hauptinhalt springen

5. Referenzauflösung (Reference Resolution)

Dieser Abschnitt beschreibt den Algorithmus zur Auflösung von URI-Referenzen in absolute Form.

5.1. Festlegung eines Basis-URI (Establishing a Base URI)

Die Auflösung relativer Referenzen erfordert einen Basis-URI. Der Basis-URI kann auf verschiedene Weise festgelegt werden.

5.1.1. Im Inhalt eingebetteter Basis-URI (Base URI Embedded in Content)

Mechanismen wie das <base>-Tag von HTML können den Basis-URI im Inhalt angeben.

5.1.2. Basis-URI von der kapselnden Entität (Base URI from the Encapsulating Entity)

Eine kapselnde Entität (wie eine MIME-Nachricht) kann den Basis-URI definieren.

5.1.3. Basis-URI vom Abruf-URI (Base URI from the Retrieval URI)

Wenn kein anderer Basis-URI verfügbar ist, verwenden Sie den URI, von dem das Dokument abgerufen wurde.

5.1.4. Standard-Basis-URI (Default Base URI)

Anwendungen können einen Standard-Basis-URI definieren.

5.2. Relative Auflösung (Relative Resolution)

Pseudocode für den Algorithmus zur Auflösung relativer Referenzen:

if R.scheme is defined then
T.scheme = R.scheme
T.authority = R.authority
T.path = remove_dot_segments(R.path)
T.query = R.query
else
if R.authority is defined then
T.authority = R.authority
T.path = remove_dot_segments(R.path)
T.query = R.query
else
if R.path is empty then
T.path = Base.path
if R.query is defined then
T.query = R.query
else
T.query = Base.query
else
if R.path starts-with "/" then
T.path = remove_dot_segments(R.path)
else
T.path = merge(Base, R.path)
T.path = remove_dot_segments(T.path)
T.query = R.query
T.authority = Base.authority
T.scheme = Base.scheme
T.fragment = R.fragment

5.3. Komponenten-Rekonstruktion (Component Recomposition)

Kombinieren Sie die aufgelösten Komponenten wieder zu einer URI-Zeichenfolge.

5.4. Beispiele für Referenzauflösung (Reference Resolution Examples)

Basis-URI: http://a/b/c/d;p?q

Relative ReferenzAufgelöstes Ergebnis
ghttp://a/b/c/g
./ghttp://a/b/c/g
g/http://a/b/c/g/
/ghttp://a/g
//ghttp://g
?yhttp://a/b/c/d;p?y
g?yhttp://a/b/c/g?y
#shttp://a/b/c/d;p?q#s
../ghttp://a/b/g
../../ghttp://a/g

Nächstes Kapitel: 6. Normalisierung und Vergleich (Normalization and Comparison) - URI-Normalisierungstechniken