Aller au contenu

Blogs

 

FMTouch suite

La rentrée est effective depuis une semaine pour beaucoup de personne, sauf pour moi ! J’ai décidé de prendre quelques jours de repos en Bretagne Mais ce n’est pas pour autant que j’ai abandonné mon mac et mon iPhone… J’en ai profité pour continuer à tester l’application dédiée à notre produit favori et au téléphone d’Apple: FMTouch
Pour rappel, FMTouch est une App pour iPhone ou iPod touch et un plug-in (module) pour FileMaker Pro ou FileMaker Pro Advanced. Cette application permet d’emporter et d’utiliser sa base de données sur son iPhone ou iPod Touch. Vous trouverez tous les renseignements sur le site (en anglais) suivant : http://www.fmtouch.com/ J’ai pu lire sur le forum certaines récriminations à propos de FMTouch. Je vais en passer quelques unes en revue. Il est en anglais, documentation mise à part on ne peut pas dire que l’on soit gêné par la petite dizaine de termes trainant ici ou là, surtout que c’est de l’anglais très simple (open, sync, update, reinitialize, done, cancel, duplicate, exit, database). Bon d’accord, cela aurait été bien que FMTouch soit traduit dans toutes les langues proposées par FileMaker Pro. Mais je vous assure qu’une fois dans votre base de données vous ne voyez plus que vos données et quelques icônes. Il faut FileMaker Pro Advanced pour générer le rapport sur la structure de la base de données (DDR, Database Design Report). En effet, c’est à l’aide du fichier xml généré par le DDR que FMTouch va pouvoir reproduire (j’en parlerai après) la base de données, du moins les rubriques, les modèles et les listes de valeurs. Si vous n’avez pas de FileMaker Pro Advanced, les concepteurs de FMTouch ont pensé à vous en vous proposant de le générer en ligne à cette adresse http://fmgateway.com/Extract_DDR/, bon ok c’est encore en anglais… Il est cher, vendu actuellement 54,99 €, il peut paraître onéreux. Mais pour celui qui en a besoin, cela peut paraître peu. À l’heure où j’écris ces lignes, la version 1.2 est attente de validation de la part d’App Store, et elle sera gratuite pour tous ceux qui ont acquis le logiciel. Une version 1.3 est en cours de développement. Sa mise à jour sera aussi gratuite, d’après les développeurs. Il ne fonctionne pas en tant que client d’une base de données, il ne fonctionne pas en client-serveur. C’est vrai, mais c’est surtout là un avantage. Il permet à toute personne de pouvoir emporter avec soi sa base de données et pouvoir ainsi la consulter, modifier, mettre à jour sans pour autant être connecté, quelque soit l’endroit où l’on se trouve. Si vous souhaitez une version client-serveur, vous n’avez pas besoin de FMTouch, mais d’un FileMaker Serveur, ou FileMaker Server Advanced pour vous connecter à votre base de données à distance, à plusieurs et dans votre langue. À noter que l’on peut effectuer une synchronisation à distance. Il ne permet pas d’avoir des rubriques de type calcul ou d’exécuter des scripts. C’est vrai, attendons la version 1.3 pour voir comment les développeurs de FMTouch arriveront à interpréter les formules de calcul et les scripts. Mais avouez que vous êtes impatient, et qu’un tel produit vous intéresse !
Ce que j’en pense ! Franchement ? Je trouve ce produit formidable ! Pour les raisons suivantes : Il me permet d’emporter avec moi mes données dont j’ai besoin pour mon activité : liste de prix, d’articles, etc. Je n’ai pas besoin de vérifier si je suis en zone 3G, ou Edge, pour pouvoir me connecter, j’ai mes données dans ma poche. Il me permet de personnaliser mes modèles, alors de FileMaker Mobile ne le permettait pas. Mais ce qui me fascine le plus, c’est le plug-in (module) associé à FMTouch, et sa faculté de dialogué en wifi avec FileMaker Pro. Bon d’accord, vous allez me dire que les développeurs ont utilisé les API (fonctions d’interfaçage) d’Apple ou de Microsoft. Oui, mais je trouve élégant de pouvoir synchroniser les données de ma base de données en wifi chez moi. C’est un produit jeune, il a encore des manques mais ils ne sont pas rédhibitoires. J’attends avec impatience les prochaines versions de FMTouch.    C’est tout pour aujourd’hui ! Je vous retrouve donc la semaine prochaine pour mes chroniques hebdomadaires qui vous ont manquées cet été, je le sais ;-)… En attendant, je vous souhaite une excellente rentrée, pour ma part je retourne à ma Bretagne… Pour ceux qui en doute Julot n’est pas le proxénète, le mac ou le gigolo en titi parisien, mais un nom breton que l’on retrouve de Saint Brieuc à Lorient… A-benn ar sizhun all ! À la semaine prochaine !

David Julot

David Julot

 

FMTouch suite

Bien !  Je sors de mes petites vacances estivales pour vous annoncer que je vous prépare un petit billet sur FMtouch, de FMWebschool Inc. Vous en avez peut-être entendu parlé ici où là. FMTouch est une application pour iPhone d’Apple, elle est vendue sur l’App Store au prix de 54,99 €. Elle permet l’utilisation de bases de données FileMaker Pro 8 et 9 sur son iPhone hors connexion. Elle utilise un plug-in (gratuit) pour le transfert de la structure de la base et des données. En attendant, vous pouvez jeter un coup d’œil sur le site dédié : http://fmtouch.com/index.php (en anglais) vous y trouverez une vidéo de démonstration. Je le teste, et je reviens vers vous pour vous en parler plus en détail. Allez je retourne à mes petites vacances.

David Julot

David Julot

 

La modularité : exécuter un script à partir d'une rubrique

Voici le premier épisode de la série estivale sur les plug-ins (modules) que je vais aborder avec vous tout au long de ces deux mois. Aujourd’hui, nous allons voir comment à partir d’une rubrique nous allons pouvoir exécuter un script, et ce à moindre frais puisque les plug-in permettant de faire cela sont gratuits ! Vous l’avez remarqué, je vais prendre quelques libertés cet été, à savoir que cette chronique hebdomadaire ne sera plus dominicale ! Après tout, c’est les vacances !!! Par défaut, c’est-à-dire lorsque nous n’ajoutons rien à FileMaker Pro, ce dernier est incapable d’exécuter un script lorsque l’on sort d’une rubrique. Mais à quoi cela peut-il servir ? Par exemple : à vérifier si la valeur saisie n’existe pas déjà, et le cas échéant d’afficher une boîte de dialogue à l’utilisateur lui demandant de saisir autre chose ; à mettre dans une table de log (journal), le fait que l’utilisateur vient de mettre telle valeur, dans tel enregistrement, à tel moment ; à activer tel onglet ou tel modèle suite à la saisie d’une valeur particulière ; etc. Pour cela nous utiliserons une fonction apparue avec FileMaker Pro 7 : l’option de rubrique d’entrée automatique de type calcul ! Avec son option décochée Ne pas remplacer val. exist. de la rubrique (s’il y a lieu).   Quels sont les plug-ins à notre disposition ? Pour cette fonctionnalité, nous avons à notre disposition trois plug-ins : DoScript de My FMbutler, que vous trouverez sur le site www.myfmbutler.com (site en anglais) ; EventScript de Softwares For Humans, que vous trouverez sur le site www.softs4humans.com (site en français) ; MacExample / WinExample de FileMaker, Inc., que vous trouverez sur le cédérom de FileMaker Pro Advanced. Pour ma part, je vais utiliser EventScript de Softwares For Humans, ne voyez pas là une recommandation de ma part, mais comme il fallait en choisir un, j’ai décidé d’utiliser celui-ci. Pour celles et ceux qui utilisent MacExample / WinExample de FileMaker, faites attention ! Car si vous utilisez FileMaker Pro 8, vous devez utiliser le plug-in de la version 8 de FileMaker Pro 8 Advanced, en fait vous devez utiliser la version du plug-in avec la même version de FileMaker Pro.   Installation du plug-in Après avoir téléchargé le plug-in EventScript, en allant sur cette page http://www.softs4humans.com/FMPro_Plugins_fr.html, décompressez le dossier. Ce dernier contient le plug-in EventScript.fmplugin. Vous prenez ce fichier et copiez le dans le répertoire : sous Mac OS X : Macintosh HD : Applications : FileMaker Pro : Extensions ; sous Windows : C:\program files\FileMaker\FileMaker Pro\Extensions . Dans le cas où FileMaker Pro est ouvert, quittez le, puis relancez le. Il faut maintenant vérifier que le plug-in est bien reconnu par FileMaker Pro : Ouvrir FileMaker Pro ; Choisir l’article de menu :
- sous Mac OS X : FileMaker Pro > Préférences
- sous Windows : Edition > Préférences Cliquer sur l’onglet Modules ; Vérifier que le plug-in EventScript est bien présent et coché, il doit apparaître sous le nom S4HU_EventScript 1.1 Donationware (UB) ; Cliquer sur le bouton OK.  Les fonctions du plug-in EventScript Vous allez comprendre maintenant pourquoi j’ai décidé d’utiliser ce plug-in. La raison est très simple, il ne comporte que 2 fonctions, et c’est tout ! Alors que celui de My FMbutler en comporte pour sa part 14 ! Donc, pour des raisons pédagogiques, nous allons débuter cette série de chroniques sur les plug-in par celui de Softwares For Humans. Les deux fonctions d’EventScript sont les suivantes : S4HU_EventScript, qui permet d’exécuter un script à partir d’une formule de calcul ; S4HU_VersionEventScript, qui retourne la version du plug-in actuellement utilisé par FileMaker Pro. Tous les plug-ins doivent avoir une fonction qui retourne la version du plug-in. Cela sert à deux choses : à vérifier la présence du plug-in ; à vérifier la version ! Le fait de vérifier la version d’un plug-in n’est pas anodin. Car vous développer une application avec FileMaker Pro avec une version bien précise de plug-in. Vous devez donc interdire l’utilisation d’une autre version de ce plug-in avec votre application, tant que vous ne l’avez pas tester complètement ! Car il peut y avoir des mauvaises surprises !   Exécuter un script Pour cela nous allons utiliser la fonction S4HU_EventScript qui a la syntaxe suivante : S4HU_EventScript( Nom du fichier contenant le script ; Le script ; le(s) paramètre(s) ) Nous voyons que cette fonction à trois paramètres : Nom du fichier : car non seulement on peut faire exécuter un script du fichier encours, mais on peut aussi faire exécuter un script d’un autre fichier ; Le script : le script que l’on souhaite exécuter ; le(s) paramètre(s) : puisque depuis la version 7 de FileMaker Pro on peut transmettre des valeurs à un script, ce plug-in permet cette usage. Ces trois paramètres sont de type texte. Donc, ce sont soit des résultats de fonctions, soit des contenus de rubriques ou de variables, soit tout simplement des chaînes de texte. Mise en œuvre Nous allons voir comment mettre en œuvre ce plug-in. Et pour commencer, nous allons prendre un fichier, n’importe lequel. Créons un script, affichant par exemple une boîte de dialogue, et nommons ce script « bonjour ». Maintenant, nous allons faire en sorte qu’en modifiant le contenu d’une rubrique, le script « bonjour » est appelé : Choisir l’article de menu Fichier > Gérer > Base de données… ; Sélectionner une rubrique ; Cliquer sur le bouton Options… ; Sélectionner l’onglet Entrée automatique ; Sélectionner l’option Résultat de calcul ; Saisir la formule suivante : Cas( not estvide( contenu ) ; contenu & S4HU_EventScript( Obtenir( NomFichier ) ; "bonjour" ; "" ) )   Cliquer sur le bouton OK ; Décocher l’option Ne pas remplacer val. exist. de la rubrique (s’il y a lieu) ; Cliquer sur le bouton OK ; Cliquer sur le bouton OK. Maintenant, il n’y a plus qu’à tester… Pour cela modifier le contenu de la rubrique, puis passer à une autre rubrique ou valider votre enregistrement ; la boîte de dialogue s’affiche. Vous trouverez cet exemple dans le fichier joint à cette chronique.
C’est tout pour aujourd’hui… Rendez-vous la semaine prochaine pour la suite de la série estivale sur les plug-ins. En attendant, je vous souhaite une excellente semaine !

David Julot

David Julot

 

La modularité de FileMaker : les plug-ins…

Premier article d’une longue série qui va durée tout l’été, c’est la période des séries estivales, qui va concerner les plug-ins, ou modules. Outils méconnus et délaissés, je vais essayé durant ces deux mois de les réhabiliter. Nous verrons ainsi l’utilisation de certains modules, qui pourront vous simplifier le développement ou apporter un plus grand confort à vos utilisateurs.
Qu’est-ce qu’un plug-in ? Un plug-in, ou module dans la version française de FileMaker, est une extension à FileMaker Pro pour lui ajouter de nouvelles fonctionnalités. La possibilité d’ajouter des extensions à FileMaker Pro date de FileMaker Pro 4. Avec cette version, l’éditeur, qui se nommait encore Claris, avait fournit le module Web Companion, qui permettait d’interroger les bases de données, via un serveur web, et des commandes en CDML (version allégée du LDML de Lasso…). Depuis cette version, de nombreux développeurs, à travers le monde, se sont mis à développer des extensions à FileMaker, pour lui permettre, par exemple, d’envoyer ou recevoir des courriers électroniques; de créer, dupliquer, modifier et/ou supprimer des fichiers sur le disque; de réaliser des boîtes de dialogue avec des menus; etc. Comme on peut le voir, les plug-ins permettent d’avoir des fonctionnalités supplémentaires dans le développement de bases de données FileMaker Pro.   Où sont placés les plug-ins ? Les plug-ins de FileMaker Pro et de FileMaker Pro Advanced sont placés dans le répertoire suivant : Mac OS : Macintosh HD : Applications : FileMaker Pro : Extensions Windos : C:\Program Files\FileMaker\FileMaker Pro\Extensions Les plug-ins portent l’extension de fichier .fmplugin et ont l’icône suivante : FileMaker fournit et installe trois plug-ins : AutoUpdate.fmplugin : module permettant le déploiement de plug-in via FileMaker Server. Si le plug-in n’est pas présent sur le poste utilisateur, alors on peut le télécharger depuis FileMaker Server. Web.fmplugin : module permettant le partage des bases de données FileMaker via la publication instantanée. Les bases de données peuvent ainsi être utilisées via un navigateur web. xDBC.fmplugin : module permettant le partage des bases de données FileMaker via la technologie ODBC/JDBC. Les bases de données peuvent ainsi être interrogeable (localement seulement) via des requêtes SQL.   Où trouver des plug-ins ? Il existe beaucoup de plug-ins pour FileMaker Pro. Ils sont, à part un ou deux, payants. Pour les trouver, je vous conseille le moteur de recherche fmpro.org, en cliquant ici vous aurez des premiers éléments de recherche. Mais tout au long de cet été, je vous en ferai découvrir certains… qui je l’espère vous seront utiles.   C’est tout pour aujourd’hui ! Rendez-vous donc la semaine prochaine, pour l’utilisation d’un premier plug-in, gratuit, qui vous permettra d’exécuter des scripts en sortie de rubrique… En attendant, je vous souhaite une excellente semaine et pour celles et ceux qui partent en vacances : du repos !

