bonjour.

si vous allez sur la page : http://en.wikipedia.org/wiki/URI_scheme
vous trouverez une doc sur la syntaxe des URI (URN, URL)
dont voici un résumé:
Code plaintext : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  foo://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose
  \_/   \_______________/ \_________/ \__/            \___/ \_/ \______________________/ \__/
   |           |               |       |                |    |            |                |
   |       userinfo         hostname  port              |    |          query          fragment
   |    \________________________________/\_____________|____|/ \__/ \____/ \__/ \_____/
   |                    |                          |    |    |    |     |     |     |
scheme              authority                    path   |    |    interpretable as keys
 name   \_______________________________________________|____|/         |           |
   |                         |                          |    |    interpretable as values
   |                 hierarchical part                  |    |
   |                                                    |    |
   |            path               interpretable as filename |
   |   ___________|____________                              |
  / \ /                        \                             |
  urn:example:animal:ferret:nose               interpretable as extension
 
 scheme
  name  userinfo  hostname       query
  _|__   ___|__   ____|____   _____|_____
 /    \ /      \ /         \ /           \
 mailto:username@example.com?subject=Topic

Je développe en java en ce moment et Java propose une classe URI qui permet de manipuler des URIs ou des URL mais ces classe ne propose rien pour les construire ci ce n'est passer tous les paramètres à l'instanciation.

créant dynamiquement beaucoup d'uri à partir de nombreuses informations issues de diverses source je me suis fait une classe URIBuilder qui propose un DSL pour créer une URI comme ceci
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
URIBuilder uriBuilder =  new URIBuilder();
uriBuilder.scheme("http")
   .host("localhost")
   .path("/un/chemin/vers/un/fichier.html")
   .fragment("ancre1");
URI uri = uriBuilder.getURI();
uri.openAsStream();
...
log.info(uriBuilder.getStringURI());
// -> http://localhost/un/chemin/vers/un/fichier.html#ancre1
Cela permet donc de construire son uri au fur et à mesure qu'on à les info nécessaire.
par exemple ajouter le user et login à l'uri précédente se fait simplement
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
uriBuilder.username("jhon").password("doe");
log.info(uriBuilder.getStringURI());
// -> http://jhon:doe@localhost/un/chemin/vers/un/fichier.html#ancre1

Je me demande si ça peut intéresser quelqu'un que je le porte en javascript et le mette dans les contributions.
on pourrait avoir quasi le même code à l'usage.
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
uriBuilder =  new URIBuilder();
uriBuilder.scheme("http")
   .host("localhost")
   .path("/un/chemin/vers/un/fichier.html")
   .fragment("ancre1")
   .username("jhon")
   .password("doe");
console.log(uriBuilder.getStringURI());
// -> http://jhon:doe@localhost/un/chemin/vers/un/fichier.html#ancre1
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
urnBuilder =  new URIBuilder();
urnBuilder.scheme("urn")
   .path("org.foo.uri.builder")
console.log(urnBuilder.getStringURI());
// -> urn:org.foo.uri.builder
Je vous laisse délibéré. si vous estimez que cela vaut le coup je ferais le portage et le mettrais dans contrib.

A+JYT