Exploration d'un document de métadonnées en langage C : Différence entre versions
De Wicri Manuel
imported>Jacques Ducloy (→Exemples avec des serveurs d'exploration PubMed) |
imported>Jacques Ducloy (→Fonction SxmlLeafText) |
||
(12 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 2 : | Ligne 2 : | ||
|module=Exploration d'un document de métadonnées en langage C | |module=Exploration d'un document de métadonnées en langage C | ||
|précédent=Exploration d'un document XML en langage C | |précédent=Exploration d'un document XML en langage C | ||
− | |suivant= | + | |suivant=Construction de documents XML en langage C |
}} | }} | ||
==Exemples avec des serveurs d'exploration PubMed== | ==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. | 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 : | Voici un exemple de document : | ||
Ligne 18 : | Ligne 20 : | ||
}} | }} | ||
− | Une des première rubriques donne un identifiant nommé RBID ( | + | Une des première rubriques donne un identifiant nommé RBID (Référence Bibliographique IDentifieur), ici : |
:<big>'''RBID :'''</big> pubmed:22994451 | :<big>'''RBID :'''</big> pubmed:22994451 | ||
+ | |||
+ | ===Sur une machine de TP=== | ||
Pour récupérer ce document, on peut faire : | Pour récupérer ce document, on peut faire : | ||
Ligne 36 : | Ligne 40 : | ||
===Fonction SxmlGetFirstChildByTagName=== | ===Fonction SxmlGetFirstChildByTagName=== | ||
+ | ;Synopsis: | ||
+ | <source lang="c"> | ||
+ | #include "SxmlNode.h" | ||
+ | SxmlNode *SxmlGetFirstChildByTagName(SxmlNode *node, char *tag); | ||
+ | </source> | ||
+ | |||
+ | Exemple, pour extraire les métadonnées pubmed d'un flot de données ScienceExplor. | ||
+ | |||
+ | <source lang="c"> | ||
+ | #include "SxmlNode.h" | ||
+ | main() | ||
+ | { | ||
+ | SxmlNode *docu ,*pubmed; | ||
+ | while(docu=SxmlInputGetDocumentElement()) | ||
+ | { | ||
+ | if (pubmed=SxmlGetFirstChildByTagName(docu, "pubmed")) | ||
+ | {SxmlPrint(pubmed);putchar('\n'); | ||
+ | }; | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | ===Fonction SxmlGetFirstDescendantByTagName=== | ||
+ | Cette fonction permet d'atteindre le premier descendant d'un nœud dont le nom est identique au paramètre. | ||
+ | ;Synopsis: | ||
+ | <source lang="c"> | ||
+ | #include "SxmlNode.h" | ||
+ | SxmlNode *SxmlGetFirstDescendantByTagName(SxmlNode *node, char *tag); | ||
+ | </source> | ||
+ | |||
+ | Exemple, pour extraire les résumés d'un flot de documents. | ||
+ | |||
+ | <source lang="c"> | ||
+ | #include "SxmlNode.h" | ||
+ | main() | ||
+ | { | ||
+ | SxmlNode *docu ,*abstract; | ||
+ | while(docu=SxmlInputGetDocumentElement()) | ||
+ | { | ||
+ | if (abstract=SxmlGetFirstDescendantByTagName(docu, "Abstract")) | ||
+ | {SxmlPrint(abstract);putchar('\n'); | ||
+ | }; | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | ==Accès aux données textuelles== | ||
+ | ===Fonction SxmlLeafText=== | ||
+ | Cette fonction renvoie le texte d'un élément ayant un fils (et un seul) réduit à une chaîne. | ||
+ | |||
+ | ;Synopsis: | ||
+ | <source lang="c"> | ||
+ | #include "SxmlNode.h" | ||
+ | char *SxmlLeafText(SxmlNode *element); | ||
+ | </source> | ||
+ | |||
+ | |||
+ | ;Exemple : | ||
+ | <source lang="c"> | ||
+ | ... | ||
+ | SxmlNode *maFeuille; | ||
+ | ... | ||
+ | maFeuille=SxmlFromString("<titre>Tintin en Amérique</titre>"); | ||
+ | printf ("%s\n", SxmlLeafText(maFeuille)); /* imprime Tintin en Amérique */ | ||
+ | </source> |
Version actuelle datée du 25 juin 2020 à 08:13
Exploration d'un document de métadonnées en langage C < = Exploration d'un document XML en langage C Construction de documents XML en langage C => |
Sommaire
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
Cette fonction renvoie le texte d'un élément ayant un fils (et un seul) réduit à une chaîne.
- Synopsis
#include "SxmlNode.h"
char *SxmlLeafText(SxmlNode *element);
- Exemple
...
SxmlNode *maFeuille;
...
maFeuille=SxmlFromString("<titre>Tintin en Amérique</titre>");
printf ("%s\n", SxmlLeafText(maFeuille)); /* imprime Tintin en Amérique */