Jump to content
  • entries
    69
  • comments
    19
  • views
    7647

Histoire d'O ou l'importation XML avec FileMaker Pro | 2e parte


David Julot

600 views

 Share

Nous avons vu la semaine dernière la grammaire FMPXMLRESULT, en exportation. Cette semaine nous allons mettre en application ce qui nous avons appris lors des chapitres Histoire d’X et le 1er chapitre d’Histoire d’O.

En l’occurrence, nous allons réaliser une feuille de transformation XSL-T pour importer le flux RSS de ce site dans une base de données FileMaker.

Nous allons en fait réaliser ce que nous appelons un lecteur RSS, mais en restant modeste. Pour cela nous aurons besoin des ingrédients suivants :

  • une connexion internet, mais là je pense que vous l’avez sinon vous ne me liriez pas !
  • un FileMaker Pro, version 6, 7, 8, 8.5 ou 9, peut importe car l’importation XML dans FileMaker n’a pas changé depuis la version 6.

Avant de créer une feuille de style XSL-T, il faut avant savoir ce que l’on doit transformer. Il nous faut un exemple de flux rss. Pour cela nous allons récupérer celui de ce site :

  1. dans votre navigateur, saisir l’url suivante :http://www.leblogfm.fr /feed
  2. le document sous le nom de rss.xml par exemple.

Vous aurez un document XML qui ressemble à celui-ci :

<?xml version="1.0" encoding="utf-8"?>
<rss version= »2.0″ xmlns:dc= »http://purl.org/dc/elements/1.1/ » >
  <channel>
    <title>Le blog FileMaker</title>
    <link>http://www.leblogfm.fr /?</link>
    <description>Le blog FileMaker francophone</description>
    <language>fr</language>
    <pubDate>Sun, 27 Apr 2008 10:44:50 +0200</pubDate>
    <copyright>© La Source multimédia</copyright>
    <item>
      <title>Histoire d’O ou l’impOrtation XML avec FileMaker Pro | 1ère partie</title>
      <link>http://www.leblogfm.fr /post/…</link>
      <category>La chronique de David Julot</category>
      <category>XML</category>
      <description></description>
    </item></channel>
</rss>


Un flux rss se décompose généralement de deux parties :

  • un description de la source ;
  • une liste d’articles, balises item qui se trouvent dans la balise channel.

Nous souhaitons récupérer tous les articles de la source. Pour cela nous allons générer un tableau où nous aurons :
autant de rangées que d’articles (balises item) ;

  • une 1ère colonne pour le titre (balise title) ;
  • une 2e colonne pour le lien de l’article (balise link) ;
  • une 3e colonne pour le contenu de l’article (balise description).

En reprenant le 1er chapite d’Histoire d’O, nous devons générer un document XML qui ressemble à celui-ci :

<?xml version= »1.0 encoding= »UTF-8 ?>
<FMPXMLRESULT xmlns= »http://www.filemaker.com/fmpxmlresult »>
  <ERRORCODE>0</ERRORCODE>
  <PRODUCT BUILD= »11-02-2007″ NAME= »FileMaker Pro » VERSION= »9.0v3″ />
  <DATABASE DATEFORMAT= »D/m/yyyy » LAYOUT= » » NAME= » » RECORDS= » » TIMEFORMAT= »k:mm:ss » />
  <METADATA>
    <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »titre » TYPE= »TEXT » />
    <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »lien » TYPE= »TEXT » />
    <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »contenu » TYPE= »TEXT » />
  </METADATA>
  <RESULTSET FOUND= » »>
    <ROW MODID= » » RECORDID= » »>
      <COL><DATA></DATA></COL>
      <COL><DATA></DATA></COL>
      <COL><DATA></DATA></COL>
    </ROW></RESULTSET>
</FMPXMLRESULT>


La feuille de style sera donc la suivante :

<?xml version= »1.0 encoding= »utf-8 ?>
<xsl:stylesheet
  version= »1.0″
  xmlns:xsl= »http://www.w3.org/1999/XSL/Transform »
  xmlns:dc= »http://purl.org/dc/elements/1.1/ »
  xmlns:content= »http://purl.org/rss/1.0/modules/content/ » exclude-result-prefixes= »content dc »>
  <xsl:output method= »xml » encoding= »utf-8″ indent= »yes » />
  <xsl:template match= »/rss/channel »>
    <FMPXMLRESULT xmlns= »http://www.filemaker.com/fmpxmlresult »>
      <ERRORCODE>0</ERRORCODE>
      <PRODUCT BUILD= » » NAME= »FileMaker Pro XML Import » VERSION= »9.0v3″ />
      <DATABASE DATEFORMAT= »yyyy.MM.dd » LAYOUT= » » NAME= » » RECORDS= » » TIMEFORMAT= »k:mm:ss » />
      <METADATA>
        <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »titre » TYPE= »TEXT » />
        <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »lien » TYPE= »TEXT » />
        <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »contenu » TYPE= »TEXT » />
      </METADATA>
      <RESULTSET FOUND= » »>
        <xsl:for-each select= »item » >
          <ROW MODID= » » RECORDID= » » >
            <COL><DATA><xsl:value-of select= »title » /></DATA></COL>
            <COL><DATA><xsl:value-of select= »link » /></DATA></COL>
            <COL><DATA><xsl:value-of select= »description » /></DATA></COL>
          </ROW>
        </xsl:for-each>
      </RESULTSET>
    </FMPXMLRESULT>
  </xsl:template>
</xsl:stylesheet>


Avec ce type de feuille de transformation, vous pouvez créer une base de données directement en ouvrant un document XML, qui sera le lien url du flux rss et en utilisant la feuille XSL-T. Mais je vous le laisse découvrir par vous même…

 

Exercices pour la semaine prochaine…

À l’aide des chapitres précédents, vous allez :

  1. tester l’importation du flux rss du blog, ou de tout autre site ayant un flux rss 2.0 directement depuis Internet dans FileMaker et via la feuille de transformation XSL-T de cette chronique ;
  2. pour les plus courageux, vous allez m’automatiser la mise à jour de la base de données pour éviter des doublons d’article, et ce une seule instruction de script !

 

C’est tout pour aujourd’hui

Rendez-vous la semaine prochaine pour les solutions aux exercices. En attendant, je vous souhaite une excellente semaine !

 Share

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...