Trucsweb.com

Trucsweb.com

XML

Récursivité

RDFFav

Récursion XSL sur le nœud parent

Un petit bijou de programmation, en pure récursion, basé sur le format XML de commentaires DISQUS.récursifRécursion XSL sur le nœud  parent

Fractal

J’ai profité de l’occasion de la mise à niveau de mon système de commentaire pour optimiser mon vieux code. Déjà en XML, le contenu était toujours manipulé en ASP. J’ai donc révisé l’ensemble des codes pour exploiter la capacité récursive du XSL. Le résultat, un petit bijou de programmation, en pure récursion, basé sur le format XML de commentaires DISQUS. Simple à première vue, j’ai quand même passé une bonne fin de semaine sur cet « appel de paterne XSL »!

Fichier XML

Le fichier source est basé sur le format de commentaires « DISQUS » utilisé par Wordpress entre autre. J’utilise le format comme fichier externe contrairement à Wordpress mais à des fins de compatibilité, j’ai récupéré le format, question de ne pas réinventer ce qui se réinvente déjà beaucoup trop! Le format c’est un <item> avec un nombre illimité de commentaire <wp:comment> (en fait la limite est en méga octets, 500Mo je pense) un en dessous de l’autre.

  • Commentaire id = 1
  • Commentaire id = 2
  • Commentaire id = 3 (enfant de id = 1)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--« Commentaires » sur les tutoriels pour le site des Trucsweb.com-->
<!--Format XML Basé sur le réseau de commentaire DISQUS/WP pour une meilleurs portabilité-->
<rss version="2.0"
 xmlns:content="http://purl.org/rss/1.0/modules/content/" 
 xmlns:dsq="http://www.disqus.com/" 
 xmlns:dc="http://purl.org/dc/elements/1.1/" 
 xmlns:wp="http://wordpress.org/export/1.0/">
  <channel>
    <item>
      <title>Récursion XSL sur le nœud  parent</title>
      <link>http://www.trucsweb.com/tutoriels/xml/xslt-parent-recursion/</link>
      <pubDate>2014-12-25 15:23:21 +0000</pubDate>
      <dc:date.created>2014-12-25T10:23:21-05:00</dc:date.created>
      <dc:date.modified>2014-12-25T10:23:21-05:00</dc:date.modified>
      <language>fr-CA</language>
      <dc:creator>Oznog</dc:creator>
      <dsq:thread_identifier>xslt-parent-recursion</dsq:thread_identifier>
      <wp:post_date_gmt>2014-12-25 15:23:21</wp:post_date_gmt>
      <wp:comment_status>open</wp:comment_status>
      <wp:comment>
        <dsq:remote>
          <dsq:id>Oznog</dsq:id>
          <dsq:avatar>http://...</dsq:avatar>
        </dsq:remote>
        <wp:comment_id>1</wp:comment_id>
        <wp:comment_author>Django</wp:comment_author>
        <wp:comment_author_email>email@hotmail.com</wp:comment_author_email>
        <wp:comment_author_url>http://trucsweb.com</wp:comment_author_url>
        <wp:comment_author_IP>104.111.111.199</wp:comment_author_IP>
        <wp:comment_date_gmt>2014-12-25 15:23:21</wp:comment_date_gmt>
        <wp:comment_approved>0</wp:comment_approved>
        <wp:comment_parent>0</wp:comment_parent>
        <wp:comment_content><![CDATA[Mon premier commentaire]]></wp:comment_content>
      </wp:comment>
      <wp:comment>
        <dsq:remote>
          <dsq:id>Oznog</dsq:id>
          <dsq:avatar>http://...</dsq:avatar>
        </dsq:remote>
        <wp:comment_id>2</wp:comment_id>
        <wp:comment_author>Oznog</wp:comment_author>
        <wp:comment_author_email>email@hotmail.com</wp:comment_author_email>
        <wp:comment_author_url>http://trucsweb.com</wp:comment_author_url>
        <wp:comment_author_IP>104.111.111.199</wp:comment_author_IP>
        <wp:comment_date_gmt>2014-12-25 15:23:33</wp:comment_date_gmt>
        <wp:comment_approved>1</wp:comment_approved>
        <wp:comment_parent>0</wp:comment_parent>
        <wp:comment_content><![CDATA[Mon deuxième commentaire]]></wp:comment_content>
      </wp:comment>
      <wp:comment>
        <dsq:remote>
          <dsq:id>Oznog</dsq:id>
          <dsq:avatar>http://...</dsq:avatar>
        </dsq:remote>
        3</wp:comment_id>
        <wp:comment_author>Luc Tremblay</wp:comment_author>
        <wp:comment_author_email>email@hotmail.com</wp:comment_author_email>
        <wp:comment_author_url>http://www.trucsweb.com</wp:comment_author_url>
        <wp:comment_author_IP>67.111.111.233</wp:comment_author_IP>
        <wp:comment_date_gmt>2014-12-26 14:11:55</wp:comment_date_gmt>
        <wp:comment_approved>1</wp:comment_approved>
        <wp:comment_parent>1</wp:comment_parent>
        <wp:comment_content><![CDATA[Mon troisième commentaire en réponse au premier commentaire.]]></wp:comment_content>
      </wp:comment>
    </item>
  </channel>
</rss>

Il suffit d’afficher les commentaires un en dessous de l’autre. Un opération toute simple vous me direz. Mais qu’arrive t’il si on désire afficher le commentaire #3 sous le #1 puisqu’il s’agit d’une réponse au premier commentaire? C’est à dire entre le #1 et le #2.

Fichier XSL

On veut donc le résultat suivant.

  • Commentaire id = 1
    • Commentaire id = 3 (enfant de id = 1)
  • Commentaire id = 2
Références
, Analyste programmeurConception oznogco multimédia (http://oznogco.com), Trucsweb
Dernière mise à jour :

Commentaires

Ajouter un commentaire
Votre adresse de courriel ne sera pas publiée. * L'astérisque indique les champs obligatoires.
Votre évaluation du tutoriel

9/10 sur 1 revues.
       Visites : 1740 - Pages vues : 1753
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@