Aller au contenu principal

5. Résolution de référence (Reference Resolution)

Cette section décrit l'algorithme pour résoudre les références URI en forme absolue.

5.1. Établissement d'un URI de base (Establishing a Base URI)

La résolution des références relatives nécessite un URI de base. L'URI de base peut être établi par diverses méthodes.

5.1.1. URI de base intégré dans le contenu (Base URI Embedded in Content)

Des mécanismes tels que la balise <base> HTML peuvent spécifier l'URI de base dans le contenu.

5.1.2. URI de base de l'entité encapsulante (Base URI from the Encapsulating Entity)

Une entité encapsulante (comme un message MIME) peut définir l'URI de base.

5.1.3. URI de base de l'URI de récupération (Base URI from the Retrieval URI)

Si aucun autre URI de base n'est disponible, utilisez l'URI à partir duquel le document a été récupéré.

5.1.4. URI de base par défaut (Default Base URI)

Les applications peuvent définir un URI de base par défaut.

5.2. Résolution relative (Relative Resolution)

Pseudocode pour l'algorithme de résolution de référence relative :

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. Recomposition des composants (Component Recomposition)

Recombiner les composants résolus en une chaîne URI.

5.4. Exemples de résolution de référence (Reference Resolution Examples)

URI de base : http://a/b/c/d;p?q

Référence relativeRésultat résolu
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

Chapitre suivant : 6. Normalisation et comparaison (Normalization and Comparison) - Techniques de normalisation URI