blog.pagesd.info

Aller au contenu | Aller au menu | Aller à la recherche

jeudi 11 mars 2010

Faire une liste Html.RadioButton

Un bouton radio ne s'utilisant jamais seul, on doit donc coder plusieurs helpers Html.RadioButton() quand on veut permettre à l'utilisateur de faire un choix entre plusieurs options :

<% using (Html.BeginForm()) { %>
   <fieldset>
     <p>
        Couleur ?
        <%= Html.RadioButton("Couleur", "R", false) %>Rouge
        <%= Html.RadioButton("Couleur", "V", true) %>Vert
        <%= Html.RadioButton("Couleur", "B", false) %>Bleu
     </p>
     <p>
        <input type="submit" value="Save" />
     </p>
   </fieldset>
<% } %>

Ce code ASP.NET permet d'afficher la page ci-dessous :

radio-button-helper.jpg

Si on consulte le code source de cette page, on trouve le code HTML suivant :

<form action="/Home/Edit" method="post">
   <fieldset>
     <p>
        Couleur ?
        <input id="Couleur" name="Couleur" type="radio" value="R" />Rouge
        <input checked="checked" id="Couleur" name="Couleur" type="radio" value="V" />Vert
        <input id="Couleur" name="Couleur" type="radio" value="B" />Bleu
     </p>
     <p>
        <input type="submit" value="Save" />
     </p>
   </fieldset>
</form>

Il faut cliquer sur un des 3 boutons radio pour sélectionner une option. Une fois qu'une option a été sélectionnée, le fait de cliquer sur un autre bouton radio va sélectionner une nouvelle option et automatiquement dé-sélectionner l'option qui était sélectionnée auparavant. Les 3 boutons radio sont liés entre eux et on ne peut sélectionner qu'une seule option à la fois parce qu'au niveau du code HTML, les 3 <input type="radio" ...> ont le même attribut name.

Pour l'instant, si on veut sélectionner une option, il est obligatoire de bien viser et de cliquer pile sur le petit rond du bouton radio. Dans la pratique, il faudrait faire en sorte que quand on clique sur le libellé de l'option, cela permette aussi de sélectionner cette option.

Pour faire ça, il faut associer le libellé au bouton radio. En HTML, on fait ça en utilisant une balise "label" pour définir le libellé et on relie ce label au bouton radio avec un attribut "for" qui pointe vers l'identifiant du bouton radio :

<input id="Couleur" name="Couleur" type="radio" value="R" /><label for="Couleur">Rouge</label>

Avec le helper Html.RadioButton() de ASP.NET MVC, il suffit donc de faire ça, mais le problème c'est que ça n'est pas si facile que ça...

Pour commencer, si on re-regarde le code HTML généré, on s'aperçoit que les 3 boutons radio ont le même identifiant ! Outre le fait que c'est pas normal du tout, ça nous complique la vie pour associer chaque libellé au bon bouton radio (puisque l'attribut "for" a besoin de l'identifiant du contrôle associé). Il va donc falloir trouver un moyen pour définir un identifiant unique pour chaque bouton radio. Heureusement, c'est prévu : le helper Html.RadioButton() accepte un objet htmlAttributes qui va nous permettre de faire ça.

Couleur ?
<%= Html.RadioButton("Couleur", "R", false, new { @id = "Red" })%><label for="Red">Rouge</label>
<%= Html.RadioButton("Couleur", "V", true, new { @id = "Green" })%><label for="Green">Vert</label>
<%= Html.RadioButton("Couleur", "B", false, new { @id = "Blue" })%><label for="Blue">Bleu</label>

Et ce coup-ci, on peut constater au niveau du code HTML généré que les 3 boutons radio n'ont plus à partager le même identifiant :

Couleur ?
<input id="Red" name="Couleur" type="radio" value="R" /><label for="Red">Rouge</label>
<input checked="checked" id="Green" name="Couleur" type="radio" value="V" /><label for="Green">Vert</label>
<input id="Blue" name="Couleur" type="radio" value="B" /><label for="Blue">Bleu</label>
 

Et maintenant, il est possible de cliquer sur le nom d'une couleur pour automatiquement sélectionner le bouton radio qui lui est associé.

