{"id":5991,"date":"2012-05-13T16:36:54","date_gmt":"2012-05-13T14:36:54","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=5991"},"modified":"2016-08-25T21:59:18","modified_gmt":"2016-08-25T19:59:18","slug":"microdata-html5","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/microdata-html5","title":{"rendered":"Les microdatas en HTML5"},"content":{"rendered":"<p>Microformats, microdata, nouvelle s\u00e9mantique, nouveaux \u00e9l\u00e9ments HTML\u2026 Tant de nouveaut\u00e9s qui perturbent les int\u00e9grateurs web soucieux de se mettre \u00e0 jour dans leurs comp\u00e9tences ou curieux de savoir ce dont ils peuvent d\u00e9j\u00e0 faire usage dans leurs int\u00e9grations.<\/p>\n<p><!--more--><\/p>\n<p>Bien que les microformats existent depuis 5 ou 6 ans, ce n&rsquo;est qu&rsquo;avec l&rsquo;arriv\u00e9e de HTML5 que la profession et les outils sont suffisamment m\u00fbres pour commencer \u00e0 les exploiter r\u00e9ellement. Nous allons essayer de nous concentrer sur les microformats et, surtout, les microdata apport\u00e9es par HTML5.<\/p>\n<h2>Pr\u00e9sentation<\/h2>\n<p>Faisons les pr\u00e9sentations avant de nous attaquer \u00e0 du code.<\/p>\n<p>HTML5 apporte de nombreux nouveaux \u00e9l\u00e9ments qui viennent renforcer le sens des composants de votre page. Les nouveaux \u00e9l\u00e9ments de sectionnement de votre page (section, article, aside, etc.) ainsi que les nouvelles balises (time, figure, figcaption, etc.) permettent un transport d&rsquo;informations non n\u00e9gligeable qui, m\u00eame s&rsquo;il n&rsquo;est pas pleinement exploit\u00e9 pour le moment, l&rsquo;est d\u00e9j\u00e0 en partie par les moteurs de recherche, et le sera certainement davantage par les lecteurs d&rsquo;\u00e9cran ou d&rsquo;autres terminaux dans un avenir proche. (esp\u00e9rons-le tout du moins).<\/p>\n<p>Mais HTML5 est loin de n&rsquo;apporter que du balisage tout brillant et tout neuf, il apporte aussi de nouvelles pi\u00e8ces \u00e0 notre panoplie d&rsquo;int\u00e9grateur web : les microdonn\u00e9es. Ces informations ainsi \u00e9mises par votre code source peuvent \u00eatre utilis\u00e9es par Google &#8211; pour ne citer que le plus utilis\u00e9 &#8211; qui va proposer un affichage dans ce genre :<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-5994\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/rating-geekeries-juiz-admin.png\" alt=\"rating-geekeries-juiz-admin\" width=\"508\" height=\"100\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/rating-geekeries-juiz-admin.png 508w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/rating-geekeries-juiz-admin-300x59.png 300w\" sizes=\"(max-width: 508px) 100vw, 508px\" \/><\/p>\n<p style=\"text-align: center;\">Fil d&rsquo;ariane et note transport\u00e9s par microdonn\u00e9es<\/p>\n<p>Les microformats et les microdonn\u00e9es (de l&rsquo;anglais microdata) sont une mani\u00e8re d&rsquo;apporter un sens \u00e0 certains composants de votre page web. Les deux ont un mode de fonctionnement plus ou moins similaire.<br \/>\nEssayons de les d\u00e9finir au sein de cet article.<\/p>\n<h2>Les microformats<\/h2>\n<p>Le microformat propose une syntaxe qui s&rsquo;apparente \u00e0 du HTML classique et s&rsquo;applique bien en dehors de la norme HTML5 puisqu&rsquo;il est compatible avec HTML4, ou XHTML1.0 par exemple. Il utilise l&rsquo;attribut class et certaines valeurs bien pr\u00e9cises dans le but de \u00ab\u00a0baliser\u00a0\u00bb un contenu afin qu&rsquo;il soit interpr\u00e9t\u00e9 comme une donn\u00e9e bien sp\u00e9cifique.<\/p>\n<p>Voici un exemple de code un peu plus parlant :<\/p>\n<pre class=\"code\"><code class=\"language-markup\">&lt;span class=\"hreview-aggregate\"&gt;\r\n  &lt;span class=\"item\"&gt;\r\n     &lt;span class=\"fn\"&gt;Juiz Smart Mobile Admin&lt;\/span&gt;\r\n  &lt;\/span&gt;\r\n  &lt;span class=\"rating\"&gt;\r\n        Note de :\r\n        &lt;span class=\"average\"&gt;90&lt;\/span&gt; sur\r\n   &lt;span class=\"best\"&gt;100&lt;\/span&gt;\r\n  &lt;\/span&gt;\r\n  bas\u00e9e sur\r\n  &lt;span class=\"count\"&gt;35&lt;\/span&gt; votes.\r\n&lt;\/span&gt;<\/code><\/pre>\n<p>Comme vous pouvez le constater, les microformats n&rsquo;utilisent pas d&rsquo;attribut ou de syntaxe trop complexe, seulement des valeurs de classe bien pr\u00e9cises.<\/p>\n<p>Vous trouverez un bon nombre de donn\u00e9es et d&rsquo;outils sur le site <a href=\"http:\/\/microformats.org\/\" target=\"_blank\">microformats.org<\/a> qui a propos\u00e9 une tentative de codification des pratiques courantes. Microformats.org a ainsi pu r\u00e9unir un certain nombre de \u00ab\u00a0profils\u00a0\u00bb XMPD que vous trouverez directement sur <a href=\"http:\/\/microformats.org\/profile\/\" target=\"_blank\">le wiki microformats<\/a>. En plus de simples valeurs de classe, microformat c&rsquo;est \u00e9galement l&rsquo;utilisation de <a href=\"http:\/\/www.alsacreations.com\/article\/lire\/1400-attribut-rel-relations.html\" target=\"_blank\">l&rsquo;attribut rel<\/a>, c&rsquo;est le format <a href=\"http:\/\/microformats.org\/code\/hcard\/creator\" target=\"_blank\">hCard<\/a>, le format <a href=\"http:\/\/microformats.org\/code\/hcalendar\/creator\" target=\"_blank\">hCalendar<\/a>, etc.<\/p>\n<p>Les microformats ne sont pas un apport de HTML5.<\/p>\n<h2>Les microdonn\u00e9es<\/h2>\n<p>Les microdonn\u00e9es sont repr\u00e9sent\u00e9es par l&rsquo;arriv\u00e9e de nouveaux attributs en HTML5. Il est alors possible de donner la r\u00e9f\u00e9rence du document utilis\u00e9 pour baliser l&rsquo;information directement au sein de l&rsquo;\u00e9l\u00e9ment porteur de ces informations.<\/p>\n<p>J&rsquo;attire votre attention \u00e9galement sur l&rsquo;arriv\u00e9e d&rsquo;un document qui tend \u00e0 devenir une nouvelle r\u00e9f\u00e9rence pour structurer des donn\u00e9es : issu d&rsquo;un consortium entre Google, Bing, Yahoo et Yandex, cette r\u00e9f\u00e9rence est nomm\u00e9e <a href=\"http:\/\/schema.org\/\" target=\"_blank\">schema.org<\/a>. Ce sont d&rsquo;ailleurs les sch\u00e9mas propos\u00e9s par schema.org que j&rsquo;ai d\u00e9cid\u00e9 d&rsquo;utiliser au quotidien et, par cons\u00e9quent, de vous pr\u00e9senter dans cet article.<\/p>\n<h3>Nouveaux attributs<\/h3>\n<p>Il n&rsquo;en existe pas \u00e9norm\u00e9ment.<\/p>\n<ul>\n<li><strong>itemscope<\/strong> : il permet de cr\u00e9er un item dont le type peut-\u00eatre pr\u00e9cis\u00e9 gr\u00e2ce \u00e0 l&rsquo;attribut suivant,<\/li>\n<li><strong>itemtype<\/strong> : coupl\u00e9 \u00e0 itemscope, il accueille une URL vers la r\u00e9f\u00e9rence du sch\u00e9ma (ex : \u00ab\u00a0http:\/\/schema.org\/Review\u00a0\u00bb) qui devra respecter les valeurs de ce sch\u00e9ma,<\/li>\n<li><strong>itemprop<\/strong> : il est porteur d&rsquo;une valeur permettant de pr\u00e9ciser la nature d&rsquo;une donn\u00e9e au sein d&rsquo;un sch\u00e9ma sp\u00e9cifi\u00e9 pr\u00e9c\u00e9demment.<\/li>\n<li><strong>itemref<\/strong> : il permet de faire le lien compl\u00e9mentaire entre deux donn\u00e9es sans descendance.<\/li>\n<li><strong>itemid<\/strong> : lorsque l&rsquo;item poss\u00e8de une r\u00e9f\u00e9rence globale unique, comme par exemple un l&rsquo;identifiant d&rsquo;un livre (urn:isbn:0-xxx-xxxxx-x). Il est attribu\u00e9 en m\u00eame temps que l&rsquo;attribut itemscope.<\/li>\n<\/ul>\n<p>Ces attributs peuvent \u00eatre transport\u00e9s par n&rsquo;importe quel \u00e9l\u00e9ment (souvent des span pour injecter une donn\u00e9e sans mise en forme particuli\u00e8re), bien que certaines exceptions, \u00e9videntes, existent.<\/p>\n<h3>Exemple d&rsquo;une simple revue<\/h3>\n<p>Nous allons nous attarder sur ce sch\u00e9ma et reprendre l&rsquo;exemple pr\u00e9c\u00e9demment mis en place avec les microformats:<\/p>\n<pre class=\"code\"><code class=\"language-markup\">&lt;span itemscope itemtype=\"http:\/\/schema.org\/Review\"&gt;\r\n   &lt;span itemprop=\"itemReviewed\"&gt;Juiz Smart Mobile Admin&lt;\/span&gt;\r\n  &lt;span itemprop=\"reviewRating\"&gt;\r\n    Note de : 90 sur 100\r\n  &lt;\/span&gt;\r\n  bas\u00e9e sur 35 votes.\r\n&lt;\/span&gt;<\/code><\/pre>\n<p>Rendu :<\/p>\n<p>\u00ab\u00a0Juiz Smart Mobile Admin Note de : 90 sur 100 bas\u00e9e sur 35 votes.\u00a0\u00bb<\/p>\n<p>Il est important de noter que l&rsquo;insertion de ces attributs et leurs valeurs n\u2019influe pas sur l\u2019aspect des \u00e9l\u00e9ments.<\/p>\n<p>Ce code va nous permettre de voir une utilisation basique d&rsquo;une revue (<a href=\"http:\/\/schema.org\/Review\" target=\"_blank\">Review<\/a>), qui pour schema.org est un sous-ensemble d&rsquo;un travail cr\u00e9atif (<a href=\"http:\/\/schema.org\/CreativeWork\" target=\"_blank\">CreativeWork<\/a>). Le type de donn\u00e9es transport\u00e9es ici est \u00e0 d\u00e9clarer dans l&rsquo;attribut itemtype du parent et donne l&rsquo;URL vers le schema utilis\u00e9. L&rsquo;attribut itemscope permet de d\u00e9finir l&rsquo;\u00e9l\u00e9ment comme porteur d&rsquo;informations format\u00e9es.<\/p>\n<p>Ensuite, nous utilisons l&rsquo;attribut <code>itemprop<\/code> que nous appliquons \u00e0 des \u00e9l\u00e9ments afin d&rsquo;en d\u00e9finir le sens, en respectant les valeurs fournies par schema.org pour le type que nous utilisons.<\/p>\n<h3>Exemple d&rsquo;une notation imbriqu\u00e9e dans une revue<\/h3>\n<p>Aussi appel\u00e9e <em>Embedded Items<\/em>, l&rsquo;imbrication de diff\u00e9rents types de sch\u00e9ma peut intervenir dans le cas de notre exemple de revue. En effet, notre exemple pr\u00e9c\u00e9dent manque quelque peu de pr\u00e9cision, puisque schema.org pr\u00e9voit \u00e9galement un type de sch\u00e9ma pour les \u00e9valuations (<a href=\"http:\/\/schema.org\/AggregateRating\" target=\"_blank\">AggregateRating<\/a>).<\/p>\n<p>Compl\u00e9tons notre code pr\u00e9c\u00e9dent :<\/p>\n<pre class=\"code\"><code class=\"language-markup\">&lt;div itemscope itemtype=\"http:\/\/schema.org\/Review\"&gt;\r\n   &lt;h1 itemprop=\"itemReviewed\"&gt;Juiz Smart Mobile Admin&lt;\/h1&gt;\r\n   &lt;!-- Imbrication d\u2019un item --&gt;\r\n   &lt;p itemprop=\"reviewRating\" itemscope itemtype=\"http:\/\/schema.org\/AggregateRating\"&gt;\r\n         Note de :\r\n         &lt;span itemprop=\"ratingValue\"&gt;90&lt;\/span&gt; sur\r\n         &lt;span itemprop=\"bestRating\"&gt;100&lt;\/span&gt;\r\n\r\n      bas\u00e9e sur\r\n      &lt;span itemprop=\"ratingCount\"&gt;35&lt;\/span&gt; votes.\r\n   &lt;\/p&gt;\r\n   &lt;!-- \/ fin de l\u2019imbrication --&gt;\r\n   &lt;p itemprop=\"reviewBody\"&gt;\r\n   Ce plugin propos\u00e9 pour optimiser l'interface d'administration de[\u2026]\r\n   &lt;\/p&gt;\r\n&lt;\/div&gt;<\/code><\/pre>\n<p>Rendu :<\/p>\n<p>\u00ab\u00a0Juiz Smart Mobile Admin<br \/>\nNote de : 90 sur 100 bas\u00e9e sur 35 votes.<br \/>\nCe plugin propos\u00e9 pour optimiser l&rsquo;interface d&rsquo;administration de[\u2026]\u00a0\u00bb<\/p>\n<p>J&rsquo;ai pris le soin de remplacer certains \u00e9l\u00e9ments pour vous illustrer le fait que les attributs peuvent \u00eatre plac\u00e9s sur n&rsquo;importe quels \u00e9l\u00e9ments, ce qui influe sur la mise en page mais pas sur la mani\u00e8re de transporter les informations.<\/p>\n<p>Ici, vous pouvez rep\u00e9rer un deuxi\u00e8me jeu itemscope\/itemtype inclus dans l&rsquo;itemtype <em>Review<\/em>. \u00c0 partir du moment o\u00f9 vous cr\u00e9ez une nouvelle d\u00e9claration de type, le moteur de recherche sait qu&rsquo;il n&rsquo;a plus \u00e0 traiter le premier type (partie du code entre les deux commentaires HTML), mais le second d\u00e9clar\u00e9 (autres parties du code), tant qu&rsquo;il se trouve dans l&rsquo;\u00e9l\u00e9ment porteur de ce type. D\u00e8s qu&rsquo;il en sort (ici d\u00e8s qu&rsquo;il sort du premier paragraphe) il revient dans l&rsquo;analyse du type parent.<\/p>\n<p>Autrement dit, dans la div parente, nous utilisons un type <em>Review<\/em>, tous les itemprop ont donc des valeurs autoris\u00e9es par le sch\u00e9ma de ce type. Le premier paragraphe, qui pr\u00e9cise un nouveau type (<em>AggregateRating<\/em>) poss\u00e8de des span qui sont porteurs d&rsquo;itemprop dont les valeurs autoris\u00e9es sont celles du nouveau sch\u00e9ma d\u00e9clar\u00e9. Lorsqu&rsquo;on sort de ce paragraphe, l&rsquo;analyse porte sur le premier type d\u00e9clar\u00e9 (<em>Review<\/em>).<\/p>\n<h2>Cr\u00e9ation d&rsquo;une fiche recette<\/h2>\n<p>Pour vous habituer \u00e0 jongler avec les donn\u00e9es et les techniques de schema.org, nous allons voir deux autres exemples dont la cr\u00e9ation d&rsquo;une fiche de recette. Cet exemple est id\u00e9al car il est illustr\u00e9 directement dans Google.<\/p>\n<p><a href=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/google-seo-recette.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-5992\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/google-seo-recette.png\" alt=\"google-seo-recette\" width=\"542\" height=\"129\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/google-seo-recette.png 542w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/google-seo-recette-300x71.png 300w\" sizes=\"(max-width: 542px) 100vw, 542px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">Recette d&rsquo;une tarte au kiwi. On voit clairement la dur\u00e9e et la photo de la recette.<\/p>\n<p>Vous ne connaissez pas forc\u00e9ment les termes employ\u00e9s par schema.org, alors un petit coup de \u00ab\u00a0cook\u00a0\u00bb dans le formulaire de recherche du site et la fiche technique <a href=\"http:\/\/schema.org\/Recipe\" target=\"_blank\">Recipe<\/a> sort dans les r\u00e9sultats.<\/p>\n<p>Une bonne m\u00e9thodologie consiste \u00e0 cr\u00e9er votre structure avec les informations que vous avez dans un premier temps ; dans un second temps, ajoutez les attributs item* lorsque schema.org le pr\u00e9voit. Il est possible de pr\u00e9ciser certains types de donn\u00e9es en imbriquant un item d&rsquo;un certain type dans un autre item d&rsquo;un autre type.<\/p>\n<pre class=\"code\"><code class=\"language-markup\">&lt;div itemscope itemtype=\"http:\/\/schema.org\/Recipe\"&gt;\r\n  &lt;h1 itemprop=\"name\"&gt;Recette d'une Tarte au Kiwi&lt;\/h1&gt;\r\n  &lt;p&gt;\r\n    &lt;img itemprop=\"image\" src=\"tarte-kiwi.jpg\" alt=\"\" \/&gt;\r\n    Recette propos\u00e9e par &lt;span itemprop=\"author\"&gt;Greg&lt;\/span&gt;,\r\n    le &lt;meta itemprop=\"datePublished\" content=\"2012-02-08\"&gt;8 f\u00e9vrier 2012 -\r\n    Not\u00e9e\r\n            &lt;!-- Imbrication d\u2019un item AggregateRating --&gt;\r\n    &lt;span itemprop=\"aggregateRating\" itemscope itemtype=\"http:\/\/schema.org\/AggregateRating\"&gt;\r\n      &lt;span itemprop=\"ratingValue\"&gt;4&lt;\/span&gt;\/&lt;span itemprop=\"bestRating\"&gt;5&lt;\/span&gt;\r\n    &lt;\/span&gt;\r\n            &lt;!-- \/ fin de l\u2019imbrication --&gt;\r\n    avec &lt;span itemprop=\"comment\"&gt;35&lt;\/span&gt; avis.\r\n  &lt;\/p&gt;\r\n  &lt;p itemprop=\"description\"&gt;\r\n    D\u00e9licieuse, cette tarte d'hiver \u00e9moustille les papilles.\r\n    Toute simple, elle est \u00e0 la port\u00e9e des novices en cuisine. Succ\u00e8s garanti !\r\n  &lt;\/p&gt;\r\n\r\n  &lt;h2&gt;Informations&lt;\/h2&gt;\r\n\r\n  &lt;h3&gt;Dur\u00e9es&lt;\/h3&gt;\r\n  &lt;p&gt;\r\n    Dur\u00e9e de pr\u00e9paration : &lt;meta itemprop=\"prepTime\" content=\"PT15M\"&gt;15 mn&lt;\/span&gt;&lt;br \/&gt;\r\n    Dur\u00e9e de cuisson : &lt;meta itemprop=\"cookTime\" content=\"PT25M\"&gt;25 mn&lt;\/span&gt;&lt;br \/&gt;\r\n    Dur\u00e9e totale : &lt;meta itemprop=\"totalTime\" content=\"PT40M\"&gt;40 mn\r\n  &lt;\/p&gt;\r\n\r\n  &lt;h3&gt;Nutrition&lt;\/h3&gt;\r\n&lt;!-- Imbrication d\u2019un item NutritionInformation --&gt;\r\n  &lt;p itemprop=\"nutrition\" itemscope itemtype=\"http:\/\/schema.org\/NutritionInformation\"&gt;\r\n    &lt;span itemprop=\"calories\"&gt;240 calories&lt;\/span&gt;\r\n  &lt;\/p&gt;\r\n&lt;!-- \/fin de l\u2019imbrication --&gt;\r\n\r\n  &lt;h2&gt;Ingr\u00e9dients&lt;\/h2&gt;\r\n  &lt;ul&gt;\r\n    &lt;li itemprop=\"ingredients\"&gt;1 p\u00e2te feuillet\u00e9e&lt;\/li&gt;\r\n    &lt;li itemprop=\"ingredients\"&gt;350 g de kiwis&lt;\/li&gt;\r\n    &lt;li itemprop=\"ingredients\"&gt;125 g de cr\u00e8me liquide&lt;\/li&gt;\r\n    &lt;li itemprop=\"ingredients\"&gt;1 jaune d'oeuf&lt;\/li&gt;\r\n    &lt;li itemprop=\"ingredients\"&gt;2 cuill\u00e8res \u00e0 caf\u00e9 de cassonade&lt;\/li&gt;\r\n    &lt;li itemprop=\"ingredients\"&gt;30 g de sucre semoule&lt;\/li&gt;\r\n  &lt;\/ul&gt;\r\n\r\n  &lt;h2&gt;Instructions&lt;\/h2&gt;\r\n  &lt;ol itemprop=\"recipeInstructions\"&gt;\r\n    &lt;li&gt;Pr\u00e9chauffez le four \u00e0 220\u00b0C.&lt;\/li&gt;\r\n    &lt;li&gt;D\u00e9roulez la p\u00e2te toute pr\u00eate et posez-la avec son papier dans un moule \u00e0 tarte.&lt;\/li&gt;\r\n    [\u2026]\r\n  &lt;\/ol&gt;\r\n\r\n&lt;\/div&gt;<\/code><\/pre>\n<p>Ce code peut sembler complexe, mais il s&rsquo;agit d&rsquo;une base structurelle pour la cr\u00e9ation d&rsquo;une fiche recette sur laquelle on a simplement ajout\u00e9 des m\u00e9tadonn\u00e9es.<\/p>\n<p>Comme vous pouvez le voir, nous avons commenc\u00e9 par d\u00e9clarer un item de type <em>Recipe<\/em> repr\u00e9sent\u00e9 dans la premi\u00e8re partie du code. Puis \u00e0 l&rsquo;int\u00e9rieur nous avons souhait\u00e9 \u00e9tendre les informations sur la notation de la recette en d\u00e9clarant un nouvel item de type <em>AggregateRating<\/em> repr\u00e9sent\u00e9 entre les premiers commentaires HTML. Enfin, plus loin, nous avons \u00e9tendu les informations nutritionnelles en d\u00e9clarant un nouveau type imbriqu\u00e9 nomm\u00e9 <em>NutritionInformation<\/em> repr\u00e9sent\u00e9 entre les seconds commentaires HTML.<\/p>\n<p>Cette imbrication est possible lorsque le schema le pr\u00e9voit, l&rsquo;information est ainsi repr\u00e9sent\u00e9e :<\/p>\n<p><a href=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/recipe-microdata.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-5995\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/recipe-microdata.png\" alt=\"recipe-microdata\" width=\"756\" height=\"145\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/recipe-microdata.png 756w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/recipe-microdata-300x58.png 300w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/recipe-microdata-600x115.png 600w\" sizes=\"(max-width: 756px) 100vw, 756px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">Le propri\u00e9t\u00e9 \u00ab\u00a0nutrition\u00a0\u00bb peut-\u00eatre \u00e9tendue gr\u00e2ce au type \u00ab\u00a0NutritionInformation\u00a0\u00bb<\/p>\n<p>Il vous faudra donc apprendre \u00e0 jouer avec les diff\u00e9rents sch\u00e9mas, et surtout \u00e0 estimer quelles informations m\u00e9ritent d&rsquo;\u00eatre \u00e9tendues.<\/p>\n<h2>Cr\u00e9ation d&rsquo;une fiche film<\/h2>\n<p>Je prends volontairement ce dernier exemple pour vous pr\u00e9senter une technique qui permet d&rsquo;associer des informations sans qu\u2019elles soient forc\u00e9ment imbriqu\u00e9es. En effet il arrive que la mise en page d&rsquo;un site web ou l&rsquo;\u00e9volution de ses informations ne permette pas d&rsquo;imbriquer les items comme nous l&rsquo;avons vu juste avant.<\/p>\n<p>Prenons le sch\u00e9ma suivant :<\/p>\n<p><a href=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/schema-microdata-film.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-5996\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/schema-microdata-film.png\" alt=\"schema-microdata-film\" width=\"570\" height=\"448\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/schema-microdata-film.png 570w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2016\/08\/schema-microdata-film-300x236.png 300w\" sizes=\"(max-width: 570px) 100vw, 570px\" \/><\/a><\/p>\n<p>Le code HTML correspondant \u00e0 cette mise en page pourrait ressembler \u00e0 cela :<\/p>\n<pre class=\"code\"><code class=\"language-markup\">&lt;section role=\"main\"&gt;\r\n  &lt;article itemscope  itemtype=\"http:\/\/schema.org\/Movie\" itemref=\"more-info\"&gt;\r\n    &lt;h1 itemprop=\"name\"&gt;Nom du film de la fiche&lt;\/h1&gt;\r\n    &lt;img itemprop=\"image\" src=\"img\/the-film.png\" alt=\"\" width=\"150\" height=\"150\"&gt;\r\n\r\n    &lt;section itemprop=\"video\" itemscope itemtype=\"http:\/\/schema.org\/VideoObject\"&gt;\r\n      &lt;h2&gt;Trailer : &lt;span itemprop=\"name\"&gt;Nom du film de la fiche&lt;\/span&gt;&lt;\/h2&gt;\r\n      &lt;meta itemprop=\"duration\" content=\"T1M33S\"&gt;\r\n      &lt;meta itemprop=\"thumbnail\" content=\"image-miniature-du-trailer.jpg\"&gt;\r\n      &lt;object \u2026&gt;\r\n        &lt;param \u2026&gt;\r\n        &lt;embed type=\"application\/x-shockwave-flash\" \u2026&gt;\r\n      &lt;\/object&gt;\r\n      &lt;p itemprop=\"description\"&gt;Courte description de la vid\u00e9o&lt;\/p&gt;\r\n    &lt;\/section&gt;\r\n\r\n    &lt;section itemprop=\"description\"&gt;\r\n      &lt;p&gt;Contenu principal de ma fiche film&lt;\/p&gt;\r\n    &lt;\/section&gt;\r\n\r\n    &lt;footer&gt;\r\n      &lt;dl&gt;\r\n        &lt;dt&gt;R\u00e9alisateur&lt;\/dt&gt;\r\n          &lt;dd itemprop=\"director\"&gt;Emily Atef&lt;\/dd&gt;\r\n        &lt;dt&gt;Acteurs&lt;\/dt&gt;\r\n          &lt;dd itemprop=\"actors\"&gt;Maria-Victoria Dragus&lt;\/dd&gt;\r\n          &lt;dd itemprop=\"actors\"&gt;Roeland Wiesnekker&lt;\/dd&gt;\r\n          &lt;dd itemprop=\"actors\"&gt;Wolfram Koch&lt;\/dd&gt;\r\n          &lt;dd itemprop=\"actors\"&gt;Christine Citti&lt;\/dd&gt;\r\n          &lt;dd itemprop=\"actors\"&gt;Nathalie Boutefeu&lt;\/dd&gt;\r\n        &lt;dt&gt;Distributeur&lt;\/dt&gt;\r\n          &lt;dd  itemprop=\"provider\"&gt;Les Films du Losange&lt;\/dd&gt;\r\n        &lt;dt&gt;Musique par&lt;\/dt&gt;\r\n          &lt;dd itemprop=\"musicBy\"&gt;John Smith&lt;\/dd&gt;\r\n        &lt;dt&gt;Ratio d'image&lt;\/dt&gt;\r\n          &lt;dd&gt;2.35&lt;\/dd&gt;\r\n      &lt;\/dl&gt;\r\n    &lt;\/footer&gt;\r\n\r\n  &lt;\/article&gt;\r\n\r\n  &lt;aside id=\"more-info\"&gt;\r\n    &lt;dl&gt;\r\n      &lt;dt&gt;Langues&lt;\/dt&gt;\r\n        &lt;dd&gt;&lt;meta itemprop=\"inLanguage\" content=\"fr\"&gt;Fran\u00e7ais&lt;\/dd&gt;\r\n        &lt;dd&gt;&lt;meta itemprop=\"inLanguage\" content=\"de\"&gt;Allemand&lt;\/dd&gt;\r\n      &lt;dt&gt;Ann\u00e9e de production&lt;\/dt&gt;\r\n        &lt;dd&gt;&lt;time datetime=\"2011\" itemprop=\"dateCreated\"&gt;2011&lt;\/time&gt;&lt;\/dd&gt;\r\n      &lt;dt&gt;Date de sortie&lt;\/dt&gt;\r\n        &lt;dd&gt;&lt;time datetime=\"2011-04-25\" itemprop=\"datePublished\"&gt;25 avril 2012&lt;\/time&gt;&lt;\/dd&gt;\r\n      &lt;dt&gt;Genre&lt;\/dt&gt;\r\n        &lt;dd itemprop=\"genre\"&gt;Drame&lt;\/dd&gt;\r\n      &lt;dt&gt;Dur\u00e9e&lt;\/dt&gt;\r\n        &lt;dd&gt;&lt;meta itemprop=\"duration\" content=\"PT91M\"&gt;91 min&lt;\/dd&gt;\r\n  &lt;\/dl&gt;\r\n  &lt;\/aside&gt;\r\n&lt;\/section&gt;<\/code><\/pre>\n<p>Notre fiche film est divis\u00e9e en deux mais ses informations sont r\u00e9unies sous le m\u00eame item gr\u00e2ce \u00e0 la propri\u00e9t\u00e9 itemref qui fait r\u00e9f\u00e9rence \u00e0 l&rsquo;\u00e9l\u00e9ment aside#more-info \u00e0 travers son identifiant \u00ab\u00a0more-info\u00a0\u00bb.<\/p>\n<p>Cet attribut permet de pr\u00e9senter un m\u00eame item d\u00e9coup\u00e9 en plusieur \u00e9l\u00e9ments \u00e0 travers la page. Si les informations de notre item Movie avaient \u00e9t\u00e9 diss\u00e9min\u00e9es dans d&rsquo;autres \u00e9l\u00e9ments de la page, il aurait \u00e9t\u00e9 possible de les cibler gr\u00e2ce \u00e0 la valeur de leur attribut id de la sorte :<\/p>\n<pre class=\"code\"><code class=\"language-markup\">&lt;article itemscope  itemtype=\"http:\/\/schema.org\/Movie\"\r\n  itemref=\"more-info id2 id3 id4\"&gt;<\/code><\/pre>\n<p>Je ne vous ai pas encore expliqu\u00e9 la pr\u00e9sence des \u00e9l\u00e9ments meta dans la page. Ceux-ci permettent d&rsquo;ins\u00e9rer une information qui a souvent besoin d&rsquo;un formatage pr\u00e9cis qui est peu intelligible par une personne non aguerrie.<br \/>\nPrenons l&rsquo;exemple de l&rsquo;information \u00ab\u00a0duration\u00a0\u00bb qui repr\u00e9sente la dur\u00e9e. Cette information doit \u00eatre format\u00e9e en respectant le format <a href=\"http:\/\/en.wikipedia.org\/wiki\/ISO_8601\" target=\"_blank\">ISO 8601<\/a> qui d\u00e9finit un format de date ou de temps.<br \/>\nDans notre fiche, il aurait \u00e9t\u00e9 possible d&rsquo;\u00e9crire :<\/p>\n<pre class=\"code\"><code class=\"language-markup\">&lt;dd itemprop=\"duration\"&gt;PT91M&lt;\/dd&gt;<\/code><\/pre>\n<p>Mais vous imaginez bien ici que PT91M est quelque peu d\u00e9rangeant pour d\u00e9finir une dur\u00e9e d&rsquo;une heure et demi. C&rsquo;est pourquoi, par convention &#8211; et si ce n&rsquo;en est pas encore une il faudrait que \u00e7a le devienne &#8211; l&rsquo;information s&rsquo;\u00e9crit dans un \u00e9l\u00e9ment meta et \u00e0 c\u00f4t\u00e9 de l&rsquo;information intelligible.<\/p>\n<h2>Outils<\/h2>\n<p>Google propose un syst\u00e8me d&rsquo;analyse de vos pages \u00e0 la recherche des Rich Snippets. Il d\u00e9tecte le sch\u00e9ma utilis\u00e9 et vous fait un rapport sur les donn\u00e9es trouv\u00e9es, leur formatage et les \u00e9ventuelles erreurs rencontr\u00e9es.<br \/>\nCet outil est disponible ici : <a href=\"https:\/\/search.google.com\/structured-data\/testing-tool\/u\/0\/\" target=\"_blank\">Structured Data &#8211; Testing Tool<\/a><\/p>\n<h2>Avis personnel &amp; analyses<\/h2>\n<p>Cet article aborde les microformats sur la base de l\u2019apport de HTML5 et des microdata. Les outils mis \u00e0 disposition aujourd\u2019hui permettent de concevoir des contenus riches en informations pour le visiteur, mais \u00e9galement pour les machines. \u00c0 l\u2019heure actuelle, ces machines sont principalement des moteurs de recherche et quelques applications qui utilisent les sch\u00e9mas propre \u00e0 microformats.org.<\/p>\n<p>Une r\u00e9cente analyse de r\u00e9sultats de recherche sur Google me laisse \u00e0 penser que Google favorise les sites internet proposant de la microdata, mais cette analyse est peut-\u00eatre erron\u00e9e. En effet en <a href=\"https:\/\/www.google.fr\/search?q=juiz+smart+mobile&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t\" target=\"_blank\">cherchant le nom d&rsquo;un de mes plugins<\/a>, j&rsquo;ai vu l&rsquo;extend de WordPress mont\u00e9 en premi\u00e8re place depuis son impl\u00e9mentation des microdatas dans les fiches de ses plugins. Avant cela, les microformats de Geekeries lui permettaient d&rsquo;\u00eatre en premi\u00e8re place. Je ne dis pas que Google favorise les microdatas, je ne fais qu&rsquo;analyser les r\u00e9sultats sur deux sites que je ne contr\u00f4le absolument pas \ud83d\ude09<\/p>\n<p>Quoi qu&rsquo;il en soit la transition d\u2019un format vers l\u2019autre est certainement possible puisqu\u2019ils n\u2019utilisent pas les m\u00eames attributs. L\u00e0 o\u00f9 microformats.org utilise les attributs rel et class, HTML5 Microdata utilise les attributs item*. Il serait donc bon de commencer \u00e0 compl\u00e9ter vos int\u00e9grations d\u00e9clar\u00e9es en HTML5 d\u00e8s la conception.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Microformats, microdata, nouvelle s\u00e9mantique, nouveaux \u00e9l\u00e9ments HTML\u2026 Tant de nouveaut\u00e9s qui perturbent les int\u00e9grateurs web soucieux de se mettre \u00e0 jour dans leurs comp\u00e9tences ou curieux de savoir ce dont ils peuvent d\u00e9j\u00e0 faire usage dans leurs int\u00e9grations.<\/p>\n","protected":false},"author":4,"featured_media":4816,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","footnotes":""},"categories":[9,12],"tags":[],"coauthors":[597],"class_list":["post-5991","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriels","category-veille-technologique"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/5991","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/comments?post=5991"}],"version-history":[{"count":0,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/5991\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/4816"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=5991"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=5991"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=5991"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=5991"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}