Sorry

This feed does not validate.

In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendation.

Source: http://sebastienguillon.com/feeds/journal-atom1

  1.  
  2. <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
  3. <script type="text/javascript">
  4. var _uacct = "UA-1278376-1";
  5. urchinTracker();
  6. </script>
  7. <?xml version="1.0"?>
  8. <feed xmlns="http://www.w3.org/2005/Atom" xmlns:xhtml="http://www.w3.org/1999/xhtml" xml:lang="fr-FR" xml:base="https://sebastienguillon.com">
  9. <title type="html">Sébastien Guillon</title>
  10. <subtitle type="html">Sébastien Guillon est un développeur web &amp; webdesigner parisien, qui écrit aussi un Journal web qui n’intéresse que lui.</subtitle>
  11. <updated>2006-10-19T23:26:23Z</updated>
  12. <id>tag:sebastienguillon.com,2005:7</id>
  13. <logo>https://sebastienguillon.com/images/logo-atom.png</logo>
  14. <link rel="alternate" type="text/html" href="https://sebastienguillon.com/journal"/>
  15. <link rel="self" type="application/atom+xml" href="https://sebastienguillon.com/feeds/journal-atom1"/>
  16. <author>
  17. <name>Sébastien Guillon</name>
  18. <uri>https://sebastienguillon.com/a-propos</uri>
  19. </author>
  20. <rights>Copyright © 2005&#8209;2006 Sébastien Guillon. Tous droits réservés.</rights>
  21.  
  22. <entry>
  23. <title type="xhtml" xml:lang="fr">
  24. <xhtml:div>
  25. exemple de fil RSS iTunes corrigé
  26. </xhtml:div>
  27. </title>
  28. <link rel="alternate" type="text/html" href="https://sebastienguillon.com/journal/2006/10/exemple-de-fil-rss-itunes-corrige" />
  29. <id>tag:sebastienguillon.com,2006-10-19:/journal/2006/10/exemple-de-fil-rss-itunes-corrige</id>
  30.  
  31. <updated>2006-10-19T23:26:23Z</updated>
  32. <published>2006-10-19T23:26:23Z</published>
  33.  
  34. <author>
  35. <name>Sébastien</name>
  36. <uri>https://sebastienguillon.com</uri>
  37. </author>
  38.  
  39. <content type="xhtml" xml:lang="fr">
  40. <xhtml:div>
  41. <p>L’<a href="http://www.apple.com/fr/itunes/store/podcaststechspecs.html#_Toc526931673">exemple de flux RSS iTunes</a> proposé par Apple est invalide dans sa version française. Notez bien que la <a href="http://www.apple.com/itunes/store/podcaststechspecs.html">version originale anglaise</a> est valide mais génère des avertissements avec le <a href="http://validator.w3.org/feed/" title="FEED Validation Service">validateur de flux du W3C</a></p>
  42.  
  43. <p>La validation de flux RSS ne passionne pas les foules mais les erreurs de l’exemple français peuvent rendre le fil inexploitable par iTunes elle-même… et les débutants se cassent les dents sur cet exemple buggé.</p>
  44.  
  45. <p>Voici donc plus bas la version corrigée de cet exemple de flux RSS iTunes, mais tout d’abord une rapide explication des problèmes rencontrés.</p>
  46.  
  47. <ol>
  48. <li>En premier lieu l’élément <code>copyright</code> contient des esperluettes (caractères réservés en XML) non transformées en entités (<samp>&amp;amp;</samp>) et le document XML est de fait mal formé. Ce point est pourtant rappelé dans le document : «&#160;<a href="http://www.apple.com/fr/itunes/store/podcaststechspecs.html">Podcasting et iTunes?:   Caract?ristiques techniques</a>&#160;» (<i xml:lang="lat">sic</i>). Apple a visiblement du mal avec les codages de caractères.</li>
  49. <li>La deuxième source d’erreurs vient des fautes de traduction&#160;: les noms de <a href="http://www.apple.com/fr/itunes/store/podcaststechspecs.html#_Toc526931698" title="Catégories iTunes pour le podcasting">catégories</a> ont été traduits alors qu’il s’agit de mots-clés qui seront interprêtés par l’analyseur XML.</li>
  50. </ol>
  51.  
  52. <p>Une fois ces erreurs corrigées, le flux est valide mais produit encore un avertissement&#160;: un élément recommandé (&lt;<a href="http://www.apple.com/fr/itunes/store/podcaststechspecs.html#_Toc526931684">itunes:explicit</a>&gt;) est toujours absent de l’exemple. Ajoutez-le dans l’élément <code>channel</code> et le flux est parfaitement valide. Pensez bien a coder le fichier en UTF-8, en conformité avec l’information de codage contenue dans la déclaration XML.</p>
  53.  
  54. <h2>L’exemple français corrigé</h2>
  55.  
  56. <pre style="width:480px;overflow:auto;"><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  57. &lt;rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"&gt;
  58.  
  59. &lt;channel&gt;
  60. &lt;itunes:explicit&gt;no&lt;/itunes:explicit&gt;
  61. &lt;title&gt;Tout sur tout&lt;/title&gt;
  62. &lt;link&gt;http://www.exemple.com/podcasts/tout/index.html&lt;/link&gt;
  63. &lt;language&gt;fr-fr&lt;/language&gt;
  64. &lt;copyright&gt;&#x2117; &amp;amp; © 2005 Jean Dupont &amp;amp; Cie&lt;/copyright&gt;
  65. &lt;itunes:subtitle&gt;Une émission sur tout&lt;/itunes:subtitle&gt;
  66. &lt;itunes:author&gt;Jean Dupont&lt;/itunes:author&gt;
  67. &lt;itunes:summary&gt;Tout sur tout est une émission sur tout. Chaque semaine, nous explorons un sujet connu et l'approfondissons autant que possible. Retrouvez notre podcast sur l'iTunes Music Store&lt;/itunes:summary&gt;
  68. &lt;description&gt;Tout sur tout est une émission sur tout. Chaque semaine, nous explorons un sujet connu et l'approfondissons autant que possible. Recherchez notre podcast sur iTunes Store&lt;/description&gt;
  69. &lt;itunes:owner&gt;
  70. &lt;itunes:name&gt;Jean Dupont&lt;/itunes:name&gt;
  71. &lt;itunes:email&gt;jean.dupont@exemple.com&lt;/itunes:email&gt;
  72. &lt;/itunes:owner&gt;
  73. &lt;itunes:image href="http://exemple.com/podcasts/tout/ToutSurTout.jpg" /&gt;
  74. &lt;itunes:category text="Technology"&gt;
  75. &lt;itunes:category text="Gadgets"/&gt;
  76. &lt;/itunes:category&gt;
  77. &lt;itunes:category text="TV &amp;amp; Film"/&gt;
  78.  
  79. &lt;item&gt;
  80. &lt;title&gt;Epicez votre vie&lt;/title&gt;
  81. &lt;itunes:author&gt;Jean Dupont&lt;/itunes:author&gt;
  82. &lt;itunes:subtitle&gt;Les condiments en bref&lt;/itunes:subtitle&gt;
  83. &lt;itunes:summary&gt;Cette semaine nous parlons des salières et des poivriers et comparons leur débit, les matériaux utilisés et l'aspect général. Rejoignez-nous !&lt;/itunes:summary&gt;
  84. &lt;enclosure url="http://exemple.com/podcasts/tout/ToutsurToutEpisode3.m4a" length="8727310" type="audio/x-m4a" /&gt;
  85. &lt;guid&gt;http://exemple.com/podcasts/archive/aae20050615.m4a&lt;/guid&gt;
  86. &lt;pubDate&gt;Wed, 15 Jun 2005 19:00:00 GMT&lt;/pubDate&gt;
  87. &lt;itunes:duration&gt;7:04&lt;/itunes:duration&gt;
  88. &lt;itunes:keywords&gt;sel, poivre, distributeur, attrayant&lt;/itunes:keywords&gt;
  89. &lt;/item&gt;
  90.  
  91. &lt;item&gt;
  92. &lt;title&gt;Pleins feux sur les clés à douille&lt;/title&gt;
  93. &lt;itunes:author&gt;Jeanne Dupont&lt;/itunes:author&gt;
  94. &lt;itunes:subtitle&gt;Comparer les clés à douille en s'amusant !&lt;/itunes:subtitle&gt;
  95. &lt;itunes:summary&gt;Cette semaine nous parlons des clés à douille utilisant le système métrique et les anciennes clés anglaises. Lesquelles sont les meilleures ? Avez-vous vraiment besoin des deux ? Toutes les réponses à vos questions sont là.&lt;/itunes:summary&gt;
  96. &lt;enclosure url="http://exemple.com/podcasts/tout/ToutSurToutEpisode2.mp3" length="5650889" type="audio/mpeg" /&gt;
  97. &lt;guid&gt;http://exemple.com/podcasts/archive/aae20050608.mp3&lt;/guid&gt;
  98. &lt;pubDate&gt;Wed, 8 Jun 2005 19:00:00 GMT&lt;/pubDate&gt;
  99. &lt;itunes:duration&gt;4:34&lt;/itunes:duration&gt;
  100. &lt;itunes:keywords&gt;métrique, douille, clés, outil&lt;/itunes:keywords&gt;
  101. &lt;/item&gt;
  102.  
  103. &lt;item&gt;
  104. &lt;title&gt;Gauche contre Droite&lt;/title&gt;
  105. &lt;itunes:author&gt;Divers&lt;/itunes:author&gt;
  106. &lt;itunes:subtitle&gt;Gauche ou Droite ? La boussole s'affole !&lt;/itunes:subtitle&gt;
  107. &lt;itunes:summary&gt;Cette semaine nous nous intéressons aux personne de gauche vivant dans une région de droite. Ou l'inverse.&lt;/itunes:summary&gt;
  108. &lt;enclosure url="http://exemple.com/podcasts/tout/ToutSurToutEpisode1.mp3" length="4989537" type="audio/mpeg" /&gt;
  109. &lt;guid&gt;http://exemple.com/podcasts/archive/aae20050601.mp3&lt;/guid&gt;
  110. &lt;pubDate&gt;Wed, 1 Jun 2005 19:00:00 GMT&lt;/pubDate&gt;
  111. &lt;itunes:duration&gt;3:59&lt;/itunes:duration&gt;
  112. &lt;itunes:keywords&gt;politique, gauche, droite, région&lt;/itunes:keywords&gt;
  113. &lt;/item&gt;
  114. &lt;/channel&gt;
  115. &lt;/rss&gt;</code></pre>
  116.  
  117. </xhtml:div>
  118. </content>
  119. </entry>
  120.  
  121. <entry>
  122. <title type="xhtml" xml:lang="fr">
  123. <xhtml:div>
  124. Logo au format SVG
  125. </xhtml:div>
  126. </title>
  127. <link rel="alternate" type="text/html" href="https://sebastienguillon.com/journal/2006/09/logo-svg" />
  128. <id>tag:sebastienguillon.com,2006-09-03:/journal/2006/09/logo-au-format-svg</id>
  129.  
  130. <updated>2006-09-05T07:19:20Z</updated>
  131. <published>2006-09-05T07:19:20Z</published>
  132.  
  133. <author>
  134. <name>Sébastien</name>
  135. <uri>https://sebastienguillon.com</uri>
  136. </author>
  137.  
  138. <content type="xhtml" xml:lang="fr">
  139. <xhtml:div>
  140. <p><abbr title="Scalable Vector Graphics">SVG</abbr> (<dfn xml:lang="en">Scalable Vector Graphics</dfn>) est un langage de balises basé sur <a href="http://www.w3.org/TR/xml/" title="Extensible Markup Language (XML) 1.0 (Fourth Edition)">XML</a> (un «&#160;dialecte&#160;» XML) permettant de créer des graphiques vectoriels.</p>
  141.  
  142. <p>De nombreux logiciels&#160;<sup>[<a href="#note-1" id="renvoi-1">1</a>]</sup> proposent d’exporter vos créations au format <abbr title="Scalable Vector Graphics">SVG</abbr> (<a href="http://www.adobe.com/svg/illustrator/illustrator.html">Illustrator</a>) ou même de travailler entièrement en SVG/XML (l’excellent <a href="http://www.inkscape.org/" title="Inkscape. Draw Freely.">Inkscape</a>), mais puisque <abbr title="Scalable Vector Graphics">SVG</abbr> est un langage de balises, un simple éditeur de texte (capable de gérer <abbr title="UCS transformation format">utf-8</abbr> tout de même) suffit.</p>
  143.  
  144. <p>Pour apprendre ce langage j’ai commencé par créer une version vectorielle de mon logo en <abbr title="Scalable Vector Graphics">SVG</abbr>. À l’aide d’un <a href="http://www.svgbasics.com/" xml:lang="en" hreflang="en">tutorial</a> et de la <a href="http://www.w3.org/TR/SVG11/" title="Scalable Vector Graphics (SVG) 1.1 Specification">spécification SVG 1.1</a> du <abbr title="World Wide Web Consortium">W3C</abbr> je suis parvenu à ce résultat&#160;:</p>
  145.  
  146. <p>Mon <a href="https://sebastienguillon.com/test/svg/logo.svg">logo au format <abbr title="Scalable Vector Graphics">SVG</abbr></a></p>
  147.  
  148. <p>Il y a probablement des dizaines de façons de parvenir au même rendu (et peut-être beaucoup plus facilement) mais cette version est la première qui ait vraiment fonctionné et elle reste assez simple pour une édition «&#160;manuelle&#160;».</p>
  149.  
  150. <p>Vous aurez besoin d’un navigateur moderne pour afficher correctement le logo&#160;: Opera&#160;9 et Firefox&#160;1.5 supportent SVG nativement, <a href="http://webkit.org/blog/?p=35" title="SVG Has Landed">Safari est en bonne voie</a>.</p>
  151.  
  152. <div class="footnotes">
  153. <h3>Notes</h3>
  154. <ol>
  155. <li id="note-1"><a href="http://www.svgi.org/" xml:lang="en" hreflang="en">SVG Implementation and Resource Directory</a> répertorie des logiciels supportant SVG [<a href="#renvoi-1">retour</a>]</li>
  156. </ol>
  157. </div>
  158. <li></li>
  159. </xhtml:div>
  160. </content>
  161. </entry>
  162.  
  163. <entry>
  164. <title type="xhtml" xml:lang="fr">
  165. <xhtml:div>
  166. Agents utilisateurs et <code>Content-Type</code>
  167. </xhtml:div>
  168. </title>
  169. <link rel="alternate" type="text/html" href="https://sebastienguillon.com/journal/2006/04/agents-utilisateurs-et-content-type" />
  170. <id>tag:sebastienguillon.com,2006-04-21:/journal/2006/04/agents-utilisateurs-et-content-type</id>
  171.  
  172. <updated>2006-04-24T04:08:05Z</updated>
  173. <published>2006-04-24T04:08:05Z</published>
  174.  
  175. <author>
  176. <name>Sébastien</name>
  177. <uri>https://sebastienguillon.com</uri>
  178. </author>
  179.  
  180. <content type="xhtml" xml:lang="fr">
  181. <xhtml:div>
  182. <p>Dans un récent article, <cite><i xml:lang="en"><a href="http://ln.hixie.ch/?start=1144794177&amp;count=1" hreflang="en">Content-Type is dead</a></i></cite>, <a href="http://ln.hixie.ch/" title="Hixie's Natural Log">Ian Hickson</a> fait le point sur l’en-tête <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html" title="Hypertext Transfer Protocol – HTTP/1.1">HTTP</a> <code>Content-Type</code> <sup>[<a href="#note-1" id="renvoi-1">1</a>]</sup> et sur la façon dont il est réellement exploité (ou pas) par les agent utilisateurs <sup>[<a href="#note-2" id="renvoi-2">2</a>]</sup>.</p>
  183.  
  184. <p>Pour ceux qui ne comprennent pas l’anglais, le constat est que <q cite="http://ln.hixie.ch/?start=1144794177&amp;count=1">Content-Type est mort</q>&#160;; les navigateurs ignorent dans une large mesure ce paramètre et ont tendance à recourir à des méthodes empiriques de détection en essayant d’analyser le contenu au lieu de respecter la déclaration de <code>Content-Type</code>.</p>
  185.  
  186. <!--<p>La cause du problème est principalement la mauvaise configuration (ou l’omission) de la valeur de du paramètre <code>Content-Type</code> (exemple des fils <abbr title="Really Simple Syndication">RSS</abbr> et des fichiers vidéo) mais aussi les mauvaises pratiques de certains navigateurs (<abbr title="Internet Explorer">IE</abbr>) qui ont pris l’habitude d’ignorer cet en-tête.</p>
  187.  
  188. <p>Aujourd’hui la situation est irréversible à cause de la course aux fonctionnalités que se livrent les navigateurs, aucun ne pouvant se permettre d’apparaître moins «&#160;complet&#160;» que ses concurrents, d’où le titre de son article et la conclusion&#160;: il est temps d’abandonner Content-Type et de </p>-->
  189.  
  190. <p>Ian a mis en ligne un ensemble de <a href="http://www.hixie.ch/tests/adhoc/http/content-type/">fichiers de test</a> pour que chacun puisse se faire son opinion.</p>
  191.  
  192. <p>Voici donc, présentés dans le tableau ci-dessous, le résultat de mes tests effectués sous Windows XP Pro SP2 français, avec la première page de test. Les résultats de tests avec d’autres navigateurs et systèmes sont les bienvenus (en particulier Safari).</p>
  193.  
  194. <table>
  195. <caption>Tests du comportement de différents agents utilisateurs en fonction du paramètre HTTP <code>Content-Type</code></caption>
  196. <thead>
  197. <tr>
  198. <th>&#160;</th>
  199. <th scope="col"><abbr title="Internet Explorer">IE</abbr>&#160;6.0</th>
  200. <th scope="col">Firefox 1.5</th>
  201. <th scope="col">Opera 8.54</th>
  202. </tr>
  203. </thead>
  204. <tfoot>
  205. <tr>
  206. <td colspan="4">
  207. <dl>
  208. <dt>Échec</dt>
  209. <dd>Le type MIME du fichier <sup>*</sup>, n’est pas reconnu ou pas respecté.</dd>
  210. <dt>Réussite</dt>
  211. <dd>Le navigateur reconnaît correctement le type MIME du fichier <sup>*</sup>.</dd>
  212. </dl>
  213.  
  214. <p><sup>*</sup> déclaré dans l’en-tête HTTP <code>Content-Type</code></p>
  215. </td>
  216. </tr>
  217. </tfoot>
  218. <tbody>
  219. <tr>
  220. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/001.txt" title="Ce fichier est de type application/x-hixie-test et n’est pas un fichier texte brut.">001.txt</a></th>
  221. <td class="fail">Échec</td>
  222. <td class="fail">Échec. Type détecté&#160;: Document texte (au lieu de <code>application/x-hixie-test</code>)</td>
  223. <td class="pass">Réussite</td>
  224. </tr>
  225. <tr>
  226. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/002.png" title="Ce fichier est de type text/plain et n’est pas un fichier image.">002.png</a></th>
  227. <td class="fail">Échec. (affiché comme un fichier texte mais le type détecté  est Image PNG)</td>
  228. <td class="pass">Réussite</td>
  229. <td class="pass">Réussite</td>
  230. </tr>
  231. <tr>
  232. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/003.html" title="Ce fichier est de type audio/aiff et n’est pas un fichier HTML.">003.html</a></th>
  233. <td class="pass">Réussite</td>
  234. <td class="pass">Réussite</td>
  235. <td class="pass">Réussite</td>
  236. </tr>
  237. <tr>
  238. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/004.src" title="Ce fichier est de type application/x-view-source et n’est pas un fichier texte brut.">004.src</a></th>
  239. <td class="pass">Réussite (Type de fichier inconnu) </td>
  240. <td class="fail">Échec</td>
  241. <td class="pass">Réussite</td>
  242. </tr>
  243. <tr>
  244. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/005.html" title="Ce fichier est de type text/html:charset=utf-16.">005.html</a></th>
  245. <td class="pass">Réussite</td>
  246. <td class="pass">Réussite</td>
  247. <td class="pass">Réussite</td>
  248. </tr>
  249. <tr>
  250. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/006.html" title="Ce fichier prétend être en UTF16 mais contient principalement de l’US-ASCII.">006.html</a></th>
  251. <td class="fail">Échec</td>
  252. <td class="pass">Réussite</td>
  253. <td class="pass">Réussite</td>
  254. </tr>
  255. <tr>
  256. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/007.dmg.gz" title="Ce fichier est de type text/plain et n’est pas un fichier d’image disque compressé.">007.dmg.gz</a></th>
  257. <td class="fail">Échec</td>
  258. <td class="pass">Réussite</td>
  259. <td class="pass">Réussite</td>
  260. </tr>
  261. <tr>
  262. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/008.html" title="Ce fichier contient une image de type text/plain">008.html</a></th>
  263. <td class="fail">Échec</td>
  264. <td class="fail">Échec</td>
  265. <td class="fail">Échec</td>
  266. </tr>
  267. <tr>
  268. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/008.png" title="Ce fichier est de type text/plain et n’est pas un fichier image.">008.png</a></th>
  269. <td class="fail">Échec</td>
  270. <td class="fail">Échec. Type détecté&#160;: «&#160;PNG file&#160;» (au lieu de <code>application/x-hixie-test</code>)</td>
  271. <td class="fail">Échec</td>
  272. </tr>
  273. <tr>
  274. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/009" title="Ce fichier est de type text/plain.">009</a></th>
  275. <td class="pass">Réussite</td>
  276. <td class="pass">Réussite</td>
  277. <td class="pass">Réussite</td>
  278. </tr>
  279. <tr>
  280. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/010.png" title="Ce fichier est de type application/octet-stream et n’est pas un fichier image.">010.png</a></th>
  281. <td class="fail">Échec</td>
  282. <td class="fail">Échec. Type détecté&#160;: «&#160;PNG file&#160;» (au lieu de <code>application/x-hixie-test</code>)</td>
  283. <td class="fail">Échec</td>
  284. </tr>
  285. <tr>
  286. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/011.bat" title="Ce fichier est de type application/rtf et ne devrait pas être exécuté.">011.bat</a></th>
  287. <td class="fail">Échec</td>
  288. <td class="pass">Réussite</td>
  289. <td class="pass">Réussite</td>
  290. </tr>
  291. <tr>
  292. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/012.pl" title="Ce fichier est de type application/msword et ne devrait pas être exécuté.">012.pl</a></th>
  293. <td class="pass">Réussite</td>
  294. <td class="pass">Réussite</td>
  295. <td class="pass">Réussite</td>
  296. </tr>
  297. <tr>
  298. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/013.html" title="Ce fichier est de type text/plain et n’est pas un fichier HTML.">013.html</a></th>
  299. <td class="pass">Réussite</td>
  300. <td class="pass">Réussite</td>
  301. <td class="pass">Réussite</td>
  302. </tr>
  303. <tr>
  304. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/014.html" title="Ce fichier est de type text/plain et n’est pas un fichier HTML.">014.html</a></th>
  305. <td class="fail">Échec</td>
  306. <td class="pass">Réussite</td>
  307. <td class="pass">Réussite</td>
  308. </tr>
  309. <tr>
  310. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/015.png" title="Ce fichier est de type application/x-hixie-test et n’est pas un fichier image.">015.png</a></th>
  311. <td class="pass">Réussite (Type de fichier inconnu)</td>
  312. <td class="fail">Échec. Type détecté&#160;: «&#160;Document texte&#160;» (au lieu de <code>application/x-hixie-test</code>)</td>
  313. <td class="pass">Réussite</td>
  314. </tr>
  315. <tr>
  316. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/016.rss" title="Ce fichier est de type text/html et n’est pas an RSS feed.">016.rss</a></th>
  317. <td class="fail">Échec</td>
  318. <td class="pass"><span class="pass">Réussite</span></td>
  319. <td class="pass">Réussite</td>
  320. </tr>
  321. <tr>
  322. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/017.rss" title="Ce fichier est de type text/html et n’est pas an RSS feed.">017.rss</a></th>
  323. <td class="pass">Réussite (après un bref affichage du message d’échec) </td>
  324. <td class="pass">Réussite (après un bref affichage du message d’échec)</td>
  325. <td class="pass">Réussite (sans affichage du contenu HTML)</td>
  326. </tr>
  327. <tr>
  328. <th scope="row"><a href="http://www.hixie.ch/tests/adhoc/http/content-type/018.rss" title="Ce fichier est de type text/plain et n’est pas un fil RSS.">018.rss</a></th>
  329. <td class="fail">Échec</td>
  330. <td class="pass">Réussite</td>
  331. <td class="pass">Réussite</td>
  332. </tr>
  333. </tbody>
  334. </table>
  335.  
  336. <h2>Réactions sur le sujet</h2>
  337. <ul>
  338. <li><cite xml:lang="en"><a href="http://bitworking.org/news/_Content_Type_is_dead__for_a_short_period_of_time__for_new_media_types__film_at_11" hreflang="en">Content-Type is dead, for a short period of time, for new media-types, film at 11</a></cite></li>
  339. <li><cite xml:lang="en"><a href="http://www.intertwingly.net/blog/2006/04/13/Dont-throw-charset-out-with-the-bathwater" hreflang="en">Don't throw charset out with the bathwater</a></cite></li>
  340. </ul>
  341.  
  342.  
  343. <div class="footnotes">
  344. <h3>Notes&#160;:</h3>
  345. <ol>
  346. <li>
  347. <h3>HTTP&#160;1.1 – 14.17 Content-Type</h3>
  348. <blockquote cite="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17"><p>The Content-Type entity-header field indicates the media type of the entity-body sent to the recipient or, in the case of the HEAD method, the media type that would have been sent had the request been a GET.</p></blockquote> [<a href="#renvoi-1" id="note-1">retour</a>]
  349. </li>
  350. <li>
  351. <h3>HTTP&#160;1.1 – 7.2.1 Type</h3>
  352. <blockquote cite="http://www.w3.org/Protocols/rfc2616/rfc2616-sec7.html#sec7.2.1"><p>Any HTTP/1.1 message containing an entity-body SHOULD include a Content-Type header field defining the media type of that body. If and only if the media type is not given by a Content-Type field, the recipient MAY attempt to guess the media type via inspection of its content and/or the name extension(s) of the URI used to identify the resource.</p></blockquote> [<a href="#renvoi-2" id="note-2">retour</a>]
  353. </li>
  354. </ol>
  355. </div>
  356.  
  357. </xhtml:div>
  358. </content>
  359. </entry>
  360.  
  361. <entry>
  362. <title type="xhtml" xml:lang="fr">
  363. <xhtml:div>
  364. freelance.com - il est temps de travailler autrement
  365. </xhtml:div>
  366. </title>
  367. <link rel="alternate" type="text/html" href="https://sebastienguillon.com/journal/2006/04/freelance-com-il-est-temps-de-travailler-autrement" />
  368. <id>tag:sebastienguillon.com,2006-04-21:/journal/2006/04/freelance-com-il-est-temps-de-travailler-autrement</id>
  369.  
  370. <updated>2006-04-22T00:11:42Z</updated>
  371. <published>2006-04-22T00:11:42Z</published>
  372.  
  373. <author>
  374. <name>Sébastien</name>
  375. <uri>https://sebastienguillon.com</uri>
  376. </author>
  377.  
  378. <content type="xhtml" xml:lang="fr">
  379. <xhtml:div>
  380. <p>Vu ce jour sur <a href="http://freelance.com/">freelance.com</a>&#160;:</p>
  381.  
  382. <p><img src="https://sebastienguillon.com/images/journal/2006/04/freelance-com-incomp.png" width="380" height="90" alt="Le navigateur que vous utilisez n est pas compatible avec nos applications. Utilisez un des liens suivants pour télécharger un navigateur compatible : Netscape, Internet Explorer" class="illustrationCenterBorder" /></p>
  383.  
  384. <p>Ben voyons.</p>
  385.  
  386. <p>La <i xml:lang="en">tagline</i> de freelance.com est <q cite="http://www.freelance.com">il est temps de travailler autrement</q>. Vous avez une bonne chance pouvoir lire cette devise si vous avez de bons yeux et si vous utilisez un navigateur visuel, en affichant les images.</p>
  387.  
  388. <p>Cette devise s’applique probablement plus aux utilisateurs du site qu’à son concepteur/responsable, qui continue à ignorer les standards du web, les bonnes pratiques, les mesures d’accessibilité, bref qui n’a probablement pas <q>travaillé autrement</q> depuis de nombreuses années.</p>
  389.  
  390. <p>Je ne sais pas quelles <q>applications</q> de freelance.com sont incompatibles avec <a href="http://www.opera.com/">Opera</a> (version 8.54), mais le plus intéressant est que si je choisis d’identifier Opera comme Internet Explorer, mon navigateur est soudain reconnu comme Opera, et le message est un peu plus adapté, quoique, en fait, pas du tout&#160;:</p>
  391.  
  392. <p><img src="https://sebastienguillon.com/images/journal/2006/04/freelance-com-opera.png" width="380" height="90" alt="Nos applications ne tournent pas encore sous Opera Utilisez un des liens suivants pour télécharger un navigateur compatible : Netscape Internet Explorer" /></p>
  393.  
  394. <p>Le <i xml:lang="en"><a href="http://www.webstandards.org/2002/12/20/dear-web-developers-browser-sniffing-is-stupid/" hreflang="en">browser sniffing</a></i> est une mauvaise pratique, il est temps (depuis très longtemps) de l’abandonner. Un des problèmes du <i xml:lang="en">browser sniffing</i> est que vous devez en permanence mettre à jour votre code (JavaScript en l’occurence), sinon vous vous exposez vraiment au ridicule (vu sous Netscape&#160;4.7)&#160;:</p>
  395.  
  396. <p><img src="https://sebastienguillon.com/images/journal/2006/04/freelance-com-netscape.png" width="380" height="70" alt="Vous n utilisez pas la dernière version de Netscape 4. Pour une plus grande stabilité, utilisez la version 4.79 or 6" /></p>
  397.  
  398. <p>Un petit tuyau de débutant en JavaScript pour le webmaster de freelance.com&#160;: il est possible d’<a href="http://fr.wikibooks.org/wiki/Programmation_JavaScript/Expression_littérale#L.27.C3.A9chappement_des_guillemets_simples_.28.5C.27.29_ou_double_.28.5C.22.29">échapper une apostrophe</a> en JavaScript. Cependant l’idéal est toujours d’utiliser de véritables <a href="http://fr.wikipedia.org/wiki/Apostrophe_(typographie)">apostrophes typographiques</a> ce qui résout instantanément le problème.</p>
  399.  
  400. <p>Je n’ai rien en particulier contre freelance.com, il doit y avoir des milliers de sites professionnels aussi mal codés et qui se satisfont de n’accepter qu’une partie de leur public (marché) potentiel. Mais leur <i xml:lang="en">tagline</i> ridicule m’a donné envie d’en savoir plus… ils ont donc une bonne accroche, c’est déjà ça.</p>
  401. </xhtml:div>
  402. </content>
  403. </entry>
  404.  
  405. <entry>
  406. <title type="xhtml" xml:lang="fr">
  407. <xhtml:div>
  408. Début de la journée sans CSS
  409. </xhtml:div>
  410. </title>
  411. <link rel="alternate" type="text/html" href="https://sebastienguillon.com/journal/2006/04/debut-de-la-journee-sans-css" />
  412. <id>tag:sebastienguillon.com,2006-04-04:/journal/2006/04/debut-de-la-journee-sans-css</id>
  413.  
  414. <updated>2006-04-04T21:54:23Z</updated>
  415. <published>2006-04-04T21:54:23Z</published>
  416.  
  417. <author>
  418. <name>Sébastien</name>
  419. <uri>https://sebastienguillon.com</uri>
  420. </author>
  421.  
  422. <content type="xhtml" xml:lang="fr">
  423. <xhtml:div>
  424. <p>Après quelques réglages liés au fonctionnement de mes multiples feuilles de styles, je commence une longue journée (48 heures) sans CSS.</p>
  425.  
  426. <p>Pour comprendre de quoi il retourne, lisez <cite><a href="https://sebastienguillon.com/journal/2006/04/deshabillez-votre-site-pendant-une-journee">Déshabillez votre site pendant une journée</a></cite> et suivez les liens pour en savoir plus.</p>
  427.  
  428. <p>Vous pouvez cependant retrouver les différentes feuilles de styles dans le menu habituel.</p>
  429.  
  430. <p>Tout événement digne de ce nom (et tout particulièrement dans le domaine des standards du web) doit avoir sa polémique, lisez les réticences, un peu excessives à mon avis, de <a href="http://s.billard.free.fr/referencement/index.php?2006/04/04/217-jamais-sans-mon-style" title="Jamais sans mon style">Sébastien Billard</a>.</p>
  431.  
  432. <p>La discussion se poursuit <a href="http://www.blog.webatou.be/index.php?2006/04/04/pourquoi-le-annual-naked-day">chez Monique</a>, où elle s'ouvre par une bonne explication du sens de cette journée.</p>
  433. </xhtml:div>
  434. </content>
  435. </entry>
  436.  
  437. <entry>
  438. <title type="xhtml" xml:lang="fr">
  439. <xhtml:div>
  440. Déshabillez votre site pendant une journée
  441. </xhtml:div>
  442. </title>
  443. <link rel="alternate" type="text/html" href="https://sebastienguillon.com/journal/2006/04/deshabillez-votre-site-pendant-une-journee" />
  444. <id>tag:sebastienguillon.com,2006-04-01:/journal/2006/04/deshabillez-votre-site-pendant-une-journee</id>
  445.  
  446. <updated>2006-04-01T20:59:19Z</updated>
  447. <published>2006-04-01T20:59:19Z</published>
  448.  
  449. <author>
  450. <name>Sébastien</name>
  451. <uri>https://sebastienguillon.com</uri>
  452. </author>
  453.  
  454. <content type="xhtml" xml:lang="fr">
  455. <xhtml:div>
  456. <p><a href="http://www.dustindiaz.com/about/">Dustin Diaz</a> lance le premier <i xml:lang="en"><a href="http://www.dustindiaz.com/naked-day/" hreflang="en" >Annual CSS Naked Day</a></i> («&#160;journée de nudité CSS&#160;»).</p>
  457.  
  458. <p>Rien de véritablement érotique, mais ça peut exciter les obsédés de la sémantique, dont je suis.</p>
  459.  
  460. <p>Le mot d’ordre est de libérer votre site web de son carcan de CSS et de l’exposer dans toute sa nudité sémantique, pendant toute une journée, le <strong>mercredi 5 avril 2006</strong>.</p>
  461.  
  462. <p>L’objectif est de promouvoir les standards du web et la sémantique. Un site bien conçu doit en effet ne rien perdre de sa cohérence et de sa lisibilité lorsqu’il est dépouillé de sa couche de présentation&#160;: les styles CSS.</p>
  463.  
  464. <p>Si vous avez bien respecté le principe de séparation entre structure et présentation ça ne devrait poser aucun problème, votre site devrait rester parfaitement utilisable. Quelques commentaires HTML autour des éléments <code>link</code> qui incluent les différentes feuilles de styles et le tour est joué.</p>
  465.  
  466. <p>En anglais dans le texte, les quelques lignes que j’ai paraphrasées&#160;:</p>
  467.  
  468. <blockquote cite="http://www.dustindiaz.com/naked-day/">
  469. <p>This is merely to see if you’re up to the challenge to put your website on the line. […]</p>
  470.  
  471. <p>The fact of the matter is, if you’re writing good solid markup to begin with, it shouldn’t be all that bad anyway. It will be a test case to see how usable your website is to others without a “design.”</p>
  472. </blockquote>
  473.  
  474. <p>Vous sentez-vous prêts à relever le défi&#160;? En tout cas Sébastien Guillon (.com) sera nu le mercredi 5 avril prochain.</p>
  475.  
  476. <p>– Via Monique Brunel (<a href="http://www.blog.webatou.be/index.php?2006/04/01/votre-site-tout-nu">Blog Webatou</a>), via Rémi Prévost (<a href="http://remiprevost.com/weblog/2006/03/31/journee-annuelle-de-la-nudite-des-sites-web/">Effair</a>).</p>
  477. </xhtml:div>
  478. </content>
  479. </entry>
  480.  
  481. <entry>
  482. <title type="xhtml" xml:lang="fr">
  483. <xhtml:div>
  484. Contre DADVSI, signez la pétition
  485. </xhtml:div>
  486. </title>
  487. <link rel="alternate" type="text/html" href="https://sebastienguillon.com/journal/2006/03/contre-dadvsi-signez-la-petition" />
  488. <id>tag:sebastienguillon.com,2006-03-22:/journal/2006/03/contre-dadvsi-signez-la-petition</id>
  489.  
  490. <updated>2006-03-22T15:03:49Z</updated>
  491. <published>2006-03-22T15:03:49Z</published>
  492.  
  493. <author>
  494. <name>Sébastien</name>
  495. <uri>https://sebastienguillon.com</uri>
  496. </author>
  497.  
  498. <content type="xhtml" xml:lang="fr">
  499. <xhtml:div>
  500. <p>Malgré toutes ma bonne volonté pour ne pas polluer ce journal avec de la politique hors sujet, il m’est difficile de résister quand un certain M. Glazman tend aux citoyens une perche si parfaite.</p>
  501.  
  502. <p><a href="http://standblog.org/blog/2006/03/17/93114708-dadvsi-chronique-d-un-desastre" title="DADVSI : chronique d’un désastre">La loi DADVSI a fini par passer</a> mais elle ne satisfait personne à part quelques députés paresseux bien contents de passer à autre chose.</p>
  503.  
  504. <p>Merci donc à <a href="http://daniel.glazman.free.fr/weblog/">Daniel Glazman</a> d’avoir mis en place cette, nouvelle, <strong><a href="http://www.petitiononline.com/nodadvsi/petition.html">pétition Contre DADVSI</a></strong> que j’ai signée et que je vous invite également à <strong><a href="http://www.petitiononline.com/nodadvsi/petition.html">signer</a></strong> si vous pensez, comme moi, que <a href="http://www.odebi.org/new/theme/accueil.php?a=300">la loi DADVSI est une arnaque</a> et qu’elle porte atteinte à vos libertés.</p>
  505.  
  506. <h2>Intitulé de la pétition Contre DADVSI</h2>
  507.  
  508. <blockquote cite="http://www.petitiononline.com/nodadvsi/petition.html"><p>Je réalise des copies à usage privé de mes DVD, je craque les DRM de mes fichiers pour pouvoir les passer sur mon lecteur MP3, je télécharge depuis Internet. J’ai une copie d’un code DeCSS. J’ai un logiciel de P2P. Et je n’ai pas l’intention d’arrêter parce que rien de tout cela n’était jusqu’à présent illégal.</p></blockquote>
  509.  
  510. <p>La portée ambiguë de cette loi fait en effet planer des doutes quant à la parfaite légalité de ces pratiques et programmes/logiciels.</p>
  511.  
  512. <p>J'utilise le client <a href="http://fr.wikipedia.org/wiki/Bittorrent">Bittorrent</a> <a href="http://azureus.sourceforge.net/">Azureus</a> pour télécharger et <strong>redistribuer</strong> des logiciels (Opera, Linux Ubuntu…), je contourne les protections de certains DVD pour pouvoir les lire sur mon PC quand mon vieux lecteur de salon les refuse, etc. <q>et je n’ai pas l’intention d’arrêter parce que rien de tout cela n’était jusqu’à présent illégal</q>.</p>
  513. </xhtml:div>
  514. </content>
  515. </entry>
  516.  
  517. <entry>
  518. <title type="xhtml" xml:lang="fr">
  519. <xhtml:div>
  520. Convertir MacRoman en UTF-8
  521. </xhtml:div>
  522. </title>
  523. <link rel="alternate" type="text/html" href="https://sebastienguillon.com/journal/2006/03/convertir-macroman-en-utf-8" />
  524. <id>tag:sebastienguillon.com,2006-03-03:/journal/2006/03/convertir-macroman-en-utf-8</id>
  525.  
  526. <updated>2006-03-18T03:57:21Z</updated>
  527. <published>2006-03-18T03:57:21Z</published>
  528.  
  529. <author>
  530. <name>Sébastien</name>
  531. <uri>https://sebastienguillon.com</uri>
  532. </author>
  533.  
  534. <content type="xhtml" xml:lang="fr">
  535. <xhtml:div>
  536. <p>J’ai récemment été confronté à cette nécessité, or PHP ne gère pas <a href="http://fr.wikipedia.org/wiki/MacRoman">MacRoman</a> et tout le monde ne peut pas utiliser <a href="http://fr3.php.net/iconv">iconv</a> (cas des hébergements mutualisés peu flexibles).</p>
  537.  
  538. <p>Voici donc <a href="https://sebastienguillon.com/test/jeux-de-caracteres/MacRoman_to_utf8.txt.php">une fonction</a> en PHP qui permet d’encoder du texte supposé être en MacRoman vers de l’<a href="http://fr.wikipedia.org/wiki/Utf-8">UTF-8.</a></p>
  539.  
  540. <p>Elle utilise la fonction PHP <a href="http://fr3.php.net/manual/fr/function.strtr.php">strtr()</a>. J’ai fait le choix du tableau associatif pour pouvoir plus facilement détecter les bugs et contrôler individuellement les conversions. Je ne sais pas si ça irait plus vite avec deux chaînes, et je n’ai pas l’intention de tester. Mais si vous avez un avis sur la question, vous pouvez laisser un commentaire.</p>
  541.  
  542. <p>MacRoman comporte quelques <a href="http://fr.wikipedia.org/wiki/Ligature_(typographie)">ligatures</a> (Æ, æ, Œ, œ, fi et fl), la fonction permet <em>en option</em> de les délier. Cette option a deux niveaux pour permettre de ne délier que les ligatures purement typographiques (fi et fl)).</p>
  543.  
  544. <p>Pour que cette fonction puisse être utilisée en toute sécurité dans des documents (X)HTML, les caractères interdits ou litigieux sont convertis en espaces ou supprimés (cas du logo Apple – <code>xF0</code> – absent d’Unicode).</p>
  545.  
  546. <p>Les points <code>x09</code> (<i xml:lang="en">tabulation</i>), <code>x0A</code> (<i xml:lang="en">line feed</i>) et <code>x0D</code> (<i xml:lang="en">carriage return</i>) sont conservés car compatibles à la fois avec Unicode et (X)HTML.</p>
  547.  
  548. <p>Si j’ai le temps, je ferai une page permettant d’exploiter cette fonction avec un formulaire et éventuellement un <i xml:lang="en">upload</i> de fichier.</p>
  549.  
  550. <p>Un grand merci à <a href="http://www.miakinen.net/vrac/">Olivier Miakinen</a>, pour ses conseils éclairés et sa patience.</p>
  551.  
  552. <h2>Ressources</h2>
  553.  
  554. <ul>
  555. <li><a href="http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ROMAN.TXT">Map (external version) from Mac OS Roman character set to Unicode 2.1 and later</a></li>
  556. <li><a href="http://people.w3.org/rishida/scripts/uniview.fr/conversion.html">Convertisseur de code Unicode</a></li>
  557. <li><a href="https://sebastienguillon.com/test/jeux-de-caracteres/MacRoman_to_utf8.txt.php">Code source de la fonction</a></li>
  558. </ul>
  559.  
  560. </xhtml:div>
  561. </content>
  562. </entry>
  563.  
  564. <entry>
  565. <title type="xhtml" xml:lang="fr">
  566. <xhtml:div>
  567. Arte vod
  568. </xhtml:div>
  569. </title>
  570. <link rel="alternate" type="text/html" href="https://sebastienguillon.com/journal/2006/03/arte-vod" />
  571. <id>tag:sebastienguillon.com,2006-03-03:/journal/2006/03/arte-vod</id>
  572.  
  573. <updated>2006-03-03T16:29:28Z</updated>
  574. <published>2006-03-03T16:29:28Z</published>
  575.  
  576. <author>
  577. <name>Sébastien</name>
  578. <uri>https://sebastienguillon.com</uri>
  579. </author>
  580.  
  581. <content type="xhtml" xml:lang="fr">
  582. <xhtml:div>
  583. <p><a href="http://www.artevod.com/">Arte vod</a> est un service d’<a href="http://www.arte-tv.com">Arte</a> qui permet de télécharger les programmes de la chaîne en toute légalité.</p>
  584.  
  585. <p>Curieux de découvrir ce service en-ligne, quelle ne fut pas ma déception de tomber sur ce message&#160;:</p>
  586.  
  587. <img src="https://sebastienguillon.com/images/journal/2006/03/artevod-ie.png" width="480" height="320" alt="arte vod&#160;: Pour profiter pleinement des fonctionnalités avancées du site vous devez utiliser Internet explorer. La compatibilité avec les navigateurs Firefox, Mozilla, Safari ainsi que la portabilité sous Mac seront mises en oeuvre dans les prochaines semaines. Merci pour votre compréhension. L’équipe www.artevod.com" class="illustrationCenterBorder" />
  588.  
  589. <p>Il faut dire que la détection était drastique&#160;:</p>
  590.  
  591. <pre class="codeblock"><code>&lt;script language="JavaScript" type="text/javascript"&gt;
  592. if ( browser != "Internet Explorer" )
  593. {
  594. window.location.replace( './pages/pageFirefox.html' );
  595. }
  596. &lt;/script&gt;</code></pre>
  597.  
  598. <p><em>Était</em>, car le code est à présent commenté et on peut donc finalement entrer sur le site avec Opera ou Firefox. Je suppose qu’il ont attendu de se faire bien engueuler par les utilisateurs de Firefox et de Mac avant de faire ce petit changement.</p>
  599.  
  600. <p>Ce comportement est symptomatique d’une nouvelle formule de la <a href="http://fr.wikipedia.org/wiki/Guerre_des_navigateurs">guerre des navigateurs</a>&#160;: si vous n’utilisez pas Internet Explorer, c’est donc que vous utilisez Firefox, si vous n’êtes pas sous Windows, c’est donc que vous êtes sous Mac. Les autres navigateurs ne comptent pas, les autres systèmes ne comptent pas.</p>
  601.  
  602. <p>Au fait, pourquoi une telle rigueur, quelles sont ces <q>fonctionnalités avancées</q> qui rendaient l’utilisation d’un navigateur obsolète indispensable&#160;? Il s’agit tout simplement des <i xml:lang="en">previews</i> au format Windows Media Player, et rien d’autre. Pas très malin de refuser l’accès (et donc la vente) à une partie des utilisateurs pour une raison si futile…</p>
  603.  
  604. <p>Je rappelle qu’on n’est pas sensé développer <strong>pour le web</strong> des sites et applications en fonction d’un ou deux agents utilisateurs particuliers mais qu’il s’agit de viser l’<a href="http://fr.wikipedia.org/wiki/Interopérabilité">interopérabilité</a> la plus grande grâce aux standards du web. Il ne sert à rien d’utiliser un joli DOCTYPE XHTML 1.0 Strict si c’est pour refouler la moitié (rêvons un peu) des utilisateurs à l’entrée.</p>
  605.  
  606. <p>Ça va finir par rentrer un jour&#160;?</p>
  607.  
  608.  
  609.  
  610.  
  611. </xhtml:div>
  612. </content>
  613. </entry>
  614.  
  615. <entry>
  616. <title type="xhtml" xml:lang="fr">
  617. <xhtml:div>
  618. Ce DOCTYPE est-il valide ?
  619. </xhtml:div>
  620. </title>
  621. <link rel="alternate" type="text/html" href="https://sebastienguillon.com/journal/2006/02/ce-doctype-est-il-valide" />
  622. <id>tag:sebastienguillon.com,2006-02-22:/journal/2006/02/ce-doctype-est-il-valide</id>
  623.  
  624. <updated>2006-02-22T21:38:15Z</updated>
  625. <published>2006-02-22T21:38:15Z</published>
  626.  
  627. <author>
  628. <name>Sébastien</name>
  629. <uri>https://sebastienguillon.com</uri>
  630. </author>
  631.  
  632. <content type="xhtml" xml:lang="fr">
  633. <xhtml:div>
  634. <p>Considérez le <abbr title="Document Type Declaration">DOCTYPE</abbr> suivant&#160;:</p>
  635.  
  636. <p><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD&#160;XHTML&#160;1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</code></p>
  637.  
  638. <p>Il présente visiblement un dilemme&#160;: l’identifiant public (<abbr title="Formal Public Identifier">FPI</abbr>) fait référence au <code>XHTML&#160;1.1</code>, alors que l’URL de l’identifiant SYSTEM renvoit vers la <abbr title="Document Type Definition">DTD</abbr> du <code>XHTML&#160;1.0 transitional</code>. Il ne fait évidemment pas partie des <a href="http://www.w3.org/QA/2002/04/valid-dtd-list.html">DTD recommandées</a> par le W3C.</p>
  639.  
  640. <h2>Pourquoi le validateur ne voit pas cette erreur</h2>
  641.  
  642. <p>Le <a href="http://validator.w3.org/" title="The W3C Markup Validation Service">validateur du W3C</a> ne lit pas la DTD quand il reconnaît un identifiant public (en l’occurence <code>-//W3C//DTD XHTML 1.1//EN</code>). Il va donc ici chercher la <abbr title="Document Type Definition">DTD</abbr> correspondant au XHTML&#160;1.1 et si le document est valide pour cette DTD, il sera déclaré valide, <a href="http://lists.w3.org/Archives/Public/www-validator/2005Oct/0058.html" title="another doubt on validator ...">quelle que soit la DTD définie dans l’identifiant public</a>. <a href="http://www.groupereflect.net/" title="groupe Reflect">exemple</a>.</p>
  643.  
  644. <p>C’est un <a href="http://lists.w3.org/Archives/Public/www-validator/2005Oct/0108.html" title="Re: Error in validator?">problème connu</a>, et qui a une contrepartie: lorsque l’identifiant public n’est pas reconnu, l’identifiant système est recherché. S’il correspond à ne DTD valide, le document est validé avec celle-ci et le validateur ne vérifie pas si l’identifiant public correspond. Cette bizarrerie <a href="http://www.blog-and-blues.org/weblog/2004/11/07/338-valider-c-est-bien-reflechir-c-est-mieux" title="Valider, c’est bien. Réfléchir, c’est mieux.">ne date pas d’hier</a>, et permet toujours de <a href="http://validator.w3.org/check?uri=http%3A%2F%2Fsebastienguillon.com%2Ftest%2Fxhtml%2FDOCTYPE-xhtml-bidon.xhtml&amp;charset=%28detect+automatically%29&amp;doctype=Inline&amp;verbose=1">faire dire au validateur à peu près ce qu’on veut</a> (à condition ici de servir le document avec un type <abbr title="Multipurpose Internet Mail Extensions">MIME</abbr> correct).</p>
  645.  
  646. <h2>Réponse&#160;?</h2>
  647.  
  648. <p>Il n’existe pas à ma connaissance d’outil pour valider les <code>DOCTYPE</code>, je ne sais même pas si l’idée à un sens, mais il est évident que déclarer un identifiant public différent de l’identifiant système est une aberration, les deux étant sensés se référer à la même <abbr title="Document Type Definition">DTD</abbr>.</p>
  649.  
  650. </xhtml:div>
  651. </content>
  652. </entry>
  653.  
  654. </feed>
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda