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"