lundi 25 janvier 2010

Nouvelle charte graphique Prisca

Un billet quasi-obligé pour donner quelques nouvelles du blogue en attendant d'ici peu d'autres informations sur la traduction du tutoriel NerdDinner. Pour commencer, l'évolution la plus évidente c'est le changement de la charte graphique. Dans la charte graphique précédente, j'avais cherché à mettre en avant le contenu du blogue en l'isolant dans un cadre sur fond blanc alors que tout le reste du contenu était "posé" directement sur un fond de page aux tons marron clair.

Le problème, c'est que j'avais essayé de faire en sorte que le maximum de contenu soit visible en une seule fois. Pour cela, j'avais diminué la taille des caractères, réduit un peu trop les marges et pas mal chargé les blocs d'en-tête où j'avais regroupées toutes les informations du billet : titre, date, permalien, tags...

Un autre truc que j'avais fini par trouver un peu lassant à la longue, c'était le côté très encadré (et même enfermé) des différents éléments de cette ancienne charte graphique. En plus du cadre général pour le contenu principal, j'avais utilisé une couleur de fond plus foncée pour dessiner une sorte de cadre pour les blocs d'en-tête des billets. Et pour bien insister, j'étais allé jusqu'à présenter les tags et même quelques éléments de navigation sous forme de boutons avec un léger effet 3D... A tel point que j'avais d'ailleurs appelé cette charte graphique "Boxed" :)

Ce coup-ci, j'ai commencé par essayer de corriger ça en démarrant encore une fois avec un grand bloc blanc mais en y disposant des marges beaucoup plus importantes. Je cherchais en fait à obtenir un peu le même effet que sur une page dans Word avec des marges de 3 ou 4 centimètres. Le problème, c'était que si je voulais rester dans une échelle d'environ 960 pixels de large, il ne me restait pas tant d'espace que ça pour le texte (et surtout les extraits de code source) une fois que j'avais compté l'espace pris par ces marges et le bandeau vertical destiné aux tags et aux différents menus ou liens...

Alors je me suis dit qu'à tant qu'à faire, pour gagner un maximum de place le mieux c'était de carrément supprimer le cadre blanc et de partir avec un simple fond de page tout blanc sur lequel je pourrai placer directement tous les éléments du blogue. Avec cette méthode, je n'avais plus besoin que d'une large marge entre le contenu principal et la colonne latérale.

Puis j'ai augmenté la taille des caractères du contenu principal pour qu'il ressorte plus par rapport à tout le reste du blogue (et au début j'avais même essayé avec des caractères 10% plus gros mais ça faisait un peu trop). Pour accentuer ce contraste entre ce contenu principal et le reste du contenu, j'ai aussi traité les liens de deux façons différentes, même si je les affiche toujours en bleu dans les deux cas :

  • soulignés par défaut dans le contenu principal puis non soulignés lors du passage de la souris,
  • non soulignés par défaut dans le contenu secondaire et soulignés seulement au moment du passage de la souris dessus.

Pour compléter l'impression de clarté et de simplicité apportée par le fond blanc sans bordure, j'ai aussi cherché à simplifier l'aspect général du blogue. Pour commencer, j'ai éclairci le texte en employant un gris foncé plutôt que du noir. J'ai aussi allégé la présentation en augmentant de façon significative l'espacement entre les lignes. Et pour renforcer un peu plus cette idée de sobriété, j'ai aussi diminué le nombre de polices de caractères employées :

  • Georgia pour le titre du blog (balise <h1>)
  • une police style Courrier pour le code source
  • Verdana pour tout le reste

Après j'ai re-stylé la présentation des différents niveaux de titres et de sous-titres. Pour eux aussi, j'ai tout d'abord utilisé une taille de caractères beaucoup plus grosse que dans la version précédente. Puis j'ai utilisé un jeu de couleurs propre à chaque niveau de titre : un vert basique pour le plus haut niveau (balise <h2>), un gris assez clair pour le niveau intermédiaire (balise <h3>) et un simple noir pour le dernier niveau de titre (balise <h4>).

La seule fioriture au niveau des titres a été de placer une sorte de liseré gris très très clair en dessous des titres des billets pour marquer la séparation avec le contenu du billet lui-même. L'avantage c'est que je peux m'en servir pour y afficher la date de publication du billet, son lien permanent et la liste de ses tags.

Pour finir, en plus de l'avoir fait passer du côté gauche au côté droit de l'écran, j'ai complètement réorganisé le contenu du bandeau latéral. La partie lien a été fusionnée avec la partie navigation de Dotclear et ne contient plus que trois liens vers l'accueil, les archives et le fil RSS. Par la suite, il est possible que je rajoute une page spéciale pour remettre certains des liens qui apparaissaient auparavant dans cette barre latérale. Après réflexion j'ai décidé de conserver la zone de recherche parce qu'il m'arrive de m'en servir au moins pour rechercher parmi mes Blogmarks. Et je l'ai complété par la liste des derniers billets publiés (mais je ne suis pas vraiment sûr d'avoir envie de garder celle-ci). Et en dessous de cette liste j'ai relégué la liste des tags de laquelle j'ai fait disparaitre la corélation entre la taille des caractères et le nombre de billets correspondant aux tags.

