Ceci est une ancienne révision du document !
Table des matières
Implémentation de l'API en PHP
L'implémentation de l'API se présente sous la forme d'une série de fichiers correspondant chacun à une classe PHP. Toutes les classes et les constantes commencent par le préfixe SED_ afin de minimiser le risque de conflits de noms avec d'autres classes PHP. Ces classes sont toutes présentes dans un même répertoire appelé ScrutariDataExportLib. Cette implémentation fonctionne avec PHP 5. Elle est sous licence GPL v2.
- Répertoire ScrutariDataExportLib compressé : http://dataexport.scrutari.net/impl/php/ScrutariDataExportLib.zip
Utilisation de l'implémentation
Pour utiliser cette implémentation, il suffit de décompresser l'archive et de faire appel au fichier class-ScrutariDataExport.php dans son code PHP, ce fichier se charge d'inclure tous les autres fichiers PHP de l'implémentation.
Tous les fichiers reprennent les noms de classe de l'API à l'exception du fichier class-XmlWriter.php
qui définit la classe SED_XmlWriter
. C'est une instance de cette classe qu'il faut créer tout d'abord pour indiquer la destination du code XML qui va être produit. La classe SED_XmlWriter
possède un constructeur qui prend comme unique argument un pointeur vers un fichier (construit avec la fonction PHP file()). Si la valeur nulle est transmise au constructeur, le code XML sera renvoyé vers la sortie standard (fonction echo).
L'instance de SED_XmlWriter
est alors passé en argument au constructeur de la classe SED_ScrutariDataExport
(fichier class-ScrutariDataExport.php). Ensuite, le comportement est celui indiqué dans l'API.
Exemple d'Utilisation
<?php /* Chargement de la bibliothèque ScrutariDataExportLib */ require_once("ScrutariDataExportLib/class-ScrutariDataExport.php"); /* Ouverture d'un fichier en écriture */ $file = fopen("test.scrutari-data.xml", "w"); /* Construction d'une instance SED_XmlWriter Pour que le code XML s'affiche dans la sortie standard, on écrirait $xmlWriter = new SED_XmlWriter(NULL); */ $xmlWriter = new SED_XmlWriter($file); /* On inclus préalablement la déclaration XML : <?xml version="1.0" encoding="UTF-8"?> (méthode hors API) */ $xmlWriter->appendDeclaration(); /* Construction d'une instance de SED_ScrutariDataExport qui suit l'API de ScrutariDataExport */ $scrutariDataExport = new SED_ScrutariDataExport($xmlWriter); /* Début de l'export, $baseMetadataExport est une instance de SED_BaseMetadataExport */ $baseMetadataExport = $scrutariDataExport->startExport(); /* Définition des métadonnées de la base SED_INTITULE_SHORT correspond à la constante INTITULE_SHORT de l'API */ $baseMetadataExport->setAuthorityUUID("e17a05b0-c45e-11d8-9669-0800200c9a66"); $baseMetadataExport->setBaseName("test"); $baseMetadataExport->setBaseIcon("http://monsite.net/icon-16x16pixels.png"); $baseMetadataExport->setIntitule(SED_INTITULE_SHORT, "fr", "Test"); $baseMetadataExport->setIntitule(SED_INTITULE_SHORT, "en", "Test"); $baseMetadataExport->setIntitule(SED_INTITULE_LONG, "fr", "Test du format scrutariData"); $baseMetadataExport->setIntitule(SED_INTITULE_LONG, "en", "ScrutariData Format Test"); $baseMetadataExport->addLangUI("fr"); $baseMetadataExport->addLangUI("en"); /* Insertion d'un corpus avec de nom « fiches » $corpusMetadataExport est une instance de SED_CorpusMetadataExport */ $corpusMetadataExport = $scrutariDataExport->newCorpus("fiches"); /* Définition des métadonnées du corpus */ $corpusMetadataExport->setCorpusType("EXP"); $corpusMetadataExport->setIntitule(SED_INTITULE_CORPUS, "fr","Fiches d'expérience"); $corpusMetadataExport->setIntitule(SED_INTITULE_FICHE, "fr", "Fiche d'expérience n° "); /* Définition de deux champs complémentaires */ $numero = $corpusMetadataExport->addComplement(); $corpusMetadataExport->setComplementIntitule($numero,"fr","Auteurs"); $corpusMetadataExport->setComplementIntitule($numero,"en","Authors"); $numero = $corpusMetadataExport->addComplement(); $corpusMetadataExport->setComplementIntitule($numero,"fr","Organismes"); /* Premier exemple d'une fiche $ficheExport est une instance de SED_FicheExport */ $ficheExport = $scrutariDataExport->newFiche("1"); $ficheExport->setTitre("Première fiche"); $ficheExport->setDate("2006-03"); $ficheExport->setFicheType("DOC"); $ficheExport->setFicheIcon("http://monsite.net/icon2-16x16pixels.png"); $ficheExport->addComplement(2,"Collectif"); /*Second exemple de fiche */ $ficheExport = $scrutariDataExport->newFiche("2"); $ficheExport->setTitre("Seconde fiche"); $ficheExport->setSoustitre("le sous titre"); $ficheExport->setDate("2006-03"); $ficheExport->setLang("fr"); $ficheExport->setHref("http://monsite.net/ma-fiche-1.html"); $ficheExport->addComplement(2,"L'ASSO"); $ficheExport->addComplement(1,"Martin Dupont"); /* Exemple d'indexation : celle-ci peut de se faire à n'importe quel moment même s'il ne s'agit du mot-clé ou de la fiche en cours ou que le thésaurus ou le corpus n'ont pas encore été définis. */ $scrutariDataExport->addIndexation("fiches", "1", "motscles", "A01",1); /* Insertion d'un thésaurus de nom « motscles » $thesaurusMetadataExport est une instance de SED_ThesaurusMetadataExport */ $thesaurusMetadataExport = $scrutariDataExport->newThesaurus("motscles"); /* Définition des métadonnées du thésaurus */ $thesaurusMetadataExport->setIntitule(SED_INTITULE_THESAURUS,"fr","Mots-clés"); $thesaurusMetadataExport->setIntitule(SED_INTITULE_THESAURUS,"en","Keywords"); /* Exemple d'insertion d'un mot-clé au sein du thésaurus en cours */ $motcleExport = $scrutariDataExport->newMotcle("1"); $motcleExport->setLibelle("fr","Eau"); /* Autre exemple d'insertion d'indexation n'importe où*/ $scrutariDataExport->addIndexation("fiches", "fiche2", "motscles", "A01",4); /* L'indexation précédente n'a pas changé l'état de l'export, on travaille toujours sur le premier mot-clé */ $motcleExport->setLibelle("en","Water"); /* Fin de l'export */ $scrutariDataExport->endExport(); /* Fermeture du fichier */ fclose($file);