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 SDE_ 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 MIT.
- 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 SDE_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 SDE_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 SDE_XmlWriter
est alors passé en argument au constructeur de la classe SDE_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 SDE_XmlWriter Pour que le code XML s'affiche dans la sortie standard, on écrirait $xmlWriter = new SDE_XmlWriter(NULL); */ $xmlWriter = new SDE_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 SDE_ScrutariDataExport qui suit l'API de ScrutariDataExport */ $scrutariDataExport = new SDE_ScrutariDataExport($xmlWriter); /* Début de l'export, $baseMetadataExport est une instance de SDE_BaseMetadataExport */ $baseMetadataExport = $scrutariDataExport->startExport(); /* Définition des métadonnées de la base SDE_INTITULE_SHORT correspond à la constante INTITULE_SHORT de l'API */ $baseMetadataExport->setAuthority("e17a05b0-c45e-11d8-9669-0800200c9a66"); $baseMetadataExport->setBaseName("test"); $baseMetadataExport->setBaseIcon("http://monsite.net/icon-16x16pixels.png"); $baseMetadataExport->setIntitule(SDE_INTITULE_SHORT, "fr", "Test"); $baseMetadataExport->setIntitule(SDE_INTITULE_SHORT, "en", "Test"); $baseMetadataExport->setIntitule(SDE_INTITULE_LONG, "fr", "Test du format scrutariData"); $baseMetadataExport->setIntitule(SDE_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 SDE_CorpusMetadataExport */ $corpusMetadataExport = $scrutariDataExport->newCorpus("fiches"); /* Définition des métadonnées du corpus */ $corpusMetadataExport->setIntitule(SDE_INTITULE_CORPUS, "fr","Fiches d'expérience"); $corpusMetadataExport->setIntitule(SDE_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 SDE_FicheExport */ $ficheExport = $scrutariDataExport->newFiche("1"); $ficheExport->setTitre("Première fiche"); $ficheExport->setDate("2006-03"); $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 SDE_ThesaurusMetadataExport */ $thesaurusMetadataExport = $scrutariDataExport->newThesaurus("motscles"); /* Définition des métadonnées du thésaurus */ $thesaurusMetadataExport->setIntitule(SDE_INTITULE_THESAURUS,"fr","Mots-clés"); $thesaurusMetadataExport->setIntitule(SDE_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);