Et sinon, à part ce changement au niveau de la charte graphique, le blogue a connu deux autres évolutions assez importantes même si elles sont beaucoup moins visibles.

La première de ces évolutions, c'est que j'ai enfin terminé de reprendre tous les billets que j'avais publiés à l'origine sur mes précédentes tentatives de blogues sous Blogger et WordPress, sans compter tous les billets consacrés à QC que je suis allé récupérer dans les archives de l'internet. Ca m'a pris du temps, mais je suis bien content de l'avoir fait.

En ce qui concerne la seconde de ces évolutions, elle n'est pas vraiment de mon fait, mais elle contribue à me simplifier pas mal la vie. Suite à la mise en place d'une version plus récente de Dotclear sur la plateforme GandiBlog, je peux maintenant republier mes Blogmarks de façon un peu plus automatisée. Avant, une fois que j'avais récupéré les blogmarks de la veille (par RSS) puis que je les avais envoyé vers Dotclear (via l'interface XML-RPC), je devais encore me connecter au blog pour ajouter manuellement un tag "Blogmarks". Mais maintenant, l'API de Dotclear prend en compte la propriété mt_keywords et je peux enfin définir le tag "Blogmarks" directement via l'interface XML-RPC. Et au passage, j'en ai profité pour bidouiller un peu le contenu généré par Blogmarks pour mieux gérer le cas où celui-ci contient un bloc de citation <blockquote>.

jeudi 10 septembre 2009

Placer un libellé semi-transparent sur une image

J'avais vu ça il y a pas mal de temps, alors ce coup-ci je blogue pour essayer de ne pas oublier comment faire.

Côté Html

<div class="img-desc">
        <img src="sample.jpg" alt="" />
        <cite>Salone del mobile Milano, April 2008 - Peeta</cite>
</div>

Côté CSS

.img-desc {
        position: relative;
        display: block;
        height:335px;
        width: 575px;
}
.img-desc cite {
        background: #111;
        filter:alpha(opacity=55);
        opacity:.55;
        color: #fff;
        position: absolute;
        bottom: 0;
        left: 0;
        width: 555px;
        padding: 10px;
        border-top: 1px solid #999;
}

Sources et exemples

vendredi 5 juin 2009

Ouvrir un document en dehors du navigateur

Quand on vient comme moi de changer de PC et que son nouveau Microsoft Internet Explorer a la facheuse habitude d'ouvrir les fichiers Word dans le navigateur plutôt que de lancer le Microsoft Word qui va bien, il ne faut pas hésiter à aller trifouiller dans le paramètres de l'explorateur de fichiers :

  • cliquer sur le menu "Outils"
  • choisr le sous-menu "Option des dossiers..."
  • aller sur l'onglet "Types de fichiers"
  • rechercher la ligne "DOC - Document Microsoft Word" (c'est dans l'ordre alphabétique)
  • cliquer sur le bouton "Avancé"
  • décocher "Parcourir dans une même fenêtre"
  • valider en cliquent sur le bouton "OK"
  • fermer la fenêtre "Option des dossiers" en cliquant sur le bouton "Fermer"