David Julot

David Julot

 

Créons une fonction personnalisée - 3e partie

Nous voici arrivé au terme de cette série où nous allons enfin réaliser cette fameuse fonction personnalisée récursive ! Pour celles et ceux qui arrivent seulement, je propose depuis trois semaines une série sur la réalisation de fonctions personnalisées récursives.
Donc, nous allons mettre en place la fonction personnalisée qui correspond au script donné la semaine dernière, à savoir une fonction qui a comme objectif d’inverser les items. Bon, pour ceux du fond qui sont pressés de partir en vacances, on fournit à la fonction une liste de valeurs (A, B, C, D) et elle devra nous retourner cette liste mais avec les items inversés (D, C, B, A).   Petits rappels Pour créer une fonction personnalisée vous devez avoir le logiciel FileMaker Pro Advanced. C’est avec ce logiciel que vous allez pouvoir mettre dans votre base de données la fonction personnalisée, car elle appartiendra au fichier, ce qui permet aux utilisateurs n’ayant pas FileMaker Pro Advanced de pouvoir l’exécuter sans problème à partir d’une formule de calcul. Si vous souhaitez connaître la procédure pour la réalisation d’une fonction personnalisée, je vous recommande de lire la chronique disponible en cliquant ici.   La réalisation d’une fonction récursive Pour rappel, je n’arrête pas de le rappeler, une fonction récursive est une fonction qui s’appelle elle-même pour palier le fait qu’on n’a pas d’instruction de boucle. Notre fonction devra avoir la forme suivante : InverserListe( listeATraiter ), avec : InverserListe : le nom de la fonction, que l’on retrouvera dans la liste des fonctions des formules de calcul; listeATraiter : le paramètre de la fonction, qui sera justement une liste. Deuxième petit rappel, dans FileMaker une liste de valeurs est une liste où chaque item est séparé par une retour à la ligne (symbole ¶). Voici le logigramme correspondant à la fonction que nous allons mettre en place: Et vous remarquez que j’ai ajouté deux paramètres à la fonction : i et l. Car je dois, à chaque itération de ma boucle (appel à la fonction), transmettre des valeurs transitoires : i : contient lors du 1er appel à la fonction une valeur vide et ensuite le numéro de l’item à récupérer ; l : contient la liste inversée encours de construction. Voici donc la formule de la fonction récursive : DEFINIR (   [     _L = ListeATraiter ;     _i = CAS( ESTVIDE( i ) ; DECOMPTEVALEURS( _L ) ; i - 1 ) ;     _lt = l & "¶" & OBTENIRVALEUR( _L ; _i )    ] ;   CAS(     _i ≤ 1 ; _lt ;      InverserListe( _L ; _i : _lt )   ) )   Pour ceux qui veulent supprimer le premier retour chariot du résultat Car la formule précédente génère un retour chariot inutile en début de liste, mais comme je ne voulais compliquer la formule, la voici donc avec le retour chariot en moins : DEFINIR (   [     _L = ListeATraiter ;     _i = CAS( ESTVIDE( i ) ; DECOMPTEVALEURS( _L ) ; i - 1 ) ;     _la = OBTENIRVALEUR( _L ; _i ) ;     _lt = CAS( ESTVIDE( l ) ; _la ; l & "¶" & _la )    ] ;   CAS(     _i ≤ 1 ; _lt ;      InverserListe( _L ; _i : _lt )   ) )   C’est tout pour aujourd’hui Vous trouverez en pièce jointe à cette chronique le fichier FileMaker contenant la fonction personnalisée. En attendant la prochaine chronique, je vous souhaite à toutes et à tous une excellente semaine ensoleillée et chaude !

David Julot

David Julot

 

Créons une fonction personnalisée - 2e partie

La semaine dernière, nous avons vu comment créer une fonction personnalisée avec FileMaker Pro Advanced, et quelle en était l’utilité. Nous allons voir aujourd’hui, pour la réalisation d’une fonction récursive, ou itérative pour nos amis québécois, un exemple que nous allons « scripter ».
Nous allons, pour les besoins de mon propos dominical, prendre un exemple qui n’aura pas forcément une utilité dans le développement de vos bases de données FileMaker. L’exemple est le suivant : On a une liste de mots que l’on transmet à la fonction qui doit nous l’inverser. C’est-à-dire, au départ nous avons la liste : A, B, et C ; la fonction nous l’inverse pour donner: C, B, A. Pour rappel, une liste dans FileMaker, c’est une suite d’items séparés par des retours chariots (¶).   Méthodes sans boucle On peut très bien imaginer cette fonction sans boucle, si par exemple la liste contient toujours le même nombre d’items. Nous aurions alors la formule suivante : ObtenirValeur( liste ; 3 ) & "¶" & ObtenirValeur( liste ; 2 ) & "¶" & ObtenirValeur( liste ; 1 ) Mais que se passe-t-il le jour où la liste contiendra 10 valeurs ? Vous ferez la formule avec les 10 instructions. Et le jour où la liste contiendra 500 valeurs ? Et le jour où la liste contiendra un nombre variable d’items ? Non, sérieusement il faudra commencer à penser un peu à faire une formule avec une boucle. Non seulement, la formule sera plus rapide à écrire, donc moins sujette aux fautes de frappe, mais de plus elle pourra répondre à toutes les listes, quelques soit leur nombre d’items.   La fonction sous forme de script Avant de voir la réalisation d’une fonction récursive, nous allons nous amuser à faire cette fonction en script, via ScriptMaker™. Pourquoi ? Parce que nous allons utiliser la boucle, pour ensuite la supprimer ! Le script correspondant à la demande peut suivre le logigramme suivant : Ce qui nous donne le script suivant : Définir variable [$L; Valeur: Obtenir(ParamètreScript)] Définir variable [$i ; Valeur: DecompteValeurs( $L )] Définir variable [$NL ; Valeur: "" ] Boucle   Fin de boucle si [$i ≤ 0]   Définir variable [$NL ; Valeur: $NL & ObtenirValeur( $L ; $i )]   Définir variable [$NL ; Valeur: $NL & "¶" ]   Définir variable [$i ; Valeur: $i - 1] Fin de boucle Fin de script [Résultat : $NL] Comme vous l’aurez remarqué, on passe en paramètre au script la liste à inverser, le script nous retourne la liste inversée.   La fonction sous forme de script, mais sans boucle ! Maintenant, nous allons faire la même fonction, toujours sous forme de script mais cette fois-ci sans faire appel aux instructions de boucle. Pour cela, le script va s’appeler lui-même, autant de fois que nécessaire. Et pour éviter de perdre les valeurs à chaque appel de script, ils lui seront retransmis en paramètre et séparé par une barre droite ( |, « pipe » ). Le logigramme correspondant est le suivant : Le script correspondant, vous le trouverez dans le fichier joint à cette chronique. Et comme j’utilise l’instruction interrompre script, le résultat est stocké en mémoire ($$NL). Je vous l’accorde, ce script est un peu complexe à comprendre, car il doit non seulement effectuer l’inversion de la liste qui lui est transmise, mais il doit aussi récupérer des valeurs séparées par la barre droite |.   C’est tout pour aujourd’hui La semaine prochaine, la transformation du dernier script en fonction personnalisée, où nous n’aurons plus de problème pour récupérer les valeurs… En attendant, je vous souhaite une excellente semaine.

David Julot

David Julot

 

Créons une fonction personnalisée - 1ère partie

Comme annoncé la semaine dernière, je vais entamer une série de chronique sur la réalisation de fonctions personnalisées. Aujourd’hui, c’est une introduction à la réalisation d’une fonction personnalisée, pour comprendre ses mécanismes et la semaine prochaine nous nous attaquerons à la récursivité ou, pour nos cousins élevés au sirop d’érable, aux fonctions itératives. Mais avant d’aller plus loin, vous aurez besoin d’un FileMaker Pro Advanced pour réaliser une fonction personnalisée. À quoi reconnaît-on un FileMaker Pro Advanced d’un FileMaker Pro ? À son nom, hé oui ! ; À son prix, il est légèrement (!) plus cher qu’un FileMaker Pro car il offre plusieurs fonctions indispensables à tout bon développeur ; À son icône :
Si vous souhaitez en savoir plus sur FileMaker Pro Advanced, je vous invite à vous connecter sur le site de l’éditeur, en cliquant ici.   Qu’est-ce qu’une fonction personnalisée ? Une fonction personnalisée ressemble à toutes fonctions de FileMaker Pro disponibles pour les formules de calcul, à une différence près : c’est vous qui concevez la fonction. C’est donc une fonction que nous pouvons utiliser à loisir dans nos formules de calcul. Auparavant, pour créer une fonction personnalisée dans FileMaker Pro, il fallait savoir programmer en langage C, ou C++, compiler pour réaliser un plug-in. C’est les fameux modules que nous ajoutons à FileMaker Pro pour lui ajouter de nouvelles fonctions, comme ceux de troi.com par exemple. Pour faire plus simple, dès que l’on a une même formule de calcul dans plusieurs rubriques, alors on la transforme en fonction personnalisée. Le fait de réaliser une fonction personnalisée, permet d’optimiser son développement, car : On n’écrit qu’une seule fois la formule, donc on ne la valide qu’une seule fois ; Le jour où l’on doit modifier la formule, on ne le fait qu’une seule fois et à un seul endroit. Je n’ai plus besoin de savoir où elle est utilisée ; On réduit la taille du fichier, bon d’accord de quelques Ko seulement !   Est-ce qu’un utilisateur FileMaker Pro peut utiliser une fonction personnalisée ? OUI, bien évidemment. On développe les fonctions personnalisées avec FileMaker Pro Advanced, et comme la fonction personnalisée appartient au fichier, il suffit ensuite de l’ouvrir avec un FileMaker Pro pour qu’elle soit opérationnelle. C’est comme les infobulles ! Cela permet de protéger son travail intellectuel, car une personne qui a FileMaker Pro ne peut pas voir la formule de la fonction et encore moins la modifier.   Notre première fonction personnalisée Nous allons réaliser une fonction personnalisée pour additionner deux nombres et nous retourner le résultat de l’opération. Évidemment, nous n’avons pas besoin de ce type de fonction, puisque nous avons à notre disposition l’opérateur arithmétique + . Mais c’est pour l’exemple. Dans le principe, nous aurons besoin de transmettre deux valeurs à la fonction, qui devra ensuite les additionner. C’est simple ? Alors allons-y !!! Lancer l’application FileMaker Pro Advanced ; Ouvrir un fichier, dans lequel nous avons besoin de cette fonction ; Choisir l’article de menu Fichier > Gérer > Fonctions Personnalisées… ; Cliquer sur le bouton Créer… et nous obtenons la boîte de dialogue suivante :
Dans le champ Nom de la fonction, saisir le nom de la fonction personnalisée, par exemple Addition ; Dans le champ Paramètres de la fonction, saisir le nom du 1er paramètre, par exemple Nombre1, puis cliquer sur le bouton + ; De nouveau, dans le champ Paramètres de la fonction, saisir le nom du 2e paramètre, par exemple Nombre2, puis cliquer sur le bouton + ; Dans la zone principale saisir la formule suivante : Nombre1 + Nombre2   Cliquer sur le bouton OK.
Voilà pour la première fonction personnalisée. Pour l’utiliser il suffit ensuite, dans une rubrique de type calcul, choisir dans la liste des fonctions la nouvelle fonction Addition.   C’est tout pour aujourd’hui ! Nous nous retrouverons la semaine prochaine pour la deuxième partie de cette chronique, où nous verrons la réalisation d’une fonction récursive. En attendant, je vous souhaite une excellente semaine.

David Julot

David Julot

 

Et s'il n'y avait pas de boucle ?

Imaginez-vous un instant que vous êtes en train de développer un programme dans FileMaker ! Vous devez réaliser un traitement pour chaque enregistrement trouvé. Oui, mais voilà, la fonction boucle a disparu. Que faire ? Ce rêve, un certain nombre de personne parmi vous l’a déjà vécu… avec FileMaker Pro 2 ! Bon d’accord cela remonte maintenant à quelques années, on ne va pas tout de même y revenir ?!
Et bien oui, nous allons revenir à l’époque où il n’y avait pas d’action de script permettant d’effectuer un certain nombre de fois une même tâche. Cela va me rajeunir d’une bonne dizaine d’années, treize ans pour être un peu plus précis… C’était la belle époque, où je répondais aux questions posées par les utilisateurs des logiciels Claris… Mais revenons à mon propos initiale, à savoir l’absence d’instruction de gestion de boucle. Mais comment faisions-nous alors pour faire, par exemple, une recherche de doublon, mis à part le fait que nous n’avions pas non plus de rubrique de type global, encore moins de variable, à notre disposition ? Avant d’y répondre, je conseille pour celles et ceux qui ne connaissent pas encore les boucles, pour un bref rappel, à suivre les deux chroniques suivantes : Boucle d’Or et FileMaker Pro… – 1ère partie ; Boucle d’Or et FileMaker Pro… – 2e partie. À l’époque, lorsque nous voulions mettre en place une tâche répétitive, donc une boucle, nous faisions simplement appel à l’action de script Exécuter script. C’est-à-dire qu’au lieu d’avoir un script comme celui-ci : … BOUCLE … traitement … FIN DE BOUCLE SI condition FIN DE BOUCLE …
Nous avions plutôt un script comme celui-là : … traitement … SI condition fin de script Fin de si EXECUTER SCRIPT
L’instruction Excécuter script appelait le script lui-même. On « bouclait » sur le programme lui-même. L’action SI permettant de mettre fin à cette boucle, suivant une condition adéquate bien évidemment ! Si vous venez de comprendre ce principe, alors vous venez de comprendre les fonctions récursives ! En effet, une fonction récursive n’est ni plus ni moins qu’une boucle. La fonction s’appelle elle-même. Dans FileMaker Pro Advanced on peut ainsi réaliser des formules de calcul récursives, sous forme de fonctions personnalisées. Comme nous n’avons pas à notre disposition d’instruction de boucle dans les formules de calcul, alors nous faisons en sorte que la fonction personnalisée s’appelle elle-même. Nous verrons donc la semaine prochaine les fonctions personnalisées, réalisables uniquement avec FileMaker Pro Advanced, mais utilisables avec FileMaker Pro !   C’est tout pour aujourd’hui ! Je vous retrouve donc la semaine prochaine, pour les fonctions personnalisées de FileMaker Pro Advanced, en attendant je vous souhaite, à toutes et à tous, une excellente semaine.

