Exploration d'un document de métadonnées en langage C : Différence entre versions

De Wicri Manuel
imported>Jacques Ducloy
(Le type Buffer)
imported>Jacques Ducloy
Ligne 53 : Ligne 53 :
 
{
 
{
 
   SxmlNode *docu ,*pubmed;
 
   SxmlNode *docu ,*pubmed;
   while(docu=SxmlInputNextDocumentElement())
+
   while(docu=SxmlInputGetDocumentElement())
 
     {
 
     {
 
       if (pubmed=SxmlGetFirstChildByTagName(docu, "pubmed"))
 
       if (pubmed=SxmlGetFirstChildByTagName(docu, "pubmed"))
Ligne 76 : Ligne 76 :
 
{
 
{
 
   SxmlNode *docu ,*abstract;
 
   SxmlNode *docu ,*abstract;
   while(docu=SxmlInputNextDocumentElement())
+
   while(docu=SxmlInputGetDocumentElement())
 
     {
 
     {
 
       if (abstract=SxmlGetFirstDescendantByTagName(docu, "Abstract"))
 
       if (abstract=SxmlGetFirstDescendantByTagName(docu, "Abstract"))

Version du 25 juin 2020 à 08:04

Exemples avec des serveurs d'exploration PubMed

Dans ce module nous traiterons des documents issus d'un serveur d'exploration PubMed dans lequel les documents utilisent 2 DTD : PubMed et TEI.

Sur les serveurs d'exploration

Voici un exemple de document :

Une des première rubriques donne un identifiant nommé RBID (Référence Bibliographique IDentifieur), ici :

RBID : pubmed:22994451

Sur une machine de TP

Pour récupérer ce document, on peut faire :

EXPLOR_AREA=$WICRI_ROOT/Sante/explor/GrippeBelgique.storage/GrippeBelgiqueV2

HfdIndexSelect -h $EXPLOR_AREA/Data/Main/Exploration/RBID.i  \
                -Sk "pubmed:22994451" \
         | HfdSelect -Kh $EXPLOR_AREA/Data/Main/Exploration/biblio.hfd \
         | SxmlIndent

Accès à un noeud par son nom de balise

Fonction SxmlGetFirstChildByTagName

Synopsis
#include "SxmlNode.h"
SxmlNode *SxmlGetFirstChildByTagName(SxmlNode *node, char *tag);

Exemple, pour extraire les métadonnées pubmed d'un flot de données ScienceExplor.

#include "SxmlNode.h"
main()
{
  SxmlNode *docu ,*pubmed;
  while(docu=SxmlInputGetDocumentElement())
    {
       if (pubmed=SxmlGetFirstChildByTagName(docu, "pubmed"))
                 {SxmlPrint(pubmed);putchar('\n');
    };
}

Fonction SxmlGetFirstDescendantByTagName

Cette fonction permet d'atteindre le premier descendant d'un nœud dont le nom est identique au paramètre.

Synopsis
#include "SxmlNode.h"
SxmlNode *SxmlGetFirstDescendantByTagName(SxmlNode *node, char *tag);

Exemple, pour extraire les résumés d'un flot de documents.

#include "SxmlNode.h"
main()
{
  SxmlNode *docu ,*abstract;
  while(docu=SxmlInputGetDocumentElement())
    {
       if (abstract=SxmlGetFirstDescendantByTagName(docu, "Abstract"))
                 {SxmlPrint(abstract);putchar('\n');
    };
}

Accès aux données textuelles

Fonction SxmlLeafText

Points particuliers à Dilib

Accès à la clé d'un document dans un flot de données