<?xml version="1.0" encoding="utf-8"?>
<!--  RSS generated by Flaimo.com RSS Builder [2009-11-26 23:21:12]  --> <rss version="2.0">
<channel>
<copyright>Copyright 2008 Blogg</copyright>
<pubDate>Thu, 26 Nov 2009 23:21:12 +0100</pubDate>
<lastBuildDate>Thu, 26 Nov 2009 23:21:12 +0100</lastBuildDate>
<docs>http://www.blogg.org/blog-35573.html</docs>
<description>juste pour faire connaitre mon petit annuaire</description>
<link>http://www.blogg.org/blog-35573.html</link>
<title>un petit annuaire</title>
<language>fr</language>
<category>Blogg</category>
<ttl>60</ttl>
<item>
<title>un nuveau petit tutorial en java</title>
<link>http://www.blogg.org/blog-35573-billet-277425.html</link>
<description><![CDATA[<CENTER><br />  <H1><FONT size=+4>Programmation de servlets Java</FONT></H1><br /></CENTER><br />Les servlets sont des programmes &eacute;crits en Java qui permettent de traiter et de r&eacute;pondre &agrave; des requ&egrave;tes pass&eacute;es la plupart du temps &agrave; un serveur web les abritant. Ils peuvent donc &ecirc;tre utilis&eacute;s pour traiter des donn&eacute;es issues d'un formulaire au sein d'une page HTML, pour la g&eacute;n&eacute;ration de pages HTML dynamiques en y incluant par exemples des informations issues de base de donn&eacute;es. Ils sont donc probablement une r&eacute;ponse pertinente &agrave; la croissante complexit&eacute; des sites web, notamment ceux de commerce &eacute;l&eacute;ctronique. <BR><br />Ce tutorial, loin d'&ecirc;tre exhaustif, a pour objectif de pr&eacute;senter de la mani&egrave;re la plus claire possible les fonctions de bases mises &agrave; disposition par l'API Servlet.<br /><BLOCKQUOTE>&nbsp;</BLOCKQUOTE><br /><H1>Plan:</H1><br /><BLOCKQUOTE><A href="#Installation">Installation</A> <BR><br />    <A<br />href="#Architecture de base d'un servlet">Architecture de base d'un servlet</A> <BR><br />    <A href="#Exemple : traitement de formulaires">Exemple: traitement de formulaires</A> <BR><br />  <A href="#Maintien de sessions">Maintien de sessions</A> <BR><br />  <A href="#Cookies">Cookies</A> <BR><br />  <A<br />href="#Problemes de threading">Probl&egrave;mes de threading</A> <BR><br />  <A<br />href="#Java DataBase Connectivity">JDBC: Java DataBase Connectivity</A> <BR><br />  <A<br />href="xalan.html">Servlets et transformations XSLT avec Xalan-J</A> <BR><br />  <A<br />href="#Cocoon">Un servlet &eacute;volu&eacute;: Cocoon</A> <BR><br />  <A<br />href="#Upload de fichiers">Upload de fichiers</A> </BLOCKQUOTE><br /><H1><A name=Installation></A>1 Installation</H1><br /><P><BR><br />  Les sections suivants supposent que le JDK de SUN, ainsi que Apache 1.2 et sp&eacute;rieur ont &eacute;t&eacute; pr&eacute;alablement install&eacute;.<br /><BLOCKQUOTE><br />  <H2><FONT size=+1>1.1 Installation du Kit de D&eacute;veloppement de Servlets : le JSDK</FONT></H2><br /></BLOCKQUOTE><br />La premi&egrave;re &eacute;tape consiste &agrave; t&eacute;l&eacute;charger le JSDK2.0 sur le site de SUN (<A<br />href="http://java.sun.com/products/servlet/archive.html">ici</A>), le d&eacute;compresser puis &agrave; copier (cp -R) le r&eacute;pertoire JSDK2.0 dans le r&eacute;pertoire de votre choix (on prendra /usr/lib/ pour la suite de ce tutorial). Il faut alors mettre &agrave; jour le path en incluant /usr/lib/JSDK2.0/bin (<B>export PATH=/usr/lib/JSDK2.0/bin:$PATH</B>), ainsi que le classpath en y ajoutant le chemin de l'archive jsdk.jar contenant les classes (<B>export CLASSPATH = /usr/lib/JSDK2.0/lib/jsdk.jar :$CLASSPATH</B> sous bash). <BR><br />Pour v&eacute;rifier que tout s'est bien d&eacute;roul&eacute;, on lance l'utilitaire servletrunner qui devrait afficher les lignes suivantes : <BR><br /><HR width="100%"><br /><BR><br /><B>olly%&gt;servletrunner</B> <BR><br /><B>servletrunner starting with settings:</B> <BR><br /><B>port = 8080</B> <BR><br /><B>backlog = 50</B> <BR><br /><B>max handlers = 100</B> <BR><br /><B>timeout = 5000</B> <BR><br /><B>servlet dir = ./examples</B> <BR><br /><B>document dir = ./examples</B> <BR><br /><B>servlet propfile = ./examples/servlet.properties</B> <BR><br /><HR width="100%"><br /><P><B>servletrunner</B> permet de tester les servlets, c'est &agrave; dire qu'il va faire office de mini-serveur, &eacute;coutant sur un port sp&eacute;cifique (8080 par d&eacute;faut). Il est possible de modifier les param&egrave;tres par d&eacute;faut de servletrunner, notamment les flags -d suivi du r&eacute;pertoire contenant les servlets, et -s suivi du fichier de propri&eacute;t&eacute;s de la zone &agrave; consid&eacute;rer. <BR><br />&nbsp;<br /><BLOCKQUOTE><br />  <H2><FONT size=+1>1.2 Installation du module c&ocirc;t&eacute; serveur : ApacheJserv</FONT></H2><br /></BLOCKQUOTE><br />La premi&egrave;re &eacute;tape consiste &agrave; t&eacute;l&eacute;charger le moteur de servlets d'Apache, ApacheJServ, puis &agrave; d&eacute;compresser l'archive quelque part sur le disque, sous /tmp par exemple. Il y a ensuite deux fa&ccedil;ons de proc&eacute;der pour rajouter le module mod_jserv. La premi&egrave;re consiste &agrave; recompiler compl&egrave;tement Apache apr&egrave;s lui avoir ajout&eacute; le source de mod_jserv. La seconde n&eacute;cessite une version d'Apache 1.3.*, avec support des Dynamic Shared Objects (DSO) et permet d'ajouter le module mod_jserv de mani&egrave;re dynamique, c'est &agrave; dire sans avoir &agrave; recompiler Apache. Pour des raisons de temps, seule la deuxi&egrave;me proc&eacute;dure, plus "moderne",&nbsp; est d&eacute;crite ici. <BR><br />Comme pour la plupart des packages fournis sous forme de code source, il est n&eacute;cessaire dans un premier temps d'&eacute;x&eacute;cuter le script de configuration avec configure. configure s'efforce de deviner le maximum de choses, et si l'ensemble des fichiers sont &agrave; leur place habituelle, tout se passeras parfaitement. Pour ma part, voici la ligne de commande que j'ai utilis&eacute; (avec succ&egrave;s sous SuSE) :<br /><P><B>olly%&gt;./configure -with-jsdk=/usr/lib/JSDK2.0/lib/jsdk.jar&nbsp; -disable-debugging -with-apache-install=/usr</B><br /><P>(La directive -with-apache-install=/usr est n&eacute;c&eacute;ssaire sous SuSE (mon cas) car configure croit que apxs est sous apache_dir/sbin/, alos qu'il&nbsp; est en r&eacute;alit&eacute; sous /usr/sbin.) <BR><br />  Lors d'une seconde intallation sous Mandrake 7.0, la commande est devenue :<br /><P><B>olly%&gt;./configure --with-apxs=/usr/sbin/apxs --prefix=/usr/lib/jserv --with-jdk-home=/usr/lib/jdk1.2.2 --with-JSDK=/usr/lib/JSDK2.0/lib/jsdk.jar --disable-debugging --with-java-platform=2</B><br /><P><B>olly%&gt;make</B> <BR><br />    <B>olly%&gt;make install</B> <BR><br />  &nbsp;<br /><BLOCKQUOTE><br />  <H2><FONT size=+1>1.3 Configuration pour l'&eacute;x&eacute;cution de servlets</FONT></H2><br /></BLOCKQUOTE><br />L'environnement d'Apache JServ est divis&eacute; en <B>zones</B>, totalement ind&eacute;pendantes les unes des autres. Cela permet de s&eacute;parer les servlets selon le possesseur, le mesures de s&eacute;curit&eacute; d&eacute;sir&eacute;es, ou encore les ressources allou&eacute;es.&nbsp; Toutefois, une unique zone suffit dans la plupart des utilisations. <BR><br />Apache JServ poss&egrave;de un fichier de configuration nomm&eacute; <B>jserv.conf </B>qui sert &agrave; d&eacute;finir son comportement au regard d'Apache. Le fichier de configuration d'Apache /etc/httpd/httpd.conf doit donc contenir une directive <B>Include</B> permettant d'inclure le fichier jserv.conf en son sein.<br /><P>Exemple de ligne &agrave; inclure dans httpd.conf (apr&egrave;s avoir copi&eacute; le fichier jserv.conf &agrave; l'endroit indiqu&eacute;): <BR><br />  <B>Include /etc/httpd/jserv.conf</B><br /><P>Le fichier jserv.conf contient &agrave; son tour une directive ApJServProperties /chemin/vers/jserv.properties pointant sur le fichier jserv.properties qui contient les propri&eacute;t&eacute;s des dif&eacute;rents servlets utilis&eacute;s. jserv.properties permet entre autres choses de sp&eacute;cifier le nombre de zones souhait&eacute;es, le nom donn&eacute; &agrave; chacune, ainsi que leur emplacement sur le disque. <BR><br />  Par exemple, si l'on souhaite deux zones nomm&eacute;es zone_a et zone_b, le fichier jserv.properties devra contenir les lignes suivantes :<br /><P><br /><HR width="100%"><br /><BR><br /># List of servlet zones Apache JServ manages <BR><br /><B>zone=zone_a, zone_b</B> <BR><br /><HR width="100%"><br /><P>Configuration : plusieurs zones. Chaque zone poss&egrave;de un fichier nom_zone.properties propre, dans lequel est entre autres indiqu&eacute; le r&eacute;pertoire o&ugrave; trouver les servlets (repositories=/chemin/vers/classes).<br /><P>Les zones disponibles doivent &ecirc;tre indiqu&eacute;es dans le fichier jserv.properties. Les lignes zones=zone1, zone2, ... et le chemin des fichiers de propri&eacute;t&eacute; leur correspondant : zone1.properties=/chemin/vers/zone1.properties, zone2.properties=/chemin/vers/zone2.properties, etc..<br /><P>Une fois JServ configur&eacute;, il est n&eacute;cessaire de relancer Apache, avec une des commandes suivantes: <B>rcapache restart</B>, <B>apachectl restart</B> ou bien <B>kill -NOHUP `cat var/httpd.pid`</B>. <BR><br />&nbsp;<br /><H1><A name="Architecture de base d'un servlet"></A>2 Architecture de base d'un servlet</H1><br />Avant de rentre dans les d&eacute;tails, examinons le code d'un servlet avec fonctionnalit&eacute;s minimale.<br /><BLOCKQUOTE><br />  <H2><FONT size=+1>2.1 Exemple : Hello World!</FONT></H2><br /></BLOCKQUOTE><br />Ce premier exemple de servlet effectue une t&acirc;che toute simple : il cr&eacute;e une page HTML intitul&eacute;e "mon premier servlet", laquelle affiche simplement "Salut tout le monde".<br /><P><br /><HR width="100%"><br /><BR><br /><B>import javax.servlet.*; //importe le package servlet</B> <BR><br /><B>import javax.servlet.http.*; //importe servlet.http</B> <BR><br /><B>import java.io.*; //importe les classes d'entr&eacute;e-sortie</B> <BR><br /><B>public class ExempleServlet extends HttpServlet { // ExempleServlet h&eacute;rite de HttpServlet</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; /* surcharge la m&eacute;thode doGet */</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintWriter out;</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("text/html");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // then write the data of the response</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out = response.getWriter();</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;HTML&gt;</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HEAD&gt;&lt;TITLE&gt; mon premier servlet &lt;/TITLE&gt;&lt;/HEAD&gt;</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;BODY&gt;&lt;P&gt;Salut tout le monde!&lt;/BODY&gt;&lt;/HTML&gt;");</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.close();</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; }</B> <BR><br /><B>}</B> <BR><br /><HR width="100%"><br /><P>Ce servlet h&eacute;rite donc de la classe HttpServlet, et surcharge la m&eacute;thode doGet, cette derni&egrave;re &eacute;tant appel&eacute;e lorsqu'un client envoie une requ&egrave;te GET au serveur.<br /><P>Pour &eacute;x&eacute;cuter ce servlet, il suffit de placer le code compil&eacute; (ExempleServlet.class) dans l'un des r&eacute;pertoires correspondant aux zones configur&eacute;es, par exemple ~/example/ puis d'ouvrir avec un browser l'URL http://localhost/example/ExempleServlet. <BR><br />&nbsp;<br /><BLOCKQUOTE><br />  <H2><FONT size=+1>2.2 Contenu du package javax.servlet</FONT></H2><br /></BLOCKQUOTE><br />Le coeur du package est la classe Servlet de laquelle tout servlet doit obligatoirement h&eacute;riter. Un servlet n'utilise pas n&eacute;c&eacute;ssairement le protocole HTTP , c'est pourquoi il existe une interface HttpServlet h&eacute;ritant de la classe Servlet. Tous les servlets utilis&eacute;s avec ApacheJserv devront bien sur h&eacute;riter de l'interface HttpServlet et surcharger certaines de ses m&eacute;thodes, par exemple les m&eacute;thodes doGet ou doPost <BR><br />Le package Servlet contient &eacute;galement deux classes qui permettent l'interaction avec les clients du serveur web, les classes ServletRequest et ServletResponse. La classe ServletRequest fournit des informations concernant la requ&egrave;te parvenue au serveur, notamment les noms et valeurs des param&ecirc;tres pass&eacute;s, l'adresse IP du client, ls cookies et donne &eacute;galement acc&egrave;s via un stream aux donn&eacute;es encapsul&eacute;es dans le corps de requ&egrave;tes HTTP, notamment lors de l'envoi de donn&eacute;es au serveur via une m&eacute;thode POST. La classe ServletResponse fournit des m&eacute;thodes permettant de r&eacute;pondre aux clients, par exemple une m&eacute;thode permettant de fixer le type MIME de la r&eacute;ponse, ainsi que des streams via lesquels il est possible d'envoyer des donn&eacute;es au client. Les classes HttpServletRequest et HttpServletResponse sont des interfaces qui &eacute;tendent un peu plus les classes ServletRequest et ServletResponse en permettant l'acc&egrave;s aux caract&egrave;ristiques sp&eacute;cifiques des headers HTTP. <BR><br />&nbsp; <BR><br />&nbsp;<br /><UL><br />  <LI>classe <B>HttpServletRequest</B> </LI><br /></UL><br />Un objet de cette classe permet d'acc&eacute;der aux &eacute;l&eacute;ments du header HTTP de la requ&egrave;te, tels que les cookies envoy&eacute;s avec la requ&egrave;te, le type de m&eacute;thode utilis&eacute;e, aisni que les noms de param&egrave;tres et leur valeur pass&eacute;s avec la requ&egrave;te. La m&eacute;thode <B>getHeader</B> permet de r&eacute;cup&eacute;rer tout ou partie du header de la requ&egrave;te HTTP. Par exemple:<br /><HR><br /><PRE>String useragent = request.getHeader("user-agent");&nbsp;<br />if (useragent.indexOf("Netscape")) {<br />&nbsp;&nbsp; /** instructions &eacute;x&eacute;cut&eacute;es si le navigateur client est Netscape **/<br />}</PRE><br /><HR><br /><BR><br />La m&eacute;thode <B>getParameter</B> retourne une cha&icirc;ne de caract&egrave;res contenant la valeur du param&egrave;tre pass&eacute; en argument. Par exemple:<br /><P><br /><HR><br /><B>String bookId = request.getParameter("bookid");</B> <BR><br /><HR><br />Cette instruction stocke dans la variable bookId la valeur du param&egrave;tre nomm&eacute; bookid (getParameter renvoie NULL si le param&egrave;tre n'existe pas). <BR><br />Il est &eacute;galement possible d'obtenir une chaine de caract&egrave;res unique contenant l'ensemble des param&egrave;tres et valeurs gr&acirc;ce &agrave; la m&eacute;thode <B>getQueryString</B>, et de la parser soi-m&ecirc;me par la suite. <BR><br />Lors d'une requ&egrave;te POST, on utilisera pour lire les donn&eacute;es contenues dans le corps de la requ&egrave;te la m&eacute;thode <B>getReader</B>, qui renvoie un <B>BufferedReader </B>(cas de donn&eacute;es texte)&nbsp; ou&nbsp; la m&eacute;thode ge<B>tInputStream</B> qui renvoie un <B>ServletInputStream</B>.(donn&eacute;es binaires). <BR><br />&nbsp;<br /><UL><br />  <LI>classe <B>HttpServletResponse</B> </LI><br /></UL><br />La classe <B>HttpServletResponse</B> fournit deux m&eacute;thodes permettant de renvoyer des donn&eacute;es &agrave; l'utilisateur : la m&eacute;thode <B>getWriter</B>, qui renvoie un objet <B>Writer</B> permet de renvoyer des donn&eacute;es de type texte, par exemple le contenu d'une page HTML.&nbsp; La m&eacute;thode <B>getOutputStream</B> retourne un <B>ServletOutputStream</B> gr&acirc;ce auquel il est possible de faire parvenir des donn&eacute;es binaires au client. Dans les deux cas, il est important de fermer le stream apr&egrave;s utilisation afin que le serveur sache que la r&eacute;ponse est compl&egrave;te.<br /><UL><br />  <H2><FONT size=+1>2.2 Cycle de vie d'un servlet</FONT></H2><br />  <LI><B>Initialisation</B> </LI><br /></UL><br />Lorsqu'une requ&egrave;te cliente porte sur un servlet non encore en m&eacute;moire, celui-ci est dans un premier temps charg&eacute; par le classLoader du moteur Jserv, puis sa m&eacute;thode <B>init()</B> est appel&eacute;e. C'est dans cette m&eacute;thode que doivent donc &ecirc;tre plac&eacute;e les commandes gourmandes en ressources ou celles prenant du temps (connection aux bases de donn&eacute;es, par exemple). Il est important lorsque l'on surcharge la m&eacute;thode init() de faire appel &agrave; la m&eacute;thode init de la super classe, ce qui a pour effer de sauver la<br /><P>Exemple de surcharge de la m&eacute;thode init() :<br /><P><br /><HR width="100%"><br /><BR><br /><B>public class MonServlet extends HttpServlet {</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; public void init(ServletConfig config) throws ServletException {</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.init(config);</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName("xxx");</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(java.lang.ClassNotFoundException e) {</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; }</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; public void doGet(...) {</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; ...</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; }</B> <BR><br /><B>}</B> <BR><br /><HR width="100%"><br /><UL><br />  <LI><B>Fonctionnement</B> </LI><br /></UL><br />Apr&egrave;s initialisation, le servlet est capable de recevoir une requ&egrave;te de la part d'un client. Lorsqu'une requ&egrave;te lui parvient, il appelle alors la m&eacute;thode <B>service()</B>, qui reconnait le type de la requ&egrave;te HTTP (GET, POST, ...) et la fait parvenir &agrave; la m&eacute;thode con&ccedil;ue pour traiter les requ&egrave;tes de ce m&ecirc;me type (<B>doGet()</B>, <B>doPost()</B>, ...)<br /><UL><br />  <LI><B>Destruction</B> </LI><br /></UL><br />Un servlet est normalement gard&eacute; en m&eacute;moire en pr&eacute;vision d'&eacute;x&eacute;cutions futures, cependant pour des raisons diverses, notamment la configuration de Jserv et l'occupation des ressources, le moteur de servlet peut d&eacute;cider de d&eacute;truire le servlet en appelant sa m&eacute;thode <B>destroy(). </B>C'est donc ici que le concepteur de servlets doit inclure des instructions permettant par exemple de sauvegarder des donn&eacute;es pour de futures sessions. <BR><br />&nbsp;<br /><H1><A name="Exemple : traitement de formulaires"></A>3 Exemple : traitement de formulaires</H1><br />Les formulaires au sein d'une page HTML permettent l'interaction entre client et serveur web. Un formulaire contient g&eacute;n&eacute;ralement plusieurs &eacute;l&eacute;ments ou contr&ocirc;les, comme par exemple des zones de saisie de texte, des boutons, des listes de choix, qu'il appartient &agrave; l'utilisateur de remplir, cliquer ou s&eacute;lectionner selon ses d&eacute;sirs. Chacun des choix de l'utilisateur est stock&eacute; dans une paire NAME/VALUE. <BR><br />Il existe deux m&eacute;thodes pour faire parvenir les donn&eacute;es de l'utilisateur au serveur. La premi&egrave;re, dite m&eacute;thode GET, transmet les donn&eacute;es utilisateurs dans le header de la requ&egrave;te, tandis que la seconde, la m&eacute;thode PUT, les transmet dans le corps de la requ&egrave;te, permettant de transf&eacute;rer des volumes de donn&eacute;es beaucoup plus important.<br /><BLOCKQUOTE><br />  <H2>3.1 M&eacute;thode GET</H2><br /></BLOCKQUOTE><br /><BR><br />&nbsp;<br /><TABLE cols=2 width="100%" border=1 NOSAVE><br />  <TBODY><br />    <TR><br />      <TD>&lt;form ACTION="/servlets/cherche" METHOD="GET"&gt; <BR><br />&lt;B&gt;Chercher&lt;/B&gt; <BR><br />&lt;input TYPE="text" NAME="query" VALUE="" SIZE=20&gt; <BR><br />&lt;B&gt;avec&lt;/B&gt; <BR><br />&lt;select NAME="type"&gt; <BR><br />&lt;option VALUE="Google" SELECTED&gt;Google <BR><br />&lt;option VALUE="Altavista"&gt;Altavista <BR><br />&lt;option VALUE="Metacrawler"&gt;Metacrawler <BR><br />&lt;option VALUE="Dictionnaire"&gt;Dictionnaire <BR><br />&lt;/select&gt;&nbsp; <BR><br />&lt;input TYPE="submit" VALUE="Now!"&gt; <BR><br />&lt;/form&gt;</TD><br />      <TD><CENTER><br />          <FORM action=/servlets/cherche method=get><br />            <B>Chercher<br />            <INPUT<br />name=query><br />            avec<br />            <SELECT name=type><br />              <OPTION value=Google selected>Google&nbsp;<br />              <OPTION<br />value=Altavista>Altavista&nbsp;<br />              <OPTION value=Metacrawler>Metacrawler&nbsp;<br />              <OPTION<br />value=Dictionnaire>Dictionnaire&nbsp;</OPTION><br />            </SELECT><br />            <INPUT type=submit value=Now!><br />            </strong><br />          </FORM><br />      </CENTER></TD><br />    </TR><br />  </TBODY><br /></TABLE><br /><P>Pour traiter une requ&egrave;te GET, il est n&eacute;cessaire de surcharger la m&eacute;thode <B>doGet</B>. A l'int&eacute;rieur de cette m&eacute;thode, la m&eacute;thode <B>getParameter</B> permet de r&eacute;cup&eacute;rer la valeur d'un param&egrave;tre pass&eacute; au servlet avec la requ&egrave;te GET. Par exemple:<br /><P>String bookId = request.getParameter("bookId"); //permet de r&eacute;cuperer la valeur du param&egrave;tre "bookid". La m&eacute;thode renvoie null si le param&egrave;tre n'existe pas. Il est possible d'utiliser cela pour compacter les pages dynamique en un seul servlet: <BR><br />&nbsp;<br /><P><br /><HR width="100%"><br /><BR><br /><B>String bookId = request.getParameter("bookId");</B> <BR><br /><B>if (bookid == null) {</B><br /><P><B>&nbsp;&nbsp;&nbsp; <FONT color=#33ff33>//affiche le formulaire</FONT></B><br /><P><B>} else {</B><br /><P><B>&nbsp;&nbsp;&nbsp; <FONT color=#33ff33>//traite le formulaire</FONT></B><br /><P><B>}</B> <BR><br /><HR width="100%"><br /><BR><br />&nbsp;<br /><BLOCKQUOTE><br />  <H2>3.2 M&eacute;thode PUT</H2><br /></BLOCKQUOTE><br />La m&eacute;thode PUT est g&eacute;n&eacute;ralement utilis&eacute;e pour uploader des fichiers du disque de l'utilisateur vers le serveur. Elle peut par exemple &ecirc;tre utilis&eacute;e pour soumettre des images, ou encore des fichiers contenant des donn&eacute;es &agrave; analyser par le serveur.<br /><H1><A name="Maintien de sessions"></A>4 Maintien de sessions</H1><br /><P><BR><br />    <B>HttpSession session = request.getSession(true);</B><br /><P>Rien de plus pour l'instant.<br /><H1><A name=Cookies></A>5 Cookies</H1><br /><P><BR><br />  Bien que les classes et m&eacute;thodes utils&eacute;es pour le maintien de session utilisent les cookies sans que l'on ai besoin d'y toucher directement, l'API Servlet comprends la classe <B>javax.servlet.http.Cookie </B>qui permet de manipuler des objets Cookies <BR><br />&nbsp;<br /><H3>&nbsp;&nbsp;&nbsp; 5.1 Envoyer un cookie</H3><br />Pour cr&eacute;er un cookie: <BR><br /><HR width="100%"><br /><BR><br /><B>Cookie c = new Cookie("login", str_login);</B> <BR><br /><B>c.setVersion(1);</B> <BR><br /><B>c.setDomain(".mon_domaine.com");</B> <BR><br /><B>res.addCookie(authCookie);</B> <BR><br /><HR width="100%"><br /><H3>&nbsp;&nbsp;&nbsp; 5.2 R&eacute;cup&eacute;rer un cookie</H3><br /><P><BR><br />  L'instruction suivante permet de r&eacute;cup&egrave;rer l'ensemble des cookies:<br /><P><B>Cookie[] cookies = req.getCookies();&nbsp;</B><br /><P>La classe Cookie poss&egrave;de alors les m&eacute;thodes suivantes: <BR><br />    <B>public String getName()</B>&nbsp; pour r&eacute;cup&egrave;rer le nom du cookie<br /><P><B>public String getDomain()</B> pour r&eacute;cup&egrave;rer le domaine<br /><P><B>public String getValue()</B> pour r&eacute;cup&eacute;rer la valeur stock&eacute;e dans le cookie <BR><br /><HR width="100%"><br /><H1><A name="Problemes de threading"></A>6 Probl&egrave;mes de threading</H1><br />Un serveur web pouvant servir plusieurs clients de mani&egrave;re concurrente, lorsqu'un servlet est con&ccedil;u de mani&egrave;re &agrave; acc&egrave;der &agrave; une ressource partag&eacute;e, par exemple une base de donn&eacute;es, il est parfois n&eacute;c&eacute;ssaire de pr&eacute;venir l'acc&egrave;s simultan&eacute; par plusieurs clients &agrave; cette m&ecirc;me ressource. Afin d'obliger un servlet &agrave; ne traiter qu'une seule requ&egrave;te &agrave; tout moment, il existe deux possibilit&eacute;s : la premi&egrave;re consiste &agrave; concevoir le servlet de fa&ccedil;on &agrave; ce qu'il impl&eacute;mente l'interface SingleThreadModel.<br /><P>Un exemple d'un tel servlet est le suivant : <BR><br /><HR width="100%"><br /><BR><br /><B>public class ReceiptServlet extends HttpServlet implements SingleThreadModel {</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; {</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; }</B><br /><P><B>&nbsp;&nbsp;&nbsp; ...</B> <BR><br />    <B>}</B> <BR><br /><HR width="100%"><br /><P>Le serveur s'assure alors que la m&eacute;thode service n'est pas appel&eacute;e plus d'une seule fois simultan&eacute;ment. <BR><br />  Un moteur de base de donn&eacute;es comporte bien souvent des syst&egrave;mes de verrouillage d'acc&egrave;s et n'est donc pas un bon exemple. Prenons plutot l'exemple d'un fichier texte contenant un nombre plusieurs clients pourraient vouloir modifier simultan&eacute;ment<br /><P>La deuxi&egrave;me possibilit&eacute; est de synchroniser l'acc&egrave;s &agrave; la ressource.<br /><H1><A name="Java DataBase Connectivity"></A>7 Java DataBase Connectivity</H1><br />Il serait difficile de parler de l'API Servlet sans &eacute;galement mentionner l'API JDBC. En effet, ce dernier permet &agrave; tout servlet d'acc&egrave;der de mani&egrave;re directe &agrave; pratiquement n'importe quelle base de donn&eacute;e externe, pourvu que celle ci poss&egrave;de un driver JDBC. Dans cet article, nous utilisons la base de donn&eacute;es PostgreSQL, dont le driver JDBC est disponible &agrave; <A<br />href="http://www.retep.org.uk/postgres/">cette adresse</A>. Il faut avant de commencer s'assurer que le chemin du driver JDBC est pr&eacute;sent dans le $CLASSPATH. (au besoin faire un <B>olly&gt;export CLASSPATH=$CLASSPATH:/usr/lib/pgsql/jdbc6.5-1.2.jar</B>ou bien ins&eacute;rer la ligne <B>wrapper.classpath=/usr/lib/pgsql/jdbc6.5-1.2.jar</B>dans le fichier jserv.properties)<br /><P>Pour faire fonctionner l'example fourni, il est n&eacute;c&eacute;ssaire d'avoir une base de donn&eacute;es (ici nomm&eacute;e test), et d'y ins&eacute;rer une table avec quelques donn&eacute;es. Pour cela, il suffit de cr&eacute;er un fichier texte tout simple nomm&eacute; par exemple jdbc.sql contenant les quelques commandes SQL suivantes :<br /><P><br /><HR width="100%"><br /><BR><br /><B>create table stories (story_title varchar(100), story_url varchar(100), story_date date);</B> <BR><br /><B>insert into stories values ('NASA Proposes Launch Solar Sail Vehicle For 2010', 'http://slashdot.org/article.pl?sid=00/05/15/058238', '2000-05-15');</B> <BR><br /><B>insert into stories values ('Linuxcare Responds To Tim O\'Reilly's Article', 'http://slashdot.org/article.pl?sid=00/05/15/0254252', '2000-05-15');</B> <BR><br /><B>insert into stories values ('New Internet VCR Service', 'http://slashdot.org/article.pl?sid=00/05/14/2048217', '2000-05-15');</B> <BR><br /><HR width="100%"><br /><BR><br />&nbsp;<br /><P>Ensuite la commande&nbsp; <B>olly&gt;psql test&lt; jdbc.sql</B> permet d'&eacute;x&eacute;cuter ces commandes (et donc de cr&eacute;er la table et d'y ins&eacute;rer les trois enregistrements).<br /><P>&nbsp;&nbsp;&nbsp; <B>7.1 Connection &agrave; une base de donn&eacute;e</B><br /><P>Dans le monde JDBC, une base de donn&eacute;es est repr&eacute;sent&eacute;e par une URL, par exemple <B>jdbc:postgresql://host:port/base. </B>En ce qui concerne le driver JDBC pour PostgreSQL, host est par d&eacute;faut &eacute;gal &agrave; <B>localhost</B> et port &agrave; <B>5432</B> <BR><br /><HR width="100%"><br /><PRE><BR>import java.sql.*;<br /><BR>public class jdbctest {<br /><BR>&nbsp;&nbsp;&nbsp;public static void main(String args[])<br /><BR>&nbsp;&nbsp;&nbsp;{<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String url = "jdbc:postgresql:test";<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection con;<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Statement stmt;<br /><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName("postgresql.Driver");<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(java.lang.ClassNotFoundException e)<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage());<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con = DriverManager.getConnection(url, "olly", "");<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt = con.createStatement();&nbsp;<br /><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResultSet rs = stmt.executeQuery("select * from stories");<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (rs.next())<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String s = rs.getString("story_title");<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(s);<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con.close();<br /><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (SQLException ex)<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println("SQLException: " + ex.getMessage());<br /><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><BR>&nbsp;&nbsp;&nbsp;}<br /><BR>}<br /><BR><br /></P><br /></PRE><br /><HR width="100%"><br /><P><B>Stockage d'objet Java dans une base PostgreSQL</B><br /><P>Postgresql est une base de donn&eacute;es d'un genre un peu particulier : elle poss&egrave;de par rapport &agrave; une base relationnelle traditionnelle des extensions objets, qui lui permettent par exemple de stocker une table dans un champs d'une autre table.<br /><P>Il est donc tout &agrave; fait possible en Java de stocker un objet dans un stream, si la classe de l'objet impl&eacute;mente l'interface java.io.Serializable. Cette caract&egrave;ristique rend alors possible le stockage d' objets Java dans une base Postgresql, au moyen des LargeObject. Cependant, Postgresql est un moteur de base de donn&eacute;es d'un genre un peu particulier : il poss&egrave;de par rapport &agrave; une base relationnelle traditionnelle des extensions objets, qui lui permettent par exemple de stocker une table dans un champs d'une autre table. La classe postgresql.util.Serialize du driver JDBC se sert de cette caract&egrave;ristique pour fournir un moyen de stocker un objet Java en tant que table. <BR><br />&nbsp;<br /><H2><A name=Cocoon></A>8 Un servlet &eacute;volu&eacute;: Cocoon</H2><br />Cocoon permet de transformer des donn&eacute;es XML gr&acirc;ce a des feuilles de style XSL de fa&ccedil;on &agrave; obtenir non seulement du HTML pour les navigateurs classiques, mais &eacute;galement du WML pour les browser WAP contenus dans certains t&eacute;l&eacute;phones mobiles, ou encore du PDF . Il permet donc d'ouvrir les sites web inter ou intranet &agrave; un nombre consid&eacute;rable de clients, sans que soient n&eacute;cessaires les refontes de chaque document pour le rendre compatible avec les syst&egrave;mes de navigation sp&eacute;cifiques &agrave; chaque client.&nbsp; <BR><br />&nbsp;<br /><H1>&nbsp;&nbsp;&nbsp; <FONT size=+1>Installation de Cocoon</FONT></H1><br />La premi&egrave;re chose a faire consiste &agrave; t&eacute;l&eacute;charger Cocoon, &agrave; partir du site http://xml.apache.org, puis &agrave; le compiler (comme &agrave; l'habitude, ./configure, make, make install) <BR><br />Il est ensuite n&eacute;cessaire de rendre les classes Cocoon visibles par le moteur de servlets : il faut pour cela ajouter des wrapper.classpath vers tous les .jar requis par Cocoon dans le fichier jserv.properties <BR><br />cocoon.jar : <BR><br />xerces.jar : parseur XML <BR><br />xalan.jar : moteur de transformation XSLT <BR><br />fop.jar : formating <BR><br />par exemple: <BR><br /><B>wrapper.classpath=/usr/local/java/lib/cocoon.jar</B><br /><P>Il faut ensuite choisir la zone servlet dans laquelle Cocoon doit r&eacute;sider, zone dans cette exemple. Il faut donc passer le fichier cocoon.properties en parametre au fichier zone.properties, en y ajoutant la ligne suivante: <BR><br />  <B>servlet.org.apache.cocoon.Cocoon.initArgs=properties=[path-to-cocoon]/conf/cocoon.properties</B><br /><P>Il faut &eacute;galement dire &agrave; Apache d'associer tous fichier xml avec Cocoon. Pour cela, il faut ajouter: <BR><br /><HR width="100%"><br /><BR><br /><B>Action cocoon /servlet/org.apache.cocoon.Cocoon</B> <BR><br /><B>AddHandler cocoon xml</B> <BR><br /><HR width="100%"><br /><BR><br />dans le fichier jserv.conf. (/servlet/ est le point de montage de la zone servlet a laquelle appartient Cocoon) <BR><br />Nous sommes alors pr&ecirc;ts pour cr&eacute;er notre premier document XML, ainsi que sa feuille de style. <BR><br />Plusieurs cas de figures : le fichier XML existe, il faut simplement lui adjoindre une feuille XSL. Deuxi&egrave;me cas, l'information est stock&eacute;e dans une base de donn&eacute;es, par exemple postgreSQL, et il va &ecirc;tre n&eacute;cessaire d'extraire dans un premier temps cette information, pour la mettre au format XML, puis lui appliquer une transformation XSL.<br /><P><B>Cas 1: Le fichier XML existe deja</B> <BR><br />  Le fichier XML est le suivant, et nous voulons afficher ses infos dans un document HTML, sous forme de table.<br /><P><br /><HR width="100%"><br /><BR><br /><B>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</B> <BR><br /><B>&lt;stories&gt;</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; &lt;story&gt;</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;story_title&gt;NASA Proposes Launch Solar Sail Vehicle For 2010&lt;/story_title&gt;</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;story_url&gt; http://slashdot.org/article.pl?sid=00/05/15/058238&lt;/story_url&gt;</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;story_date&gt;2000-05-15&lt;/story_date&gt;</B> <BR><br /><B>&nbsp;&nbsp;&nbsp; &lt;/story&gt;</B><br /><P><B>&nbsp;&nbsp;&nbsp; &lt;story&gt;</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;story_title&gt;Linuxcare Responds To Tim O&amp;apos;Reilly&amp;apos;s Article&lt;/story_title&gt;</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;story_url&gt;http://slashdot.org/article.pl?sid=00/05/15/0254252&lt;/story_url&gt;</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;story_date&gt;2000-05-15&lt;/story_date&gt;</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp; &lt;/story&gt;</B><br /><P><B>&nbsp;&nbsp;&nbsp; &lt;story&gt;</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;story_title&gt;New Internet VCR Service&lt;/story_title&gt;</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;story_url&gt;http://slashdot.org/article.pl?sid=00/05/14/2048217&lt;/story_url&gt;</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;story_date&gt;2000-05-15&lt;/story_date&gt;</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp; &lt;/story&gt;</B> <BR><br />  <B>&lt;/stories&gt;</B> <BR><br /><HR width="100%"><br /><P>La feuille de style que l'on doit appliquer pour obtenir le r&eacute;sultat souhait&eacute; est tr&egrave;s simple:<br /><P><br /><HR width="100%"><br /><BR><br /><B>&lt;?xml version="1.0"?&gt;</B> <BR><br /><B>&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</B> <BR><br /><B>&lt;xsl:template match="/"&gt;</B> <BR><br /><B>&lt;html&gt;</B> <BR><br /><B>&lt;body&gt;</B> <BR><br /><B>&lt;xsl:apply-templates select="stories"/&gt;</B> <BR><br /><B>&lt;/body&gt;</B> <BR><br /><B>&lt;/html&gt;</B> <BR><br /><B>&lt;/xsl:template&gt;</B><br /><P><B>&lt;xsl:template match="stories"&gt;</B> <BR><br />    <B>&lt;table&gt;</B> <BR><br />    <B>&lt;xsl:apply-templates select="story"/&gt;</B> <BR><br />    <B>&lt;/table&gt;</B> <BR><br />    <B>&lt;/xsl:template&gt;</B><br /><P><B>&lt;xsl:template match="story"&gt;</B> <BR><br />    <B>&nbsp;&lt;tr&gt;&lt;td&gt;&lt;a href="{story_url}"&gt;&lt;xsl:value-of select="story_title"/&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;xsl:value-of select="story_date"/&gt;&lt;/td&gt;&lt;/tr&gt;</B> <BR><br />  <B>&lt;/xsl:template&gt;</B><br /><P><B>&lt;/xsl:stylesheet&gt;</B> <BR><br /><HR width="100%"><br /><P>Cette feuille de style est stock&eacute;e dans le fichier stories.xsl. Pour signifier &agrave; Cocoon qu'il doit appliquer cette feuille au document XML ci-dessus, il faut rajouter une ligne &agrave; ce dernier, dans son ent&ecirc;te,&nbsp; juste apr&egrave;s le tag de version.<br /><P><br /><HR width="100%"><br /><BR><br /><B>&lt;?xml version="1.0"?&gt;</B> <BR><br /><B>&lt;?xml-stylesheet href="stories.xsl" type="text/xsl"?&gt;</B> <BR><br /><B>&lt;?cocoon-process type="xslt"?&gt;</B><br /><P><B>&lt;stories&gt;</B> <BR><br />    <B>.</B> <BR><br />    <B>.</B> <BR><br /><HR width="100%"><br /><BR><br />En pointant votre browser sur l'url de stories.xml, on obtient le code HTML suivant: <BR><br />&nbsp;<br /><P><br /><HR width="100%"><br /><BR><br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" <BR><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "http://www.w3.org/TR/REC-html40/strict.dtd"&gt; <BR><br />&lt;html&gt;&lt;body&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a <BR><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; href="http://slashdot.org/article.pl?sid=00/05/15/058238"&gt;NASA Proposes Launch Solar Sail Vehicle For 2010&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2000-05-15&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a <BR><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; href="http://slashdot.org/article.pl?sid=00/05/15/0254252"&gt;Linuxcare Responds To Tim O'Reilly's Article&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2000-05-15&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://slashdot.org/article.pl?sid=00/05/14/2048217"&gt;New Internet VCR Service&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2000-05-15&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;<br /><P>&lt;!-- This page was served in 748 milliseconds by Cocoon 1.7 --&gt;<br /><P><br /><HR width="100%"><br /><BR><br />&nbsp; <BR><br />&nbsp;<br /><P><B>Cas 2 : l'information est stock&eacute;e dans une base de donn&eacute;es</B> <BR><br />&nbsp;<br /><P>Il faut passer par ce que l'on appelle un SQLProcessor. XSQL, fourni par Oracle, est un exemple de produit transformant un r&eacute;sultat d'une requ&egrave;te SQL en XML. Pour pouvoir utiliser SQLProcessor, il faut s'assurer qu'une ligne du type processor.type.sql = org.apache.cocoon.processor.sql.SQLProcessor est pr&eacute;sente dans le fichier cocoon.properties.<br /><P>Cet exemple &eacute;x&eacute;cute une requ&egrave;te SQL sur une base PostGreSQL gr&acirc;ce &agrave; JDBC (il faut donc lui fournir les coordonn&eacute;es du driver, ainsi que des infos utilisateurs, tq login et password) puis r&eacute;cup&egrave;re les r&eacute;sultats et les formatte en XML. Il s'agit simplement de remplacer le bloc &lt;query&gt; ... &lt;/query&gt; par le r&eacute;sultat, puis de lui appliquer la feuille de style normale.<br /><P><br /><HR width="100%"><br /><BR><br />&lt;?xml version="1.0"?&gt; <BR><br />&lt;?xml-stylesheet href="stories.xsl" type="text/xsl"?&gt; <BR><br />&lt;?cocoon-process type="sql"?&gt; <BR><br />&lt;?cocoon-process type="xslt"?&gt;<br /><P>&lt;page&gt;<br /><P>&nbsp;&lt;connectiondefs&gt; <BR><br />&nbsp; &lt;connection name="test_connection"&gt; <BR><br />&nbsp;&nbsp; &lt;driver&gt;postgresql.Driver&lt;/driver&gt; <BR><br />&nbsp;&nbsp; &lt;dburl&gt;jdbc:postgresql:test&lt;/dburl&gt; <BR><br />&nbsp;&nbsp; &lt;username&gt;olly&lt;/username&gt; <BR><br />&nbsp;&nbsp; &lt;password&gt;&lt;/password&gt; <BR><br />&nbsp; &lt;/connection&gt; <BR><br />&nbsp;&lt;/connectiondefs&gt;<br /><P>&nbsp;&lt;query connection="test_connection" doc-element="stories" row-element="story"&gt; <BR><br />&nbsp; select story_title, story_url, story_date from stories <BR><br />&nbsp;&lt;/query&gt;<br /><P>&lt;/page&gt; <BR><br /><HR width="100%"><br /><P>Les attributs doc-element et row-element permettent de sp&eacute;cifier respectivement le nom que va prendre l'ensemble des r&eacute;sultats (ResultSet), et les lignes (rows). S'ils ne sont pas sp&eacute;cifi&eacute;, ces noms seront ROWSET et ROW. <BR><br />&nbsp;<br /><H2><A name="Upload de fichiers"></A>9 Upload de fichiers</H2><br />Pour "uploader" un fichier grace &agrave; un servlet Java, il faut utiliser le package com.oreilly.servlet disponible &agrave; cette <A<br />href="http://www.servlets.com/resources/com.oreilly.servlet/index.html">adresse</A>. Imaginons que l'on ai le formulaire suivant:<BR><br /><PRE>&lt;form  enctype="multipart/form-data" action="action" method="post"&gt;&lt;br&gt;<br />&lt;textarea name="indata" cols="70" rows="10"&gt;&lt;/textarea&gt;&lt;br&gt;<br />&lt;input type="file" name="infile"&gt;&lt;br&gt;<br />&lt;input type="submit" name="submit" value="Continue"&gt;&lt;br&gt;<br />&lt;/form&gt;&lt;br&gt;<br /></PRE><br /><BR><br />Ce formulaire contient deux champs, un champ de type texte (textarea), et un champ de type "file". Supposons maintenant que l'on veuille sauver les donn&eacute;es du formulaire (fichier ou texte) dans le fichier /tmp/dataXX-YY. La m&eacute;thode doPost() permettant de r&eacute;aliser cela est la suivante :<BR><br /><PRE style="font-size:8px;"><br /> import java.io.*;<br /> import javax.servlet.*;<br /> import javax.servlet.http.*;<br /> import java.util.Date;<br /> import com.oreilly.servlet.multipart.*;<br /><br /> .<br /> .<br /><br /> public void doPost (HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {<br /><br />        /** r&eacute;cup&egrave;re la date courante **/<br />        Date d = new Date();<br /><br />	/** forge une chaine de caract&egrave;re contenant la date **/<br />        String timestamp = new String(d.getMinutes() + "-" + d.getSeconds());<br /><br />	/** cr&eacute;e un nouveau multipart parser, la taille des objets pars&eacute;s &eacute;tant de 10 MB au maximum **/<br />        MultipartParser mp = new MultipartParser(request, 10*1024*1024); // 10MB<br />        Part part;<br /><br />	/** it&eacute;re tous les parties **/<br />        while ((part = mp.readNextPart()) != null) {<br />	    /** s'il s'agit du fichier **/<br />            if (part.getName().equals("infile")) {<br /><br />	        /** recupere les donn&eacute;es sous la forme d'un FilePart **/<br />                FilePart filePart = (FilePart) part;<br />                String fileName = filePart.getFileName();<br /><br />		/** recopie dans un nouveau fichier **/<br />                if (fileName != null) {<br />                    long size = filePart.writeTo(new File("/tmp/data" + timestamp));<br />                    break;<br />                }<br /><br />	    /** s'il s'agit de la zone de texte **/<br />            } else if (part.getName().equals("indata")) {<br /><br />	        /** recupere les donn&eacute;es sous la forme d'un objet ParamPart **/<br />                ParamPart paramPart = (ParamPart) part;<br /><br />		/** r&eacute;cupere la valeur du champ "indata" **/<br />                String indata = paramPart.getStringValue();<br /><br />		/** pour &eacute;crire dans un fichier **/<br />                PrintWriter fos = new PrintWriter(new FileWriter("/tmp/data" + timestamp));<br />		fos.print(indata);<br /><br />                fos.close();<br />            }<br />        }<br />}<br /></PRE><br /><H1>&nbsp;</H1><br /><p>&nbsp;</p><br />]]></description>
<category>un petit annuaire</category>
<pubDate>Thu, 19 Jan 2006 19:39:40 +0000</pubDate>
<guid>http://www.blogg.org/blog-35573-billet-277425.html</guid>
</item>
<item>
<title>un petit tutorial en java</title>
<link>http://www.blogg.org/blog-35573-billet-277424.html</link>
<description><![CDATA[<CENTER><br />  <H1>Using the Xalan XSLT engine within a java servlet</H1><br /></CENTER><br /><H1>Introduction</H1><br />Separation of style from content allows for the same data to be presented in different ways and is the clear answer to the multiplication of connected devices (Palm, Pocket PC, Interactive TV) that can access networked ressources using their own language (WML, WebClipping, HTML, XHTML, cHTML, etc..). <BR><br />In this article, we show how to produce HTML and WML content from an XML data source, and the appropriate XSLT stylesheets. The XSLT transformation is done using the Xalan transformation engine, an open-source java project hosted by the Apache foundation. The Xalan engine is called from a java servlet, running in the Tomcat servlet engine. <BR><br />&nbsp;<br /><H1>Requirements</H1><br />In this article, I will assume that you have installed the Tomcat servlet engine, and the Xalan XSLT engine. Both are available from <A<br />href="http://java.apache.org">java.apache.org</A> and <A<br />href="http://xml.apache.org">xml.apache.org</A>. I also assume that xalan.jar, xerces.jar (the XML parser bundled with Xalan) and the servlet classes are present in your classpath. If not, try something like:<br /><P><B>XALAN_HOME=/path/to/xalan.jar</B> <BR><br />    <B>XERCES_HOME=/path/to/xerces.jar</B> <BR><br />    <B>export CLASSPATH=$CLASSPATH:$XALAN_HOME:$XERCES_HOME</B> <BR><br />  <B></B>&nbsp; <BR><br />  <B></B>&nbsp;<br /><H1><B>Creating a new web application within Tomcat</B></H1><br />Although you could install your java classes in an existing web application (the one called "examples", for instance), it is probably better to create a new web application.&nbsp; This is nicely explained in <A<br />href="http://onjava.com/lpt/a/780">"Deploying web applications to Tomcat"</A> by James Goodwill. <BR><br />Assuming <B>$TOMCAT_HOME </B>is the path to the Tomcat directory, first change directory to <B>webapps</B> (the root of all web applications) and create the following directories:<br /><P><B>/xslt</B> <BR><br />    <B>/xslt/WEB-INF</B> <BR><br />    <B>/xslt/WEB-INF/classes</B><br /><P>To do so, type the following commands: <BR><br />    <B>&gt; cd $TOMCAT_HOME/webapps</B> <BR><br />  <B>&gt; mkdir xslt</B> <BR><br />  <B>&gt; cd xslt</B> <BR><br />  <B>&gt; mkdir WEB-INF</B> <BR><br />  <B>&gt; cd WEB-INF</B> <BR><br />  <B>&gt; mkdir classes</B> <BR><br />  <B>&gt; cd classes</B><br /><P>The <B>/xslt/WEB-INF/classes</B> directory is the place where you will store all the servlets classes described below.<br /><P>Once the directories are created, you should install a servlet context, by editing the file <B>$TOMCAT_HOME/conf/server.xml</B>, and adding the following lines:<br /><P><B>&lt;Context path="/xslt" docBase="webapps/xslt" debug="0" reloadable="true" &gt;</B> <BR><br />    <B>&lt;/Context&gt;</B><br /><P><B>path="/xslt" </B>tells Tomcat that all requests starting with <B>/onjava</B> belong to the onjava web application. <BR><br />    <B>docBase="webapps/xslt"</B> tells the servlet container that the web application is located on <B>webapps/xslt"</B> <BR><br />&nbsp;<br /><P>Once you have done these operations, you need to restart Tomcat. <BR><br />&nbsp;<br /><H1>Xalan-J : a Java XSLT engine</H1><br />We use Xalan as our XSLT engine. While we embed Xalan within our servlet, Xalan-J can also be used in a command line way to perform XSLT transformation and produce static output files. For example, imagine you want to produce a static HTML file called slashdot.html from a XML file called slashdot.xml. <BR><br />You just need to type the following line: <BR><br /><B>&gt; java org.apache.xalan.xslt.Process -in slashdot.xml -xsl slashdot.xsl -out slashdot.html</B><br /><P>If you want the output to be displayed on the screen, simply omit the -out flag and argument.<br /><H1>The XSLT processor class</H1><br />Xalan-J implements the TrAX (Transformation API for XML) interface. From the Xalan documentation: "A TRaX <B>TransformerFactory</B> is an object that processes transformation instructions, and produces <B>Templates</B> (in the technical terminology). A <B>Templates</B> object provides a <B>Transformer</B>, which transforms one or more <B>Sources</B> into one or more <B>Results</B>. To use the TRaX interface, you create a <B>TransformerFactory</B>, which may directly provide a <B>Transformers</B>, or which can provide <B>Templates</B> from a variety of <B>Source</B>s. The <B>Templates</B> object is a processed or compiled representation of the transformation instructions, and provides a <B>Transformer</B>. The <B>Transformer</B> processes a <B>Source</B> according to the instructions found in the <B>Templates</B>, and produces a <B>Result</B>". <BR><br />In the code below, the XSLT processor class contains a method that takes as input <FONT color=#000000>a XML source, a XSL source, a servlet request (it is not used here) and a servlet response, and it returns the output of the transformation to the servlet output stream.</FONT> <BR><br /><HR width="100%"><br /><BR><br /><B>import java.io.*;</B> <BR><br /><B>import javax.servlet.*;</B> <BR><br /><B>import javax.servlet.http.*;</B><br /><P><B>import org.xml.sax.SAXException;</B><br /><P><B>import javax.xml.transform.*;</B> <BR><br />    <B>import javax.xml.transform.stream.*;</B><br /><P><B>public class XalanXslProcessorBean {</B><br /><P><B>&nbsp;&nbsp;&nbsp; TransformerFactory tFactory;</B><br /><P><B><FONT color=#33ff33>&nbsp;&nbsp;&nbsp; //the constructor simply gets a new TransformerFactory instance</FONT></B> <BR><br />  <B>&nbsp;&nbsp;&nbsp; public XalanXslProcessorBean() {</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tFactory = TransformerFactory.newInstance();</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp; }</B><br /><P><B><FONT color=#33ff33>&nbsp;&nbsp;&nbsp; //this method takes as input a XML source, a XSL source, and returns the output of the transformation to the servlet output stream</FONT></B> <BR><br />  <B>&nbsp;&nbsp;&nbsp; public void process(StreamSource xmlSource,</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StreamSource xslSource,</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletRequest request,</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response)</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException, SAXException {</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Templates templates = tFactory.newTemplates(xslSource);</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transformer transformer = templates.newTransformer();</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transformer.transform(xmlSource, new StreamResult(response.getOutputStream()));</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception e) {</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT<br />color=#33ff33>//should log some message here</FONT></B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp; }</B> <BR><br />  <B>}</B> <BR><br /><HR width="100%"><br /><BR><br />&nbsp; <BR><br />&nbsp;<br /><H1>The XML data</H1><br />The XML file we will use was grabbed from the <A<br />href="http://slashdot.org /slashdot.xml">slashdot.org </A>site, and contains the slashdot news in XML form. It needs to be saved to your disk (and called <B>slashdot.xml</B> for example). <BR><br /><HR width="100%"><br /><BR><br /><B>&lt;?xml version="1.0"?&gt;&lt;backslash xmlns:backslash="http://slashdot.org/backslash.dtd"&gt;</B><br /><P><B>&nbsp;&lt;story&gt;</B> <BR><br />    <B>&nbsp; &lt;title&gt;NASA Proposes Launch Solar Sail Vehicle For 2010&lt;/title&gt;</B> <BR><br />  <B>&nbsp; &lt;url&gt;http://slashdot.org/article.pl?sid=00/05/15/058238&lt;/url&gt;</B> <BR><br />  <B>&nbsp; &lt;time&gt;2000-05-15 07:54:15&lt;/time&gt;</B> <BR><br />  <B>&nbsp; &lt;author&gt;timothy&lt;/author&gt;</B> <BR><br />  <B>&nbsp; &lt;department&gt;ralph-nader-will-have-to-hire-a-chase-car&lt;/department&gt;</B> <BR><br />  <B>&nbsp; &lt;topic&gt;space&lt;/topic&gt;</B> <BR><br />  <B>&nbsp; &lt;comments&gt;99&lt;/comments&gt;</B> <BR><br />  <B>&nbsp; &lt;section&gt;articles&lt;/section&gt;</B> <BR><br />  <B>&nbsp; &lt;image&gt;topicspace.gif&lt;/image&gt;</B> <BR><br />  <B>&nbsp;&lt;/story&gt;</B><br /><P><B>&nbsp;&lt;story&gt;</B> <BR><br />    <B>&nbsp; &lt;title&gt;Linuxcare Responds To Tim O'Reilly's Article&lt;/title&gt;</B> <BR><br />  <B>&nbsp; &lt;url&gt;http://slashdot.org/article.pl?sid=00/05/15/0254252&lt;/url&gt;</B> <BR><br />  <B>&nbsp; &lt;time&gt;2000-05-15 02:57:07&lt;/time&gt;</B> <BR><br />  <B>&nbsp; &lt;author&gt;timothy&lt;/author&gt;</B> <BR><br />  <B>&nbsp; &lt;department&gt;consider-source-horses-mouth-grain-of-salt&lt;/department&gt;</B> <BR><br />  <B>&nbsp; &lt;topic&gt;linuxbiz&lt;/topic&gt;</B> <BR><br />  <B>&nbsp; &lt;comments&gt;142&lt;/comments&gt;</B> <BR><br />  <B>&nbsp; &lt;section&gt;articles&lt;/section&gt;</B> <BR><br />  <B>&nbsp; &lt;image&gt;topiclinuxbiz.gif&lt;/image&gt;</B> <BR><br />  <B>&nbsp;&lt;/story&gt;</B><br /><P><B>&nbsp;&lt;story&gt;</B> <BR><br />    <B>&nbsp; &lt;title&gt;New Internet VCR Service&lt;/title&gt;</B> <BR><br />  <B>&nbsp; &lt;url&gt;http://slashdot.org/article.pl?sid=00/05/14/2048217&lt;/url&gt;</B> <BR><br />  <B>&nbsp; &lt;time&gt;2000-05-14 20:51:57&lt;/time&gt;</B> <BR><br />  <B>&nbsp; &lt;author&gt;timothy&lt;/author&gt;</B> <BR><br />  <B>&nbsp; &lt;department&gt;this-is-cool-but-can-they-do-that?&lt;/department&gt;</B> <BR><br />  <B>&nbsp; &lt;topic&gt;news&lt;/topic&gt;</B> <BR><br />  <B>&nbsp; &lt;comments&gt;189&lt;/comments&gt;</B> <BR><br />  <B>&nbsp; &lt;section&gt;articles&lt;/section&gt;</B> <BR><br />  <B>&nbsp; &lt;image&gt;topicnews.gif&lt;/image&gt;</B> <BR><br />  <B>&nbsp;&lt;/story&gt;</B><br /><P><B>&nbsp;&lt;story&gt;</B> <BR><br />    <B>&nbsp; &lt;title&gt;Google Releases WAP Search Tool&lt;/title&gt;</B> <BR><br />  <B>&nbsp; &lt;url&gt;http://slashdot.org/article.pl?sid=00/05/14/1240252&lt;/url&gt;</B> <BR><br />  <B>&nbsp; &lt;time&gt;2000-05-14 17:49:11&lt;/time&gt;</B> <BR><br />  <B>&nbsp; &lt;author&gt;emmett&lt;/author&gt;</B> <BR><br />  <B>&nbsp; &lt;department&gt;wireless&lt;/department&gt;</B> <BR><br />  <B>&nbsp; &lt;topic&gt;internet&lt;/topic&gt;</B> <BR><br />  <B>&nbsp; &lt;comments&gt;141&lt;/comments&gt;</B> <BR><br />  <B>&nbsp; &lt;section&gt;articles&lt;/section&gt;</B> <BR><br />  <B>&nbsp; &lt;image&gt;topicinternet.jpg&lt;/image&gt;</B> <BR><br />  <B>&nbsp;&lt;/story&gt;</B><br /><P><B>&nbsp;&lt;story&gt;</B> <BR><br />    <B>&nbsp; &lt;title&gt;No More Unreal Ports For Linux?&lt;/title&gt;</B> <BR><br />  <B>&nbsp; &lt;url&gt;http://slashdot.org/article.pl?sid=00/05/14/1439224&lt;/url&gt;</B> <BR><br />  <B>&nbsp; &lt;time&gt;2000-05-14 16:32:11&lt;/time&gt;</B> <BR><br />  <B>&nbsp; &lt;author&gt;timothy&lt;/author&gt;</B> <BR><br />  <B>&nbsp; &lt;department&gt;one-web-one-program-happy-mothers-day&lt;/department&gt;</B> <BR><br />  <B>&nbsp; &lt;topic&gt;games&lt;/topic&gt;</B> <BR><br />  <B>&nbsp; &lt;comments&gt;250&lt;/comments&gt;</B> <BR><br />  <B>&nbsp; &lt;section&gt;articles&lt;/section&gt;</B> <BR><br />  <B>&nbsp; &lt;image&gt;topicgames.jpg&lt;/image&gt;</B> <BR><br />  <B>&nbsp;&lt;/story&gt;</B><br /><P><B>&nbsp;&lt;story&gt;</B> <BR><br />    <B>&nbsp; &lt;title&gt;Pioneer Introduces 1st DVD Recorder (In Japan)&lt;/title&gt;</B> <BR><br />  <B>&nbsp; &lt;url&gt;http://slashdot.org/article.pl?sid=00/05/14/152210&lt;/url&gt;</B> <BR><br />  <B>&nbsp; &lt;time&gt;2000-05-14 15:50:48&lt;/time&gt;</B> <BR><br />  <B>&nbsp; &lt;author&gt;CmdrTaco&lt;/author&gt;</B> <BR><br />  <B>&nbsp; &lt;department&gt;steam-rising-from-the-riaas-forehead&lt;/department&gt;</B> <BR><br />  <B>&nbsp; &lt;topic&gt;tv&lt;/topic&gt;</B> <BR><br />  <B>&nbsp; &lt;comments&gt;98&lt;/comments&gt;</B> <BR><br />  <B>&nbsp; &lt;section&gt;articles&lt;/section&gt;</B> <BR><br />  <B>&nbsp; &lt;image&gt;topictv.jpg&lt;/image&gt;</B> <BR><br />  <B>&nbsp;&lt;/story&gt;</B><br /><P><B>&nbsp;&lt;story&gt;</B> <BR><br />    <B>&nbsp; &lt;title&gt;QuakeForge And QuakeWorld Forever Merge&lt;/title&gt;</B> <BR><br />  <B>&nbsp; &lt;url&gt;http://slashdot.org/article.pl?sid=00/05/14/1447248&lt;/url&gt;</B> <BR><br />  <B>&nbsp; &lt;time&gt;2000-05-14 15:07:27&lt;/time&gt;</B> <BR><br />  <B>&nbsp; &lt;author&gt;CmdrTaco&lt;/author&gt;</B> <BR><br />  <B>&nbsp; &lt;department&gt;and-then-there-was-one&lt;/department&gt;</B> <BR><br />  <B>&nbsp; &lt;topic&gt;quake&lt;/topic&gt;</B> <BR><br />  <B>&nbsp; &lt;comments&gt;57&lt;/comments&gt;</B> <BR><br />  <B>&nbsp; &lt;section&gt;articles&lt;/section&gt;</B> <BR><br />  <B>&nbsp; &lt;image&gt;topicquake.gif&lt;/image&gt;</B> <BR><br />  <B>&nbsp;&lt;/story&gt;</B><br /><P><B>&nbsp;&lt;story&gt;</B> <BR><br />    <B>&nbsp; &lt;title&gt;What Happens When Open Source And Work Collide?&lt;/title&gt;</B> <BR><br />  <B>&nbsp; &lt;url&gt;http://slashdot.org/article.pl?sid=00/05/09/016208&lt;/url&gt;</B> <BR><br />  <B>&nbsp; &lt;time&gt;2000-05-14 14:04:07&lt;/time&gt;</B> <BR><br />  <B>&nbsp; &lt;author&gt;Cliff&lt;/author&gt;</B> <BR><br />  <B>&nbsp; &lt;department&gt;sticky-situations&lt;/department&gt;</B> <BR><br />  <B>&nbsp; &lt;topic&gt;programming&lt;/topic&gt;</B> <BR><br />  <B>&nbsp; &lt;comments&gt;170&lt;/comments&gt;</B> <BR><br />  <B>&nbsp; &lt;section&gt;askslashdot&lt;/section&gt;</B> <BR><br />  <B>&nbsp; &lt;image&gt;topicprogramming.gif&lt;/image&gt;</B> <BR><br />  <B>&nbsp;&lt;/story&gt;</B><br /><P><B>&nbsp;&lt;story&gt;</B> <BR><br />    <B>&nbsp; &lt;title&gt;Black Holes Don't Exist???&lt;/title&gt;</B> <BR><br />  <B>&nbsp; &lt;url&gt;http://slashdot.org/article.pl?sid=00/05/14/1339252&lt;/url&gt;</B> <BR><br />  <B>&nbsp; &lt;time&gt;2000-05-14 13:39:24&lt;/time&gt;</B> <BR><br />  <B>&nbsp; &lt;author&gt;Roblimo&lt;/author&gt;</B> <BR><br />  <B>&nbsp; &lt;department&gt;pop-science-can-be-fun&lt;/department&gt;</B> <BR><br />  <B>&nbsp; &lt;topic&gt;science&lt;/topic&gt;</B> <BR><br />  <B>&nbsp; &lt;comments&gt;162&lt;/comments&gt;</B> <BR><br />  <B>&nbsp; &lt;section&gt;articles&lt;/section&gt;</B> <BR><br />  <B>&nbsp; &lt;image&gt;topicscience.gif&lt;/image&gt;</B> <BR><br />  <B>&nbsp;&lt;/story&gt;</B><br /><P><B>&nbsp;&lt;story&gt;</B> <BR><br />    <B>&nbsp; &lt;title&gt;Los Alamos Lab: We're OK, You're OK&lt;/title&gt;</B> <BR><br />  <B>&nbsp; &lt;url&gt;http://slashdot.org/article.pl?sid=00/05/14/0143228&lt;/url&gt;</B> <BR><br />  <B>&nbsp; &lt;time&gt;2000-05-14 04:44:44&lt;/time&gt;</B> <BR><br />  <B>&nbsp; &lt;author&gt;timothy&lt;/author&gt;</B> <BR><br />  <B>&nbsp; &lt;department&gt;sir-please-step-*away*-from-the-plutonium-bin&lt;/department&gt;</B> <BR><br />  <B>&nbsp; &lt;topic&gt;news&lt;/topic&gt;</B> <BR><br />  <B>&nbsp; &lt;comments&gt;278&lt;/comments&gt;</B> <BR><br />  <B>&nbsp; &lt;section&gt;articles&lt;/section&gt;</B> <BR><br />  <B>&nbsp; &lt;image&gt;topicnews.gif&lt;/image&gt;</B> <BR><br />  <B>&nbsp;&lt;/story&gt;</B><br /><P><B>&lt;/backslash&gt;</B> <BR><br /><HR width="100%"><br /><BR><br />&nbsp;<br /><H1>The XSLT stylesheet</H1><br />An XSL stylesheet basically consists of a set of templates. Each template "matches" some set of elements in the original XML data and then describes the contribution that the matched element makes to the final output. <BR><br />An XSLT template is defined by a <B>xsl:template</B> tag, whose "<B>match</B>" parameter determines where this template applies. For example <B>&lt;xsl:template match="/"&gt; ... &lt;/xsl:template&gt; </B>applies to the root element of the XML document, while <B>&lt;xsl:template match="backslash/story"&gt; </B>matches every <B>story</B> element that has <B>backslash</B> as father. Templates are generally applied recursively, i.e. a template calls another templates using the <B>xsl:apply-templates</B> tag. <BR><br /><B>&lt;xsl:value-of&gt; </B>inserts the value of an expression to the final output. Note that <B>{element} </B>can also be used to insert the value of <B>element</B>.<br /><P>Here is the HTML stylesheet (named <B>slashdot.xsl</B>) we will use: <BR><br /><HR width="100%"><br /><BR><br /><B>&lt;?xml version="1.0"?&gt;</B> <BR><br /><B>&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</B><br /><P><B>&lt;xsl:template match="/"&gt;</B> <BR><br />    <B>&lt;html&gt;</B> <BR><br />    <B>&lt;body&gt;</B> <BR><br />    <B>&lt;xsl:apply-templates select="backslash/story"/&gt;</B> <BR><br />  <B>&lt;/body&gt;</B> <BR><br />  <B>&lt;/html&gt;</B> <BR><br />  <B>&lt;/xsl:template&gt;</B><br /><P><B>&lt;xsl:template match="backslash/story"&gt;</B> <BR><br />    <B>&nbsp; &lt;li&gt;&lt;a href="{url}"&gt;&lt;xsl:value-of select="title"/&gt;&lt;/a&gt;&lt;/li&gt;</B> <BR><br />  <B>&lt;/xsl:template&gt;</B><br /><P><B>&lt;/xsl:stylesheet&gt;</B> <BR><br /><HR width="100%"><br /><H1>Outputting HTML with a servlet</H1><br />This java code implements a basic servlet, which uses the <B>XalanXslProcessorBean </B>class defined above. It sets the Content-Type portion of the HTTP header to text/html, creates two StreamSources objects from both the xml and the xsl files, and perform the transformation <BR><br /><HR width="100%"><br /><BR><br /><B>import java.io.*;</B> <BR><br /><B>import javax.servlet.*;</B> <BR><br /><B>import javax.servlet.http.*;</B><br /><P><B>import javax.xml.transform.stream.*;</B><br /><P><B>public class XslProcessorServlet extends HttpServlet {</B><br /><P><B>&nbsp;&nbsp;&nbsp; XalanXslProcessorBean processor;</B><br /><P><B>&nbsp;&nbsp;&nbsp; public void init(ServletConfig config) {</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processor = new XalanXslProcessorBean();</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp; }</B><br /><P><B>&nbsp;&nbsp;&nbsp; public void doGet (HttpServletRequest request,</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response)</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {</B><br /><P><B><FONT color=#33ff33>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //sets the Content-Type portion of the HTTP header to text/html</FONT></B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("text/html");</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processor.process(new StreamSource("slashdot.xml"), new StreamSource("slashdot.xsl"), request, response);</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception e) {</B><br /><P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp; }</B> <BR><br />    <B>}</B> <BR><br /><HR width="100%"><br /><P>Since slashdot.xml is often updated,&nbsp; you may prefer to fetch it directly from the slashdot.org site:&nbsp; you then need to change the <B>processor.process(...) </B>line to: <B>processor.process(new StreamSource(new InputStreamReader((new URL("http://slashdot.org/slashdot.xml")).openStream())), new StreamSource("slashdot.xsl"), request, response);</B> <BR><br />  Then restart your servlet container if needed, and reload the page. <BR><br />&nbsp;<br /><H1>Outputting HTML and WML with a servlet</H1><br /><P><BR><br />  Suppose that you want to make your content available to both HTML and WML navigators. Basically, you just need a XSLT stylesheet that can transform XML to HTML, and another one that can transform XML to WML (Wireless Meta Language). You then need to implement a mechanism that can use the appropriate stylesheet, depending on the navigator information contained in the HTTP request header.<br /><P>Here is the WML stylesheet. Note the <B>xsl:output</B> tag, which is the only way to produce the <B>&lt;!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"&gt; </B>string in the WML output.<br /><P><br /><HR width="100%"><br /><BR><br /><B>&lt;?xml version="1.0"?&gt;</B> <BR><br /><B>&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;</B> <BR><br /><B>&lt;xsl:output method="xml"</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doctype-public="-//WAPFORUM//DTD WML 1.1//EN"</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; media-type="text/vnd.wap.wml"</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doctype-system="http://www.wapforum.org/DTD/wml_1.1.xml"</B> <BR><br /><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; encoding="ISO-8859-1"/&gt;</B><br /><P><B>&lt;xsl:template match="/"&gt;</B> <BR><br />    <B>&lt;wml&gt;</B><br /><P><B>&nbsp;&nbsp;&nbsp; &lt;template&gt;</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;do type="prev" name="Previous" label="Back"&gt;</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prev/&gt;</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/do&gt;</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp; &lt;/template&gt;</B><br /><P><B>&nbsp;&nbsp;&nbsp; &lt;card id="card1" title="Slashdot news"&gt;</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;p&gt;</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:apply-templates select="backslash/story"/&gt;</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/p&gt;</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp; &lt;/card&gt;</B><br /><P><B>&lt;/wml&gt;</B> <BR><br />    <B>&lt;/xsl:template&gt;</B> <BR><br />  &nbsp;<br /><P><B>&lt;xsl:template match="backslash/story"&gt;</B> <BR><br />    <B>&nbsp; &lt;a href="{url}"&gt;&lt;xsl:value-of select="title"/&gt;&lt;/a&gt;&lt;br/&gt;</B> <BR><br />  <B>&lt;/xsl:template&gt;</B><br /><P><B>&lt;/xsl:stylesheet&gt;</B> <BR><br /><HR width="100%"><br /><P>Note that the following servlet code now contains some code to fetch the user agent from the HTTP header, and uses the WML stylesheet when the user agent string contains the word (Nokia). Obviously, this only works with a Nokia phone or with some Nokia emulator. <BR><br /><HR width="100%"><br /><BR><br /><B>import java.io.*;</B> <BR><br /><B>import java.net.*;</B> <BR><br /><B>import javax.servlet.*;</B> <BR><br /><B>import javax.servlet.http.*;</B><br /><P><B>import javax.xml.transform.stream.*;</B><br /><P><B>public class XslProcessorServlet extends HttpServlet {</B><br /><P><B>&nbsp;&nbsp;&nbsp; XalanXslProcessorBean processor;</B><br /><P><B>&nbsp;&nbsp;&nbsp; public void init(ServletConfig config) {</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processor = new XalanXslProcessorBean();</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp; }</B><br /><P><B>&nbsp;&nbsp;&nbsp; public void doGet (HttpServletRequest request,</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response)</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {</B><br /><P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT color=#33cc00>//fetch the user agent part of the HTTP header</FONT></B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String useragent = request.getHeader("user-agent");</B><br /><P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#33cc00> //if the user agent contains the string "Nokia", then use the WML stylesheet, otherwise use the HTML one</FONT></B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StreamSource xslsource;</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (useragent.indexOf("Nokia") &gt;= 0) {</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT<br />color=#33cc00> //send the correct Content-Type</FONT></B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("text/vnd.wap.wml");</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xslsource = new StreamSource("slashdot_wml.xsl");</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("text/html");</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xslsource = new StreamSource("slashdot_html.xsl");</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</B><br /><P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processor.process(new StreamSource("slashdot.xml"), xslsource, request, response);</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</B> <BR><br />  <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception e) {</B><br /><P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</B> <BR><br />    <B>&nbsp;&nbsp;&nbsp; }</B> <BR><br />    <B>}</B> <BR><br /><HR width="100%"><br /><BR><br /><br /><br /><a href="http://unpetitannuaire.blogspirit.com/">blogspirit</a><br /><a href="http://www.xanga.com/unpetitannuaire">xanga</a><br /><a href="http://g-blog.net/user/unpetitannuaire">g-blog</a><br /><a href="http://unpetitannuaire.blog-city.com/">blog-city</a><br /><a href="http://unpetitannuaire.blogsome.com/">blogsome</a><br /><a href="http://unpetitannuaire.blogg.org/">blogg</a><br /><a href="http://spaces.msn.com/members/unpetitannuaire/">msn</a><br /><a href="http://unpetitannuaire.oldiblog.com/">oldiblog</a><br /><a href="http://unpetitannuaire.blogeasy.com/">blogeasy</a><br /><a href="http://unpetitannuaire.joueb.com/">joueb</a><br /><a href="http://unpetitannuaire.alfablog.com/">alfablog</a><br /><a href="http://unpetitannuaire.fire.avatale.com/">avatale</a><br /><a href="http://www.blogstudio.com/unpetitannuaire/index.html">blogstudio</a><br /><a href="http://unpetitannuaire.blog.ca/">blog.ca</a><br /><a href="http://unpetitannuaire.blog.com/">blog.com</a><br /><a href="http://unpetitannuaire.bloghi.com/">bloghi.com</a><br /><a href="http://unpetitannuaire.ebloggy.com/">ebloggy.com</a><br /><a href="http://www.blogigo.com/unpetitannuaire">blogigo</a><br /><a href="http://www.blogsharing.com/unpetitannuaire/">blogsharing</a><br /><a href="http://unpetitannuaire.blogsource.com/">blogsource</a><br /><a href="http://unpetitannuaire.blogspot.com/">blogspot</a><br /><a href="http://www.bloxster.net/unpetitannuaire/">bloxster</a><br /><a href="http://unpetitannuaire.cool-blog.com/">cool-blog</a><br /><br /><!-- logo raf-ranking debut du code --><style> A.rafranking1:link { text-decoration:none;color:blue;font-size:9px} A.rafranking1:active { text-decoration:none;color:blue;font-size:9px } A.rafranking1:hover { text-decoration:none;color:blue;font-size:9px} A.rafranking1:visited { text-decoration:none;color:blue;font-size:9px } A.rafranking2:link { text-decoration:none;color:white;font-size:9px} A.rafranking2:active { text-decoration:none;color:white;font-size:9px } A.rafranking2:hover { text-decoration:none;color:white;font-size:9px;} A.rafranking2:visited { text-decoration:none;color:white;font-size:9px } </style> <TABLE borderColor="silver" height=20 width=58 cellSpacing=0 cellPadding=0   border=1><TR><TD vAlign=top   bgColor="#99ccff" ><MARQUEE scrollDelay=150><A href="http://www.alvoltaire.com/forum/index.php" target="_blank" title="altavoltr23o" class="rafranking1"> ALV </A><A HREF="http://www.discusfr.com/" target="_blank" class="rafranking1"> Ringtone </A><A HREF="http://www.basket-us.com/" target="_blank" class="rafranking1"> NBA </A><A HREF="http://petites.annonces.bz/" target="_blank" class="rafranking1"> Petites annonces - </A><A HREF="http://www.sonneries-sonne.com/ " target="_blank" class="rafranking1"> sonneries - </A><A HREF="http://www.annonces.bz/ " target="_blank" class="rafranking1"> annonces immobilieres - </A><A HREF="http://www.sonneries-le-retour.com/" target="_blank" class="rafranking1"> sonneries  </A><A HREF="http://www.idarousse.com/" target="_blank" class="rafranking1"> Alicia  keys  </A></MARQUEE></TD></TR><TR><TD valign=top  bgColor="#FBCA37" ><MARQUEE scrollDelay=200><a href='http://www.rafranking.com/' target='_blank' class='rafranking2'>Echange de liens - </a><a href="http://www.rafranking.com/page1.html" target='_blank' title='page 1' class='rafranking2'>page 1 - </a><a href="http://www.rafranking.com/page2.html" target='_blank' title='page 2' class='rafranking2'>page 2 - </a><a href="http://www.rafranking.com/page3.html" target='_blank' title='page 3' class='rafranking2'>page 3 - </a><a href="http://www.rafranking.com/page4.html" target='_blank' title='page 4' class='rafranking2'>page 4 - </a><a href="http://www.rafranking.com/page5.html" target='_blank' title='page 5' class='rafranking2'>page 5 - </a><a href="http://www.rafranking.com/page6.html" target='_blank' title='page 6' class='rafranking2'>page 6 - </a><a href="http://www.rafranking.com/page7.html" target='_blank' title='page 7' class='rafranking2'>page 7 - </a><a href="http://www.rafranking.com/page8.html" target='_blank' title='page 8' class='rafranking2'>page 8 - </a><a href="http://www.rafranking.com/page9.html" target='_blank' title='page 9' class='rafranking2'>page 9 - </a><a href="http://www.rafranking.com/page10.html" target='_blank' title='page 10' class='rafranking2'>page 10 - </a><a href='http://www.rafranking.com/top10.html' target='_blank' class='rafranking2'>  le top ten  | </a><a href='http://www.rafranking.com/new_sites.html' target='_blank' class='rafranking2'>  les nouveaux sites  - .</a><a href='http://www.www.rafranking.com/forum/' target='_blank' class='rafranking2'>  Le forum - .</a></MARQUEE></TD></TR></TABLE><!-- fin du code --><br />]]></description>
<category>un petit annuaire</category>
<pubDate>Thu, 19 Jan 2006 19:38:56 +0000</pubDate>
<guid>http://www.blogg.org/blog-35573-billet-277424.html</guid>
</item>
<item>
<title>les categories de mon annuaire</title>
<link>http://www.blogg.org/blog-35573-billet-277423.html</link>
<description><![CDATA[<a href="http://www.3wfrancais.com/en-anglais.php">en anglais</a><br /><a href="http://www.worldfr.org/en-anglais.php">en anglais</a><br /><a href="http://www.3wfrancais.com/en-angleterre.php">en angleterre</a><br /><a href="http://www.worldfr.org/en-angleterre.php">en angleterre</a><br /><a href="http://www.3wfrancais.com/en-aquitaine.php">en aquitaine</a><br /><a href="http://www.worldfr.org/en-aquitaine.php">en aquitaine</a><br /><a href="http://www.3wfrancais.com/en-ard-E8che.php">en ardèche</a><br /><a href="http://www.worldfr.org/en-ard-E8che.php">en ardèche</a><br /><a href="http://www.3wfrancais.com/en-ardeche.php">en ardeche</a><br /><a href="http://www.worldfr.org/en-ardeche.php">en ardeche</a><br /><a href="http://www.3wfrancais.com/en-ardenne.php">en ardenne</a><br /><a href="http://www.worldfr.org/en-ardenne.php">en ardenne</a><br /><a href="http://www.worldnl.org/en-ardenne.php">en ardenne</a><br /><a href="http://www.worldes.org/en-argentina.php">en argentina</a><br /><a href="http://www.3wfrancais.com/en-ari-E8ge.php">en ariège</a><br /><a href="http://www.worldfr.org/en-ari-E8ge.php">en ariège</a><br /><a href="http://www.3wfrancais.com/en-asie.php">en asie</a><br /><a href="http://www.worldfr.org/en-asie.php">en asie</a><br /><a href="http://www.3wfrancais.com/en-assurance.php">en assurance</a><br /><a href="http://www.worldfr.org/en-assurance.php">en assurance</a><br /><a href="http://www.3wfrancais.com/en-assurances.php">en assurances</a><br /><a href="http://www.worldfr.org/en-assurances.php">en assurances</a><br /><a href="http://www.worldes.org/en-asturias.php">en asturias</a><br /><a href="http://www.worldes.org/en-australia.php">en australia</a><br /><a href="http://www.3wfrancais.com/en-auvergne.php">en auvergne</a><br /><a href="http://www.worldfr.org/en-auvergne.php">en auvergne</a><br /><a href="http://www.3wfrancais.com/en-aveyron.php">en aveyron</a><br /><a href="http://www.worldfr.org/en-aveyron.php">en aveyron</a><br /><a href="http://www.worldes.org/en-barcelona.php">en barcelona</a><br /><a href="http://www.worldes.org/en-bariloche.php">en bariloche</a><br /><a href="http://www.worldnl.org/en-beeld.php">en beeld</a><br /><a href="http://www.worldnl.org/en-begeleiding.php">en begeleiding</a><br /><a href="http://www.3wfrancais.com/en-belgique.php">en belgique</a><br /><a href="http://www.worldfr.org/en-belgique.php">en belgique</a><br /><a href="http://www.worldes.org/en-benidorm.php">en benidorm</a><br /><a href="http://www.worldes.org/en-bilbao.php">en bilbao</a><br /><a href="http://www.3wfrancais.com/en-bois.php">en bois</a><br /><a href="http://www.worldfr.org/en-bois.php">en bois</a><br /><a href="http://www.worldes.org/en-bolivia.php">en bolivia</a><br /><a href="http://www.3wfrancais.com/en-bolivie.php">en bolivie</a><br /><a href="http://www.worldfr.org/en-bolivie.php">en bolivie</a><br /><a href="http://www.3wfrancais.com/en-bourgogne.php">en bourgogne</a><br /><a href="http://www.worldfr.org/en-bourgogne.php">en bourgogne</a><br /><a href="http://www.3wfrancais.com/en-bourse.php">en bourse</a><br /><a href="http://www.worldfr.org/en-bourse.php">en bourse</a><br /><a href="http://www.3wfrancais.com/en-bresse.php">en bresse</a><br /><a href="http://www.worldfr.org/en-bresse.php">en bresse</a><br /><a href="http://www.3wfrancais.com/en-bretagne-sud.php">en bretagne sud</a><br /><a href="http://www.worldfr.org/en-bretagne-sud.php">en bretagne sud</a><br /><a href="http://www.3wfrancais.com/en-bretagne.php">en bretagne</a><br /><a href="http://www.worldfr.org/en-bretagne.php">en bretagne</a><br /><a href="http://www.3wfrancais.com/en-brie.php">en brie</a><br /><a href="http://www.worldfr.org/en-brie.php">en brie</a><br /><a href="http://www.worldes.org/en-buenos-aires.php">en buenos aires</a><br /><a href="http://www.worldes.org/en-buenos.php">en buenos</a><br /><a href="http://www.3wfrancais.com/en-bulgarie.php">en bulgarie</a><br /><a href="http://www.worldfr.org/en-bulgarie.php">en bulgarie</a><br /><a href="http://www.worldes.org/en-buscadores-y.php">en buscadores y</a><br /><a href="http://www.worldes.org/en-buscadores.php">en buscadores</a><br /><a href="http://www.3wfrancais.com/en-c-E9vennes.php">en cévennes</a><br /><a href="http://www.worldfr.org/en-c-E9vennes.php">en cévennes</a><br /><a href="http://www.worldes.org/en-c-F3rdoba.php">en córdoba</a><br /><a href="http://www.worldes.org/en-canarias.php">en canarias</a><br /><a href="http://www.worldes.org/en-cancun.php">en cancun</a><br /><a href="http://www.worldes.org/en-cangas-de.php">en cangas de</a><br /><a href="http://www.worldes.org/en-cangas.php">en cangas</a><br /><a href="http://www.worldes.org/en-canoa.php">en canoa</a><br /><a href="http://www.worldes.org/en-cantabria.php">en cantabria</a><br /><a href="http://www.worldes.org/en-caracas.php">en caracas</a><br /><a href="http://www.3wfrancais.com/en-cas.php">en cas</a><br /><a href="http://www.worldfr.org/en-cas.php">en cas</a><br /><a href="http://www.worldes.org/en-casa.php">en casa</a><br /><a href="http://www.worldes.org/en-castell-F3n.php">en castellón</a><br /><a href="http://www.worldes.org/en-castellano.php">en castellano</a><br /><a href="http://www.worldes.org/en-castellon.php">en castellon</a><br /><a href="http://www.worldes.org/en-castilla.php">en castilla</a><br /><a href="http://www.worldes.org/en-catalu-F1a.php">en cataluña</a><br /><a href="http://www.3wfrancais.com/en-champagne.php">en champagne</a><br /><a href="http://www.worldfr.org/en-champagne.php">en champagne</a><br /><a href="http://www.3wfrancais.com/en-charente-maritime.php">en charente maritime</a><br /><a href="http://www.worldfr.org/en-charente-maritime.php">en charente maritime</a><br /><a href="http://www.3wfrancais.com/en-charente.php">en charente</a><br /><a href="http://www.worldfr.org/en-charente.php">en charente</a><br /><a href="http://www.3wfrancais.com/en-charge.php">en charge</a><br /><a href="http://www.worldfr.org/en-charge.php">en charge</a><br /><a href="http://www.worldes.org/en-chile.php">en chile</a><br /><a href="http://www.3wfrancais.com/en-chine.php">en chine</a><br /><a href="http://www.worldfr.org/en-chine.php">en chine</a><br /><a href="http://www.3wfrancais.com/en-ciel.php">en ciel</a><br /><a href="http://www.worldfr.org/en-ciel.php">en ciel</a><br /><a href="http://www.worldes.org/en-ciencias.php">en ciencias</a><br /><a href="http://www.worldnl.org/en-coaching.php">en coaching</a><br /><a href="http://www.worldes.org/en-colombia.php">en colombia</a><br /><a href="http://www.worldes.org/en-comercio-internacional.php">en comercio internacional</a><br /><a href="http://www.worldes.org/en-comercio.php">en comercio</a><br /><a href="http://www.worldnl.org/en-communicatie.php">en communicatie</a><br /><a href="http://www.3wfrancais.com/en-communication.php">en communication</a><br /><a href="http://www.worldfr.org/en-communication.php">en communication</a><br /><a href="http://www.worldes.org/en-cordoba.php">en cordoba</a><br /><a href="http://www.3wfrancais.com/en-corse.php">en corse</a><br /><a href="http://www.worldfr.org/en-corse.php">en corse</a><br /><a href="http://www.worldes.org/en-costa-rica.php">en costa rica</a><br /><a href="http://www.worldes.org/en-costa.php">en costa</a><br /><a href="http://www.3wfrancais.com/en-cours.php">en cours</a><br /><a href="http://www.worldfr.org/en-cours.php">en cours</a><br /><a href="http://www.3wfrancais.com/en-creuse.php">en creuse</a><br /><a href="http://www.worldfr.org/en-creuse.php">en creuse</a><br /><a href="http://www.3wfrancais.com/en-croatie.php">en croatie</a><br /><a href="http://www.worldfr.org/en-croatie.php">en croatie</a><br /><a href="http://www.worldes.org/en-cuba.php">en cuba</a><br /><a href="http://www.3wfrancais.com/en-cuir.php">en cuir</a><br /><a href="http://www.worldfr.org/en-cuir.php">en cuir</a><br /><a href="http://www.worldnl.org/en-cultuur.php">en cultuur</a><br /><a href="http://www.worldes.org/en-cusco.php">en cusco</a><br /><a href="http://www.worldes.org/en-cuzco.php">en cuzco</a><br /><a href="http://www.worldnl.org/en-de.php">en de</a><br /><a href="http://www.worldes.org/en-defensa.php">en defensa</a><br /><a href="http://www.worldes.org/en-derecho.php">en derecho</a><br /><a href="http://www.worldes.org/en-df.php">en df</a><br /><a href="http://www.3wfrancais.com/en-direct.php">en direct</a><br /><a href="http://www.worldfr.org/en-direct.php">en direct</a><br /><a href="http://www.worldes.org/en-directo.php">en directo</a><br /><a href="http://www.worldnl.org/en-domein.php">en domein</a><br /><a href="http://www.worldnl.org/en-door.php">en door</a><br /><a href="http://www.3wfrancais.com/en-dordogne.php">en dordogne</a><br /><a href="http://www.worldfr.org/en-dordogne.php">en dordogne</a><br /><a href="http://www.worldnl.org/en-dordogne.php">en dordogne</a><br /><a href="http://www.3wfrancais.com/en-dr-F4me-proven-E7ale.php">en drôme provençale</a><br /><a href="http://www.worldfr.org/en-dr-F4me-proven-E7ale.php">en drôme provençale</a><br /><a href="http://www.3wfrancais.com/en-dr-F4me.php">en drôme</a><br /><a href="http://www.worldfr.org/en-dr-F4me.php">en drôme</a><br /><a href="http://www.3wfrancais.com/en-droit.php">en droit</a><br /><a href="http://www.worldfr.org/en-droit.php">en droit</a><br /><a href="http://www.worldnl.org/en-dvd.php">en dvd</a><br /><a href="http://www.worldes.org/en-ecuador.php">en ecuador</a><br /><a href="http://www.worldnl.org/en-een.php">en een</a><br /><a href="http://www.3wfrancais.com/en-egypte.php">en egypte</a><br /><a href="http://www.worldfr.org/en-egypte.php">en egypte</a><br /><a href="http://www.worldes.org/en-el-centro.php">en el centro</a><br /><a href="http://www.worldes.org/en-el-extranjero.php">en el extranjero</a><br /><a href="http://www.worldes.org/en-el-mundo.php">en el mundo</a><br /><a href="http://www.worldes.org/en-el-sur.php">en el sur</a><br /><a href="http://www.worldes.org/en-el-usuario.php">en el usuario</a><br /><a href="http://www.worldes.org/en-el-valle.php">en el valle</a><br /><a href="http://www.worldes.org/en-el.php">en el</a><br /><a href="http://www.3wfrancais.com/en-entreprise.php">en entreprise</a><br /><a href="http://www.worldfr.org/en-entreprise.php">en entreprise</a><br /><a href="http://www.worldes.org/en-espa-E3.php">en espaã</a><br /><a href="http://www.worldes.org/en-espa-F1a.php">en españa</a><br /><a href="http://www.worldes.org/en-espa-F1ol-.php">en español</a><br /><a href="http://www.worldes.org/en-espa-F1ol.php">en español</a><br /><a href="http://www.worldes.org/en-espa.php">en espa</a><br /><a href="http://www.3wdeutsch.com/en-espagne.php">en espagne</a><br /><a href="http://www.3wfrancais.com/en-espagne.php">en espagne</a><br /><a href="http://www.worldde.org/en-espagne.php">en espagne</a><br /><a href="http://www.worldfr.org/en-espagne.php">en espagne</a><br /><a href="http://www.worldes.org/en-esta.php">en esta</a><br /><a href="http://www.worldes.org/en-estados-unidos.php">en estados unidos</a><br /><a href="http://www.worldes.org/en-estados.php">en estados</a><br /><a href="http://www.worldes.org/en-estambul.php">en estambul</a><br /><a href="http://www.worldes.org/en-este.php">en este</a><br /><a href="http://www.worldes.org/en-europa.php">en europa</a><br /><a href="http://www.3wfrancais.com/en-europe.php">en europe</a><br /><a href="http://www.worldfr.org/en-europe.php">en europe</a><br /><a href="http://www.worldnl.org/en-evenementen.php">en evenementen</a><br /><a href="http://www.3wfrancais.com/en-famille.php">en famille</a><br /><a href="http://www.worldfr.org/en-famille.php">en famille</a><br /><a href="http://www.3wfrancais.com/en-flandre.php">en flandre</a><br /><a href="http://www.worldfr.org/en-flandre.php">en flandre</a><br /><a href="http://www.3wfrancais.com/en-flash.php">en flash</a><br /><a href="http://www.worldes.org/en-flash.php">en flash</a><br /><a href="http://www.worldfr.org/en-flash.php">en flash</a><br /><a href="http://www.worldes.org/en-florencia.php">en florencia</a><br /><a href="http://www.3wfrancais.com/en-folie.php">en folie</a><br /><a href="http://www.worldfr.org/en-folie.php">en folie</a><br /><a href="http://www.3wfrancais.com/en-for-EAt.php">en forêt</a><br /><a href="http://www.worldfr.org/en-for-EAt.php">en forêt</a><br /><a href="http://www.3wfrancais.com/en-format.php">en format</a><br /><a href="http://www.worldfr.org/en-format.php">en format</a><br /><a href="http://www.3wfrancais.com/en-forme.php">en forme</a><br /><a href="http://www.worldfr.org/en-forme.php">en forme</a><br /><a href="http://www.3wfrancais.com/en-fran-E7ais.php">en français</a><br /><a href="http://www.worldfr.org/en-fran-E7ais.php">en français</a><br /><a href="http://www.3wfrancais.com/en-france-et.php">en france et</a><br /><a href="http://www.worldfr.org/en-france-et.php">en france et</a><br /><a href="http://www.3wfrancais.com/en-france.php">en france</a><br /><a href="http://www.worldfr.org/en-france.php">en france</a><br /><a href="http://www.worldnl.org/en-france.php">en france</a><br /><a href="http://www.3wfrancais.com/en-franche.php">en franche</a><br /><a href="http://www.worldfr.org/en-franche.php">en franche</a><br /><a href="http://www.worldes.org/en-francia.php">en francia</a><br /><a href="http://www.worldnl.org/en-fruit.php">en fruit</a><br /><a href="http://www.worldes.org/en-fuengirola.php">en fuengirola</a><br /><a href="http://www.worldes.org/en-fuenlabrada.php">en fuenlabrada</a><br /><a href="http://www.worldes.org/en-galicia.php">en galicia</a><br /><a href="http://www.worldnl.org/en-gebruikte.php">en gebruikte</a><br /><a href="http://www.worldes.org/en-general.php">en general</a><br /><a href="http://www.3wfrancais.com/en-gestion.php">en gestion</a><br /><a href="http://www.worldfr.org/en-gestion.php">en gestion</a><br /><a href="http://www.worldnl.org/en-gezond.php">en gezond</a><br /><a href="http://www.worldnl.org/en-gezondheid.php">en gezondheid</a><br /><a href="http://www.3wfrancais.com/en-gironde.php">en gironde</a><br /><a href="http://www.worldfr.org/en-gironde.php">en gironde</a><br /><a href="http://www.3wfrancais.com/en-gr-E8ce.php">en grèce</a><br /><a href="http://www.worldfr.org/en-gr-E8ce.php">en grèce</a><br /><a href="http://www.worldes.org/en-granada.php">en granada</a><br /><a href="http://www.3wfrancais.com/en-gros.php">en gros</a><br /><a href="http://www.worldfr.org/en-gros.php">en gros</a><br /><a href="http://www.worldes.org/en-guadalajara.php">en guadalajara</a><br /><a href="http://www.3wfrancais.com/en-guadeloupe.php">en guadeloupe</a><br /><a href="http://www.worldfr.org/en-guadeloupe.php">en guadeloupe</a><br /><a href="http://www.worldes.org/en-guanajuato.php">en guanajuato</a><br /><a href="http://www.worldes.org/en-guatemala.php">en guatemala</a><br /><a href="http://www.worldes.org/en-guinea.php">en guinea</a><br /><a href="http://www.3wfrancais.com/en-ha-EFti.php">en haïti</a><br /><a href="http://www.worldfr.org/en-ha-EFti.php">en haïti</a><br /><a href="http://www.3wfrancais.com/en-haute.php">en haute</a><br /><a href="http://www.worldfr.org/en-haute.php">en haute</a><br /><a href="http://www.worldnl.org/en-het.php">en het</a><br /><a href="http://www.3wfrancais.com/en-histoire.php">en histoire</a><br /><a href="http://www.worldfr.org/en-histoire.php">en histoire</a><br /><a href="http://www.worldnl.org/en-hoe.php">en hoe</a><br /><a href="http://www.worldes.org/en-ibiza.php">en ibiza</a><br /><a href="http://www.worldnl.org/en-ict.php">en ict</a><br /><a href="http://www.3wfrancais.com/en-ile-de.php">en ile de</a><br /><a href="http://www.worldfr.org/en-ile-de.php">en ile de</a><br /><a href="http://www.3wfrancais.com/en-ile.php">en ile</a><br /><a href="http://www.worldfr.org/en-ile.php">en ile</a><br /><a href="http://www.3wfrancais.com/en-image.php">en image</a><br /><a href="http://www.worldfr.org/en-image.php">en image</a><br /><a href="http://www.3wfrancais.com/en-images.php">en images</a><br /><a href="http://www.worldfr.org/en-images.php">en images</a><br /><a href="http://www.3wfrancais.com/en-immobilier.php">en immobilier</a><br /><a href="http://www.worldfr.org/en-immobilier.php">en immobilier</a><br /><a href="http://www.3wdeutsch.com/en-in.php">en in</a><br /><a href="http://www.worldde.org/en-in.php">en in</a><br /><a href="http://www.worldnl.org/en-in.php">en in</a><br /><a href="http://www.worldnl.org/en-informatie.php">en informatie</a><br /><a href="http://www.3wfrancais.com/en-informatique.php">en informatique</a><br /><a href="http://www.worldfr.org/en-informatique.php">en informatique</a><br /><a href="http://www.worldes.org/en-ingl-E9s.php">en inglés</a><br /><a href="http://www.worldes.org/en-inglaterra.php">en inglaterra</a><br /><a href="http://www.3wfrancais.com/en-inox.php">en inox</a><br /><a href="http://www.worldfr.org/en-inox.php">en inox</a><br /><a href="http://www.worldes.org/en-internet.php">en internet</a><br /><a href="http://www.worldnl.org/en-internet.php">en internet</a><br /><a href="http://www.3wfrancais.com/en-irlande.php">en irlande</a><br /><a href="http://www.worldfr.org/en-irlande.php">en irlande</a><br /><a href="http://www.worldnl.org/en-is.php">en is</a><br /><a href="http://www.worldes.org/en-italia.php">en italia</a><br /><a href="http://www.3wfrancais.com/en-italie.php">en italie</a><br /><a href="http://www.worldfr.org/en-italie.php">en italie</a><br /><a href="http://www.worldnl.org/en-je.php">en je</a><br /><a href="http://www.3wfrancais.com/en-kit.php">en kit</a><br /><a href="http://www.worldfr.org/en-kit.php">en kit</a><br /><a href="http://www.worldnl.org/en-kunst.php">en kunst</a><br /><a href="http://www.worldes.org/en-l-E3.php">en lã</a><br /><a href="http://www.worldes.org/en-l-EDnea.php">en línea</a><br /><a href="http://www.worldes.org/en-la-argentina.php">en la argentina</a><br /><a href="http://www.worldes.org/en-la-costa.php">en la costa</a><br /><a href="http://www.worldes.org/en-la-habana.php">en la habana</a><br /><a href="http://www.worldes.org/en-la-isla.php">en la isla</a><br /><a href="http://www.worldes.org/en-la-manga.php">en la manga</a><br /><a href="http://www.worldes.org/en-la-red.php">en la red</a><br /><a href="http://www.worldes.org/en-la-sierra.php">en la sierra</a><br /><a href="http://www.worldes.org/en-la-web.php">en la web</a><br /><a href="http://www.3wdeutsch.com/en-la.php">en la</a><br /><a href="http://www.3wfrancais.com/en-la.php">en la</a><br /><a href="http://www.worldde.org/en-la.php">en la</a><br /><a href="http://www.worldes.org/en-la.php">en la</a><br /><a href="http://www.worldfr.org/en-la.php">en la</a><br /><a href="http://www.worldnl.org/en-la.php">en la</a><br /><a href="http://www.worldnl.org/en-landen.php">en landen</a><br /><a href="http://www.3wfrancais.com/en-langue.php">en langue</a><br /><a href="http://www.worldfr.org/en-langue.php">en langue</a><br /><a href="http://www.3wfrancais.com/en-languedoc.php">en languedoc</a><br /><a href="http://www.worldfr.org/en-languedoc.php">en languedoc</a><br /><a href="http://www.3wfrancais.com/en-langues.php">en langues</a><br /><a href="http://www.worldfr.org/en-langues.php">en langues</a><br /><a href="http://www.worldes.org/en-lanzarote.php">en lanzarote</a><br /><a href="http://www.worldes.org/en-las-islas.php">en las islas</a><br /><a href="http://www.worldes.org/en-las.php">en las</a><br /><a href="http://www.3wfrancais.com/en-laye.php">en laye</a><br /><a href="http://www.worldfr.org/en-laye.php">en laye</a><br /><a href="http://www.worldnl.org/en-liemers.php">en liemers</a><br /><a href="http://www.3wfrancais.com/en-ligne-.php">en ligne</a><br /><a href="http://www.worldfr.org/en-ligne-.php">en ligne</a><br /><a href="http://www.3wfrancais.com/en-ligne-de.php">en ligne de</a><br /><a href="http://www.worldfr.org/en-ligne-de.php">en ligne de</a><br /><a href="http://www.3wdeutsch.com/en-ligne.php">en ligne</a><br /><a href="http://www.3wfrancais.com/en-ligne.php">en ligne</a><br /><a href="http://www.worldde.org/en-ligne.php">en ligne</a><br /><a href="http://www.worldfr.org/en-ligne.php">en ligne</a><br /><a href="http://www.worldnl.org/en-ligne.php">en ligne</a><br /><a href="http://www.worldes.org/en-lima.php">en lima</a><br /><a href="http://www.3wfrancais.com/en-limousin.php">en limousin</a><br /><a href="http://www.worldfr.org/en-limousin.php">en limousin</a><br /><a href="http://www.worldes.org/en-linea.php">en linea</a><br /><a href="http://www.worldes.org/en-linux.php">en linux</a><br /><a href="http://www.worldnl.org/en-logistiek.php">en logistiek</a><br /><a href="http://www.worldes.org/en-londres.php">en londres</a><br /><a href="http://www.3wfrancais.com/en-lorraine.php">en lorraine</a><br /><a href="http://www.worldfr.org/en-lorraine.php">en lorraine</a><br /><a href="http://www.worldes.org/en-los.php">en los</a><br /><a href="http://www.3wfrancais.com/en-loz-E8re.php">en lozère</a><br /><a href="http://www.worldfr.org/en-loz-E8re.php">en lozère</a><br /><a href="http://www.3wfrancais.com/en-luberon.php">en luberon</a><br /><a href="http://www.worldfr.org/en-luberon.php">en luberon</a><br /><a href="http://www.worldes.org/en-m-E1laga.php">en málaga</a><br /><a href="http://www.3wfrancais.com/en-m-E9decine.php">en médecine</a><br /><a href="http://www.worldfr.org/en-m-E9decine.php">en médecine</a><br /><a href="http://www.3wfrancais.com/en-m-E9diterran-E9e.php">en méditerranée</a><br /><a href="http://www.worldfr.org/en-m-E9diterran-E9e.php">en méditerranée</a><br /><a href="http://www.worldes.org/en-m-E9xico.php">en méxico</a><br /><a href="http://www.worldes.org/en-madera.php">en madera</a><br /><a href="http://www.worldes.org/en-madrid.php">en madrid</a><br /><a href="http://www.3wfrancais.com/en-main.php">en main</a><br /><a href="http://www.worldfr.org/en-main.php">en main</a><br /><a href="http://www.worldes.org/en-malaga.php">en malaga</a><br /><a href="http://www.3wdeutsch.com/en-mallorca.php">en mallorca</a><br /><a href="http://www.worldde.org/en-mallorca.php">en mallorca</a><br /><a href="http://www.worldes.org/en-mallorca.php">en mallorca</a><br /><a href="http://www.3wfrancais.com/en-management.php">en management</a><br /><a href="http://www.worldfr.org/en-management.php">en management</a><br /><a href="http://www.worldes.org/en-marbella.php">en marbella</a><br /><a href="http://www.3wfrancais.com/en-marketing.php">en marketing</a><br /><a href="http://www.worldes.org/en-marketing.php">en marketing</a><br /><a href="http://www.worldfr.org/en-marketing.php">en marketing</a><br /><a href="http://www.3wfrancais.com/en-martinique.php">en martinique</a><br /><a href="http://www.worldfr.org/en-martinique.php">en martinique</a><br /><a href="http://www.3wfrancais.com/en-mati-E8re-de.php">en matière de</a><br /><a href="http://www.worldfr.org/en-mati-E8re-de.php">en matière de</a><br /><a href="http://www.3wfrancais.com/en-mati-E8re.php">en matière</a><br /><a href="http://www.worldfr.org/en-mati-E8re.php">en matière</a><br /><a href="http://www.worldnl.org/en-meer.php">en meer</a><br /><a href="http://www.worldes.org/en-menorca.php">en menorca</a><br /><a href="http://www.3wfrancais.com/en-mer.php">en mer</a><br /><a href="http://www.worldfr.org/en-mer.php">en mer</a><br /><a href="http://www.worldnl.org/en-met.php">en met</a><br /><a href="http://www.worldes.org/en-mexico.php">en mexico</a><br /><a href="http://www.worldes.org/en-miami.php">en miami</a><br /><a href="http://www.3wfrancais.com/en-milieu.php">en milieu</a><br /><a href="http://www.worldfr.org/en-milieu.php">en milieu</a><br /><a href="http://www.worldnl.org/en-milieu.php">en milieu</a><br /><a href="http://www.3wfrancais.com/en-montagne.php">en montagne</a><br /><a href="http://www.worldfr.org/en-montagne.php">en montagne</a><br /><a href="http://www.3wfrancais.com/en-montgolfi-E8re.php">en montgolfière</a><br /><a href="http://www.worldfr.org/en-montgolfi-E8re.php">en montgolfière</a><br /><a href="http://www.worldes.org/en-morelos.php">en morelos</a><br /><a href="http://www.worldes.org/en-moto.php">en moto</a><br /><a href="http://www.worldnl.org/en-naar.php">en naar</a><br /><a href="http://www.worldes.org/en-nerja.php">en nerja</a><br /><a href="http://www.worldnl.org/en-niet.php">en niet</a><br /><a href="http://www.worldnl.org/en-nieuwe.php">en nieuwe</a><br /><a href="http://www.3wfrancais.com/en-normandie.php">en normandie</a><br /><a href="http://www.worldfr.org/en-normandie.php">en normandie</a><br /><a href="http://www.3wfrancais.com/en-nouvelle.php">en nouvelle</a><br /><a href="http://www.worldfr.org/en-nouvelle.php">en nouvelle</a><br /><a href="http://www.worldes.org/en-nuestra.php">en nuestra</a><br /><a href="http://www.worldes.org/en-nueva.php">en nueva</a><br /><a href="http://www.worldes.org/en-oaxaca.php">en oaxaca</a><br /><a href="http://www.3wfrancais.com/en-oeuvre.php">en oeuvre</a><br /><a href="http://www.worldfr.org/en-oeuvre.php">en oeuvre</a><br /><a href="http://www.worldnl.org/en-of.php">en of</a><br /><a href="http://www.worldnl.org/en-omgeving.php">en omgeving</a><br /><a href="http://www.worldnl.org/en-omstreken.php">en omstreken</a><br /><a href="http://www.worldnl.org/en-onderhoud.php">en onderhoud</a><br /><a href="http://www.worldnl.org/en-ontwikkeling.php">en ontwikkeling</a><br /><a href="http://www.worldnl.org/en-onze.php">en onze</a><br /><a href="http://www.worldnl.org/en-op.php">en op</a><br /><a href="http://www.3wfrancais.com/en-or.php">en or</a><br /><a href="http://www.worldfr.org/en-or.php">en or</a><br /><a href="http://www.worldnl.org/en-organisatie.php">en organisatie</a><br /><a href="http://www.3wfrancais.com/en-organisation.php">en organisation</a><br /><a href="http://www.worldfr.org/en-organisation.php">en organisation</a><br /><a href="http://www.worldes.org/en-orlando.php">en orlando</a><br /><a href="http://www.worldes.org/en-oropesa-del.php">en oropesa del</a><br /><a href="http://www.worldes.org/en-oropesa.php">en oropesa</a><br /><a href="http://www.worldnl.org/en-over.php">en over</a><br /><a href="http://www.3wfrancais.com/en-p-E9rigord.php">en périgord</a><br /><a href="http://www.worldfr.org/en-p-E9rigord.php">en périgord</a><br /><a href="http://www.3wfrancais.com/en-page.php">en page</a><br /><a href="http://www.worldfr.org/en-page.php">en page</a><br /><a href="http://www.worldnl.org/en-partners.php">en partners</a><br /><a href="http://www.3wfrancais.com/en-pays-de.php">en pays de</a><br /><a href="http://www.worldfr.org/en-pays-de.php">en pays de</a><br /><a href="http://www.3wfrancais.com/en-pays.php">en pays</a><br /><a href="http://www.worldfr.org/en-pays.php">en pays</a><br /><a href="http://www.worldes.org/en-per-FA.php">en perú</a><br /><a href="http://www.worldes.org/en-peru.php">en peru</a><br /><a href="http://www.3wfrancais.com/en-picardie.php">en picardie</a><br /><a href="http://www.worldfr.org/en-picardie.php">en picardie</a><br /><a href="http://www.worldes.org/en-picos-de.php">en picos de</a><br /><a href="http://www.worldes.org/en-picos.php">en picos</a><br /><a href="http://www.3wfrancais.com/en-pierre.php">en pierre</a><br /><a href="http://www.worldfr.org/en-pierre.php">en pierre</a><br /><a href="http://www.3wfrancais.com/en-place.php">en place</a><br /><a href="http://www.worldfr.org/en-place.php">en place</a><br /><a href="http://www.3wfrancais.com/en-poitou.php">en poitou</a><br /><a href="http://www.worldfr.org/en-poitou.php">en poitou</a><br /><a href="http://www.worldes.org/en-portugal.php">en portugal</a><br /><a href="http://www.worldnl.org/en-productie.php">en productie</a><br /><a href="http://www.3wdeutsch.com/en-provence.php">en provence</a><br /><a href="http://www.3wfrancais.com/en-provence.php">en provence</a><br /><a href="http://www.worldde.org/en-provence.php">en provence</a><br /><a href="http://www.worldfr.org/en-provence.php">en provence</a><br /><a href="http://www.worldes.org/en-puebla.php">en puebla</a><br /><a href="http://www.worldes.org/en-puerto-rico.php">en puerto rico</a><br /><a href="http://www.worldes.org/en-puerto.php">en puerto</a><br /><a href="http://www.worldes.org/en-punta-del.php">en punta del</a><br /><a href="http://www.worldes.org/en-punta.php">en punta</a><br /><a href="http://www.3wfrancais.com/en-r-E9f-E9rencement.php">en référencement</a><br /><a href="http://www.worldfr.org/en-r-E9f-E9rencement.php">en référencement</a><br /><a href="http://www.3wfrancais.com/en-r-E9gion.php">en région</a><br /><a href="http://www.worldfr.org/en-r-E9gion.php">en région</a><br /><a href="http://www.3wfrancais.com/en-r-E9publique-dominicaine.php">en république dominicaine</a><br /><a href="http://www.worldfr.org/en-r-E9publique-dominicaine.php">en république dominicaine</a><br /><a href="http://www.3wfrancais.com/en-r-E9publique.php">en république</a><br /><a href="http://www.worldfr.org/en-r-E9publique.php">en république</a><br /><a href="http://www.3wfrancais.com/en-r-E9seau.php">en réseau</a><br /><a href="http://www.worldfr.org/en-r-E9seau.php">en réseau</a><br /><a href="http://www.worldnl.org/en-rassen.php">en rassen</a><br /><a href="http://www.worldnl.org/en-recht.php">en recht</a><br /><a href="http://www.3wfrancais.com/en-recrutement.php">en recrutement</a><br /><a href="http://www.worldfr.org/en-recrutement.php">en recrutement</a><br /><a href="http://www.worldes.org/en-red.php">en red</a><br /><a href="http://www.worldes.org/en-relaciones-internacionales.php">en relaciones internacionales</a><br /><a href="http://www.worldes.org/en-relaciones.php">en relaciones</a><br /><a href="http://www.3wfrancais.com/en-rh-F4ne.php">en rhône</a><br /><a href="http://www.worldfr.org/en-rh-F4ne.php">en rhône</a><br /><a href="http://www.worldnl.org/en-rodenrijs.php">en rodenrijs</a><br /><a href="http://www.3wfrancais.com/en-roumanie.php">en roumanie</a><br /><a href="http://www.worldfr.org/en-roumanie.php">en roumanie</a><br /><a href="http://www.3wfrancais.com/en-royans.php">en royans</a><br /><a href="http://www.worldfr.org/en-royans.php">en royans</a><br /><a href="http://www.worldes.org/en-salamanca.php">en salamanca</a><br /><a href="http://www.worldes.org/en-salta.php">en salta</a><br /><a href="http://www.worldes.org/en-salud.php">en salud</a><br /><a href="http://www.worldes.org/en-san-luis.php">en san luis</a><br /><a href="http://www.worldes.org/en-san.php">en san</a><br /><a href="http://www.3wfrancais.com/en-sant-E9.php">en santé</a><br /><a href="http://www.worldfr.org/en-sant-E9.php">en santé</a><br /><a href="http://www.worldes.org/en-santiago.php">en santiago</a><br /><a href="http://www.3wfrancais.com/en-sardaigne.php">en sardaigne</a><br /><a href="http://www.worldfr.org/en-sardaigne.php">en sardaigne</a><br /><a href="http://www.3wfrancais.com/en-savoie.php">en savoie</a><br /><a href="http://www.worldfr.org/en-savoie.php">en savoie</a><br /><a href="http://www.3wfrancais.com/en-savoir.php">en savoir</a><br /><a href="http://www.worldfr.org/en-savoir.php">en savoir</a><br /><a href="http://www.3wfrancais.com/en-sc-E8ne.php">en scène</a><br /><a href="http://www.worldfr.org/en-sc-E8ne.php">en scène</a><br /><a href="http://www.3wdeutsch.com/en-schwei.php">en schwei</a><br /><a href="http://www.worldde.org/en-schwei.php">en schwei</a><br /><a href="http://www.3wfrancais.com/en-sciences.php">en sciences</a><br /><a href="http://www.worldfr.org/en-sciences.php">en sciences</a><br /><a href="http://www.worldes.org/en-segovia.php">en segovia</a><br /><a href="http://www.3wfrancais.com/en-seine.php">en seine</a><br /><a href="http://www.worldfr.org/en-seine.php">en seine</a><br /><a href="http://www.worldnl.org/en-selectie.php">en selectie</a><br /><a href="http://www.worldes.org/en-sevilla.php">en sevilla</a><br /><a href="http://www.3wdeutsch.com/en-sie.php">en sie</a><br /><a href="http://www.worldde.org/en-sie.php">en sie</a><br /><a href="http://www.worldes.org/en-sinaloa.php">en sinaloa</a><br /><a href="http://www.worldnl.org/en-softbal.php">en softbal</a><br /><a href="http://www.worldnl.org/en-software.php">en software</a><br /><a href="http://www.3wfrancais.com/en-soie.php">en soie</a><br /><a href="http://www.worldfr.org/en-soie.php">en soie</a><br /><a href="http://www.worldes.org/en-sonora.php">en sonora</a><br /><a href="http://www.3wfrancais.com/en-su-E8de.php">en suède</a><br /><a href="http://www.worldfr.org/en-su-E8de.php">en suède</a><br /><a href="http://www.worldes.org/en-su.php">en su</a><br /><a href="http://www.3wfrancais.com/en-suisse-romande.php">en suisse romande</a><br /><a href="http://www.worldfr.org/en-suisse-romande.php">en suisse romande</a><br /><a href="http://www.3wfrancais.com/en-suisse.php">en suisse</a><br /><a href="http://www.worldfr.org/en-suisse.php">en suisse</a><br /><a href="http://www.3wfrancais.com/en-tanzanie.php">en tanzanie</a><br /><a href="http://www.worldfr.org/en-tanzanie.php">en tanzanie</a><br /><a href="http://www.worldnl.org/en-te.php">en te</a><br /><a href="http://www.3wfrancais.com/en-teck.php">en teck</a><br /><a href="http://www.worldfr.org/en-teck.php">en teck</a><br /><a href="http://www.3wfrancais.com/en-temps-r-E9el.php">en temps réel</a><br /><a href="http://www.worldfr.org/en-temps-r-E9el.php">en temps réel</a><br /><a href="http://www.3wfrancais.com/en-temps.php">en temps</a><br /><a href="http://www.worldfr.org/en-temps.php">en temps</a><br /><a href="http://www.worldes.org/en-todo.php">en todo</a><br /><a href="http://www.3wfrancais.com/en-touraine.php">en touraine</a><br /><a href="http://www.worldfr.org/en-touraine.php">en touraine</a><br /><a href="http://www.worldnl.org/en-training.php">en training</a><br /><a href="http://www.worldes.org/en-tu.php">en tu</a><br /><a href="http://www.worldnl.org/en-tuin.php">en tuin</a><br /><a href="http://www.3wfrancais.com/en-tunisie.php">en tunisie</a><br /><a href="http://www.worldfr.org/en-tunisie.php">en tunisie</a><br /><a href="http://www.worldes.org/en-un.php">en un</a><br /><a href="http://www.worldes.org/en-una.php">en una</a><br /><a href="http://www.3wdeutsch.com/en-und.php">en und</a><br /><a href="http://www.worldde.org/en-und.php">en und</a><br /><a href="http://www.worldes.org/en-uruguay.php">en uruguay</a><br /><a href="http://www.worldnl.org/en-uw.php">en uw</a><br /><a href="http://www.worldnl.org/en-vacatures.php">en vacatures</a><br /><a href="http://www.3wfrancais.com/en-val.php">en val</a><br /><a href="http://www.worldfr.org/en-val.php">en val</a><br /><a href="http://www.worldes.org/en-valencia.php">en valencia</a><br /><a href="http://www.worldes.org/en-valladolid.php">en valladolid</a><br /><a href="http://www.worldnl.org/en-van.php">en van</a><br /><a href="http://www.3wfrancais.com/en-vanoise.php">en vanoise</a><br /><a href="http://www.worldfr.org/en-vanoise.php">en vanoise</a><br /><a href="http://www.3wfrancais.com/en-vend-E9e.php">en vendée</a><br /><a href="http://www.worldfr.org/en-vend-E9e.php">en vendée</a><br /><a href="http://www.worldes.org/en-venecia.php">en venecia</a><br /><a href="http://www.worldes.org/en-venezuela.php">en venezuela</a><br /><a href="http://www.worldes.org/en-venta-en.php">en venta en</a><br /><a href="http://www.worldes.org/en-venta.php">en venta</a><br /><a href="http://www.3wfrancais.com/en-vente.php">en vente</a><br /><a href="http://www.worldfr.org/en-vente.php">en vente</a><br /><a href="http://www.worldnl.org/en-verkoop-van.php">en verkoop van</a><br /><a href="http://www.worldnl.org/en-verkoop.php">en verkoop</a><br /><a href="http://www.worldnl.org/en-verkopen.php">en verkopen</a><br /><a href="http://www.3wfrancais.com/en-verre.php">en verre</a><br /><a href="http://www.worldfr.org/en-verre.php">en verre</a><br /><a href="http://www.worldnl.org/en-vijver.php">en vijver</a><br /><a href="http://www.worldes.org/en-vila.php">en vila</a><br /><a href="http://www.worldes.org/en-villarreal.php">en villarreal</a><br /><a href="http://www.worldnl.org/en-visserij.php">en visserij</a><br /><a href="http://www.worldes.org/en-vivo.php">en vivo</a><br /><a href="http://www.worldnl.org/en-voor.php">en voor</a><br /><a href="http://www.worldnl.org/en-wat.php">en wat</a><br /><a href="http://www.worldnl.org/en-web.php">en web</a><br /><a href="http://www.worldnl.org/en-webdesign.php">en webdesign</a><br /><a href="http://www.worldnl.org/en-website.php">en website</a><br /><a href="http://www.worldnl.org/en-welzijn.php">en welzijn</a><br /><a href="http://www.worldnl.org/en-werk.php">en werk</a><br /><a href="http://www.worldes.org/en-yucat-E1n.php">en yucatán</a><br /><a href="http://www.3wfrancais.com/en-yvelines.php">en yvelines</a><br /><a href="http://www.worldfr.org/en-yvelines.php">en yvelines</a><br /><a href="http://www.worldes.org/en-zaragoza.php">en zaragoza</a><br /><a href="http://www.worldnl.org/en-zijn.php">en zijn</a><br /><a href="http://www.worldnl.org/en-zorg.php">en zorg</a><br /><a href="http://www.3wdeutsch.com/en-zu.php">en zu</a><br /><a href="http://www.worldde.org/en-zu.php">en zu</a><br /><a href="http://www.worldit.org/enalotto.php">enalotto</a><br /><a href="http://www.worldes.org/enamorados.php">enamorados</a><br /><a href="http://www.3wdeutsch.com/enanlagen.php">enanlagen</a><br /><a href="http://www.worldde.org/enanlagen.php">enanlagen</a><br /><a href="http://www.3wdeutsch.com/enbahn.php">enbahn</a><br /><a href="http://www.worldde.org/enbahn.php">enbahn</a><br /><a href="http://www.3wdeutsch.com/enbau.php">enbau</a><br /><a href="http://www.worldde.org/enbau.php">enbau</a><br /><a href="http://www.3wdeutsch.com/enbeleuchtung.php">enbeleuchtung</a><br /><a href="http://www.worldde.org/enbeleuchtung.php">enbeleuchtung</a><br /><a href="http://www.3wdeutsch.com/enberg.php">enberg</a><br /><a href="http://www.worldde.org/enberg.php">enberg</a><br /><a href="http://www.3wdeutsch.com/enburg.php">enburg</a><br /><a href="http://www.worldde.org/enburg.php">enburg</a><br /><a href="http://www.3wfrancais.com/encadrement.php">encadrement</a><br /><a href="http://www.worldfr.org/encadrement.php">encadrement</a><br /><a href="http://www.3wfrancais.com/encadrements.php">encadrements</a><br /><a href="http://www.worldfr.org/encadrements.php">encadrements</a><br /><a href="http://www.3wfrancais.com/encamp.php">encamp</a><br /><a href="http://www.worldfr.org/encamp.php">encamp</a><br /><a href="http://www.3wfrancais.com/encan.php">encan</a><br /><a href="http://www.worldfr.org/encan.php">encan</a><br /><a href="http://www.worldes.org/encanto.php">encanto</a><br /><a href="http://www.worldes.org/encartaciones.php">encartaciones</a><br /><a href="http://www.3wfrancais.com/enceinte.php">enceinte</a><br /><a href="http://www.worldfr.org/enceinte.php">enceinte</a><br /><a href="http://www.3wfrancais.com/enceintes.php">enceintes</a><br /><a href="http://www.worldfr.org/enceintes.php">enceintes</a><br /><a href="http://www.3wfrancais.com/encens.php">encens</a><br /><a href="http://www.worldfr.org/encens.php">encens</a><br /><a href="http://www.3wfrancais.com/ench-E8re.php">enchère</a><br /><a href="http://www.worldfr.org/ench-E8re.php">enchère</a><br /><a href="http://www.3wfrancais.com/ench-E8res.php">enchères</a><br /><a href="http://www.worldfr.org/ench-E8res.php">enchères</a><br /><a href="http://www.3wfrancais.com/enchere.php">enchere</a><br /><a href="http://www.worldfr.org/enchere.php">enchere</a><br /><a href="http://www.3wfrancais.com/encheres.php">encheres</a><br /><a href="http://www.worldfr.org/encheres.php">encheres</a><br /><a href="http://www.worldes.org/enciclopedia-libre.php">enciclopedia libre</a><br /><a href="http://www.worldes.org/enciclopedia.php">enciclopedia</a><br /><a href="http://www.worldit.org/enciclopedia.php">enciclopedia</a><br /><a href="http://www.worldes.org/encierros.php">encierros</a><br /><a href="http://www.3wdeutsch.com/encoder.php">encoder</a><br /><a href="http://www.worldde.org/encoder.php">encoder</a><br /><a href="http://www.3wdeutsch.com/encoding.php">encoding</a><br /><a href="http://www.worldde.org/encoding.php">encoding</a><br /><a href="http://www.worldes.org/encontrar-E1s.php">encontrarás</a><br /><a href="http://www.worldes.org/encontrar.php">encontrar</a><br /><a href="http://www.3wfrancais.com/encore.php">encore</a><br /><a href="http://www.worldfr.org/encore.php">encore</a><br /><a href="http://www.3wfrancais.com/encre.php">encre</a><br /><a href="http://www.worldfr.org/encre.php">encre</a><br /><a href="http://www.3wdeutsch.com/encryption.php">encryption</a><br /><a href="http://www.worldde.org/encryption.php">encryption</a><br /><a href="http://www.worldes.org/encuentra.php">encuentra</a><br /><a href="http://www.worldes.org/encuentro-de.php">encuentro de</a><br /><a href="http://www.worldes.org/encuentro.php">encuentro</a><br /><a href="http://www.worldes.org/encuentros.php">encuentros</a><br /><a href="http://www.worldes.org/encuesta.php">encuesta</a><br /><a href="http://www.worldes.org/encuestas.php">encuestas</a><br /><a href="http://www.3wfrancais.com/encyclop-E9die.php">encyclopédie</a><br /><a href="http://www.worldfr.org/encyclop-E9die.php">encyclopédie</a><br /><a href="http://www.3wfrancais.com/encyclopedia.php">encyclopedia</a><br /><a href="http://www.worldes.org/encyclopedia.php">encyclopedia</a><br /><a href="http://www.worldfr.org/encyclopedia.php">encyclopedia</a><br /><a href="http://www.worldnl.org/encyclopedia.php">encyclopedia</a><br /><a href="http://www.3wfrancais.com/encyclopedie.php">encyclopedie</a><br /><a href="http://www.worldfr.org/encyclopedie.php">encyclopedie</a><br /><a href="http://www.worldnl.org/encyclopedie.php">encyclopedie</a><br /><a href="http://www.worldnl.org/end-gastronomique.php">end gastronomique</a><br /><a href="http://www.3wdeutsch.com/enddarm.php">enddarm</a><br /><a href="http://www.worldde.org/enddarm.php">enddarm</a><br /><a href="http://www.3wdeutsch.com/ende-der-welt.php">ende der welt</a><br /><a href="http://www.worldde.org/ende-der-welt.php">ende der welt</a><br /><a href="http://www.3wdeutsch.com/ende-der.php">ende der</a><br /><a href="http://www.worldde.org/ende-der.php">ende der</a><br /><a href="http://www.3wdeutsch.com/ende-des.php">ende des</a><br /><a href="http://www.worldde.org/ende-des.php">ende des</a><br /><a href="http://www.3wdeutsch.com/enden.php">enden</a><br /><a href="http://www.worldde.org/enden.php">enden</a><br /><a href="http://www.3wdeutsch.com/ender.php">ender</a><br /><a href="http://www.worldde.org/ender.php">ender</a><br /><a href="http://www.3wdeutsch.com/enderlein.php">enderlein</a><br /><a href="http://www.worldde.org/enderlein.php">enderlein</a><br /><a href="http://www.3wdeutsch.com/endermologie.php">endermologie</a><br /><a href="http://www.worldde.org/endermologie.php">endermologie</a><br /><a href="http://www.3wdeutsch.com/enders.php">enders</a><br /><a href="http://www.worldde.org/enders.php">enders</a><br /><a href="http://www.3wdeutsch.com/endersbach.php">endersbach</a><br /><a href="http://www.worldde.org/endersbach.php">endersbach</a><br /><a href="http://www.3wfrancais.com/endettement.php">endettement</a><br /><a href="http://www.worldfr.org/endettement.php">endettement</a><br /><a href="http://www.3wdeutsch.com/endienst.php">endienst</a><br /><a href="http://www.worldde.org/endienst.php">endienst</a><br /><a href="http://www.3wdeutsch.com/endingen.php">endingen</a><br /><a href="http://www.worldde.org/endingen.php">endingen</a><br /><a href="http://www.3wdeutsch.com/endlich.php">endlich</a><br /><a href="http://www.worldde.org/endlich.php">endlich</a><br /><a href="http://www.worldes.org/endocrinolog-EDa.php">endocrinología</a><br /><a href="http://www.worldit.org/endocrinologia.php">endocrinologia</a><br /><a href="http://www.3wdeutsch.com/endodontie.php">endodontie</a><br /><a href="http://www.worldde.org/endodontie.php">endodontie</a><br /><a href="http://www.3wdeutsch.com/endokrinologie.php">endokrinologie</a><br /><a href="http://www.worldde.org/endokrinologie.php">endokrinologie</a><br /><a href="http://www.3wdeutsch.com/endometriose.php">endometriose</a><br /><a href="http://www.worldde.org/endometriose.php">endometriose</a><br /><a href="http://www.3wdeutsch.com/endorf.php">endorf</a><br /><a href="http://www.worldde.org/endorf.php">endorf</a><br /><a href="http://www.3wdeutsch.com/endoskopie.php">endoskopie</a><br /><a href="http://www.worldde.org/endoskopie.php">endoskopie</a><br /><a href="http://www.3wdeutsch.com/endoskopische.php">endoskopische</a><br /><a href="http://www.worldde.org/endoskopische.php">endoskopische</a><br /><a href="http://www.3wdeutsch.com/endres.php">endres</a><br /><a href="http://www.worldde.org/endres.php">endres</a><br /><a href="http://www.3wfrancais.com/endroit.php">endroit</a><br /><a href="http://www.worldfr.org/endroit.php">endroit</a><br /><a href="http://www.3wdeutsch.com/endstufen.php">endstufen</a><br /><a href="http://www.worldde.org/endstufen.php">endstufen</a><br /><a href="http://www.3wfrancais.com/enduit.php">enduit</a><br /><a href="http://www.worldfr.org/enduit.php">enduit</a><br /><a href="http://www.3wfrancais.com/enduits.php">enduits</a><br /><a href="http://www.worldfr.org/enduits.php">enduits</a><br /><a href="http://www.3wfrancais.com/endurance.php">endurance</a><br /><a href="http://www.worldfr.org/endurance.php">endurance</a><br /><a href="http://www.worldit.org/endurance.php">endurance</a><br /><a href="http://www.3wdeutsch.com/enduro.php">enduro</a><br /><a href="http://www.3wfrancais.com/enduro.php">enduro</a><br /><a href="http://www.worldde.org/enduro.php">enduro</a><br /><a href="http://www.worldes.org/enduro.php">enduro</a><br /><a href="http://www.worldfr.org/enduro.php">enduro</a><br /><a href="http://www.worldit.org/enduro.php">enduro</a><br /><a href="http://www.3wdeutsch.com/enemy.php">enemy</a><br /><a href="http://www.worldde.org/enemy.php">enemy</a><br /><a href="http://www.worldes.org/energ-EDa-solar.php">energía solar</a><br /><a href="http://www.worldes.org/energ-EDa.php">energía</a><br /><a href="http://www.worldes.org/energ-EDas.php">energías</a><br /><a href="http://www.3wdeutsch.com/energetic.php">energetic</a><br /><a href="http://www.worldde.org/energetic.php">energetic</a><br /><a href="http://www.worldit.org/energetica.php">energetica</a><br /><a href="http://www.worldit.org/energetico.php">energetico</a><br /><a href="http://www.3wdeutsch.com/energetische.php">energetische</a><br /><a href="http://www.worldde.org/energetische.php">energetische</a><br /><a href="http://www.worldit.org/energia-elettrica.php">energia elettrica</a><br /><a href="http://www.worldit.org/energia-solare.php">energia solare</a><br /><a href="http://www.worldes.org/energia.php">energia</a><br /><a href="http://www.worldit.org/energia.php">energia</a><br /><a href="http://www.3wdeutsch.com/energie-ag.php">energie ag</a><br /><a href="http://www.worldde.org/energie-ag.php">energie ag</a><br /><a href="http://www.worldit.org/energie-rinnovabili.php">energie rinnovabili</a><br /><a href="http://www.3wdeutsch.com/energie.php">energie</a><br /><a href="http://www.3wfrancais.com/energie.php">energie</a><br /><a href="http://www.worldde.org/energie.php">energie</a><br /><a href="http://www.worldfr.org/energie.php">energie</a><br /><a href="http://www.worldit.org/energie.php">energie</a><br /><a href="http://www.worldnl.org/energie.php">energie</a><br /><a href="http://www.3wdeutsch.com/energieagentur.php">energieagentur</a><br /><a href="http://www.worldde.org/energieagentur.php">energieagentur</a><br /><a href="http://www.3wdeutsch.com/energiearbeit.php">energiearbeit</a><br /><a href="http://www.worldde.org/energiearbeit.php">energiearbeit</a><br /><a href="http://www.3wdeutsch.com/energieberater.php">energieberater</a><br /><a href="http://www.worldde.org/energieberater.php">energieberater</a><br /><a href="http://www.3wdeutsch.com/energieberatung.php">energieberatung</a><br /><a href="http://www.worldde.org/energieberatung.php">energieberatung</a><br /><a href="http://www.3wdeutsch.com/energieeffizienz.php">energieeffizienz</a><br /><a href="http://www.worldde.org/energieeffizienz.php">energieeffizienz</a><br /><a href="http://www.3wdeutsch.com/energieeinsparverordnung.php">energieeinsparverordnung</a><br /><a href="http://www.worldde.org/energieeinsparverordnung.php">energieeinsparverordnung</a><br /><a href="http://www.3wdeutsch.com/energiekosten.php">energiekosten</a><br /><a href="http://www.worldde.org/energiekosten.php">energiekosten</a><br /><a href="http://www.3wdeutsch.com/energiemanagement.php">energiemanagement</a><br /><a href="http://www.worldde.org/energiemanagement.php">energiemanagement</a><br /><a href="http://www.3wdeutsch.com/energien.php">energien</a><br /><a href="http://www.worldde.org/energien.php">energien</a><br /><a href="http://www.3wdeutsch.com/energiepass.php">energiepass</a><br /><a href="http://www.worldde.org/energiepass.php">energiepass</a><br /><a href="http://www.3wfrancais.com/energies.php">energies</a><br /><a href="http://www.worldfr.org/energies.php">energies</a><br /><a href="http://www.3wdeutsch.com/energiesparen.php">energiesparen</a><br /><a href="http://www.worldde.org/energiesparen.php">energiesparen</a><br /><a href="http://www.3wdeutsch.com/energietechnik.php">energietechnik</a><br /><a href="http://www.worldde.org/energietechnik.php">energietechnik</a><br /><a href="http://www.3wdeutsch.com/energieversorgung.php">energieversorgung</a><br /><a href="http://www.worldde.org/energieversorgung.php">energieversorgung</a><br /><a href="http://www.3wdeutsch.com/energy.php">energy</a><br /><a href="http://www.3wfrancais.com/energy.php">energy</a><br /><a href="http://www.worldde.org/energy.php">energy</a><br /><a href="http://www.worldes.org/energy.php">energy</a><br /><a href="http://www.worldfr.org/energy.php">energy</a><br /><a href="http://www.worldit.org/energy.php">energy</a><br /><a href="http://www.worldes.org/enero-de.php">enero de</a><br /><a href="http://www.worldes.org/enero-del.php">enero del</a><br /><a href="http://www.worldes.org/enero.php">enero</a><br /><a href="http://www.3wfrancais.com/enfance.php">enfance</a><br /><a href="http://www.worldfr.org/enfance.php">enfance</a><br /><a href="http://www.3wfrancais.com/enfant.php">enfant</a><br /><a href="http://www.worldfr.org/enfant.php">enfant</a><br /><a href="http://www.3wfrancais.com/enfants-de.php">enfants de</a><br /><a href="http://www.worldfr.org/enfants-de.php">enfants de</a><br /><a href="http://www.3wfrancais.com/enfants-du.php">enfants du</a><br /><a href="http://www.worldfr.org/enfants-du.php">enfants du</a><br /><a href="http://www.3wfrancais.com/enfants-et.php">enfants et</a><br /><a href="http://www.worldfr.org/enfants-et.php">enfants et</a><br /><a href="http://www.3wdeutsch.com/enfants.php">enfants</a><br /><a href="http://www.3wfrancais.com/enfants.php">enfants</a><br /><a href="http://www.worldde.org/enfants.php">enfants</a><br /><a href="http://www.worldfr.org/enfants.php">enfants</a><br /><a href="http://www.3wdeutsch.com/enfels.php">enfels</a><br /><a href="http://www.worldde.org/enfels.php">enfels</a><br /><a href="http://www.3wfrancais.com/enfer.php">enfer</a><br /><a href="http://www.worldfr.org/enfer.php">enfer</a><br /><a href="http://www.worldes.org/enfermedad-de-alzheimer.php">enfermedad de alzheimer</a><br /><a href="http://www.worldes.org/enfermedad-de.php">enfermedad de</a><br /><a href="http://www.worldes.org/enfermedad.php">enfermedad</a><br /><a href="http://www.worldes.org/enfermedades.php">enfermedades</a><br /><a href="http://www.worldes.org/enfermer-EDa.php">enfermería</a><br /><a href="http://www.worldes.org/enfermera.php">enfermera</a><br /><a href="http://www.worldes.org/enfermeras.php">enfermeras</a><br /><a href="http://www.worldes.org/enfermeria.php">enfermeria</a><br /><a href="http://www.worldes.org/enfermos.php">enfermos</a><br /><a href="http://www.3wdeutsch.com/enfest.php">enfest</a><br /><a href="http://www.worldde.org/enfest.php">enfest</a><br /><a href="http://www.worldes.org/enfocarte.php">enfocarte</a><br /><a href="http://www.worldes.org/enfoque.php">enfoque</a><br /><a href="http://www.3wdeutsch.com/engadin.php">engadin</a><br /><a href="http://www.worldde.org/engadin.php">engadin</a><br /><a href="http://www.worldit.org/engadin.php">engadin</a><br /><a href="http://www.worldit.org/engadina.php">engadina</a><br /><a href="http://www.3wdeutsch.com/engagement.php">engagement</a><br /><a href="http://www.3wfrancais.com/engagement.php">engagement</a><br /><a href="http://www.worldde.org/engagement.php">engagement</a><br /><a href="http://www.worldfr.org/engagement.php">engagement</a><br /><a href="http://www.3wdeutsch.com/engagierte.php">engagierte</a><br /><a href="http://www.worldde.org/engagierte.php">engagierte</a><br /><a href="http://www.3wdeutsch.com/engel-f-FCr-charlie.php">engel für charlie</a><br /><a href="http://www.worldde.org/engel-f-FCr-charlie.php">engel für charlie</a><br /><a href="http://www.3wdeutsch.com/engel-f-FCr.php">engel für</a><br /><a href="http://www.worldde.org/engel-f-FCr.php">engel für</a><br /><a href="http://www.3wdeutsch.com/engel.php">engel</a><br /><a href="http://www.worldde.org/engel.php">engel</a><br /><a href="http://www.worldit.org/engel.php">engel</a><br /><a href="http://www.worldnl.org/engel.php">engel</a><br /><a href="http://www.worldnl.org/engeland.php">engeland</a><br /><a href="http://www.3wdeutsch.com/engelberg.php">engelberg</a><br /><a href="http://www.worldde.org/engelberg.php">engelberg</a><br /><a href="http://www.3wdeutsch.com/engelbert.php">engelbert</a><br /><a href="http://www.worldde.org/engelbert.php">engelbert</a><br /><a href="http://www.worldnl.org/engelen.php">engelen</a><br /><a href="http://www.3wdeutsch.com/engelhard.php">engelhard</a><br /><a href="http://www.worldde.org/engelhard.php">engelhard</a><br /><a href="http://www.3wdeutsch.com/engelhardt.php">engelhardt</a><br /><a href="http://www.worldde.org/engelhardt.php">engelhardt</a><br /><a href="http://www.3wdeutsch.com/engelke.php">engelke</a><br /><a href="http://www.worldde.org/engelke.php">engelke</a><br /><a href="http://www.3wdeutsch.com/engels.php">engels</a><br /><a href="http://www.3wfrancais.com/engels.php">engels</a><br /><a href="http://www.worldde.org/engels.php">engels</a><br /><a href="http://www.worldes.org/engels.php">engels</a><br /><a href="http://www.worldfr.org/engels.php">engels</a><br /><a href="http://www.worldnl.org/engels.php">engels</a><br /><a href="http://www.worldnl.org/engelse.php">engelse</a><br /><a href="http://www.3wdeutsch.com/engelskirchen.php">engelskirchen</a><br /><a href="http://www.worldde.org/engelskirchen.php">engelskirchen</a><br /><a href="http://www.3wdeutsch.com/engen.php">engen</a><br /><a href="http://www.worldde.org/engen.php">engen</a><br /><a href="http://www.3wdeutsch.com/enger.php">enger</a><br /><a href="http://www.worldde.org/enger.php">enger</a><br /><a href="http://www.3wfrancais.com/enghien.php">enghien</a><br /><a href="http://www.worldfr.org/enghien.php">enghien</a><br /><a href="http://www.3wfrancais.com/engin.php">engin</a><br /><a href="http://www.worldfr.org/engin.php">engin</a><br /><a href="http://www.worldit.org/engine-marketing.php">engine marketing</a><br /><a href="http://www.3wdeutsch.com/engine.php">engine</a><br /><a href="http://www.3wfrancais.com/engine.php">engine</a><br /><a href="http://www.worldde.org/engine.php">engine</a><br /><a href="http://www.worldes.org/engine.php">engine</a><br /><a href="http://www.worldfr.org/engine.php">engine</a><br /><a href="http://www.worldit.org/engine.php">engine</a><br /><a href="http://www.worldnl.org/engine.php">engine</a><br /><a href="http://www.3wdeutsch.com/engineer.php">engineer</a><br /><a href="http://www.3wfrancais.com/engineer.php">engineer</a><br /><a href="http://www.worldde.org/engineer.php">engineer</a><br /><a href="http://www.worldfr.org/engineer.php">engineer</a><br /><a href="http://www.worldit.org/engineer.php">engineer</a><br /><a href="http://www.worldnl.org/engineer.php">engineer</a><br /><a href="http://www.3wdeutsch.com/engineering-ag.php">engineering ag</a><br /><a href="http://www.worldde.org/engineering-ag.php">engineering ag</a><br /><a href="http://www.3wdeutsch.com/engineering-gmbh.php">engineering gmbh</a><br /><a href="http://www.worldde.org/engineering-gmbh.php">engineering gmbh</a><br /><a href="http://www.3wdeutsch.com/engineering.php">engineering</a><br /><a href="http://www.3wfrancais.com/engineering.php">engineering</a><br /><a href="http://www.worldde.org/engineering.php">engineering</a><br /><a href="http://www.worldes.org/engineering.php">engineering</a><br /><a href="http://www.worldfr.org/engineering.php">engineering</a><br /><a href="http://www.worldit.org/engineering.php">engineering</a><br /><a href="http://www.worldnl.org/engineering.php">engineering</a><br /><a href="http://www.worldes.org/engines.php">engines</a><br /><a href="http://www.worldit.org/engines.php">engines</a><br /><a href="http://www.worldnl.org/engines.php">engines</a><br /><a href="http://www.3wfrancais.com/engins.php">engins</a><br /><a href="http://www.worldfr.org/engins.php">engins</a><br /><a href="http://www.3wdeutsch.com/england.php">england</a><br /><a href="http://www.worldde.org/england.php">england</a><br /><a href="http://www.worldes.org/england.php">england</a><br /><a href="http://www.3wdeutsch.com/englisch-deutsch.php">englisch deutsch</a><br /><a href="http://www.worldde.org/englisch-deutsch.php">englisch deutsch</a><br /><a href="http://www.3wdeutsch.com/englisch.php">englisch</a><br /><a href="http://www.worldde.org/englisch.php">englisch</a><br /><a href="http://www.3wdeutsch.com/englische.php">englische</a><br /><a href="http://www.worldde.org/englische.php">englische</a><br /><a href="http://www.3wdeutsch.com/englischkurs.php">englischkurs</a><br /><a href="http://www.worldde.org/englischkurs.php">englischkurs</a><br /><a href="http://www.3wdeutsch.com/englischkurse.php">englischkurse</a><br /><a href="http://www.worldde.org/englischkurse.php">englischkurse</a><br /><a href="http://www.worldes.org/english-in.php">english in</a><br /><a href="http://www.3wdeutsch.com/english-language.php">english language</a><br /><a href="http://www.worldde.org/english-language.php">english language</a><br /><a href="http://www.3wfrancais.com/english-to.php">english to</a><br /><a href="http://www.worldfr.org/english-to.php">english to</a><br /><a href="http://www.3wfrancais.com/english-translation.php">english translation</a><br /><a href="http://www.worldfr.org/english-translation.php">english translation</a><br /><a href="http://www.3wdeutsch.com/english.php">english</a><br /><a href="http://www.3wfrancais.com/english.php">english</a><br /><a href="http://www.worldde.org/english.php">english</a><br /><a href="http://www.worldes.org/english.php">english</a><br /><a href="http://www.worldfr.org/english.php">english</a><br /><a href="http://www.worldit.org/english.php">english</a><br /><a href="http://www.worldnl.org/english.php">english</a><br /><a href="http://www.3wdeutsch.com/englmar.php">englmar</a><br /><a href="http://www.worldde.org/englmar.php">englmar</a><br /><a href="http://www.3wfrancais.com/engrais.php">engrais</a><br /><a href="http://www.worldfr.org/engrais.php">engrais</a><br /><a href="http://www.worldes.org/engranajes.php">engranajes</a><br /><a href="http://www.worldes.org/enguera.php">enguera</a><br /><a href="http://www.3wdeutsch.com/enhain.php">enhain</a><br /><a href="http://www.worldde.org/enhain.php">enhain</a><br /><a href="http://www.3wdeutsch.com/enhandel.php">enhandel</a><br /><a href="http://www.worldde.org/enhandel.php">enhandel</a><br /><a href="http://www.3wdeutsch.com/enhorn.php">enhorn</a><br /><a href="http://www.worldde.org/enhorn.php">enhorn</a><br /><a href="http://www.worldnl.org/enige.php">enige</a><br /><a href="http://www.3wdeutsch.com/enigma.php">enigma</a><br /><a href="http://www.worldde.org/enigma.php">enigma</a><br /><a href="http://www.worldes.org/enigma.php">enigma</a><br /><a href="http://www.worldit.org/enigma.php">enigma</a><br /><a href="http://www.worldes.org/enigmas.php">enigmas</a><br /><a href="http://www.worldit.org/enigmi.php">enigmi</a><br /><a href="http://www.3wfrancais.com/enita.php">enita</a><br /><a href="http://www.worldfr.org/enita.php">enita</a><br /><a href="http://www.3wfrancais.com/enjeux.php">enjeux</a><br /><a href="http://www.worldfr.org/enjeux.php">enjeux</a><br /><a href="http://www.3wdeutsch.com/enjoy.php">enjoy</a><br /><a href="http://www.3wfrancais.com/enjoy.php">enjoy</a><br /><a href="http://www.worldde.org/enjoy.php">enjoy</a><br /><a href="http://www.worldes.org/enjoy.php">enjoy</a><br /><a href="http://www.worldfr.org/enjoy.php">enjoy</a><br /><a href="http://www.worldit.org/enjoy.php">enjoy</a><br /><a href="http://www.worldnl.org/enkele.php">enkele</a><br /><a href="http://www.worldnl.org/enkhuizen.php">enkhuizen</a><br /><a href="http://www.3wdeutsch.com/enkirchen.php">enkirchen</a><br /><a href="http://www.worldde.org/enkirchen.php">enkirchen</a><br /><a href="http://www.3wdeutsch.com/enl-FCder.php">enlüder</a><br /><a href="http://www.worldde.org/enl-FCder.php">enlüder</a><br /><a href="http://www.worldes.org/enlace.php">enlace</a><br /><a href="http://www.worldes.org/enlaces.php">enlaces</a><br /><a href="http://www.3wfrancais.com/enluminure.php">enluminure</a><br /><a href="http://www.worldfr.org/enluminure.php">enluminure</a><br /><a href="http://www.3wfrancais.com/enluminures.php">enluminures</a><br /><a href="http://www.worldfr.org/enluminures.php">enluminures</a><br /><a href="http://www.worldnl.org/enneagram.php">enneagram</a><br /><a href="http://www.3wdeutsch.com/ennepe.php">ennepe</a><br /><a href="http://www.worldde.org/ennepe.php">ennepe</a><br /><a href="http://www.3wdeutsch.com/ennepetal.php">ennepetal</a><br /><a href="http://www.worldde.org/ennepetal.php">ennepetal</a><br /><a href="http://www.3wdeutsch.com/ennest.php">ennest</a><br /><a href="http://www.worldde.org/ennest.php">ennest</a><br /><a href="http://www.worldit.org/ennio.php">ennio</a><br /><a href="http://www.3wdeutsch.com/ennstal.php">ennstal</a><br /><a href="http://www.worldde.org/ennstal.php">ennstal</a><br /><a href="http://www.3wdeutsch.com/enogastronomia.php">enogastronomia</a><br /><a href="http://www.worldde.org/enogastronomia.php">enogastronomia</a><br /><a href="http://www.worldit.org/enogastronomia.php">enogastronomia</a><br /><a href="http://www.3wdeutsch.com/enogastronomici.php">enogastronomici</a><br /><a href="http://www.worldde.org/enogastronomici.php">enogastronomici</a><br /><a href="http://www.worldit.org/enogastronomici.php">enogastronomici</a><br /><a href="http://www.worldit.org/enologia.php">enologia</a><br /><a href="http://www.worldit.org/enoteca.php">enoteca</a><br /><a href="http://www.3wdeutsch.com/enoteche.php">enoteche</a><br /><a href="http://www.worldde.org/enoteche.php">enoteche</a><br /><a href="http://www.worldit.org/enoteche.php">enoteche</a><br /><a href="http://www.worldit.org/enpals.php">enpals</a><br /><a href="http://www.3wdeutsch.com/enputz.php">enputz</a><br /><a href="http://www.worldde.org/enputz.php">enputz</a><br /><a href="http://www.3wfrancais.com/enqu-EAte.php">enquête</a><br /><a href="http://www.worldfr.org/enqu-EAte.php">enquête</a><br /><a href="http://www.worldnl.org/enqu-EAte.php">enquête</a><br /><a href="http://www.3wfrancais]]></description>
<category>un petit annuaire</category>
<pubDate>Thu, 19 Jan 2006 19:38:14 +0000</pubDate>
<guid>http://www.blogg.org/blog-35573-billet-277423.html</guid>
</item>
<item>
<title>un petit annuaire</title>
<link>http://www.blogg.org/blog-35573-billet-276223.html</link>
<description><![CDATA[<p>je viens de créer un petit annuaire... vous pouvez le visiter :</p>]]></description>
<category>un petit annuaire</category>
<pubDate>Tue, 17 Jan 2006 14:11:51 +0000</pubDate>
<guid>http://www.blogg.org/blog-35573-billet-276223.html</guid>
</item>
</channel>
</rss>