David Julot

David Julot

 

FileMaker Pro n'y est pour rien, mais vous… oui !!!

Nous utilisons, et pour certain d’entre nous développons, des bases de données, car nous souhaitons avoir la maîtrise des données, effectuer des automatismes, des tris, des statistiques, des recoupements… Bref, avoir sous la main « la connaissance » … Pour ceux qui souhaitent savoir ce que représente ce message en lieu et place de ma traditionnelle photo, il faut savoir que c’est mon surnom donné par des amis. Pas facile à prononcer, c’est du japonais ! ao kumo , ce qui veut dire…. à vous de le deviner, et de savoir pourquoi. Le premier qui le trouve aura un cadeau de ma part…
Mais revenons au début de mon propos… Tout le monde souhaite avoir sous la main « la connaissance »… Ce n’est pas nouveau, me direz-vous ! Oui c’est vrai, cela remonte à la nuit des temps. Mais voilà, depuis quelques années l’informatique nous a apporté non seulement la possibilité de stocker de manière phénoménale l’information mais surtout la rapidité de traitement de celle-ci. Cela devait-être réservé à une élite, comme à chaque fois qu’une nouvelle technologie arrive sur le marché, mais FileMaker est passé par là. Rien de plus simple pour le premier venu, que de réaliser une petite base de données et hop ! il gère sa cave à vin, ces recettes… Pour d’autres, cela va être le suivi des tâches à réaliser, etc. Et puis, un beau matin on se retrouve à gérer des personnes ! Vous savez ? Ces objets autonomes, qui parlent, chantent, écrivent, qui dit-on auraient une âme, une conscience, un nom : homme. On n’y prête pas attention, on gère dans sa base de données les personnes, comme on gère les factures, les produits… On ajoute un commentaire sur telle ou telle personne, comme on ajoute une description sur un produit. Et bien oui ! on ne fiche pas les personnes, comme on fiche des carottes et des petits pois ! Et pourtant… depuis la naissance, jusqu’à la mort, et même après, nous sommes fichés ! À ma naissance, j’ai eu mon entrée dans le registre de l’état civil. J’ai eu droit ensuite à mon numéro de sécurité sociale, mon identifiant INSEE de l’éducation nationale, mon numéro de carte d’identité nationale, mon numéro de passeport, mon numéro de permis de conduire, mon numéro de matricule militaire, mon deuxième numéro de permis de conduire (militaire), mes numéros d’employés, mon numéro de compte bancaire, mon numéro de client SNCF, RATP, AIR FRANCE, FRANCE TELECOM… J’ai même un numéro dans la base qui gère ce blog !!! Tous ces numéros, pour que l’on puisse me gérer dans des bases de données ! Et on me dit, si jamais j’ose demander si c’est bien nécessaire, que c’est pour m’apporter des services personnalisés, pour me mieux me servir ! Mon œil ! Vous savez que votre banquier connaît tout de votre vie, même intime ? Il sait ce que vous achetez, à quelle fréquence, chez qui, où…. Tout ça, grâce à une base de données et à votre carte bancaire ou vos chèques…. On se dit que l’on va payer en liquide, horreur, même les billets de banque sont numérotés !!! Nous, pauvres petits utilisateurs/développeurs de bases de données FileMaker faisons attention, considérons les personnes non pas comme de vulgaires objets inertes, mais comme des êtres humains. C’est pour éviter des dérives qu’en France la loi du 6 janvier 1978 apporte des droits et des obligations, tant pour le citoyen que pour l’exploitant d’un fichier nominatif. Elle devient de plus en plus connu, pourtant elle commence à dater ! Mais peu de gens savent que depuis 2004, la loi a été complétée par de nouvelles obligations. On doit faire en sorte qu’un fichier nominatif doit être accessible uniquement par des personnes authentifiées et autorisées. Pour cela, je vous suggère d’aller faire un petit tour sur le site Internet de la CNIL.   C’est tout pour aujourd’hui Celui qui a compris ce propos me fait signe… Celui qui sait pourquoi j’ai des amis qui me surnomment ao kumo, me le dit et gagne un cadeau. Pour ma part, je vous retrouve la semaine prochaine. En attendant, je vous souhaite une excellente semaine.

David Julot

David Julot

 

Un peu de tri dans toutes ces données…

C’est encore le printemps, il n’est donc pas trop tard pour faire le grand ménage printanier ! Et pour cela, nous allons voir un peu les tris dans les données de nos bases FileMaker. Préparer plumeaux, chiffons, et beaucoup d’huile de coude… Non sérieusement, le tri est le parent pauvre des formations à FileMaker Pro, on le néglige et en fait c’est une des premières choses à apprendre. Et il y en a tant à dire… Qu’est-ce donc le tri ? On le confond souvent avec la recherche ! Qu’elle est donc la différence entre un tri et une recherche ? Voilà déjà une première question à ce poser. La recherche permet d’extraire des données d’un ensemble. Initialement on a un tas de fiches, suite à une recherche on se retrouve avec un second tas, celui des fiches trouvées. Cela s’applique aussi bien aux fiches bristol qu’aux enregistrements d’une base de données. Le tri, quand à lui, permet de classer, re-ordonner les fiches les unes par rapport aux autres. En aucun cas il ne permet d’extraire des informations, il est un complément. Le tri, tout comme la recherche, est une fonction de base des gestionnaires de données.   Le tri simple et rapide Pour effectuer un tri, rien de plus, et pourtant… il existe une multitude de manières d’effectuer un tri dans une base de données FileMaker : En choisissant l’article de menu Enregistrements > Tri…, puis en sélectionnant des critères de tri ; En effectuant un clic-droit (contrôle + clic pour ceux qui ont une souris mono-bouton) sur une rubrique, puis en choisissant l’ordre ; En cliquant sur le titre d’une colonne de l’affichage en mode tableau. Les ordres de tri Le type de rubrique (texte, nombre, etc.) influe sur l’ordre de tri de FileMaker : Croissant Texte : A > B Nombre : 0 > 9 Date : 01/01/0001 > 31/12/4000 Heure : 00:00:00 > 23:59:59 Horodatage : 01/01/0001 00:00:00 > 31/12/4000 23:59:59 Décroissant Texte : Z > A Nombre : 9 > 0 Date : 31/12/4000 > 01/01/0001 Heure : 23:59:59 > 00:00:00 Horodatage : 31/12/4000 23:59:59 > 01/01/0001 00:00:00 Il existe un troisième ordre de tri : par liste. Cet ordre permet de classer les données suivant une liste de valeurs. Il faut donc au préalable créer une liste de valeurs. Prenons comme exemple un fichier de personnes, si nous trions les personnes suivant la liste de valeurs ( Martin, Dupont, Henri ) alors tous les enregistrements seront triés en mettant dans l’ordre d’abord les Martin, ensuite les Dupont, les Henri, enfin tous les autres seront triés par ordre alphabétique (croissant). Cet ordre de tri est souvent utilisé pour tri les personnes par grade (armée) ou par fonction.   Petite info depuis FileMaker Pro 7 Il faut savoir que depuis la version 7 de FileMaker, lorsque l’on effectue un tri on reste sur l’enregistrement où l’on se trouvait avant le tri. Dans les anciennes versions, une fois le tri effectué, on était automatiquement placé sur la première fiche. Je dis surtout cela pour ceux qui créent des scripts… Trier les données d’une table externe On ne peut pas simplement demander un tri par cli-droit ou via l’article de menu Enregistrements > Tri… pour trier les données d’une table externe. Encore moins d’effectuer un tri dans la table où sont stockés les données. Il faut soit passer par les options du lien relationnel, soit par les options de la table externe. Dans le premier cas : Choisir l’article de menu Fichier > Gérer > Base de données… ; Choisir l’onglet Liens ; Double-cliquer sur le lien séparant les deux occurrences de tables ; Sélectionner l’option Trier les enregistrements de l’occurrence contenant les données à trier. Dans le deuxième cas : Choisir l’article de menu Affichage > Mode Modèle ; Double-cliquer sur la table externe ; Sélectionner l’option Trier les enregistrements externes. Une petite astuce Pour celles et ceux qui manipulent les tables externes et les occurrences de tables, si vous avez trois occurrences A, B et C et que vous affichez, à partir d’un modèle de l’occurrence A, une table externe de l’occurrence B, vous pouvez très bien trier ce dernier à l’aide de rubriques de l’occurrence C. Pour cela, il faut : Choisir l’article de menu Affichage > Mode Modèle ; Double-cliquer sur la table externe ; Choisir l’occurrence C dans le menu local Afficher les enregistrements liés de ; Sélectionner l’option Trier les enregistrements externes ; Sélectionner les rubriques de l’occurrence C puis valider ; Choisir l’occurrence B dans le menu local Afficher les enregistrements liés de ; Sélectionner l’option Trier les enregistrements externes ; Sélectionner les rubriques de l’occurrence B s’il y a lieu, puis valider.   C’est tout pour aujourd’hui Il y a encore des choses à dire sur le tri dans FileMaker Pro, je le sais, mais vous pouvez aussi compléter cette chronique en le commentant ! Comment çà je deviens fainéant ! Mais je le suis depuis toujours !!! En attendant, je vous souhaite une excellente semaine à toutes et à tous.

David Julot

David Julot

 

La chambre est vide, alors il n'y a pas de maison !

Drôle d’affirmation, n’est-ce pas ? La chambre est vide, alors il n’y a pas de maison !. C’est de manière caricaturale, je le concède parfaitement, la reformulation suivante : si la rubrique est vide alors il n’y a pas d’enregistrement trouvé. Admettons le, tout le monde a fait ce type de test pour savoir si une recherche a abouti ou non. Lorsque l’on fait un script pour effectuer une recherche, il y a deux écoles : la première qui n’effectue pas de test pour savoir si la recherche a abouti, partant du principe qu’il y aura toujours des enregistrements trouvés ; la deuxième qui effectue, ou voudrait savoir comment effectuer, une recherche mais forcément tester convenablement le cas où il n’y a pas d’enregistrement trouvé. Mais pourquoi diable savoir si une recherche a abouti ? Mais tout simplement pour éviter deux choses : la boîte de dialogue affichée par FileMaker pour indiquer qu’il n’y a pas d’enregistrement correspondant aux critères de recherche, et de laisser l’utilisateur dans l’expectative… Que faut-il choisir, entre Annuler, Autres Critères ou Continuer ? l’affichage d’une fenêtre vide, sans enregistrement, laissant dans l’effroi l’utilisateur qui a la sensation d’avoir fait une erreur irrémédiable… Je n’ai qu’un seul conseil à donner : il faut toujours tester l’aboutissement d’une recherche lorsque cette dernière est faite via un script. Maintenant il existe plusieurs moyens de tester si une recherche a abouti ou non.   Ce qu’il ne faut pas faire Commençons déjà par ce qui ne faut pas faire… … # actions de recherche … SI [ rubrique = "" ] # cas où il n’y a pas d’enregistrement trouvé … Sinon # cas où il y a des enregistrements trouvés … Fin de si
Ce n’est pas parce que la rubrique est vide qu’il n’y a pas d’enregistrement ! Amusez-vous avec le fichier d’exemple joint à cette chronique (pour version 7 et plus de FileMaker Pro). Il faut savoir que s’il n’y a pas d’enregistrement, alors il n’y a pas de rubrique, donc on ne peut pas tester le contenu d’un contenant inexistant ! D’où le titre de cette chronique…   Une méthode simple et de bon goût Pour savoir si une recherche a abouti, je vous propose plutôt d’utiliser une fonction d’Obtention. En effet, les fonctions d’Obtention de FileMaker Pro sont là pour nous permettre de connaître l’état où se trouve FileMaker Pro. Nous allons donc utiliser la fonction Obtenir(NombreEnregTrouvés), ou pour les versions 3 à 6 de FileMaker Pro : Etat(FichesTrouvées). Comme son nom l’indique, la fonction Obtenir(NombreEnregTrouvés) retourne le nombre d’enregistrements trouvés, ou plus généralement le nombre d’enregistrements non ignorés. Nous avons alors le script suivant : … # actions de recherche … SI [ Obtenir ( NombreEnregTrouvés ) = 0 ] # cas où il n’y a pas d’enregistrement trouvé … Sinon # cas où il y a des enregistrements trouvés … Fin de si
Qui pour ma part est plus juste (intellectuellement) et qui a le bon goût d’être plus claire pour le néophyte. Pour ceux qui veulent utiliser les codes d’erreur de FileMaker peuvent utiliser en lieu et place du test Obtenir(NombreEnregTrouvés) = 0 le test Obtenir(DernièreErreur) = 401. Pour rappel, vous trouverez la liste des codes d’erreur de FileMaker à l’une des adresses suivantes : en français : http://www.filemaker.fr/help/21a-FMP_error%20codes.html en anglais : http://www.filemaker.com/help/21a-FMP_error%20codes.html en italien : http://www.filemaker.it/help/21a-FMP_error%20codes.html en espagnol : http://www.filemaker.es/help/21a-FMP_error%20codes.html en japonais (mon préféré) : http://www.filemaker.co.jp/help/21a-FMP_error%20codes.html en canadien (qui a oublié le français sacrebleu!) : http://www.filemaker.ca/help/21a-FMP_error%20codes.html   Une dernière petite chose Merci à Christophe Cuq qui m’a rappelé, sur le forum, quelque chose que je n’ai pourtant pas l’habitude d’oublier : la gestion des erreurs de FileMaker. En effet, n’oubliez pas d’ajouter en début de script l’action Gestion erreur[oui] pour demander à FileMaker Pro de ne pas afficher les messages d’alerte ou d’erreur qui pourraient survenir lors de l’exécution du script. Il faut savoir que le fait de ne pas trouver d’enregistrement lors d’une recherche occasionne un message d’alerte de la part de FileMaker, celui qui affiche les bouton cités au début de ce billet.   C’est tout pour aujourd’hui… Et oui, déjà ! Je vous rappelle qu’il fait chaud, que c’est un week-end prolongé, donc je me repose… En attendant, je fais appel à vous, si vous avez des questions techniques sur FileMaker Pro, FileMaker Pro Advanced, FileMaker Server ou FileMaker Server Advanced (ouf!) dont la réponse peut intéresser tout le monde, n’hésitez pas à mes les soumettre dans le commentaire ci-après… Excellente semaine à toutes et à tous.

