
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Waanser &#187; WEB 2.0</title>
	<atom:link href="http://www.waanser.com/category/web-20/feed" rel="self" type="application/rss+xml" />
	<link>http://www.waanser.com</link>
	<description>Un blog utilisant WordPress</description>
	<lastBuildDate>Wed, 07 Jul 2010 21:54:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Web-Service en SOAP avec php</title>
		<link>http://www.waanser.com/web-20/2346-web-service-en-soap-avec-php.html</link>
		<comments>http://www.waanser.com/web-20/2346-web-service-en-soap-avec-php.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 20:10:23 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[WEB 2.0]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=2346</guid>
		<description><![CDATA[Dans cet article, nous allons apprendre à faire notre premier web-service SOAP en 15 minutes top chrono ! Pour suivre, il est indispensable d&#8217;utiliser eclipse, car celui-ci possède un mode graphique pour la création de web-service qui va nous faciliter la vie. Le fonctionnement Avant toutes choses, je vais vous expliquer rapidement le fonctionnement d&#8217;un [...]]]></description>
			<content:encoded><![CDATA[<p>Dans cet article, nous allons apprendre à faire notre premier web-service SOAP en 15 minutes top chrono !</p>
<p>Pour suivre, il est indispensable d&#8217;utiliser eclipse, car celui-ci possède un mode graphique pour la création de web-service qui va nous faciliter la vie.</p>
<h2>Le fonctionnement</h2>
<hr/>
 Avant toutes choses, je vais vous expliquer rapidement le fonctionnement d&#8217;un Web-Service.</p>
<p>Vous savez certainement qu&#8217;un <span style="color:green"> Web-Service est un programme qui permet la communication et l&#8217;échange de données entre des applications et des systèmes totalement différents.</span><br/> <br/>Pour que le Web-Service puisse communiquer avec n&#8217;importe quels systèmes, il faut utiliser un même format de données.  Pour nous, ça sera le <span style="color:blue"> <strong>SOAP</strong></span>(c&#8217;est un protocole procédural basé sur du XML). Dans ce format, il faut aussi bien définir les données qui seront reçues et envoyées par le Web-Service.<br/><br/> Ne vous inquiétez pas si cela vous paraît trop abstrait, on va tout expliquer avec un exemple. <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr/>
Par exemple grâce à Web-Service, on pourrait faire communiquer une application java d&#8217;un téléphone portable avec une application en php. (ça fait rêver &#8230; <img src='http://www.waanser.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> )</p>
<p>Voici une petite illustration du fonctionnement de ce Web-Service :<br />
<br/><br />
<strong>Première étape : </strong><br />
 L&#8217;application java va faire appel au web-service en envoyant un message <strong>WSDL </strong>(en SOAP).<br />
<br/><br />
<a href="http://media.waanser.com/2009/11/etape1.jpg"><img src="http://media.waanser.com/2009/11/etape1.jpg" alt="etape1" title="etape1" width="718" height="196" class="alignnone size-full wp-image-2351" /></a></p>
<hr/>
<strong>Deuxième étape : </strong><br />
Le serveur de Web-Service reçoit la demande, effectue un traitement en fonction de celui-ci et renvoie la réponse dans un format <strong>WSDL</strong>.<br />
<br/><br/></p>
<p><a href="http://media.waanser.com/2009/12/etape2.jpg"><img src="http://media.waanser.com/2009/11/etape2.jpg" alt="SOAP PHP" title="etape2" width="680" height="175" class="size-full wp-image-2354" /></a><br />
<br/><br />
Qui avait dit que c&#8217;était compliqué les web-service <img src='http://www.waanser.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ?<br />
<br/><br />
Fini la théorie passons à la pratique, nous allons faire un Web-Service qui nous donne le jour en fonction de la date que l&#8217;on envoie.</p>
<h2>Création du wsdl</h2>
<hr/>
Par exemple, on envoie le 13/11/2009 et le web-service nous renverra vendredi. Si on fait un schéma, cela va donner ça.<br />
<br/></p>
<p><a href="http://media.waanser.com/2009/11/soapws.jpg"><img src="http://media.waanser.com/2009/11/soapws.jpg" alt="soapws" title="soapws" width="721" height="314" class="alignnone size-medium wp-image-2361" /></a></p>
<p>Nous allons créer un nouveau projet que nous appellerons <strong>MonWebService </strong>(il n&#8217;y a pas plus clair ^^).<br />
<br/><br />
On va commencer par faire <strong>le format WSDL </strong>(fichier soap) de notre web service.</p>
<hr/>
<p><a href="http://media.waanser.com/2009/12/ws11.jpg"><img src="http://media.waanser.com/2009/12/ws11-300x247.jpg" alt="ws11" title="ws11" width="300" height="247" class="alignnone size-medium wp-image-2372" /></a><br />
<br/><br />
On le nomme <strong>monFormat.wsdl</strong></p>
<p>Pour nous aider, Eclipse nous construit automatiquement un format wsdl par défaut, nous allons le reprendre et le paramétrer. Mais avant tout, je vais vous parler rapidement de l&#8217;interface. <br/></p>
<hr/><br/><br />
En bas à Gauche, vous avez remarqué 2 onglets :<br />
 &nbsp;&nbsp;&nbsp;&nbsp;<strong>Desing </strong>=> l&#8217;interface<br />
 &nbsp;&nbsp;&nbsp;&nbsp;<strong>Source </strong>=> le format wsdl que l&#8217;interface génère<br />
Rassurez vous, nous aurons pas à toucher au fichier source, on va créer notre format <strong>wsdl </strong>seulement avec l&#8217;interface <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br/><br />
Vous devriez voir ça, normalement :</p>
<hr/>
<p><a href="http://media.waanser.com/2009/12/ws3.jpg"><img src="http://media.waanser.com/2009/12/ws3.jpg" alt="eclipse affichage defaut wsdl soap webservice" title="ws3" width="600" height="100" class="size-medium wp-image-2381" /></a></p>
<p>C&#8217;est avec la boîte à gauche que l&#8217;on définit l&#8217;adresse du serveur du web-service ( c&#8217;est là où tout le traitement php va se faire), Dans le champ de saisie, il faudra mettre : <strong>http://localhost/MonWebService/serveur.php</strong></p>
<hr/>
A droite, ce sont les <strong>différents services</strong> (ou opérations) que le web-service propose.<br/><br />
Dans notre exemple, nous proposons qu&#8217;un seul service. On va l&#8217;appeler <strong>QuelJour</strong>.<br />
Le nom de l&#8217;opération par défaut est <strong>NewOperation </strong>en double cliquant dessus on peut le renommer.<br/><br />
C&#8217;est d&#8217;ailleurs  ce que l&#8217;on va faire en le renommant <strong>QuelJour</strong>.</p>
<hr/>
Juste en dessous, on voit 2 lignes :</p>
<p><strong>Input </strong>qui représente les données que va recevoir le Web-Service<br />
<strong>Output </strong>qui représente les données que va envoyer le Web-Service<br />
<br/><br />
Tout le monde suit ? <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr/>
Nous allons définir le paramètre d&#8217;entrée. </p>
<p>En entrée, on aura besoin d&#8217;une <strong>chaine de caractère(string)</strong>.<br />
Pour se faire, on fait un clique droit sur case la plus à droite de la <strong>ligne input</strong>, dans le menu contextuel<br />
On clique sur <strong>Set Type</strong> puis<strong> Existing Type</strong> et là on sélectionne <strong>string</strong>.<br />
<br/><br />
On réitère cette opération pour le paramètre de sortie.</p>
<hr/>
Ce qui va donner :<br />
<a href="http://media.waanser.com/2009/12/w2.jpg"><img src="http://media.waanser.com/2009/12/w2.jpg" alt="webservice wsdl interface eclipse" title="w2" width="600" height="100" class="size-medium wp-image-2374" /></a><br />
<br/><br />
Voilà nous avons définit notre format de web service !</p>
<hr/>
<h2>Du serveur au client</h2>
<p>On va s&#8217;attaquer à notre serveur, préparez vos doigts ça va coder !</p>
<p>On va le nommer<strong> serveur.php</strong><br />
<span style="color:red">Attention</span>, le chemin de votre fichier doit être le même que celui que vous avez paramétré dans votre web-service. <br/><br />
Ex : <span style="color:green">http://localhost/MonWebService/serveur.php</span> => <span style="color:green">C:\wam\www\MonWebService\serveur.php</span></p>
<p>Voici le code source, les commentaires parlent d&#8217;eux-même :<br />
<br/></p>
<pre class="brush: php">
// Pour supprimer le cache du web-service
ini_set(&#039;soap.wsdl_cache_enabled&#039;, 0);
// Pour définir le temp maximal d&#039;éxecution de notre web-service
ini_set(&#039;default_socket_timeout&#039;, 180);

// Nom de notre web-service
class Server {
     // Le service QuelJour que l&#039;on a définit dans notre format wsdl
    function QuelJour($parm) {
    	return &#039;Web-Service ok&#039;;
    }
}
// On tente d&#039;instancier la classe soapServer
// Si cela s&#039;avère impossible, on affiche une erreur
try {
    $server = new SoapServer(&#039;monFormat.wsdl&#039;,  array(&#039;trace&#039; =&gt; 1,&#039;encoding&#039;	=&gt; &#039;ISO-8859-1&#039;));
    // On définit la classe qui va gérer les requêtes SOAP (pour nous c&#039;est la class Server)
    $server -&gt; setclass(&#039;Server&#039;);
    $server-&gt;setPersistence(SOAP_PERSISTENCE_REQUEST);
} catch (Exception $e) {
    echo &#039;erreur&#039;.$e;
}
// Si l&#039;appel provient d&#039;un Web-Service
if ($_SERVER[&#039;REQUEST_METHOD&#039;] == &#039;POST&#039;) {
	try {
		$server -&gt; handle();}
	catch (Exception $e) {
    echo &#039;erreur&#039;.$e;
	}
}
// Facultatif seulement pour montrer les fonctions disponibles par le web-service
else {
    echo &#039;&lt;strong&gt;This SOAP server can handle following functions : &lt;/strong&gt;&#039;;
    echo &#039;&lt;ul&gt;&#039;;
    foreach($server -&gt; getFunctions() as $func) {
        echo &#039;&lt;li&gt;&#039; , $func , &#039;&lt;/li&gt;&#039;;
    }
    echo &#039;&lt;/ul&gt;&#039;;
}
</pre>
<p><br/><br />
Si tout se passe bien et si on se rend sur cette adresse :</p>
<p>http://localhostMonWebService/serveur.php</p>
<p><br/><br />
On devrait voir :<br />
<img src="http://media.waanser.com/2009/12/ws4.jpg" alt="web service php serveur soap wsdl" title="ws4" width="449" height="82" class="size-full wp-image-2385" /></a><br />
<br/><br />
Tout marche ? On est trop fort \o/</p>
<hr/>
Pour l&#8217;instant, on va juste afficher un message qui indique que le web-service fonctionne bien. (eh oui, on commence simple pour faire plus compliquer ensuite <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )<br />
<br/><br />
Côté client, nous allons créer un fichier <strong>client.php</strong></p>
<pre class="brush: php">
// Pour supprimer le cache du web-service
ini_set(&#039;soap.wsdl_cache_enabled&#039;, 0);

// Nouveau Client SOAP
try {
    // Nouvelle instance de la classe soapClient
   $client = new SoapClient(&#039;http://localhost/MonWebService/monFormat.wsdl&#039;, array(&#039;trace&#039; =&gt; 1));
   $parm = date(&#039;Y-m-d&#039;);
    // Appel de la méthode QuelJour du service web
   try{
    $oReturn =  $client -&gt; __soapCall(&#039;QuelJour&#039;, array(&#039;string&#039; =&gt;$parm));
	} catch (SoapFault $fault) {
    	trigger_error(&quot;SOAP Fault: (faultcode: {$fault-&gt;faultcode}, faultstring: {$fault-&gt;faultstring})&quot;, E_USER_ERROR);
	}
        // affiche le résultat
	var_dump($oReturn);
} catch (SoapFault $fault) {
    echo &#039;erreur : &#039;.$fault;
}
</pre>
<hr/>
On a plus qu&#8217;à se rendre sur <strong>http://localhostMonWebService/client.php</strong> pour voir notre message.<br />
<br/><br />
Eh voilà la mécanique est en place, on va pouvoir améliorer notre web-service, mais là on ne va rien apprendre, ce n&#8217;est que du php <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
<br/><br />
On va revenir sur notre serveur (fichier <strong>serveur.php</strong>), dans la fonction <strong>QuelJour</strong><br />
pour traiter la chaîne en paramètre.<br />
<br/><br />
Notre fonction va donc devenir : </p>
<pre class="brush: php">
    function QuelJour($parm) {
    	$aJour[1] = &#039;Lundi&#039;;
    	$aJour[2] = &#039;Mardi&#039;;
    	$aJour[3] = &#039;Mercredi&#039;;
    	$aJour[4] = &#039;Jeudi&#039;;
    	$aJour[5] = &#039;Vendredi&#039;;
    	$aJour[6] = &#039;Samedi&#039;;
    	$aJour[0] = &#039;Dimanche&#039;;
    	return $aJour[date(&quot;w&quot;,strtotime($parm))];
    }
</pre>
<hr/>
<h2>Debugger un web-service</h2>
<p>Le debugage d&#8217;un web-service est toujours difficile. Le client interprète directement la réponse du web-service et si la réponse n&#8217;est pas correctement formaté (qui ne respecte pas le format wsdl du web-service), il affiche une erreur du type : <br/><br />
<span style="color:red">( ! ) Fatal error: SOAP Fault: (faultcode: Client, faultstring: looks like we got no XML document) in /var/www/MonWebService/client.php on line 17 Call Stack #TimeMemoryFunctionLocation 10.000158584{main}( )../client.php:0 20.002180708trigger_error ( )../client.php:17</span></p>
<hr/>
Mais il ne renvoie pas l&#8217;erreur php du serveur. Je suis d&#8217;accord avec vous, ce n&#8217;est pas facile la vie d&#8217;un développeur :&#8217;(<br />
Pour savoir, ce que renvoie exactement le serveur, nous allons utiliser l&#8217;application <strong>SOAPUI</strong><br />
<br/><br />
Une fois installée, vous allez créer un projet. Pour ceci vous allez dans<br />
<strong>File </strong>→ <strong>New soapUIProject</strong>.</p>
<hr/>
Là, une fenêtre apparaît, vous cliquez sur parcourir (browse&#8230;), vous sélectionnez votre fichier wsdl<br />
(<strong>monFormat.wsdl</strong>) puis <strong>OK</strong>.<br/><br />
<a href="http://media.waanser.com/2009/12/ws5.jpg"><img src="http://media.waanser.com/2009/12/ws5.jpg" alt="web service xsql soapui" title="ws5" width="180" height="47" class="size-full wp-image-2390" /></a></p>
<hr/>
Dans le menu <strong>projects</strong>, vous déroulez votre arborescence <strong>monformat </strong> jusqu&#8217;à voir le nom de la fonction que vous voulez tester, (pour nous c&#8217;est <strong>Queljour</strong>).<br/><br />
Clique droit puis<strong> New Request</strong> et SoapUI créer votre interface pour communiquer avec les web-service.<br />
<br/><br />
Si vous avez bien suivit, voila ce que vous devriez voir :<br />
<br/><br />
<a href="http://media.waanser.com/2009/12/ws6.jpg"><img src="http://media.waanser.com/2009/12/ws6.jpg" alt="webservice debug entete http" title="ws6" width="650" height="90" class="size-full wp-image-2391" /></a><br/><br />
Vous avez plus qu&#8217;à faire les tests et récupérer directement le résultat du web service. </p>
<p><strong>Les erreurs : </strong><br />
<br/><br />
Pendant le développement de différents de web-services, je suis tombé sur des erreurs de toute part, malheureusement je ne les ai pas tous mémorisé mais voici un début de liste qui pourrait vous aider. Si vous aussi vous êtes embétez un petit commentaire et on pourra certainement vous aider. <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr/>
SoapFault exception: [HTTP] Not Found in /var/www/lab/customer.php:10 Stack trace: #0 [internal function]: SoapClient->__doRequest(&#8216;__call(&#8216;getServerDate&#8217;, Array) #2 {main}<br />
=> wsdl trouve pas le serveur</p>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/web-20/2346-web-service-en-soap-avec-php.html/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>OpenID</title>
		<link>http://www.waanser.com/web-20/409-php-openid-api.html</link>
		<comments>http://www.waanser.com/web-20/409-php-openid-api.html#comments</comments>
		<pubDate>Fri, 16 Jan 2009 14:02:18 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[WEB 2.0]]></category>
		<category><![CDATA[norme]]></category>
		<category><![CDATA[standard]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=409</guid>
		<description><![CDATA[Avec tous ces sites web, NOUS internautes sommes obligés d&#8217;accumuler une multitude de comptes. Le problème, c&#8217;est qu&#8217;avec tous ces identifiants nous sommes vite déboussolés&#8230;. L&#8217;openID a l&#8217;ambition de résoudre ce souci en attachant une adresse unique à chaque internaute qui pourra l&#8217;identifier et l&#8217;utiliser sur tous les sites. Nous allons voir le fonctionnement de [...]]]></description>
			<content:encoded><![CDATA[<p>Avec tous ces sites web, NOUS internautes sommes obligés d&#8217;accumuler une multitude de comptes. Le problème, c&#8217;est qu&#8217;avec tous ces identifiants nous sommes vite déboussolés&#8230;.<br />
L&#8217;openID a l&#8217;ambition de résoudre ce souci en attachant une adresse unique à chaque internaute qui pourra l&#8217;identifier et l&#8217;utiliser sur tous les sites. </p>
<p>Nous allons voir le fonctionnement de l&#8217;OpenID ainsi que les méthodes pour l&#8217;intégrer dans nos pages.<span id="more-409"></span></p>
<h2>Fonctionnement de l&#8217;OpenID</h2>
<ol>
<li>Vous allez sur votre site favori qui utilise l&#8217;OpenID.</li>
<li>Vous vous connectez en utilisant vos identifiants OpenID.</li>
<li>Il vérifie vos identifiants en allant sur votre page web OpenID.</li>
<li>Il vous connecte.</ol>
</ol>
<div id="attachment_414" class="wp-caption alignnone" style="width: 610px"><img src="http://media.waanser.com/2009/01/ex_open_id.png" alt="OpenId" title="ex_open_id" width="600" height="100" class="size-full wp-image-414" /><p class="wp-caption-text">OpenId</p></div>
<h2>Comment avoir un compte OpenID ?</h2>
<p>Il faut se connecter sur <a href="https://www.myopenid.com">www.myopenid.com</a> et créer un compte.</p>
<p>Vous aurez alors une adresse du type http://<em>votrecompte</em>.myopenid.com/</p>
<p>Il faut la conserver précieusement, c&#8217;est votre adresse OpenID <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<h2>Se connecter sur un site via OpenID</h2>
<p>Nous allons nous inscrire à pibb.com (c&#8217;est un site qui permet de gérer une plate forme de communication privée entre utilisateurs) en utilisant notre identifiant OpenId. </p>
<p>On va se rendre sur leur <a href="https://pibb.com/signin">site</a>, pour enregistrer notre openID.</p>
<p>Là, vous inscrivez votre adresse OpenID, comme ceci :<br />
<div id="attachment_432" class="wp-caption alignnone" style="width: 381px"><img src="http://media.waanser.com/2009/01/openid_sign.png" alt="OpenId" title="openid_sign" width="371" height="78" class="size-full wp-image-432" /><p class="wp-caption-text">OpenId</p></div></p>
<p>Un message de confirmation vous sera adressé.</p>
<div id="attachment_435" class="wp-caption alignnone" style="width: 486px"><img src="http://media.waanser.com/2009/01/openid_continue.png" alt="OpenId" title="openid_continue" width="476" height="75" class="size-full wp-image-435" /><p class="wp-caption-text">OpenId</p></div>
<p>ça y est vous êtes inscrit <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Si vous retournez dans votre site myopenid, vous verrez en bas de la page d&#8217;accueil un rapport<br />
d&#8217;activité. (très utile pour se souvenir des sites où nous nous sommes inscrits)</p>
<div id="attachment_467" class="wp-caption alignnone" style="width: 500px"><img src="http://media.waanser.com/2009/01/openid_activite1.png" alt="openid" title="openid_activite1" width="490" height="171" class="size-full wp-image-467" /><p class="wp-caption-text">openid</p></div>
<h2>Sécurité</h2>
<p>Il est bien évident qu&#8217;il faut être vigilant, lorsque l&#8217;on s&#8217;inscrit, il faut toujours privilégier l&#8217;openID<br />
sur des sites connus (comme le mien :p).  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/web-20/409-php-openid-api.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microformats ou le web sémantique</title>
		<link>http://www.waanser.com/web-20/225-microformats-ou-le-web-semantique.html</link>
		<comments>http://www.waanser.com/web-20/225-microformats-ou-le-web-semantique.html#comments</comments>
		<pubDate>Mon, 12 Jan 2009 18:57:13 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[WEB 2.0]]></category>
		<category><![CDATA[norme]]></category>
		<category><![CDATA[plug-in]]></category>
		<category><![CDATA[sémantique]]></category>
		<category><![CDATA[standard]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=225</guid>
		<description><![CDATA[Conçus initialement pour des humains et ensuite pour les machines, les microformats sont un ensemble de formats de données, simples et ouverts, construits sur des standards existants et largement adoptés. Mais à quoi cela sert réellement ? A ajouter de la sémantique à votre site internet. En plus de l&#8217;information qu&#8217;affiche vos pages webs, les [...]]]></description>
			<content:encoded><![CDATA[<p>Conçus initialement pour des humains et ensuite pour les machines, les microformats sont un ensemble de formats de données, simples et ouverts, construits sur des standards existants et largement adoptés.<span id="more-225"></span></p>
<h2>Mais à quoi cela sert réellement ?</h2>
<p>A ajouter de la sémantique à votre site internet. En plus de l&#8217;information qu&#8217;affiche vos pages webs, les microformats vont donner un sens à leurs contenus. Certains sites l&#8217;ont adoptés, et cela donne des résultats assez impressionnant :</p>
<p><strong>Flickr</strong> : si vous regardez une photo géolocalisée, on peut ouvrir Google maps à l’endroit où la photo a été prise.<br />
Aussi si une carte de contact (format hCard) est disponible sur la page web, on peut aussi l&#8217;ajouter dans votre carnet d&#8217;adresse Yahoo ou de télécharger le fichier .vcf correspondant;</p>
<h2>Comment lire les microformats ?</h2>
<p>En passant par le navigateur Firefox vous pouvez installer le plug-in <a href="https://addons.mozilla.org/fr/firefox/addon/4106">Operator</a> ou <a href="https://addons.mozilla.org/fr/firefox/addon/2240">Tails Export</a> qui sont actuellement les meilleurs sur le marché.</p>
<h2>Création d&#8217;une vcard avec les microformats</h2>
<p>L&#8217;intégration des microformats est très intuitive, vous allez voir ça avec cet exemple ;<br />
nous allons afficher les informations d&#8217;une personne, on va l&#8217;appeler Wilfried Tartenpion. En plus nous allons attacher à ces informations une vcard de façon transparente.</p>
<p><strong>Comment on va procéder ?</strong></p>
<p>En utilisant simplement le html, avec les balises class des conteneur &lt;div&gt; ou &lt;span&gt;.<br />
Pour indiquer au navigateur que le contenu est la représentation d&#8217;une vcard,<br />
il faut nommer créer un conteneur dont la classe est vcard, soit</p>
<pre class="brush: html">
&lt;div class=&quot;vcard&quot;&gt;
&lt;/div&gt;
</pre>
<p>Après pour indiquer à la vcard le nom est le prénom il faut utiliser la classe &laquo;&nbsp;<strong>fn n</strong>&laquo;&nbsp;.<br />
Et si on veut préciser le prénom et le nom il faut utiliser la classe &laquo;&nbsp;<strong>given-name</strong>&nbsp;&raquo; pour le prénom et &laquo;&nbsp;<strong>family-name</strong>&nbsp;&raquo; pour le nom.<br />
Enfin pour iniquer l&#8217;adresse mail, il faut utiliser la classe &laquo;&nbsp;<strong>email</strong>&laquo;&nbsp;.</p>
<p>Ce qui donne :</p>
<pre class="brush: html">
&lt;div class=&quot;vcard&quot;&gt;
&lt;span class=&quot;fn n&quot; lang=&quot;fr&quot;&gt;
&lt;span class=&quot;given-name&quot;&gt;Wilfried&lt;/span&gt;
&lt;span class=&quot;family-name&quot;&gt;Tartenpion&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;email&quot;&gt;wilfried.tartenpion@waanser.com&lt;/span&gt;
&lt;/div&gt;
</pre>
<p>Le rendu html :</p>
<div class="vcard">
<span class="fn n" lang="fr"><br />
<span class="given-name">Wilfried</span><br />
<span class="family-name">Tartenpion</span><br />
</span><span class="email">wilfried.tartenpion@waanser.com</span>
</div>
<p> </p>
<h2>Les microformats avec Operator ou Tails Export</h2>
<p>Maintenant regardez les microformats de cette page à travers Operator ou Tails Export</p>
<div id="attachment_348" class="wp-caption alignnone" style="width: 481px"><img class="size-full wp-image-348" title="microformats1" src="http://media.waanser.com/2009/01/microformats1.png" alt="microformats tails export et operator" width="471" height="402" /><p class="wp-caption-text">microformats tails export et operator</p></div>
<p>Pour <strong>Operator</strong>, l&#8217;onglet Contacts devrait afficher le contact Wilfried Tartenpion.</p>
<div id="attachment_351" class="wp-caption alignnone" style="width: 356px"><img class="size-full wp-image-351" title="operator" src="http://media.waanser.com/2009/01/operator.png" alt="operator" width="346" height="80" /><p class="wp-caption-text">operator</p></div>
<p>Pour <strong>Tails Export</strong>, un menu contextuel devrait s&#8217;afficher juste à droite. Dedans, normalement vous devriez voir<br />
une bulle avec les informations sur Wilfried Tartenpion.</p>
<div id="attachment_352" class="wp-caption alignnone" style="width: 264px"><img class="size-full wp-image-352" title="tails_export" src="http://media.waanser.com/2009/01/tails_export.png" alt="tails export" width="254" height="122" /><p class="wp-caption-text">tails export</p></div>
<p>Si l&#8217;on clique sur exporter, le navigateur nous propose d&#8217;ouvrir un fichier hCard.vcf. Ceci est est normal, c&#8217;est justement la vcard que l&#8217;on a défini sémantiquement grâce au microformats.</p>
<div id="attachment_355" class="wp-caption alignnone" style="width: 298px"><img class="size-full wp-image-355" title="vcf" src="http://media.waanser.com/2009/01/vcf.png" alt="vcf" width="288" height="223" /><p class="wp-caption-text">vcf</p></div>
<h2>géolocalisation</h2>
<p>Si vous voulez géolocaliser vos contenu (comme une photo) avec des outils comme google map, yahoo map et autre, vous pouvez le faire en utilisant les microformats.</p>
<div class="geo">
<abbr class="latitude" title="37.408183">N 37° 24.491</abbr><br />
<abbr class="longitude" title="-122.13855">W 122° 08.313</abbr>
</div>
<pre class="brush: html">
&lt;div class=&quot;geo&quot;&gt;
&lt;abbr class=&quot;latitude&quot; title=&quot;37.408183&quot;&gt;N 37° 24.491&lt;/abbr&gt;
&lt;abbr class=&quot;longitude&quot; title=&quot;-122.13855&quot;&gt;W 122° 08.313&lt;/abbr&gt;
&lt;/div&gt;
</pre>
<h2>calendrier</h2>
<p>Si vous voulez intégrer un calendrier, voici la syntaxe :</p>
<div class="vevent">
<a class="url" href="http://www.waanser.com/">http://www. waanser.com/</a><br />
<span class="summary">waanser</span>:<br />
<abbr class="dtstart" title="2009-01-25">5 janvier 2009</abbr>-<br />
<abbr class="dtend" title="2009-01-26">26</abbr>,<br />
à <span class="location">Paris</span>
</div>
<pre class="brush: html">
&lt;div class=&quot;vevent&quot;&gt;
&lt;a class=&quot;url&quot; href=&quot;http://www.waanser.com/&quot;&gt;http://www. waanser.com/&lt;/a&gt;
&lt;span class=&quot;summary&quot;&gt;waanser&lt;/span&gt;:
&lt;abbr class=&quot;dtstart&quot; title=&quot;2009-01-25&quot;&gt;5 janvier 2009&lt;/abbr&gt;-
&lt;abbr class=&quot;dtend&quot; title=&quot;2009-01-26&quot;&gt;26&lt;/abbr&gt;,
à &lt;span class=&quot;location&quot;&gt;Paris&lt;/span&gt;
&lt;/div&gt;
</pre>
<p>Attention à respecter le format de date anglophone (année-moi-jour).</p>
<p>Voila, maintenant vous savez rendre le contenu de vos pages webs plus sémantique. <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Il faut juste espérer que les navigateurs fassent l&#8217;effort d&#8217;intégrer les microformats dans leur prochaine version sans que l&#8217;on ai besoin d&#8217;ajouter une extension.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/web-20/225-microformats-ou-le-web-semantique.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

