Dilib, module Sgml, commande SgmlSelect

De Wicri Outils
Révision datée du 16 juin 2017 à 19:49 par imported>Jacques Ducloy (1 révision importée)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
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