David Julot

David Julot

 

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

Suite et fin (provisoire ?) de la série sur l’XML et l’XSL-T, avec les réponses aux exercices que je vous ai proposés la semaine dernière. Nous aurons à la fin de cette chronique un mini lecteur RSS avec la feuille de style XSL-T proposée dans le deuxième chapitre d’Histoire d’O…. Pour vous aider à suivre confortablement cette chronique, je vous propose de télécharger la feuille XSL-T jointe à cette chronique, et de la sauvegarder sur votre bureau sous le nom de feuille.xsl. Maintenant, passons aux réponses aux questions posées la semaine dernière.   Tester l’importation du flux RSS Pour tester l’importation du flux RSS du Blog FileMaker qui, je vous le rappelle, fonctionne depuis la version 6 de FileMaker Pro, nous allons suivre la procédure suivante : Ouvrir FileMaker Pro, sans base de données ; Choisir l’article de menu Fichier > Ouvrir… ; Dans la boîte de dialogue Ouvrir fichier, sélectionner dans le menu local Afficher l’item Source de données XML ; Dans la boîte de dialogue Définir les options XML et XSL, dans la partie Définir la source des données XML, saisir la requête HTTP suivante :
http://www.leblogfm.fr /feed Cocher l’option Utiliser la feuille de style XSL ; Cocher l’option Fichier, et sélectionner la feuille présente sur le bureau feuille.xsl et cliquer sur le bouton Ouvrir ; Cliquer sur le bouton Continuer… ; Si tout ce passe bien (!?) dans la boîte de dialogue Nom du fichier à créer, sauvegarder la nouvelle base de données sous le nom Lecteur rss.fp7 sur le bureau et cliquer sur le bouton Enregistrer. Si tout s’est bien passé, vous devez avoir une base de données avec 10 enregistrements. Vous trouverez, joint à cette chronique, la base de données issue de cette procédure.   Automatisation de la mise à jour Pour l’automatisation, nous allons créer un bouton, sur le premier modèle par exemple, qui va exécuter une seule action de script, à savoir Importer enregistrements. ATTENTION ! Pour ceux qui utilisent la version 6 de FileMaker Pro, vous devez passer par un script pour ensuite le faire exécuter par le bouton. Aucun problème pour les versions 7 et supérieures… Pour la réalisation du bouton : Ouvrir le fichier Lecteur rss.fp7 ; Choisir le modèle Modèle n°1 ; Choisir l’article de menu Affichage > Mode Modèle ; Créer un bouton sur le modèle ; Choisir l’action de script Importer enregistrements ; Cocher l’option Sans fenêtre ; Ne pas cocher l’option Source de données, mais cliquer dans le menu local Fichier… pour choisir l’item Données XML… ; Dans la boîte de dialogue Définir les options XML et XSL, dans la partie Définir la source des données XML, saisir la requête HTTP suivante :
http://www.leblogfm.fr /feed Cocher l’option Utiliser la feuille de style XSL ; Cocher l’option Fichier, et ajouter le fichier présent sur le bureau feuille.xsl et cliquer sur le bouton Ok ; Cliquer sur le bouton OK ; Cocher l’option Ordre d’importation ; Cocher l’option Mettre à jour enreg. correspondants dans le jeu trouvé ; Cocher l’option Ajouter données restantes en tant que nouv. enreg. ; Dans l’ordre d’importation, remplacer la flèche par le signe égal entre les rubriques liens. Le changement de la flèche par le signe égal se fait par un clic sur la flèche.
Cliquer sur le bouton OK ; Fermer la définition du bouton en cliquant sur le bouton OK ; Choisir l’article de menu Affichage > Mode Utilisation.   Cerise sur le gâteau Comme vous avez bien travaillé, je vous propose, en petit cadeau, un mini lecteur RSS qui est simplement une petite amélioration du fichier réalisé précédemment. Attention, il est prévu pour les versions 8 et supérieures de FileMaker Pro. Et de plus, il a besoin du fichier feuille.rss présent sur le bureau…   C’est tout pour aujourd’hui Voilà, la série sur XML et XSL-T est terminée, pour le moment du moins. En attendant une nouvelle chronique, je vous souhaite un excellente semaine.   [Mise à Jour du 18/05/2016]
Voici les fichiers manquants : feuille.zip ; Lecteur_rss.zip ; min_Lecteur_rss.zip

David Julot

David Julot

 

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

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 : dans votre navigateur, saisir l’url suivante :http://www.leblogfm.fr /feed 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 : 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 ; 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 !

David Julot

David Julot

 

Histoire d'O ou l'importation XML avec FileMaker Pro | 1ère parte

Après Histoire d’X passons maintenant à Histoire d’O… Rappelez-vous, votre première expérience… Il vous a fallut vous y prendre à cinq reprises pour arriver à vos fins! Les cinq chapitres d’Histoire d’X vous a permis de prendre plus d’assurance dans l’utilisation d’XML avec FileMaker et plus particulièrement pour l’exportation… Avant de continuer cette chronique et si vous ne l’avez pas encore fait, je vous invite à lire les cinq chapitres suivants, ils sont indispensables pour la bonne compréhension cette nouvelle série, pompeusement nommée Histoire d’O, et je n’ai aucune honte… chapitre 1 : introduction à XML ; chapitre 2 : exemple XML avec le format d’étiquettes de FileMaker Pro ; chapitre 3 : la transformation XSL-T ; chapitre 4 : l’exportation avec la grammaire FMPDSORESULT ; chapitre 5 : suite et fin de l’exportation avec la grammaire FMPDSORESULT.   Introduction à la grammaire FMPXMLRESULT Lors des chapitres de la série d’Histoire d’X, je n’ai utilisé que la grammaire FMPDSORESULT, adaptée à l’initiation d’XML avec FileMaker Pro. Je pense que c’est pour cette raison que l’éditeur à conservé cette grammaire. Il en existe une autre : FMPXMLRESULT, disponible à la fois pour l’exportation que pour l’importation. Par contre, c’est la seule disponible pour l’importation XML dans FileMaker Pro.   Exportation avec la grammaire FMPXMLRESULT La grammaire FMPXML a la particularité de générer un fichier XML ayant une double structure: la première contient des informations sur la table et les rubriques exportées ; la seconde contient les données exportées. La grammaire FMPXMLRESULT propose un fichier XML résultat dont les données sont présentées à plat, c’est-à-dire que les données sont présentées comme dans un tableau. L’exportation des données d’une table en XML avec la grammaire FMPXMLRESULT suit la même procédure qu’une exportation classique. En effet, il faut au préalable choisir les enregistrements qui seront exportés, soit l’ensemble des enregistrements de la table, soit les enregistrements actifs, suite à une recherche par exemple. Pour exporter les enregistrements d’une table au format FMPXMLRESULT il faut suivre la procédure suivante : Choisir l’article de menu Fichier > Exporter des enregistrements… ; Dans le menu local Type choisir l’option XML ; Saisir un nom pour le fichier d’exportation puis cliquer sur le bouton Enregistrer ; Dans le menu local Grammaire, choisir l’option FMPXMLRESULT, puis cliquer sur le bouton Continuer… ; Dans la boîte de dialogue Ordre d’exportation des rubriques, choisir la table contenant les colonnes à exporter puis cliquer sur le bouton Exporter. Lors de l’exportation, on obtient un fichier XML équivalent à 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= »SOCIETES.fp7″ RECORDS= »2″ TIMEFORMAT= »k:mm:ss » /> <METADATA> <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »id » TYPE= »TEXT » /> <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »nom » TYPE= »TEXT » /> <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »adresse » TYPE= »TEXT » /> <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »cp » TYPE= »TEXT » /> <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »ville » TYPE= »TEXT » /> <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »pays » TYPE= »TEXT » /> <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »telephone » TYPE= »TEXT » /> <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »telecopie » TYPE= »TEXT » /> <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »email » TYPE= »TEXT » /> <FIELD EMPTYOK= »YES » MAXREPEAT= »1″ NAME= »web » TYPE= »TEXT » /> </METADATA> <RESULTSET FOUND= »2″> <ROW MODID= »1″ RECORDID= »1″> <COL><DATA>S001</DATA></COL> <COL><DATA>Artys</DATA></COL> <COL><DATA>53 place de la Résistance</DATA></COL> <COL><DATA>45000</DATA></COL> <COL><DATA>Orl√©ans</DATA></COL> <COL><DATA>France</DATA></COL> <COL><DATA>02 77 32 12 78</DATA></COL> <COL><DATA>02 77 32 12 79</DATA></COL> <COL><DATA></DATA></COL> <COL><DATA></DATA></COL> </ROW> <ROW MODID= »4″ RECORDID= »2″> <COL><DATA>S002</DATA></COL> <COL><DATA>Colyseum</DATA></COL> <COL><DATA>22 rue de la libération</DATA></COL> <COL><DATA>29000</DATA></COL> <COL><DATA>Quimper</DATA></COL> <COL><DATA>France</DATA></COL> <COL><DATA>02 23 34 45 56</DATA></COL> <COL><DATA>02 23 34 45 55</DATA></COL> <COL><DATA></DATA></COL> <COL><DATA>www.colyseum.com</DATA></COL> </ROW> </RESULTSET> </FMPXMLRESULT>
Cette grammaire se compose comme suit : <FMPXMLRESULT> : balise racine de l’arborescence XML du flux de données ; <ERRORCODE> : balise contenant le code erreur survenue lors de l’exportation, pour connaître la signification cliquer ici ; <PRODUCT> : balise contenant, via des attributs, les informations sur le logiciel ayant servi à générer le flux XML ; <DATABASE> : balise contenant, via des attributs, des informations sur le formatage des données ; <METADATA> : balise contenant le premier bloc du fichier XML. Ce bloc contient la liste des rubriques (colonnes) exportés, ainsi que leur type ; <FIELD> : balise de description d’une rubrique exportée ; <RESULTSET> : balise contenant le deuxième bloc du fichier XML. Ce bloc contient, sous forme d’un tableau, les données exportées ; <ROW> : balise contenant les données d’un enregistrement (rangée), sous forme de colonnes (rubriques) ; <COL> : balise contenant les données d’une rubrique (colonne). Les données d’une rubrique multivaluée sont stockées dans autant de balises <DATA> ; <DATA> : balise contenant la donnée de la rubrique. On peut voir que le flux XML FMPXMLRESULT est une exportation à plat des données sous forme de tableau, ce qui est normal puisque la structure d’une table ce n’est plus ni moins qu’un tableau ! Rappelez-vous que : Enregistrement = Rangée Rubrique = Colonne   L’importation XML dans FileMaker Pro L’importation XML dans FileMaker Pro passe exclusivement par la grammaire FMPXMLRESULT, et comme c’est une grammaire spécifique à FileMaker Pro, il faudra donc créer une feuille de transformation XSL-T pour chaque type de flux à importer. Nous verrons, la semaine prochaine, l’importation d’un flux XML dans FileMaker Pro et nous prendrons comme exemple un flux RSS. Vous aurez ainsi, avec peu de moyen, un lecteur RSS sous FileMaker Pro.   C’est tout pour aujourd’hui En attendant donc la suite, je vous souhaite une excellente semaine et profitez en pour réviser les précédents chapitres !

David Julot

David Julot

 

Un peu de nettoyage de printemps dans vos bases…

Cette semaine faisons un peu de ménage dans nos données, après tout c’est le printemps ! Je rencontre encore beaucoup de personnes qui ne savent pas remplacer une valeur par une autre, ou tout simplement effacer le contenu d’une rubrique d’un groupe d’enregistrements. Nous allons y remédier, et pour cela nous allons utiliser une fonction très dangereuse, attention aux dégâts !!! J’ai besoin assez régulièrement de : vouloir remplacer une valeur par une autre sur un groupe d’enregistrements ; vouloir « vider » le contenu d’une rubrique ; re-initialiser un numéro de série ; etc. Et je pense que je ne suis pas seul dans ce cas. C’est le lot de toutes personnes qui est amenée à travailler avec une base de données.
Pour cela nous allons utiliser une fonction disponible dans FileMaker Pro depuis au moins la version 3, mais qui est assez dangereuse.   Pourquoi dangereuse ? Tout simplement parce que cette fonction modifie de manière définitive le contenu des rubriques. Il faut donc bien veiller à travailler sur une copie de la base de données, ou d’en faire une copie avant l’utilisation de cette fonction.   Mais quelle est donc cette fonction ? Cette fonction, nous la trouvons dans le menu Enregistrements à l’article Remplacer… Prenons quelques exemples d’utilisation : effacer le contenu d’une rubrique ; re-initialisation d’un numéro de série ; remplacement d’un mot par autre. Mais n’oubliez jamais d’effectuer une copie de sauvegarde de votre base de données ou de travailler sur une copie de votre base de données.   Effacer le contenu d’une rubrique Pour effacer le contenu d’une rubrique sur l’ensemble des enregistrements ou sur un groupe d’enregistrement, il faut suivre la procédure suivante : Effectuer une recherche ou, suivant le cas, choisir l’article de menu Enregistrements > Afficher tous les enregistrements ; Effacer le contenu de la rubrique souhaitée sur un des enregistrements, et laisser le curseur texte à l’intérieur de la rubrique ; Choisir l’article de menu Enregistrements > Remplacer… ; Bien lire le message ! Choisir la première option : Remplacer par : «  » ; Cliquer sur le bouton Remplacer. Certaines personnes choisissent de supprimer la rubrique puis la recréent. Mais je ne suis pas adepte de cette solution. Vous pouvez utiliser cette procédure pour, non pas effacer le contenu d’une rubrique, mais pour mettre une même valeur sur un ensemble d’enregistrement. Pour cela, à l’étape 2, au lieu d’effacer le contenu de la rubrique, il suffit de saisir la valeur souhaitée.   Re-initialiser un numéro de série Il est tout à fait possible, dans FileMaker, de re-initialiser un numéro de série d’une rubrique. Mais là encore il faut faire très attention. Il ne faut pas utiliser la méthode suivante dans le cas où cette rubrique est utilisée dans la définition d’un lien, vous risqueriez de perdre ou de mélanger des données ! La procédure pour re-initialiser un numéro de série est la suivante : Choisir l’article de menu Enregistrements > Afficher tous les enregistrements ; Cliquer dans la rubrique contenant le numéro de série ; Choisir l’article de menu Enregistrements > Remplacer… ; Bien lire le message ! Choisir la deuxième option : Remplacer par num. de série ; Modifier les champs N° de départ et Incrément s’il y a lieu ; Cocher l’option Répercuter dans Options d’entrée ; Cliquer sur le bouton Remplacer. Si vous souhaitez re-initialiser un numéro de série utilisé comme clef primaire ( petit rappel sur les clefs primaires ici ), il faut alors utiliser un script.   Remplacer un mot par un autre Il peut arriver, dans le cas d’un nettoyage de base de données qu’il faut remplacer une valeur par une autre, mais que la valeur à remplacer peut être contenu dans un texte qu’il ne faut pas toucher. Alors que faire ? Effectuer une recherche ou, suivant le cas, choisir l’article de menu Enregistrements > Afficher tous les enregistrements ; Cliquer dans la rubrique pouvant contenir la valeur à remplacer ; Choisir l’article de menu Enregistrements > Remplacer… ; Bien lire le message ! Choisir la troisième option : Remplacer par le résultat du calcul ; Dans la zone de formule saisir la formule suivante : REMPLACE2 ( rubrique en cours ; "valeur à remplacer" ; "valeur de remplacement" ) // la fonction REMPLACE2 a depuis été renommée SUBSTITUER   Cliquer sur le bouton OK ; Cliquer sur le bouton Remplacer. Cette méthode est très efficace et très rapide, plus rapide qu’un script avec une boucle ! Mais, comme je n’arrête pas de le dire depuis le début : TRÈS DANGEREUX. Donc, si vous ne sentez pas à l’aise avec cette instruction : TRAVAILLER SUR UNE COPIE DE SAUVEGARDE.   C’est tout pour aujourd’hui Oui je sais, c’est un peu court aujourd’hui, mais je suis en train de vous préparer une nouvelle série sur XML, mais cette fois-ci sur l’importation dans FileMaker Pro. Alors réviser bien mes chroniques « Une histoire X » dont le premier chapitre se trouve ici. En attendant, je vous souhaite une excellente semaine !