Pour faire bonne mesure et parce qu'on a rien à perdre, le mieux c'est ensuite de fermer les fenêtres de toutes les applications en cours, d'arrêter l'ordinateur puis de le redémarrer après avoir compté jusqu'à 5 (un, deux, trois, quatre et cinq).

Ou bien alors, avant d'en arriver à cette extrémité, on peut aussi en profiter pour répéter l'opération pour les fichiers Microsoft Excel, Adobe PDF, etcétéra...

jeudi 30 octobre 2008

Nouveau thème Boxed

Ca faisait un bon moment que j'y pensais et je l'ai enfin fait : mon blog a maintenant une nouvelle charte graphique ! Quittez donc 5 secondes votre agrégateur et venez vous rendre compte par vous-même :)

Au début, j'étais parti comme bien souvent de la charte graphique Skidoo Redux et petit à petit, j'étais arrivé à faire ce que je souhaitais obtenir, à savoir :

  • une présentation sur 2 colonnes, avec les menus ou autres dans une barre latérale sur la gauche et le contenu principal sur la partie de droite
  • un source html où le contenu principal apparait avant le contenu de la barre latérale
  • une mise en évidence du contenu principal (encadré et fond blanc) par rapport à tout le reste (fond uni qui occupe tout l'écran) et qui soit suffisamment large pour permettre les copies d'écrans et les extraits de codes sources

Malheureusement, l'adaptation sous Dotclear n'était pas si évidente que ça, parce que la structure de base pour Skidoo Redux est un peu différente de celle générée par défaut dans le cas d'un Gandi Blog.

Squelette html pour Skidoo Redux

<body>
    <div id="page-container">
        <div id="masthead">
            <div class="inside">
                <ul class="rMenu"> ... </ul>
                <h1> ... </h1>
            </div>
        </div>
        <div id="outer-column-container">
            <div id="inner-column-container">
                <div id="middle-column">
                    <div class="inside">
                        ...
                    </div>
                </div>
                <div id="left-column">
                    <div class="inside">
                        ...
                    </div>
                </div>
                <div class="clear-columns"><!-- do not delete --></div>
            </div>
        </div>
        <div id="footer">
            <div class="inside">
                ...
            </div>
        </div>
    </div>
</body>

Squelette html pour Gandi Blog

<body>
    <div id="page">
        <div id="top">
            <h1><span> ... </span></h1>
        </div>
        <p id="prelude"> ... </p>
        <div id="wrapper">
            <div id="main">
                <div id="content">
                    ...
                </div>
            </div>
            <div id="sidebar">
                <div id="blognav">
                    ...
                </div>
                <div id="blogextra">
                    ...
                </div>
            </div>
        </div>
        <div id="footer">
            ...
        </div>
    </div>
</body>

En fait, une bonne partie du principe de Skidoo Redux repose sur les deux div #outer-column-container et #inner-column-container qui permettent de définir la colonne de gauche en tant que border-left.

Dans le cas d'un Gandi Blog, il existe bien une div #wrapper qui peut se substituer à la div #outer-column-container, mais rien qui puisse correspondre à la div #inner-column-container.

Après un certain nombre d'essais d'adaptations, j'ai préféré laisser tomber et je suis allé voir sur dotaddict[http://dotaddict.org/ ce qu'il existait comme thèmes avec la structure que je souhaitais. Et parmi les différents thèmes à 2 colonnes proposés pour Dotclear 2, j'ai récupéré le thème Bastienne.

Le thème Bastienne pour Dotclear 2

Et me voila reparti pour un nouveau tour d'adaptations afin de reproduire ce que j'avais déjà réussi à faire avec Skidoo Redux.

J'ai essayé d'organiser la feuille de style en m'inspirant de cette d'origine et en gardant plus ou moins le découpage suivant :

  • la structure des différents blocs
  • la présentation des différents blocs
  • la présentation de certains blocs particuliers (citations, codes sources, listes...)
  • la présentation de blocs spécifiques à Dotclear (tags, commentaires, informations sur le billet...)

Par conséquent, si j'enlève toutes les parties spécifiques à Dotclear (et pour l'instant marquées GandiBlog), je devrais obtenir une charte graphique tout à fait acceptable pour Altrr-Press (à tester plus tard).

