Dilib, module Sgml, commande SgmlSelect
Module Sgml |
La commande SgmlSelect de la bibliothèque Dilib est une commande polyvalente de sélection et d'extraction de documents en balisage Sgml/Xml.
Voir Dilib, module SxPath, commande SxmlSelect.
Sommaire
Exemple élémentaire
Soit la notice (contenue dans le fichier myNotice
et non indentée) :
<doc>
<tit>a</tit>
<kw>
<e>m1</e>
<e>m2</e>
</kw>
</doc>
La commande :
SgmlSelect -s doc/kw/e -p @s1 < myNotice
Produit (sur stdout) :
<e>m1</e>
<e>m2</e>
Le même résultat est obtenu avec :
SgmlSelect -s doc/kw/e -p @s1 <<...
<doc><tit>a</tit><kw><e>m1</e><e>m2</e></kw></doc>
...
Sélecteurs
La commande SgmlSelect utilise des sélecteurs qui explorent l'arbre SGML des documents du flot d'entrée. Le résultat de chaque sélection est mémorisé dans une variable interne.
Sélecteur -g (grep)
Le premier élément sélectionné est rangé dans une variable nommée @gi. Ce sélecteur fonctionne de façon proche de grep. Plus précisément, si cette sélection n'est pas satisfaite, la commande passe à l'enregistrement suivant.
Sélecteur -s (select)
Chaque élément sélectionné est rangé dans une variable nommée @si , où i est le rang de la sélection. Chaque sélection provoque l'impression d'un nouvel enregistrement.
Directives d'impression
Directive -p (print)
Cette commande provoque l'impression d'un champ (physique[1]) dans le flot de sortie.
La directive p est pilotée par un format de sortie où le caractère @ sert d'échappement pour désigner une variable interne. Trois types de variables sont disponibles :
- @i provoque l'impression du contenu d'un champ du flot d'entrée (rappel les champs sont séparés par des tabulations et numérotés à partir de 1)
- @gi provoque l'impression de l'élément sélectionné par le sélecteur -g de rang correspondant.
- @si provoque l'impression de l'élément sélectionné par le sélecteur -s de rang correspondant.
Exemple plus complet
Exemple, soit la notice :
<medline> <AN>96081277</AN> <TI>Orthotopic pulmonary valve replacement with a homograft.</TI> <AU> <e>Saha K</e> <e>Iyer KS</e> <e role="translator">Sharma R</e> <e>Bhan A</e> <e>Airan B</e> <e>Venugopal P</e> </AU> ... </medline> |
La commande
SgmlSelect -s medline/AU/e# -p @s1 |
imprimera sur stdout :
Saha K |
Iyer KS |
Sharma R |
Bhan A |
Airan B |
Venugopal P |
et :
SgmlSelect -s medline/AU/e# -p "auteur : @s1." |
imprimera à son tour :
auteur : Saha K. |
auteur : Iyer KS. |
auteur : Sharma R. |
auteur : Bhan A. |
auteur : Airan B. |
auteur : Venugopal P. |
Notes
- ↑ Le résultat de chaque directive -p est séparé de la suivante par une tabulation