Bonjour.
C'est une manip que j'ai eu l'occasion de faire pour rattraper du code généré par un clickodrome quelconque.
J'ai procédé comme suit:
J'ai fais un coup de tidy sur le code pour obtenir du xhtml, en vérifiant que l'essentiel était préservé. (notez qu'on peut faire du tidy en ligne, en cherchant l'adresse avec google...)
Ensuite, j'ai fait une transformation xslt avec le fichier xhtml en entrée, et une feuille xsl reprenant les balises voulues en autant de templates que de nécessaire.
Vous noterez le traitement des ancres et des images, et la recopie selective des attributs.
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/TR/xhtml1/strict">
<xsl:output method="xml" encoding="utf-8" omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="html">
<html><xsl:apply-templates /></html>
</xsl:template>
<xsl:template match="body">
<body><xsl:apply-templates /></body>
</xsl:template>
<xsl:template match="head">
<head><xsl:apply-templates /></head>
</xsl:template>
<xsl:template match="title">
<title><xsl:apply-templates /></title>
</xsl:template>
<xsl:template match="dir">
<dir><xsl:apply-templates /></dir>
</xsl:template>
<xsl:template match="p">
<p><xsl:apply-templates /></p>
</xsl:template>
<xsl:template match="table">
<table><xsl:apply-templates /></table>
</xsl:template>
<xsl:template match="tr">
<tr><xsl:apply-templates /></tr>
</xsl:template>
<xsl:template match="td">
<td><xsl:apply-templates /></td>
</xsl:template>
<!-- balises à attribut obligatoire (href, src...) -->
<xsl:template match="a">
<a>
<xsl:choose>
<xsl:when test="@href" ><xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute></xsl:when>
<xsl:when test="@target" ><xsl:attribute name="target"><xsl:value-of select="@target" /></xsl:attribute></xsl:when>
<xsl:when test="@onclick" ><xsl:attribute name="onclick"><xsl:value-of select="@onclick" /></xsl:attribute></xsl:when>
</xsl:choose>
<xsl:apply-templates />
</a>
</xsl:template>
<xsl:template match="img">
<img>
<xsl:choose>
<xsl:when test="@src" ><xsl:attribute name="src"><xsl:value-of select="@src" /></xsl:attribute></xsl:when>
<xsl:when test="@alt" ><xsl:attribute name="alt"><xsl:value-of select="@alt" /></xsl:attribute></xsl:when>
</xsl:choose>
<xsl:apply-templates />
</img>
</xsl:template>
<!-- supression de b, u et i -->
<xsl:template match="b">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="u">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="i">
<xsl:apply-templates />
</xsl:template>
<!-- recopie de br -->
<xsl:template match="br">
<br />
</xsl:template>
</xsl:stylesheet>
Cette transformation peut se faire de différente façon, avec php, python, et certainement aussi directement dans explorer ou firefox, en faisant passer le xhtml pour du xml vrai, et en indiquant la feuille de style... Le problème avec les navigateurs étant de récupérer le résultat...
C'est évidemment perfectible, car il faudrait au minimum copier les attributs class et id, rajouter les balises manquantes, mais tout ceci se fait en en tour de notepad.
Voilà, c'est une piste, à mon sens la plus facile à mettre en oeuvre. Car vu la complexité d'un html issu d'un clickodrome, envisager les expression régulières, peut être une expérience très enrichissante. Mais, bon.
Enfin, c'est réutilisable...
Si ça peut vous donner des idées...