Je ne suis pas encore certain d'avoir bien pris en compte toutes les possibilités de Dotclear, masi c'est déjà largement suffisant pour l'utilisation que j'en fait sur ce blog. Et donc, après quasiment 2 ans de bons et loyaux services, je laisse tomber la charte graphique Scribbish pour ce blog.

Pour la mise en prod, c'est assez simple. Dans le tableau de bord, je clique sur "Apparence du blog" et je conserve mon "Custom theme" actuel, mais je change sa configuration de :

@import url(/public/scribbish/application.css);

en :

@import url(/public/css/boxed/boxed.css);
@media print {
  body { margin: 0; padding: 0; }
  #page { width: 100%; }
  #prelude, #navlinks, #sidebar, #comment-form, #pings, #ping-url, #comments-feed { display: none; height: 0; width: 0; }
  #main { float: none; margin: 0; padding: 0; width: 99% important; }
  #content pre { color: #000; background: #eee; }
  #content { border: none 0; margin: 0; padding: 0; width: 99% important; }
  /* http://longren.org/2006/09/27/wrapping-text-inside-pre-tags */
  pre {
    white-space: pre-wrap;
    white-space: -moz-pre-wrap !important;
    white-space: -pre-wrap;
    white-space: -o-pre-wrap;
    word-wrap: break-word;
  }               
}

