Outils pour utilisateurs

Outils du site


convertir_une_liste_dans_une_page_html_en_tableau_openoffice

Convertir une liste html en tableau OpenOffice

Situation

Une page html vous affiche tableau de valeur organisé sous forme liste html. Vous souhaitez transférer ce tableau dans une feuille de calcul OpenOffice.

Si le tableau original était un tableau html, un simple copier-coller ferait l'affaire. Mais ce n'est pas le cas, il faut donc effectuer une transformation plus élaborée.

Le problème

Il existe de bibliothèques de transformation capables de déduire l'organisation d'un structure de données et d'autres bibliothèques capables de la convertir vers une autre structure, un autre format. Mais rien ne vous garantit que ces bibliothèques seront opérantes dans le cas qui vous intéresse.

Nous allons donc étudier un cas concret. L'intérêt est de montrer quelques outils utilisables pour effectuer cette transformation de manière semi-automatique. L'objectif est de donner les éléments de solution permettant de traiter tout cas particulier que vous pourriez rencontrer.

La solution

La solution présentée ne prétend être optimale. Elle n'a d'autre valeur qu'illustrative. Il s'agit d'un vote dans une assemblée parlementaire du Conseil de l'Europe, telle que diffusée sur le site officiel de cette instance.

La structure de départ simplifiée est la suivante : <ol><li><span>vote</span><a>Membre></a><span>Code pays</span><span>Groupe politique</span>. On le voit, chaque champ n'est pas représenté par le même élément html : tantôt un span, tantôt un a.

Sélectionner les données composant le tableau

  1. dans Firefox, clic-droit sur la première ligne de la table de données > inspecter l'élément
  2. rechercher la balise d'ouverture de la liste (ul ou ol)
  3. cliquer sur la balise > Copier outerHTML (vous disposer des données composant la table dans le presse-papier)
  4. remplacer le contenu du bloc de gauche par le contenu du presse-papier
  5. adapter le bloc de droite (XSLT) à la transformation souhaitée (voir listing plus bas)
  6. appliquer la transformation et boucler sur l'étape précédente jusqu'à satisfaction
  7. dans le bloc inférieur (résultat), copier le tableau html ainsi obtenu
  8. le coller dans une feuille de calcul OpenOffice1)
  9. l'encodage html de départ n'étant pas accessible (injection de présentation dans le contenu), il faut retraiter les votes
    1. sélectionner la colonne Vote
    2. appeler l'outil recherche-remplace (^H)
      1. s'assurer que les expressions régulières2) sont acceptées (Autres options > Expression régulières)
      2. éliminer l'espace et le tiret final
      3. rechercher :
        ^(.*)\ -
      4. remplacer par :
        $1
      5. tout remplacer

À ce stade, vous disposez d'un tableau prêt à être utilisé, manipulé et exporté.

Exemple de feuille de style XSLT

Dans l'exemple traité, la feuille suivante a été utilisée :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h1>Vote de la résolution</h1>
  <h2>Résultats du vote</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th style="text-align:left">Vote</th>
        <th style="text-align:left">Pays</th>
        <th style="text-align:left">Groupe</th>
        <th style="text-align:left">Membre</th>
      </tr>
      <xsl:for-each select="ul/li">
      <tr>
        <td><xsl:value-of select="span"/></td>
        <td><xsl:value-of select="span[2]"/></td>
        <td><xsl:value-of select="span[3]"/></td>
        <td><xsl:value-of select="a"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

Améliorations possibles

La procédure présentée ci-avant peut être largement améliorée, en fonction du contexte d'utilisation.

Si la page html est elle-même le résultat d'une génération automatique et si l'on doit fréquemment faire ce type d'extraction des données, on pourra :

  • Appliquer la transformation à l'intégralité de la page. On ne s'enquiquine à sélectionner l'élément. On peut, selon le niveau d'automatisation voulu, récupérer l'intégralité du code de la page (^U) ou fournir directement l'url de la page. Les interfaces utilisatrices de processeurs XSLT savent traiter les deux cas.
  • Rendre la feuille de style XSLT plus facile à adapter, en adoptant une programmation déclarative.
  • Effecteur toutes les opérations de formatage et de nettoyage des données via XSLT. Ainsi le tableau que l'on récupère dans Calc est prêt à être exploité.

Sauf cas particulier, on conservera une transformation interactive permettant de s'assurer que la feuille de style XSLT est toujours valable. En effet, l'éditeur du site web original ne prend aucun engagement de stabilité de sa structure de page. Qui sait, il finira peut-être par produire de vrais tableaux, comme le recommande, depuis des lustres, les règles de bons usages de html et comme l'exigent les normes d'accessibilité !

1)
OpenOffice sait faire tout seul puisqu'il reconnaît bien un tableau.
2)
Testez vos expressions régulières avant de les appliquer.
convertir_une_liste_dans_une_page_html_en_tableau_openoffice.txt · Dernière modification: 2015/04/26 00:32 par flaz