David Julot

David Julot

 

FileMaker Pro en taille XXXL, ou bien connaître ses limites

J’espère que tout le monde a bien digéré la conférence de Nice, car aujourd’hui je vais revenir sur un des fondamentaux de FileMaker Pro : le typage des données, et leur limites. Pour ceux qui lisent ces billets du Blog FileMaker au travers du Forum, cette chronique fait écho à un sujet de la semaine dernière. Je ne vais pas dans cette chronique vous expliquer ce qu’est une base de données, cela viendra en temps utile. Non, je vais surtout vous parler typage, limite, caractéristique des rubriques de FileMaker Pro. Mais rappelez vous que les données sont stocker des rubriques, qui elles-mêmes sont regroupées dans des enregistrements (fiches), contenus dans une table, elle-même appartenant à un fichier. Voir pour cela ma chronique sur la hiérarchie des objets de FileMaker, ici, qu’il faut toujours avoir en tête.   Les différents types de rubrique FileMaker Pro comporte 6 types de rubriques, plus 2 annexes : TEXTE : qui peut contenir tout type de caractères ; NOMBRE : pour tout ce qui est poids et mesures ; DATE : comme son nom l’indique ; HEURE : pour toute heure d’une journée, ou pour toute durée ; HORODATAGE : pour indiquer une heure à une date donnée ; MULTIMÉDIA : pour stocker et/ou visualiser des images, du son, de la vidéo et tout type de fichier. CALCUL : pour que FileMaker retourne une valeur automatiquement ; STATISTIQUE : pour effectuer une statistique sur un ensemble d’enregistrements. Voilà pour dégrossir les différents types de données que FileMaker est capable de stocker et gérer. J’ai mis, comme vous avez pu le constater, à part les rubriques de type CALCUL et STATISTIQUE. En effet, ces deux types, à la différence des six premières, c’est à FileMaker Pro de donner une valeur et non pas l’utilisateur.   La différence entre une rubrique de type CALCUL et de type STATISTIQUE La différence entre ces deux types de rubrique est surtout d’ordre de portée du calcul. La rubrique de type CALCUL voit sa portée limitée à l’enregistrement. La rubrique donne un résultat différent pour chaque enregistrement. La rubrique de type STATISTIQUE voit sa portée limitée au fichier. La rubrique donne un résultat pour un groupe d’enregistrements ou pour l’ensemble du fichier. Autre différence, la rubrique de type CALCUL, peut donner un résultat de type : TEXTE, NOMBRE, DATE, HEURE, HORODATAGE et MULTIMÉDIA. Alors que la rubrique de type STATISTIQUE ne peut donner qu’un résultat de type NOMBRE.   Les caractéristiques des différents types de rubrique Nous allons voir maintenant les caractéristiques et les limites de chaque type de rubrique. TEXTE La rubrique de type TEXTE est une rubrique qui peut contenir un texte plus ou moins long. Cette rubrique intègre un mini traitement de texte: vous pouvez passer à la ligne, combiner des paragraphes, des alinéas, des styles différents. Vous pouvez, si le cœur vous en dit, stocker tout le texte contenu dans l’Encyclopædia Universalis® dans une seule rubrique de type TEXTE ! limite : 2 Go de caractères. recherche et tri (indexation) : 100 premiers caractères de chaque mot, FileMaker Pro effectue une recherche en texte intégral. NOMBRE La rubrique de type NOMBRE, est une rubrique qui peut contenir à la fois des chiffres et des caractères (texte). Mais alors qu’elle est la différence avec le type TEXTE ? La rubrique de type NOMBRE ne permet pas la saisie de retour à la ligne. Il y a d’autres différences : limite : 800 caractères, précision des calculs portée à 400 chiffres. recherche et tri (indexation) : seuls les chiffres sont indéxés. Pas de recherche possible sur la partie texte. ATTENTION ! Pour ceux qui travaillent sur PC, votre pavé numérique de votre clavier comporte un point. Comme FileMaker Pro se réfère aux préférences du système d’exploitation il s’attend donc que vous saisissiez la virgule comme séparateur décimale et non le point. Pour ceux évidemment qui ont le réglage du format de nombre à la française. DATE La rubrique de type date va contenir une date, à savoir : un jour , un mois et une année. Tout comme le type NOMBRE, FileMaker Pro va s’appuyer sur les préférences du système d’exploitation pour accepter la saisie de la date, du moins l’ordre des informations, à la française : jour, mois, année. Depuis la version 7, FileMaker Pro accepte différents séparateurs, du moment qu’on utilise deux fois le même lors d’une saisie. limite : la date doit être incluse dans l’intervalle 01/01/0001…31/12/4000. HEURE La rubrique de type HEURE, comme son nom ne l’indique pas va contenir une information soit de type heure, soit de type durée. En sachant qu’il faut au moins saisir deux informations : heure et minute. Là encore, FileMaKer Pro s’appuie sur les préférences du système d’exploitation pour accepter la saisie et donc le séparateur utilisé. Le nombre de chiffres pour les heures, les minutes et les secondes ne sont pas limité à 2, vous pouvez très bien saisir 0:120 en lieu et place de 2:00. Tout comme vous pouvez apporter une précision en dixième, centième, etc. de secondes. limite : 0…1 000 000 000 pour les heures, les minutes et les secondes, au format hh:mm:ss,nn HORODATAGE Type de rubrique apparu avec FileMaker Pro 7, ce type de rubrique permet de stocker dans une même rubrique une date et une heure. En sachant que l’heure doit être comprise entre 00:00:00 et 23:59:59. La date et l’heure doivent être séparée par une espace. limite : idem que le type DATE. MULTIMÉDIA La rubrique de type MULTIMÉDIA peut contenir, au choix : un son ; une image ; une vidéo QuickTime® ; un fichier. En sachant que pour le fichier, il doit être de type binaire. C’est-à-dire que vous pouvez mettre un document Microsoft Word, un document Microsoft Excel, un document texte, etc. Mais vous ne pourrez pas mettre l’application FileMaker Pro (version Mac OS X) par exemple, car ce n’est pas un fichier binaire mais un package (un répertoire si vous préférez). limite : le document insérer ne doit pas dépasser 4 Go. CALCUL Une rubrique de type CALCUL peut, comme je l’ai expliqué plus haut, générer un résultat de type TEXTE, NOMBRE, DATE, HEURE, HORODATAGE ou MULTIMÉDIA. La formule qui n’est pas qu’arithmétique, peut faire appel aux différents types de rubrique, mais attention à ne pas mélanger les types, mais je reviendrai dans une prochaine chronique sur le principe du prototypage. ATTENTION ! Lorsque vous définissez une rubrique de type CALCUL, indiquez avant tout le type de résultat de ce calcul. C’est une chose que l’on a tendance à oublier. limite : la formule est limité à 32 000 caractères. STATISTIQUE La rubrique de type statistique n’a pas de limite en tant que telle. Elle génère toujours un NOMBRE. Là encore, je reviendrai avec une chronique à part entière pour expliquer l’utilisation des rubriques de type STATISTIQUE et plus particulièrement des modèles avec récapitulatifs pour éditer des rapports.   Comparaison entre FileMaker Pro 6 et FileMaker Pro 7 La version 7 de FileMaker Pro a amenée de nouvelles limites, d’où mon titre XXXL. Voici donc un petit tableau comparatif : TEXTE FMP 3 … FMP 6 : 64 000 caractères, 19 carac./mot indexé depuis FMP 7 : 2Go caractères, 100 carac./mot indexé NOMBRE FMP 3 … FMP 6 : 255 caractères, précision de 15 depuis FMP 7 : 800 caractères, précision de 400 DATE FMP 3 … FMP 6 : 01/01/0001...31/12/3000 depuis FMP 7 : 01/01/0001...31/12/4000 HEURE FMP 3 … FMP 6 : hh:mm:ss depuis FMP 7 : hh:mm:ss,nn HORODATAGE FMP 3 … FMP 6 : n'existait pas depuis FMP 7 : jj/mm/aaaa hh:mm:ss MULTIMÉDIA FMP 3 … FMP 6 : son, image, vidéo depuis FMP 7 : son, image, vidéo, fichier Pour celles et ceux qui veulent en savoir plus, vous pouvez accéder à l’aide en ligne de FileMaker Pro 9, disponible : en français : www.filemaker.fr/help en américain : www.filemaker.com/help en italien : www.filemaker.it/help en espagnol : www.filemaker.es/help en allemand : www.filemaker.de/help en néerlandais : www.filemaker.nl/help en japonais : www.filemaker.co.jp/help Et vous aurez droit à un service de traduction en ligne. Par exemple la page sur les caractéristiques des types de rubrique est à cette adresse :
http://www.filemaker.fr/help/05-Create a database15.html
Pour avoir sa traduction anglaise, changer uniquement le domaine fr par com, vous aurez donc l’adresse suivante :
http://www.filemaker.com/help/05-Create a database15.html   C’est tout pour aujourd’hui N’hésitez pas à intervenir si vous voyez que j’ai commis une erreur ou une omission, ou pour tout simplement réagir à cette chronique. En attendant, je vous souhaite une excellente semaine.

David Julot

David Julot

 

Le reformage sans effort | en direct de la FM Conférence 2008

Une deuxième chronique ? Oui ! il faut bien ça pour l’événement qu’est la FM Conférence 2008 et surtout pour que tous ceux qui ne sont pas présents ici à Nice puissent avoir le sentiment de vivre, un peu, cette conférence. Pour aujourd’hui, je vais revenir sur une chronique parue le 7 octobre 2007… En effet, vous avez peut-être lu cette chronique, ici, elle vous expliquait comment mettre en place un reformatage des données saisies par les utilisateurs dans les rubriques pour forcer : la police utilisée, avec la fonction PoliceTexte ; la taille utilisée, avec la fonction TailleTexte ; la couleur, avec la fonction CouleurTexte ; le style, avec la fonction AjoutSytleTexte. Je ne reviendrais pas sur la mise en place des formules de reformatage des données. Non ! Par contre, je vais vous proposer quelque de plus simple et surtout de plus efficace…   Le reformatage sans effort et personnalisable Le problème avec le reformatage que je vous avais proposé, toujours ici, c’est que vous ne pouviez pas fixer, modèle par modèle, le style que doit prendre le contenu de telle ou telle rubrique. C’est-à-dire, que si vous fixez le style, la police, la taille et/ou la couleur, avec mon exemple du mois d’octobre, vous ne pouvez plus ensuite mettre la rubrique sur un modèle avec un style différent. C’est un peu gênant. Il existe en fait une fonction, apparue avec FileMaker Pro 8, qui permet tout simplement de supprimer le style utilisé par l’utilisateur pour reprendre le style que vous avez fixé sur le modèle. Par exemple pour supprimer le soulignement et la couleur bleue des adresses de courriers électroniques que l’utilisateur aurait insérer dans la base par copier/coller. Il faut simplement utiliser la formule suivante : SupprimerFormatTexte ( rubrique ) Vous la mettez tout simplement en lieu et place de la formule proposée au mois d’octobre. SI maintenant vous utilisez FileMaker Pro 9, je vous propose alors de vous simplifiez la vie, avec la formule suivante : SupprimerFormatTexte ( Contenu ) Cela vous évitera de remplacer à chaque fois la rubrique spécifiée dans la fonction SupprimerFormatTexte. Un simple copier/coller suffira pour toutes les rubriques dont vous souhaitez la suppression du formatage. Grâce à cette formule, c’est le formatage du modèle qui est utilisé en lieu et place de ce que l’utilisateur pourrait appliquer.   C’est tout pour aujourd’hui Il faut maintenant penser à ce reposer. Je vous retrouve la semaine prochaine pour une nouvelle chronique. En attendant je vous souhaite une excellente semaine. À tous ceux que j’ai pu rencontrer à Nice, je vous souhaite un bon retour !

David Julot

David Julot

 

Les listes de valeurs en cascade | en direct de la FM Conférence 2008