La partie @media print, c'est pour la feuille de style à l'impression. Ca fait disparaitre tout ce qui est navigation ou accessoire de façon à n'imprimer que le contenu central, et surtout sans qu'il manque la fin des lignes (comme c'est quelquefois le cas sur certains blogs).

Pour la suite, je vais tester sur place pendant quelque temps, peut-être fignoler quelques trucs par ci par là et faire en sorte que la CSS soit bien valide. J'aimerai aussi faire apparaitre un menu en haut à droite, mais je ne saisi pas encore si je pourrait faire ça avec un simple bloc de texte puisqu'avec les Gandi Blog il n'est pas possible de modifier le squelette html. Et puis il faut aussi que je m'occupe du bloc #prelude avec les liens de navigation pour l'accessibilité que j'ai laissé caché pour l'instant.

mercredi 22 octobre 2008

Faire des vignettes d'écrans de sites internet

Plutôt que de continuer à garder ça sur un coin de page dans mon cahier grand format petit carreaux à spirale, autant recopier ici ma liste des sites internet qui permettent de générer des miniatures de pages web :

  1. Website Thumbnails and Webpage Snapshots of Any Website
  2. thmbnl - small pictures for your big picture : nécessite une inscription
  3. thumbalizr - thumb your web page
  4. thumboo - Because Text Links Suck
  5. Thumbshot.org - Free thumbnails for your website : nécessite une inscription
  6. wdesc - service de thumbshots
  7. WebShotsPro.com : Website Screenshot Generation
  8. Website thumbnails - Making URLs look memorable
  9. websnapr - Website Thumbnails For Your Site

Et dans des styles un peu différent, il y a aussi :

Mises à jour :

lundi 17 septembre 2007

Disappearing Text or Images in IE?

IE exhibits a very strange bug whereby text or background images sometimes disappear from sight. These items are still actually present and, if you highlight everything on screen or hit refresh, they'll often re-appear. Kind of strange, huh?

This problem mostly occurs on background images and on text positioned next to a floated element. To remedy the problem, simply insert position: relative into the CSS command for the disappearing element, and for some bizarre reason, that'll usually fix the problem. If this doesn't work (and sometimes, it doesn't), assign a width to the offending element in the CSS -- that should fix the problem.

My Top Ten CSS Tricks

vendredi 3 février 2006

Sémantique HTML et PageRank

Mike Davidson tried to rank for the term lodefizzle on Google. He wrote a dozen different pages to find out what aspects of HTML Google really cares about. Scroll down to the Google…

  1. The H1 tag does indeed assert some dominance and we can therefore assume you are better off using proper headings in your HTML documents.
  2. The mere appearance of many nested tables in your code does not have a strong enough negative effect to be considered a drag on search engine ranking.
  3. It’s not clear that validity helps search engine ranking, but it’s definitely true that certain errors in your code can get you completely removed from indexes.
  4. The semantic effect of hierarchical HTML headings is a stronger factor in search rankings than more rudimentary measures such as physical keyword placement.
  5. Although good semantics are somewhat valuable in optimization, simple things like proper titles, descriptive filenames, and incoming links are dramatically more important.

vendredi 20 janvier 2006

Comment cibler les publicités AdSense

Il est possible d'indiquer à Google quelle sont les parties de la page dont on souhaite mettre le contenu en avant. Cela permet de cibler les annonces affichées sur le site en fonction de ce contenu.

Pour cela, il suffit d'encadrer le contenu "intéressant" par :

<!-- google_ad_section_start -->
    ....
<!-- google_ad_section_end -->

Il est aussi possible de "masquer" du contenu pour éviter d'avoir des annonces relatives à celui-ci :

<!-- google_ad_section_start(weight=ignore) -->

    ....
<!-- google_ad_section_end -->

Via «What is section targeting and how do I implement it?»

jeudi 19 janvier 2006

Blogmarks to Html conversion

Ce fichier permet de transformer le fil atom de Blogmarks (par exemple http://api.blogmarks.net/user/ms_michel) en code html afin de pouvoir l'intégrer à une page web.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
        xmlns:atom="http://www.w3.org/2005/Atom" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
        xmlns:dc="http://purl.org/dc/elements/1.1/">
  <xsl:output method="html" />
  <xsl:template match="/">
    <xsl:apply-templates select="/atom:feed/atom:head" mode="before" />
    <xsl:apply-templates select="/atom:feed/atom:entry" />
    <xsl:apply-templates select="/atom:feed/atom:head" mode="after" />
  </xsl:template>
  <xsl:template match="atom:feed/atom:head" mode="before" >
    <!-- <h3><xsl:value-of select="atom:title" /></h3> -->
  </xsl:template>
  <xsl:template match="atom:feed/atom:head" mode="after">
    <p><a href="{atom:link[@rel='alternate']/@href}"><img src="http://blogmarks.net/img/88x31_neg.png" alt="blogmarks.net" /></a></p>
  </xsl:template>
  <xsl:template match="atom:feed/atom:entry">
    <div>
      <xsl:choose>
        <xsl:when test="position() mod 2 = 1">
          <xsl:attribute name="class">bm_blogmarks bm_odd</xsl:attribute>
        </xsl:when>
        <xsl:otherwise>
          <xsl:attribute name="class">bm_blogmarks bm_even</xsl:attribute>
        </xsl:otherwise>
      </xsl:choose>
      <a href="{atom:link[@rel='related']/@href}"><img src="{atom:link[@rel='image']/@href}" alt="" /></a>
      <h4><a href="{atom:link[@rel='related']/@href}"><xsl:value-of select="atom:title" /></a></h4>
      <p><xsl:value-of select="atom:summary" disable-output-escaping="yes" /></p>
      <p class="blogmarks-tags">
        <xsl:value-of select="substring(atom:published, 0, 11)" />
        <xsl:if test="atom:category">
          <xsl:for-each select="atom:category">
            <xsl:text> - </xsl:text><a href="{@term}{@sheme}"><xsl:value-of select="@label" /></a>
          </xsl:for-each>
        </xsl:if>
      </p>
    </div>
  </xsl:template>
</xsl:stylesheet>

Le code html généré est inspiré par celui de Hot Links. Il peut ensuite être présenté grâce à la feuille de style CSS suivante :

.bm_blogmarks {
  margin: 10px auto;
  padding: 1%;
  background-color: #f5f5f5;
  border: 1px solid #d9d9d9;
  width: 97%;
  overflow:auto;
}
.bm_even {
  background-color: #fcfcfc;
}
.bm_blogmarks h4 {
  margin-top: 0;
}
.bm_blogmarks p.bm_tags {
  margin-bottom: 0;
  display: block;
  clear: left;
}
.bm_blogmarks img {
  margin: 0 0px 5px 10px;
  float: right;
  border: 0;
  clear: none;
  width: 144px;
  height: 107px;
}
.bm_even img {
  margin: 0 10px 5px 0px;
  float: left;
}

(publié à l'origine sur http://www.bigbold.com/snippets/pos...)

lundi 16 janvier 2006

RDF to Html conversion

Ce fichier permet de transformer un fil RDF en code html afin de pouvoir l'intégrer à une page web.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:foo="http://purl.org/rss/1.0/">
    <xsl:output method="html"/>
    <xsl:template match="/">
        <xsl:apply-templates select="/rdf:RDF/foo:channel"/>
    </xsl:template>
    <xsl:template match="/rdf:RDF/foo:channel">
        <h3><xsl:value-of select="foo:title"/></h3>
        <p><xsl:value-of select="foo:description"/></p>
        <ul>
            <xsl:apply-templates select="/rdf:RDF/foo:item"/>
        </ul>
    </xsl:template>
    <xsl:template match="/rdf:RDF/foo:item">
        <li>
            <a href="{foo:link}" title="{substring(dc:date, 0, 11)}"><xsl:value-of select="foo:title"/></a>
            <p><xsl:value-of select="foo:description" disable-output-escaping="yes" /></p>
        </li>
    </xsl:template>
</xsl:stylesheet>

(publié à l'origine sur http://www.bigbold.com/snippets/pos...)

RSS to Html conversion

Ce fichier permet de transformer un fil RSS (version 0.9x ou 2.0) en code html afin de pouvoir l'intégrer à une page web.

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <xsl:output method="html"/>
    <xsl:template match="/">
        <xsl:apply-templates select="/rss/channel"/>
    </xsl:template>
    <xsl:template match="/rss/channel">
        <h3><xsl:value-of select="title"/></h3>
        <p><xsl:value-of select="description"/></p>
        <ul>
            <xsl:apply-templates select="item"/>
        </ul>
    </xsl:template>
    <xsl:template match="/rss/channel/item">
        <li>
            <a href="{link}" title="{substring(pubDate, 0, 11)}"><xsl:value-of select="title"/></a>
            <p><xsl:value-of select="description" disable-output-escaping="yes" /></p>
        </li>
    </xsl:template>
</xsl:stylesheet>

(publié à l'origine sur http://www.bigbold.com/snippets/pos...)

Atom to Html conversion

Ce fichier permet de transformer un fil atom en code html afin de pouvoir l'intégrer à une page web.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:dc="http://purl.org/dc/elements/1.1/">
    <xsl:output method="html"/>
    <xsl:template match="/">
    <xsl:apply-templates select="/atom:feed/atom:head"/>
        <xsl:apply-templates select="/atom:feed"/>
    </xsl:template>
    <xsl:template match="atom:feed/atom:head">
        <h3><xsl:value-of select="atom:title"/></h3>
        <xsl:if test="atom:tagline"><p><xsl:value-of select="atom:tagline"/></p></xsl:if>
        <xsl:if test="atom:subtitle"><p><xsl:value-of select="atom:subtitle"/></p></xsl:if>
    </xsl:template>
    <xsl:template match="/atom:feed">
        <h3><xsl:value-of select="atom:title"/></h3>
        <xsl:if test="atom:tagline"><p><xsl:value-of select="atom:tagline"/></p></xsl:if>
        <xsl:if test="atom:subtitle"><p><xsl:value-of select="atom:subtitle"/></p></xsl:if>
        <ul>
            <xsl:apply-templates select="atom:entry"/>
        </ul>
    </xsl:template>
    <xsl:template match="atom:entry">
        <li>
            <a href="{atom:link[@rel='related']/@href}" title="{substring(atom:published, 0, 11)}"><xsl:value-of select="atom:title"/></a>
            <xsl:choose>
                <xsl:when test="atom:content != ''">
                    <p><xsl:value-of select="atom:content" disable-output-escaping="yes" /></p>
                </xsl:when>
                <xsl:otherwise>
                    <p><xsl:value-of select="atom:summary" disable-output-escaping="yes" /></p>
                </xsl:otherwise>
            </xsl:choose>
        </li>
    </xsl:template>
</xsl:stylesheet>

(publié à l'origine sur http://www.bigbold.com/snippets/pos...)

mardi 21 juin 2005

Des formulaires encore plus mieux bien

CSS Forms that don't suck.