Dilib, module Sgml, commande SgmlSelect

De Wicri Outils
LogoDilib.gif
Panneau travaux.png
Bibliothèque Dilib (ressources numériques)
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.

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

  1. Le résultat de chaque directive -p est séparé de la suivante par une tabulation