Migrer ses marques pages "blogmarks.net" vers "del.icio.us", Xslt à la rescousse

Depuis plusieurs mois et peut être même plus, je me suis résigné à ne pas transférer mes bookmarks d'un service à l'autre. La cause principale étant un export/import peu fiable des deux services. Blogmarks.net permet d'exporter au format XML vos données vous certifiant que del.icio.us sera compatible, hors ce dernier n'importe malheureusement que des fichiers HTML, bref pas facile de faire suivres vos marques pages.

Je livre ci-dessus la feuille.xsl que j'ai utilisée/écrite pour convertir le fichier XML fourni par blogmarks.net, voici le protocole que j'ai suivi, attention je ne suis pas un expert Xslt, c'est pourquoi il subsiste encore quelques imperfections.

Les étapes de transformation

  1. Comparer l'export de blogmarks.net à l'import de del.icio.us
  2. Définir les règles de transformation
  3. Isoler les difficultés (changer le format de date, remplacer des caractères)
  4. Ajouter des librairies XSLT si besoin

Fichier initial blogmarks.net

<?xml version="1.0" encoding="UTF-8"?>
<posts update="2007-07-24T08:28:49Z" user="martinsam">
<post href="http://flv-player.net/" description="Lecteur FLV" hash="e395e61818316569b25035bda36a54ed" tag="video flash lecteur" time="2007-07-23T13:52:40Z"/>
<post href="http://flv-player.net/" description="Lecteur FLV" hash="e395e61818316569b25035bda36a54ed" tag="video flash lecteur" time="2007-07-23T13:52:40Z"/>
<post href="http://flv-player.net/" description="Lecteur FLV" hash="e395e61818316569b25035bda36a54ed" tag="video flash lecteur" time="2007-07-23T13:52:40Z"/>
</posts>

Fichier final delicious à obtenir

<!DOCTYPE NETSCAPE-Bookmark-file-1>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<title>Bookmarks</title>
<h1>Bookmarks</h1>
<dl>
<dt><a href="http://flv-player.net/" add_date="1229087683" tag="video,flash,lecteur">Lecteur FLV</a></dt>
<dt><a href="http://flv-player.net/" add_date="1229087683" tag="video,flash,lecteur">Lecteur FLV</a></dt>
<dt><a href="http://flv-player.net/" add_date="1229087683" tag="video,flash,lecteur">Lecteur FLV</a></dt>
</dl>

Feuille de transformation Xslt

La feuille de transformation utilisée. Quelques détails sur cette feuille xsl :

  • Ajout de saut ligne : <xsl:text>&#xA;</xsl:text>
  • Ajout de tabulation : <xsl:text>&#x09;&#x09;</xsl:text>
  • Transformation du format de la date
    • <xsl:value-of select="is-date:unix-from-iso(@time)"/>,
    • utiliser en entête de document xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
    • Importer le fichier date-time.xsl via <xsl:import href="date-time.xsl"/>
  • Supprimer les espaces par des virgules <xsl:value-of select="translate(@tag, ' ', ',')"/>

Lancer la transformation

Simplement via la commande xsltproc feuille.xsl entree.xml > sortie.html

Remarques

  • L'outil sablotron ne semble pas accepter l'utilisation des fonctions xsl
  • Je ne sais pas créer correctement un doctype via Xslt de type <!DOCTYPE NETSCAPE-Bookmark-file-1>
  • En sortie certaines balises prennent des attributs innatendus de type : <dl xmlns:is-date="http://www.intelligentstreaming.com/xsl/date-time">

Edit 01/01/09 Tutoriel Xslt

Edit 19/01/09 supprimer les attributs non voulus (is:date) -> avec l'attribut exclude-result-prefixes="isdate"

Vus : 305
Publié par Samuel Martin : 24