Bonjour,
Je suis quasi néophyte en PHP, ce qui n'est pas le cas en XML-TEI.
Je souhaite importer certaines données d'un fichier XML-TEI dans une BD mySQL (existante) en me servant de PHP.
Je sais que normalement avec phpmyadmin, on peut importer des données XML dans mySQL, mais là, je ne souhaite importer que certaines données qui sont d'une certaine manière liées entre elles.
La différence entre XML et XML-TEI est que le second est plus précis probablement parce qu'il est destiné principalement à des philologues ou à l'édition numérique. Donc on ajoute des attributs et des éléments supplémentaires. Ainsi au lieu d'avoir par exemple :
<book></book> pour le XML, on aura <div type="book" lang="en"> ici les éléments </div>
Dans mon cas précis, je souhaite importer type=book (valeur) + tous les éléments ou autre @type (attributs) et éléments liés à la valeur, qui sont situés par nécessairement à la suite dans le fichier XML-TEI, parce que hiérarchisés dans la page.
Comme point de départ, j'ai regardé un modèle existant :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?xml version="1.0" ?> <articles> <article> <nom>tutu</nom> <id>0</id> </article> <article> <nom>titi</nom> <id>1</id> </article> </articles>
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php $articles_xml = simplexml_load_file('test.xml'); foreach ($articles_xml ->article as $article) { print "Nom de l'article: {$article->nom} <br />\n"; print "Id de l'article: {$article->id} <hr />\n"; mysql_query("INSERT INTO articles SET nom='".($article->nom)."' AND id='".($article->id)."'") or die("Erreur MySQL : ".mysql_error()); } ?>
Mais les fichiers XML-TEI sont plus détaillés, comme dit précédemment ; ainsi on aura par exemple (en gras ce que je souhaite importer) :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <form type="extractedLexem"> <w type="headword" subtype="unvocalized">klʾat</w> <gramGrp> <gram type="pos">v.</gram> <gram type="sys">G.</gram> <gram type="tns">perf.</gram> </gramGrp> </form>
Evidemment, il y a les tables et colonnes qui existent déjà dans ma BD mySQL, avec les mêmes noms que ceux du fichier XML-TEI.
Attention, je n'ai pas de clé primaire INT comme dans mySQL.
En revanche, l'importation est possible en fonction de deux conditions :
1. la première condition est que la valeur @type extractedLexem ne soit pas vide
2. la seconde l'emplacement dans le corpus de texte : je prends exemple un mot toto dans un journal XY, page 14, colonne 2, ligne 5a (première partie de la ligne). Si je reprends on exemple précédent avec l'exemple du journal, mon extractedLexem toto devra être inséré dans la BD, dans la table tb_extractedLexem, colonne extractedLexem, et les références de l'emplacement dans deux autres tables qui rassemblent les références du journal. Malheureusement pour les emplacements, les attributs XML-TEI ne sont pas les mêmes que les noms des colonnes dans mySQL.
En vous remerciant par avance de vos éclairages,
McCallum
Partager