En léger différé, en effet car la conférence est commencée depuis peu, je n’ai donc pas pu résister à l’envie de rédiger cette chronique pour sa diffusion avant dimanche ! Dans cette chronique, je vais vous apprendre à réaliser des listes de valeurs en cascade. Et pour fêter la FM Conférence de Nice, cette chronique sera un peu plus longue.
Mais qu’est-ce que l’on nomme des listes de valeurs en cascade ? C’est ni plus ni moins que l’utilisation, au minimum, de deux listes de valeurs. on choisit un item à partir d’une première liste de valeurs ; on choisit un item à partir d’une deuxième liste de valeurs. Mais le contenu de la deuxième liste est conditionné au choix d’un item de la première liste.   À quoi cela sert-il ? Les listes de valeurs en cascade, ou listes de valeurs conditionnelles, servent à limiter le nombre d’item d’une liste de valeurs et donc améliorer ce que l’on appelle « l’expérience utilisateur. » Prenons, par exemple, le cas de la liste des communes françaises. Il y en a 36 683 ! On ne va décemment pas afficher en une liste toutes ces communes, et pour cause : la liste sera trop longue pour l’utilisateur ; FileMaker Pro devra « télécharger » tout le contenu avant de l’afficher à l’écran, ce qui peut prendre un certain temps… Imaginons un instant que nous découpions la liste des communes françaises par département. Nous aurions alors une liste de 100 départements (en incluant les DOM), puis une liste plus réduite de communes. La liste des communes par département est certes plus petite, mais nous avons encore une longue liste : celle des départements. Imaginons maintenant que nous découpions la liste des départements par région. Nous aurions alors : une liste, réduite, des régions françaises ; une liste, réduite, des départements par région ; une liste, réduite, des communes par département. Cela signifie que l’utilisateur devra, avant de sélectionner une commune, de choisir une région, puis un département de cette région, et enfin une commune de ce département. Cela peut paraître plus fastidieux, mais en réalité, l’utilisateur va se retrouver en face de listes très courtes, donc très rapide à utiliser. Nous allons donc voir la réalisation de ce type de listes de valeurs en cascade. Pour info, ceux qui souhaitent récupérer la liste des régions, départements et communes françaises, vous pouvez les télécharger à partir du site web de l’INSEE (http;//www.insee.fr).   Réalisation des listes de valeurs en cascade Première étape, ajouter une table dans votre fichier, que je nommerai REGIONS contenant trois rubriques de type texte : Région, Département, Ville. Deuxième étape, ajouter trois rubriques dans la table où s’effectuera la saisie : Région, Département, Ville. Réalisation de la première liste de valeurs La première liste de valeurs à créer est celle des régions. Elle est très simple, c’est une liste de valeurs qui reprend le contenu de la rubrique Région de l’occurrence de table RÉGIONS. Pour savoir ce qu’est une occurrence de table, je vous renvoie vers ma chronique de la semaine dernière. Pour la réalisation de cette première liste de valeur, il faut suivre la procédure suivante : Choisir l’article de menu Fichier > Gérer > Listes de valeurs… ; Cliquer sur le bouton Créer… ; Nommer la liste, par exemple « Liste des régions », et sélectionner l’option Utiliser les valeurs de ; Choisir dans le menu local Utiliser les valeurs de la première rubr. l’occurrence de table RÉGIONS et dans la liste sélectionner la rubrique Région ; Cliquer sur le bouton OK ; Cliquer sur le bouton OK pour refermer la définition de la liste de valeurs ; Cliquer sur le bouton OK pour quitter la fenêtre des listes de valeurs. Pour utiliser cette liste de valeur : Activer le modèle contenant les rubriques de l’occurrence de table TABLE SAISIE ; Choisir l’article de menu Affichage > Mode Modèle ; Double-cliquer sur la rubrique Région ; Choisir dans le menu local Affichage comme, l’item Liste déroulante, puis sélectionner le menu local Afficher les valeurs de la liste l’item Liste des régions ; Cliquer sur le bouton OK ; Choisir l’article de menu Affichage > Mode Utilisation. Réalisation de la deuxième liste de valeurs : celle des départements Cette liste dépendra de ce que l’utilisateur à sélectionné à partir de la liste des régions. Une fois que l’utilisateur a sélectionné la région à partir de la première liste de valeurs, le nom de la région est donc stocké dans la rubrique Région de l’occurrence de table TABLE SAISIE. Nous souhaitons alors la liste des départements liés à la région sélectionnée. Nous allons alors créer un lien, mais avant nous allons créer une occurrence de la table RÉGIONS. DÉPARTEMENTS et RÉGIONS sont deux occurrences de la même table RÉGIONS. Nous allons dans un premier temps créer l’occurrence de table DÉPARTEMENTS : Choisir l’article de menu Fichier > Gérer > Base de données… ; Choisir l’onglet Liens ; Cliquer sur le premier bouton en bas à gauche de la fenêtre (représentation d’une table avec un plus vert) ;
Dans la fenêtre Spécifier une table, sélectionner la table RÉGIONS ; Dans le champs Nom remplacer le nom de l’occurrence RÉGIONS 2 par, par exemple, DÉPARTEMENTS ; Cliquer sur le bouton OK. Une fois la création de l’occurrence terminée, créer le lien entre les deux occurrences TABLE SAISIE et DÉPARTEMENTS : relier la rubrique Région de l’occurrence TABLE SAISIE à la rubrique Région de l’occurrence DÉPARTEMENTS. Ce lien ne servira qu’à la définition de la liste de valeurs des départements par région. Pour la création de cette liste de valeurs : Choisir l’article de menu Fichier > Gérer > Listes de valeurs… ; Cliquer sur le bouton Créer… ; Nommer la liste, par exemple « Liste des départements par région », et sélectionner l’option Utiliser les valeurs de ; Choisir dans le menu local Utiliser les valeurs de la première rubr. l’occurrence de table DÉPARTEMENTS et dans la liste sélectionner la rubrique Département ; Sélectionner l’option Inclure uniquement les valeurs liées à partir de, et choisir dans le menu local l’occurrence TABLE SAISIE ; Cliquer sur le bouton OK ; Cliquer sur le bouton OK pour refermer la définition de la liste de valeurs ; Cliquer sur le bouton OK pour quitter la fenêtre des listes de valeurs. Pour utiliser cette liste de valeur : Activer le modèle contenant les rubriques de l’occurrence de table TABLE SAISIE ; Choisir l’article de menu Affichage > Mode Modèle ; Double-cliquer sur la rubrique Département ; Choisir dans le menu local Affichage comme, l’item Liste déroulante, puis sélectionner le menu local Afficher les valeurs de la liste l’item Liste des départements par région ; Cliquer sur le bouton OK ; Choisir l’article de menu Affichage > Mode Utilisation. Réalisation de la troisième liste de valeurs : celle des villes Cette liste dépendra de ce que l’utilisateur à sélectionné à partir de la liste des régions puis de la liste des départements. Une fois que l’utilisateur a sélectionné le département à partir de la deuxième liste de valeurs, le nom du département est donc stocké dans la rubrique Département de l’occurrence de table TABLE SAISIE. Nous souhaitons alors la liste des villes liés au département sélectionné. Nous allons alors créer un lien, mais avant nous allons créer, une nouvelle fois, une occurrence de la table RÉGIONS. VILLES, DÉPARTEMENTS et RÉGIONS sont trois occurrences de la même table RÉGIONS. Nous allons dans un premier temps créer l’occurrence de table VILLES : Choisir l’article de menu Fichier > Gérer > Base de données… ; Choisir l’onglet Liens ; Cliquer sur le premier bouton en bas à gauche de la fenêtre (représentation d’une table avec un plus vert) ;
Dans la fenêtre Spécifier une table, sélectionner la table RÉGIONS ; Dans le champs Nom remplacer le nom de l’occurrence RÉGIONS 2 par, par exemple, VILLES ; Cliquer sur le bouton OK. Une fois la création de l’occurrence terminée, créer le lien entre les deux occurrences TABLE SAISIE et VILLES : relier la rubrique Département de l’occurrence TABLE SAISIE à la rubrique Département de l’occurrence VILLES. Ce lien ne servira qu’à la définition de la liste de valeurs des villes par département. Pour la création de cette liste de valeurs : Choisir l’article de menu Fichier > Gérer > Listes de valeurs… ; Cliquer sur le bouton Créer… ; Nommer la liste, par exemple « Liste des villes par département », et sélectionner l’option Utiliser les valeurs de ; Choisir dans le menu local Utiliser les valeurs de la première rubr. l’occurrence de table VILLES et dans la liste sélectionner la rubrique Ville ; Sélectionner l’option Inclure uniquement les valeurs liées à partir de, et choisir dans le menu local l’occurrence TABLE SAISIE ; Cliquer sur le bouton OK ; Cliquer sur le bouton OK pour refermer la définition de la liste de valeurs ; Cliquer sur le bouton OK pour quitter la fenêtre des listes de valeurs. Pour utiliser cette liste de valeur : Activer le modèle contenant les rubriques de l’occurrence de table TABLE SAISIE ; Choisir l’article de menu Affichage > Mode Modèle ; Double-cliquer sur la rubrique Ville ; Choisir dans le menu local Affichage comme, l’item Liste déroulante, puis sélectionner le menu local Afficher les valeurs de la liste l’item Liste des villes par département ; Cliquer sur le bouton OK ; Choisir l’article de menu Affichage > Mode Utilisation.   Le truc et astuce… Maintenant, la cerise sur la gâteau ! Nous venons de créer trois listes, pour trois rubriques, mais on peut imaginer que seule la rubrique Ville soit utile et que le rubriques Région et Département ne doivent pas apparaître à l’écran. Et bien, nous allons utiliser une astuce aussi vieille que FileMaker Pro 3 ! Mettons nous en mode Modèle. Nous avons actuellement les trois rubriques, les unes au dessus des autres : Nous allons les superposer : Et là, on s’aperçoit que le fond des trois rubriques est transparent. Nous allons alors fixer le fond à l’aide des motifs de fond des objets, présent dans la zone d’état et sélectionner le fond opaque (carré noir sur carré blanc) : Vous pouvez maintenant superposer complètement les trois rubriques : Si l’utilisateur, ou vous même, utiliser la touche de tabulation pour passer de rubrique en rubrique, pas de problème, les trois listes de valeurs apparaîtrons dans l’ordre : régions, départements puis villes. Mais quid de l’utilisateur qui cliquerait directement sur la rubrique Ville. Il faut absolument passer par la liste de valeurs des régions associée à la rubrique Régions. Et bien transformons la rubrique Ville en bouton : Choisir l’article de menu Mode > Mode Modèle ; Sélectionner la rubrique Ville ; Choisir l’article de menu Format > Configuration du bouton… ; Sélectionner l’action Activer rubrique, puis sélectionner l’option Activer rubrique cible et sélectionner la rubrique Région et valider en cliquant sur le bouton OK ; Valider la définition du bouton en validant sur le bouton OK ; Choisir l’article de menu Mode > Mode Utilisation.   Et deuxième cerise… Et comme je suis très gourmand, je vous propose le fichier FileMaker en téléchargement, il inclut dans la table RÉGIONS la liste de toutes les communes françaises avec leur département et leur région administrative.   C’est tout pour aujourd’hui… En attendant la digestion complète de cette chronique, un peu de repos et je vous retrouve la semaine prochaine pour un nouveau billet. Je remercie toutes celles et tous ceux qui me lisent et qui m’ont très chaleureusement remercié ici à Nice. Avec une dédicace spéciale pour nos amis québécois.

David Julot

David Julot

 

La hiérarchie des objets dans FileMaker…

Une chronique que vous attendiez peut-être hier, dimanche, mais j’étais en train de chercher les chocolats dans le jardin… Tout comme la semaine dernière, cette chronique sera courte, car préparation à la conférence oblige. Aujourd’hui je vais vous parler de la hiérarchie des objets qui existe dans FileMaker, mais dont personne ne parle… Mais qu’est-ce donc que la hiérarchie des objets. Elle est très simple, la voici : FICHIER TABLES – RUBRIQUES OCCURRENCES DE TABLES MODÈLES SCRIPTS Cette hiérarchie signifie que lorsque vous avez un script qui doit, par exemple, mettre une valeur dans une rubrique, il doit : activer un modèle , le modèle active l’occurrence de table qui lui est associée , l’occurrence qui fait référence à la table contenant la rubrique souhaitée.   L’occurrence de table La notion d’occurrence de table est l’élément clef de FileMaker. En effet, on ne travaille jamais directement avec les tables, seulement lors de la définition des rubriques. Ces occurrences de table, vous les trouvez dans le graphe de liens (Fichier > Gérer > Bases de données… puis onglet Liens). Avez-vous remarqué le petit signe qui apparaît en haut à gauche de chaque occurrence ? Ce signe ressemble étrangement au raccourcis ou alias, et ce n’est pas un hasard ! Une occurrence de table est un raccourcis qui pointe vers une table. Et depuis la version 9, elle peut pointer vers une table d’une base mySQL, SQL Server ou Oracle. D’une manière non exhaustive, les occurrences de tables peuvent servir à : ne pas avoir de lien circulaire ; à avoir un schéma de flux, on découpe le schéma relationnel par autant de schéma en prenant comme point de départ les modèles ; à obtenir des données via des liens multi-clefs et multi-critères ; à avoir des listes de valeurs en cascade, et de manière très simple ; d’avoir un début de séparation données/structure (j’ai bien dit un début!) ; etc… Mais une autre notion est étroitement liée aux occurrences de tables : le contexte.   Le contexte Le contexte est tout simplement le chemin qui existe entre deux occurrences de table. En effet, dans le graphe de liens de FileMaker il ne peut y avoir qu’un seul chemin entre deux occurrences de table. Heureusement ! Sinon FileMaker ne saurait pas lequel prendre pour afficher des données. Je vous propose pour la prochaine chronique, de vous montrer plus précisément les occurrences de tables et les contextes dans la réalisation de listes de valeurs en cascade.   C’est tout pour cette semaine… Pas tout à fait En effet, ce n’est pas tout pour cette semaine puisque je serais à Nice pour la Conférence Développeur FileMaker, et je sais déjà que je vais rencontrer un certain nombre d’entre vous qui lisent ce blog. Je vous donne donc rendez-vous à Nice, et je me ferai un plaisir de vous rencontrer. En attendant, je vous souhaite à toutes et à tous une excellente semaine.

David Julot

David Julot

 

Une petit parenthèse…

Quel est le point commun des fonctions suivantes : CAS, CHOISIR et DEFINIR ? En sachant que ces fonctions ont le même point commun avec d’autres… Je vais, pour cette avant dernière chronique avant la Conférence de Nice, vous parler de syntaxe. J’en reviens à ma question : quel est le point commun des fonctions suivantes : CAS, CHOISIR et DEFINIR ? La réponse : l’accolade !   À quoi servent les accolades ? FileMaker Pro présente certaines fonctions avec des accolades, par exemple: CAS ( Test1 ; Résultat1 {; Test2 ; Résultat2 ; ... ; RésultatParDéfaut} ) CHOISIR ( Test ; Résultat0 {; Résultat1 ; Résultat2...} ) DEFINIR ( {[} Var1 = Expression1 {; Var2 = Expression2...]} ; Calcul ) Lorsque vous insérez ces fonctions dans une formule de calcul, vous avez peut-êrtre déjà remarqué ces accolades, crochets, points de suspension… Et vous avez l’impression de ne rien y comprendre… Et il y a de quoi ! En fait les accolades servent à vous signifier la partie optionnelle de la fonction.   La fonction CAS Prenons la fonction CAS, en l’insérant dans une formule, nous avons: CAS ( Test1 ; Résultat1 {; Test2 ; Résultat2 ; ... ; RésultatParDéfaut} ) Pour connaître les syntaxes possibles de cette fonction, il faut soit supprimer les accolades et leur contenu, soit supprimer les accolades en conservant le contenu. Nous avons ainsi deux syntaxes : // en supprimant la partie optionnelle : CAS ( Test1 ; Résultat1 ) // en conservant la partie optionnelle : CAS ( Test1; Résultat1; Test2; Résultat2; ... ; RésultatParDéfaut ) Pour cette deuxième syntaxe, il nous reste des points de suspension. Ces points nous indique que l’on peut répéter la partie ; Test2; Résultat2;  autant de fois que nécessaire. Par contre, ce qui n’est pas indiqué, c’est lorsqu’il y a une seconde partie optionnelle. Dans le cas () de la fonction CAS, la partie RésultatParDéfaut est optionnelle. Nous avons ainsi pour la fonction CAS les syntaxes suivantes : // sans les parties optionnelles :CAS( Test1; Résultat1 ) // avec la deuxième partie optionnelle : CAS ( Test1 ; Résultat1 ; RésultatParDéfaut ) // avec la première partie optionnelle : CAS(  Test1 ; Résultat1 ; Test2 ; Résultat2 ; ... Testn ; Résultatn ) // avec toutes les parties optionnelles : CAS(  Test1 ; Résultat1 ; Test2 ; Résultat2 ;   ... Testn ; Résultatn ;   RésultatParDéfaut ) Il est clair que pour indiquer une deuxième partie optionnelle cela aurait demandé une surcharge d’écriture, déjà que c’est bien illisible comme çà…   La fonction CHOISIR Si nous prenons maintenant la foncrtion CHOISIR, lorsque nous l’insérer dans la formule, nous avons : CHOISIR ( Test ; Résultat0 {; Résultat1 ; Résultat2...} ) Si nous supprimons la partie optionnelle, donc tout ce qu’il y a entre accolades, accolades comprises, nous avons donc la première syntaxe : // sans la partie optionnelle : CHOISIR ( Test; Résultat0 ) Si maintenant nous souhaitons conserver la partie optionnelle, alors nous avons la syntaxe suivante : // avec la partie optionnelle : CHOISIR ( Test ;   Résultat0 ;   Résultat1 ;   ...   Résultatn )   La fonction DEFINIR Dans le cas de cette fonction, lors de son insertion nous avons : DEFINIR ( {[} Var1 = Expression1 {; Var2 = Expression2...]} ; Calcul ) Nous avons donc les deux syntaxes : // sans la partie optionnelle : DEFINIR (   var1 = expression1 ;   Calcul ) // avec la partie optionnelle, // remarquer l'absence de point-virgule après la dernière expression de // la dernière variable ! DEFINIR (   [     var1 = expression1 ;     var2 = expression2 ;     ...     varn = expressionn   ] ;   calcul )   Pour les anciens… Pour les anciens comme moi, souvenez-vous de la syntaxe de FileMaker Pro pour signaler une partie optionnelle ?  Ce sont les crochets qui étaient utilisés. Mais depuis la version 7, les crochets servent à encadrer un paramètre composite, comme dans la fonction DEFINIR avec plusieurs variables, que des paires de valeurs, comme dans la fonction REMPLACE2 : // fonction avec l'ancienne syntaxe : REMPLACE2 ( REMPLACE2 ( REMPLACE2 ( rub ; "." ; "" ) ; "-" ; "" ) ; "/" ; "" ) // la même formule avec la nouvelle syntaxe : REMPLACE2 ( rub ; [ "." ; "" ] ; [ "-" ; "" ] ; [ "/" ; "" ] ) // depuis la fonction REMPLACE2 a été renommée SUBSTITUER   C’est tout pour aujourd’hui ! Tout comme aujourd’hui, le billet de la semaine prochaine sera aussi court. Il faut en effet reposer vos cerveaux pour la conférence de Nice… En attendant, je vous souhaite à toutes et à tous une excellente semaine.

David Julot

David Julot

 

Une histoire X - 5e partie : L'exportation XML de FileMaker Pro

Suite de la semaine dernière, où je vous ai lâchement abandonné en cours de route. Je vais donc poursuivre cette semaine par la réalisation d’une feuille de style de transformation (XSL-T) pour exporter les données d’une base FileMaker. Je vais continuer à utiliser la base d’exemple, que vous trouverez dans les fichiers joints à cette chronique. Concernant l’écriture de code XML, vous avez deux possibilités : La première : utiliser un éditeur texte, mais en faisant attention à ne pas saisir de caractères accentués; La seconde : utiliser un éditeur adapté à l’écriture de code XML. Pour ma part j’utilise le logiciel oXygene XML Editor, qui a le bon goût de fonctionner aussi bien sur Mac OS X que sur Windows. Cliquez ici pour accéder au site de l’éditeur.   Notre première feuille XSL-T Nous allons commencer par créer une feuille XSL-T. Ce document doit comporter au moins deux éléments : La déclaration XML, puisque qu’un document XSL-T est avant tout un document XML; La balise racine, qui indique, entre autre, que c’est un document XSL-T. Voici donc la feuille XSL-T minimaliste : <?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> ... </xsl:stylesheet> Je ne vous ai pas encore parlé de l’espace de nom (name space) et pourtant c’est une notion très importante. Je ne vais pas rentrer dans le détail, vais il faut savoir que le parser, le moteur de transformation, va jouer avec trois documents XML : le document XML à transformer, le document XSL-T et le document XML résultat de la transformation. Rappelez vous ce schéma vu la semaine dernière (cf. chronique 4) : Il est peut arriver qu’une balise ayant le même nom se retrouve dans les trois documents, ou seulement deux. Il faut alors que le parser puisse savoir que telle balise vient de tel document et pas d’un autre. Pour cela on utilise l’espace de nom, un préfixe qui va permettre au parser de connaître l’origine de la balise, un peu à la manière des clefs primaires dans les bases de données. Nous avons donc deux espaces de nom à déclarer : Le premier, xsl, déclaré par l’attribut xmlns:xsl="" ; Le deuxième, fmp, déclaré par l’attribut xmlns:fmp="". Le nom fmp est choisit, n’est pas imposé. Par contre, l’adresse fournit en valeur doit correspondre exactement à celle fournit par le document XML de la grammaire FMPDSORESULT. Ces préfixes seront placés devant (et pour cause c’est un préfixe!) chaque balise de la feuille XSL-T. Voici donc le code correspondant à la feuille XSL-T de base pour une transformation d’une grammaire FMPDSORESULT : <?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   xmlns:fmp="http://www.filemaker.com/fmpdsoresult"   version="1.0"> ... </xsl:stylesheet>
Vous trouverez cette feuille jointe à cette chronique sous le titre « Feuille XSL-T de base », ainsi que l’exportation au format XML de la base sous le titre « export FMPDSORESULT ».   Le principe de modèle de données Il faut savoir que la transformation XSL-T consiste à appliquer un modèle de données à une arborescence XML. Pour cela, on utilise la commande XSL xsl:template, ce qui nous donne le code suivant : <?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   xmlns:fmp="http://www.filemaker.com/fmpdsoresult"   version="1.0">   <xsl:output method="xml" encoding="UTF-8" indent="yes" />   <xsl:template match="fmp:FMPDSORESULT">     ...   </xsl:template> </xsl:stylesheet> La commande xsl:template va dire au parser d’appliquer un modèle de données (inexistant pour le moment) pour la balise FMPDSORESULT rencontré dans le document XML à transformer. On souhaite, par exemple, avoir un document XML ayant l’arborescence suivante : <CONTACTS> <CONTACT> <NOM>nom du contact</NOM> <PRENOM>prénom du contact</PRENOM> </CONTACT> ... </CONTACTS> Nous aurons alors le modèle de données suivant : <?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   xmlns:fmp="http://www.filemaker.com/fmpdsoresult"   version="1.0">   <xsl:output method="xml" encoding="UTF-8" indent="yes" />   <xsl:template match="fmp:FMPDSORESULT"> <CONTACTS> <CONTACT> <NOM></NOM> <PRENOM></PRENOM> </CONTACT> </CONTACTS> </xsl:template> </xsl:stylesheet> Mais comment insérer la valeur de la rubrique nom dans la balise NOM ? Mais avec la fonction xsl:value-of ! Mais avant cela, il faut connaître le chemin pour atteindre la balise nom dans le document à transformer. Regardons-le d’un peu plus près : <?xml version="1.0" encoding="UTF-8" ?><!-- Cette grammaire n'est plus utilisée et a été remplacée par FMPXMLRESULT. --> <FMPDSORESULT xmlns="http://www.filemaker.com/fmpdsoresult"> <ERRORCODE>0</ERRORCODE> <DATABASE>base.fp7</DATABASE> <LAYOUT /> <ROW MODID="1" RECORDID="1"> <genre>M.</genre> <nom>Henri</nom> <prenom>Martin</prenom> <adresse>23 boulevard de l’écluse</adresse> <code_postal>38120</code_postal> <ville>Saint-Chéron</ville> </ROW> ... Le chemin est le suivant : FMPDSORESULT > ROW > nom Mais comme nous avons demandé au parser d’appliquer un modèle de données pour la balise FMPDSORESULT, alors le chemin se limite à ROW > nom. Nous obtenons donc le code suivant : <xsl:stylesheet   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   xmlns:fmp="http://www.filemaker.com/fmpdsoresult"   version="1.0"> <xsl:output method="xml" encoding="UTF-8" indent="yes" /> <xsl:template match="fmp:FMPDSORESULT"> <CONTACTS> <CONTACT> <NOM> <xsl:value-of select="fmp:ROW/fmp:nom" /> </NOM> <PRENOM> <xsl:value-of select="fmp:ROW/fmp:prenom" /> </PRENOM> </CONTACT> </CONTACTS> </xsl:template> </xsl:stylesheet> C’est bien, mais le fichier résultat ne génère qu’un document XML avec uniquement les données du premier enregistrement. C’est normal, nous n’avons pas indiqué au parser qu’il doit répéter autant de fois qu’il y a de balises ROW le bloc CONTACT. Pour cela, nous allons utiliser la commande xsl:for-each, et nous obtenons le code suivant : <xsl:stylesheet   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   xmlns:fmp="http://www.filemaker.com/fmpdsoresult"   version="1.0"> <xsl:output method="xml" encoding="UTF-8" indent="yes" /> <xsl:template match="fmp:FMPDSORESULT"> <CONTACTS> <xsl:for-each select="fmp:ROW"> <CONTACT> <NOM> <xsl:value-of select="fmp:nom" /> </NOM> <PRENOM> <xsl:value-of select="fmp:prenom" /> </PRENOM> </CONTACT> </xsl:for-each> </CONTACTS> </xsl:template> </xsl:stylesheet> Et voilà votre première feuille de style de transformation XSL-T. Pour ceux qui ne savent plus comment la mettre en œuvre, je vous invite à revoir le chapite 4 et plus précisément la dernière procédure… Vous trouverez en annexe la feuille XSL-T finale, avec le fichier CONTACTS.XML résultat de la transformation du fichier FMPDSORESULT.XML.   C’est tout pour aujourd’hui ! Voilà la petite série sur XML et XSL-T terminée. J’espère que vous n’aurez plus peur devant ces termes… En attendant je vous souhaite une excellente semaine à toutes et à tous.

David Julot

David Julot

 

Une histoire X - 4e partie : L'exportation XML

Lors de mes trois précédentes chroniques, vous avez eu droit à des cours très théoriques sur les technologies XML, XSL-T et un peu sur XPATH. Nous allons, « Enfin ! » diront certains, voir nos premières exportations de bases de données FileMaker Pro en XML. Pour celles et ceux qui arrivent en cours de route dans ce voyage initiatique, je vous invite tout d’abord à voir ou revoir les chroniques suivantes : Chapitre I : « une histoire X – 1ère partie », qui est une introduction à la technologie XML. Chapitre II : « une histoire X – 2e partie », qui est une documentation du fichier de description d’étiquettes de FileMaker Pro. Cela permet de voir et de mieux comprendre l’articulation d’un document XML. Chapitre III : « une histoire X – 3e partie », qui est une introduction au principe de transformation XML via XSL-T. Enfin, et c’est important de le noter, que ces chroniques sont valables pour les versions 6 à 9 de FileMaker Pro. Nous allons mettre en application ce qui aura été vu dans les chapitres précédents. Mais avant tout, voyons l’exportation d’une base de données FileMaker au format XML.   L’exportation XML d’une base FileMaker Nous utiliserons le fichier base.fp7, que vous trouverez joint à cette chronique. Ce fichier n’est utilisable qu’à partir de la version 7 de FileMaker Pro.   Le format FMPDSORESULT Le format FMPDSORESULT plus communément appelé DSO pour Data Source Object est la première des deux grammaires proposées lors de l’exportation XML par FileMaker Pro. La grammaire DSO a la particularité de nommer les balises avec le nom des colonnes de la table exportée. Elle comporte peu d’information sur la structure de la table exportée, elle est très appréciée des personnes qui débutent dans l’apprentissage XML. La grammaire FMPDSORESULT propose un fichier XML résultat dont les données sont présentées à plat, c’est-à-dire que les données sont présentées comme dans un tableau.   Procédure d’exportation avec la grammaire FMPDSORESULT L’exportation des données d’une table en XML avec la grammaire FMPDSORESULT suit la même procédure qu’une exportation classique. En effet, il faut au préalable choisir les enregistrements qui seront exportés, soit l’ensemble des enregistrements de la table soit les enregistrements actifs, suite à une recherche par exemple. Pour exporter les enregistrements d’une table au format FMPDSORESULT il faut suivre la procédure suivante : Sous FileMaker Pro 6 : Choisir le menu Fichier > Exporter des fiches… ; Dans le menu local Type, choisir l’option XML ; Saisir un nom pour le fichier d’exportation puis cliquer sur le bouton Enregistrer ; Dans le menu local Grammaire, choisir l’option FMPDSORESULT, puis cliquer sur le bouton OK ; Dans la boîte de dialogue Ordre d’exportation des rubriques, choisir les colonnes à exporter puis cliquer sur le bouton Exporter. Sous FileMaker Pro 7, 8, 8.5 et 9 : Choisir le menu Fichier > Exporter des enregistrements… ; Dans le menu local Type, choisir l’option XML ; Saisir un nom pour le fichier d’exportation puis cliquer sur le bouton Enregistrer ; Dans le menu local Grammaire, choisir l’option FMPDSORESULT, puis cliquer sur le bouton OK ; Dans la boîte de dialogue Ordre d’exportation des rubriques, choisir la table contenant les colonnes à exporter puis cliquer sur le bouton Exporter. Résultat d’une exportation avec la grammaire FMPDSORESULT En exportant les données de la base exemple avec la grammaire FMPDSORESULT, nous obtenons le fichier XML suivant : <?xml version="1.0" encoding="UTF-8" ?> <!-- Cette grammaire n'est plus utilisée et a été remplacée par FMPXMLRESULT. --> <FMPDSORESULT xmlns="http://www.filemaker.com/fmpdsoresult">   <ERRORCODE>0</ERRORCODE>   <DATABASE>base.fp7</DATABASE>   <LAYOUT />   <ROW MODID="1" RECORDID="1">     <genre>M.</genre>     <nom>Henri</nom>     <prenom>Martin</prenom>     <adresse>23 boulevard de l’écluse</adresse>     <code_postal>38120</code_postal>     <ville>Saint-Chéron</ville>   </ROW>   <ROW MODID="1" RECORDID="2">     <genre>Mme</genre>     <nom>Durant</nom>     <prenom>Catherine</prenom>     <adresse>2 place de la mairie</adresse>     <code_postal>04280</code_postal>     <ville>Barzon</ville>   </ROW>   <ROW MODID="0" RECORDID="3">     <genre>M.</genre>     <nom>Julot</nom>     <prenom>David</prenom>     <adresse>28 allée des vignes</adresse>     <code_postal>28000</code_postal>     <ville>Chartres</ville>   </ROW> </FMPDSORESULT> Depuis la version 7 FileMaker Pro inclus une ligne de commentaire supplémentaire  indiquant que cette grammaire va disparaître de FileMaker Pro, et qu’il n’est plus conseillé de l’utilisée. Le fichier XML de la grammaire FMPDSORESULT comporte une balise racine FMPDSORESULT composée elle-même d’autant de balise ROW que d’enregistrements exportés. REMARQUE : les caractères accentués ont été codés suivant la norme UNICODE UTF-8.   Fichier XML vierge de la grammaire FMPDSORESULT Pour bien montrer la structure d’un fichier résultant d’une exportation XML avec la grammaire FMPDSORESULT, voici un fichier XML vierge : <?XML version="1.0" encoding="UTF-8" ?> <FMPDSORESULT xmlns="http:www.filemaker.com/fmpdsoresult">   <ERRORCODE></ERRORCODE>   <DATABASE></DATABASE>   <LAYOUT></LAYOUT>   <ROW MODID="" RECORDID="">   …   </ROW> </FMPDSORESULT> Présentation des balises de la grammaire FMPDSORESULT Ci-après les balises qui composent les fichiers XML de la grammaire FMPDSORESULT, générées par FileMaker Pro. Pour une meilleure compréhension, se référer au fichier XML vierge précédent. La balise FMPDSORESULT Cette balise est la racine du fichier XML généré par l’exportation au format DSO. Elle comprend l’attribut normalisé XML xmlns spécifiant l’espace de nom des balises qui la composent. Cette balise est composée d’au moins : ERRORCODE, DATABASE, LAYOUT et ROW. La balise ERRORCODE Cette balise signale ou non toute erreur qui se serait produite lors de l’exportation XML au format DSO. S’il n’ y a aucune erreur, la valeur de la balise est à 0. Dans le cas contraire, le numéro de l’erreur est indiqué. Pour connaître la signification du code erreur, se référer à l’aide en ligne de FileMaker Pro (rechercher la fonction ETAT(Erreur) ou la fonction Obtenir(DernièreErreur)). Connaître le code erreur permet, dans le cas d’une utilisation d’une feuille de style XSLT, de ne pas effectuer de traitement de transformation. La balise DATABASE Cette balise indique le nom de la table d’où sont extraits les enregistrements. Connaître le nom de la table permet dans le cas d’une utilisation d’une feuille XSLT, d’effectuer des traitements de transformation conditionnés à une table. La balise LAYOUT Cette balise contient le nom du modèle à partir duquel l’exportation XML au format DSO a été effectuée et si l’option Formater selon le modèle actif de la boîte de dialogue Ordre d’exportation des rubriques a été sélectionnée. Dans le cas où l’option Ne pas formater à l’arrivée aurait été sélectionnée, la balise est vide. Pour rappel, l’option Formater selon le modèle actif de la boîte de dialogue Ordre d’exportation des rubriques permet de conserver les formats de date, d’heure et de nombre. La balise ROW La balise la plus importante puisque qu’elle correspond à un enregistrement exporté. Elle comporte deux attributs : L’attribut MODID comporte le nombre total de modification de l’enregistrement depuis sa création. Si la valeur de l’attribut est à 0 celui-ci signifie que l’enregistrement a été créé et qu’aucune modification n’a encore eu lieu. L’attribut RECORDID comporte quant à lui uniquement le numéro de l’enregistrement dans la table. La balise ROW comporte autant de balises que de colonnes (rubriques) exportées, en sachant que le nom des balises correspond au nom des colonnes (rubriques). En sachant que le nom est modifié s’il contient un point ou un espace ; le point et l’espace sont remplacés par un underscore (_).   Utilisation du fichier d’exportation au format FMPDSORESULT Le fichier XML exporté tel quel ne peut être utilisé que par une application intégrant un parser. En effet, le format XML de la grammaire FMPDSORESULT n’est que le reflet de la base de données FileMaker Pro, les balises portant le même nom que les colonnes. Il faut donc pour l’application qui va importer les données du fichier XML utiliser une feuille de style XSLT qui va lui permettre de transformer le fichier XML de la grammaire DSO en un fichier XML de sa propre grammaire. Cela demande donc à la personne qui va recevoir votre fichier XML de créer la feuille de style adéquate. Utilisation d’une feuille de style XSLT Exportation de données avec transformation de la grammaire FMPDSORESULT en une autre grammaire. Ceci est possible grâce au parser intégré à FileMaker Pro. Principe de fonctionnement Le fonctionnement de l’exportation XML au format FMPDSORESULT avec utilisation d’une feuille de style XSLT peut être schématisé comme suit : Les données sont exportées dans un fichier virtuel au format XML avec la grammaire FMPDSORESULT. Ce fichier virtuel est transmis au parser. Le parser transforme le fichier XML qui lui a été transmis à l’aide de la feuille de style XSLT externe. Une fois la transformation correctement réalisée, le parser créé sur le disque un fichier XML correspondant à une nouvelle DTD. ATTENTION !  Si la feuille de style XSLT fait référence à un fichier DTD externe, le parser vérifiera sa présence. Par contre, comme le parser intégré est non validant, il ne vérifiera pas la validité du fichier XML créé avec le fichier DTD.   Procédure d’exportation avec feuille de style XSLT La procédure pour exporter les données de la table au format XML de la grammaire FMPDSORESULT avec utilisation d’une feuille de style XSLT est la suivante : Choisir le menu Fichier > Exporter des fiches… ; Dans le menu local Type, choisir l’option XML ; Saisir un nom pour le fichier d’exportation puis cliquer sur le bouton Enregistrer ; Dans la boîte de dialogue Définir les options XML et XSL : Dans le menu local Grammaire, choisir l’option FMPDSORESULT, Cocher l’option Utiliser la feuille de style XSL, Sélectionner l’option Fichier puis sélectionner la feuille de style du disque, Cliquer sur le bouton OK ; Dans la boîte de dialogue Ordre d’exportation des rubriques, choisir les colonnes à exporter puis cliquer sur le bouton Exporter.   Et là, vous allez me haïr ! Vous aurez la suite la semaine prochaine… avec la première feuille de style XSL-T… En attendant, vous pouvez voir l’exportation XML au format FMPXMLRESULT et vous l’approprier, car cette grammaire est la seule disponible pour les importations XML dans FileMaker Pro, que nous verrons aussi. Je vous souhaite à toutes et à tous une excellente semaine.

David Julot

David Julot

 

Une histoire X - 3e partie

Lors de mes deux précédentes chroniques vous avez eu droit à un petit cours théorique sur XML et une description du fichier de description de formats d’étiquettes de FileMaker, pour illustrer la personnalisation des applications. Cette semaine, encore un petit cours théorique, cette fois-ci concernant un principe fondamental de XML : la transformation. La puissance de XML réside dans le fait qu’il est possible de transformer une arborescence XML a en une arborescence XML b. Ceci s’effectue par l’intermédiaire d’un « parser » et d’une feuille de style de transformation. Il existe deux catégories de transformation : La transformation, via XSL-T, pour eXtensible Stylesheet Language Transformation ; Le formatage, via XSL-FO, pour eXtensible Stylesheet Language Formating Objects. FileMaker Pro intègre le parseur Xalan, réalisé par le groupe Apache (www.apache.org).  C’est un parseur de type XSL-T. On ne décrira donc pas la transformation XLS-FO.   Principe d’une transformation Imaginer qu’une transformation via une feuille de style XSL-T reviendrait à changer un sapin en fougère. Le parser transforme une arborescence en une autre et c’est la feuille de style XSL-T qui lui donne les directives.   Ossature minimale d’un fichier XSL-T Une feuille de style de transformation XSL-T est toujours contenue dans un fichier. La feuille de style est évidemment au format XML. Voici donc le fichier contenant l’ossature minimale d’une feuille de style : <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSLT/Transform"> … </xsl:stylesheet>   Principe de modèle Le principe de base d’une transformation est le modèle. Pour simplifier, on peut dire qu’à une balise donnée peut correspondre un modèle de correspondance. <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSLT/Transform">     <xsl:template match="Livre">Un livre</xsl:template> </xsl:stylesheet> Dans cet exemple, à chaque balise Livre du document XML à transformer correspondra au texte Un livre dans le document XML final. C’est l’utilisation de l’instruction xsl:template qui permet de créer un modèle. L’attribut match permet de spécifier à quelle balise le modèle doit s’appliquer.   Création d’un modèle On peut, au sein d’une feuille de style, créer des modèles qui seront appelés à tout moment au moment de la transformation. La création d’un modèle utilise l’instruction xsl:template. L’attribut name permet de nommer le modèle pour être appelé par l’instruction xsl:call-template. <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSLT/Transform"> <xsl:template match="Livre"> <xsl:call-template name="Ouvrage" /> </xsl:template> <xsl:template name="Ouvrage"> <Ouvrage> <xsl:value-of select="Livre" /> </Ouvrage> </xsl:template> </xsl:stylesheet>   Récupération d’une valeur d’une balise Si l’on souhaite transformer les balises Livre en balise Ouvrage, il suffit d’utiliser la feuille de style suivante : <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSLT/Transform"> <xsl:template match="Livre"> <Ouvrage> <xsl:value-of select="Livre" /> </Ouvrage> </xsl:template> </xsl:stylesheet> Dans cet exemple, à chaque balise Livre du document XML à transformer correspondra une balise Ouvrage avec la valeur contenue de la balise initiale. C’est l’instruction xsl:value-of qui permet de récupérer une valeur de la balise en cours de traitement. L’attribut select permet de spécifier à quelle balise on souhaite récupérer la valeur.   Instruction de boucle Il est possible dans une feuille de style XSL-T d’utiliser une instruction de boucle, tout comme en programmation. L’instruction de boucle est xsl:for-each, son attribut select permet de spécifier la balise à traiter. <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSLT/Transform"> <xsl:for-each select="Livre"> <Ouvrage> <xsl:value-of select="Livre" /> </Ouvrage> </xsl:for-each> </xsl:stylesheet> Dans cet exemple, à chaque fois que la balise Livre est rencontrée, alors une balise Ouvrage avec la valeur de la balise initiale est créée.   Instruction conditionnelle Comme dans tout langage de programmation, il existe une instruction conditionnelle : xsl:if, dont l’attribut test contient la condition à tester. <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSLT/Transform"> <xsl:if test="Livre!=’Livre 1’"> <Ouvrage> <xsl:value-of select="Livre" /> </Ouvrage> </xsl:if> </xsl:stylesheet> Dans cet exemple, si la balise Livre n’est pas égale à la valeur Livre 1 alors la balise Ouvrage est générée.   Instruction de choix L’instruction de condition xsl:if n’intègre pas de traitement au cas où la condition serait fausse, équivalent à une instruction THEN ou ALORS en programmation. On peut faire appel à l’instruction xsl:choose qui se construit comme suit : <xsl:choose> <xsl:when test="condition"> … traitement si le test est vrai … </xsl:when> <xsl:otherwise> … traitement par défaut … </xsl:otherwise> </xsl:choose> Cette instruction remplace avantageusement l’instruction xsl:if. Il faut savoir que le bloc constitué par l’instruction xsl:when peut être répété autant de fois que nécessaire.   Opérateurs de condition Pour les besoins des tests des instructions xsl:if et xsl:when, on a à disposition des opérations d’inégalités pour les conditions. Ils font partie du langage XPATH. = : égal à != : différent de < : inférieur à <= : inférieur ou égal à > : supérieur à >= : supérieur ou égal à
Sortie de texte Dès que la transformation doit générer un texte, il faut utiliser l’instruction xsl:text. <xsl:text>Ceci est un exemple de texte</xsl:text> Dans cet exemple, le texte Ceci est un exemple de texte est généré dans le document XML de sortie à l’emplacement même de l’instruction.   Instruction de formatage de sortie Il est important de spécifier le format de sortie que doit générer le parser. Pour cela on utilise l’instruction xsl:output. Cette instruction doit se placer immédiatement après l’instruction xsl:stylesheet. <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSLT/Transform"> <xsl:output method="xml" encoding="UTF-8" indent="yes" /> </xsl:stylesheet> Dans cet exemple, le parser devra générer un document de type XML, encodé avec le jeu UNICODE UTF-8, et les balises seront indentées, pour une meilleure lisibilité. Voici la liste des attributs et de leurs valeurs possibles pour l’instruction xsl:output : method xml : génère un document XML html : génère un document HTML text : génère un document TEXTE version textuelle : n'a aucun effet sur le document de sortie encoding ISO-8859-1 : jeux de caractère Latin-1 (windows) UTF-8 : codage UNICODE par défaut UTF-16 : codage UNICODE sur deux octets (ex.:japonais) omit-xml-declaration yes : une déclaration XML sera incluse no : aucune déclaration XML ne sera incluse standalone yes : pas de document DTD externe associé no : document DTD externe associé indent yes : le document sera indenté no : le document ne sera pas indenté Cette liste n’est pas exhaustive.   C’est tout pour aujourd’hui Après ce petit cours théorique, nous verrons la semaine prochaine notre première transformation à partir d’une base FileMaker Pro, la mise en pratique quoi ! En attendant, je vous souhaite une excellente semaine à toutes et à tous.

David Julot

David Julot

×