Discussion:Dilib, module Sgml, commande SgmlSelect

De Wicri Outils
Révision datée du 10 janvier 2014 à 12:36 par imported>Jacques Ducloy (Pour Ali)

Pour Ali

HfdCat RabelaisV1/Data/Main/Exploration/biblio.hfd    \
 | SgmlSelect -s record/TEI/teiHeader/fileDesc/titleStmt/author/affiliation/country#  \
              -g record/TEI/teiHeader/fileDesc/publicationStmt/date#                  \
              -p "@g1" -p "@s1" -p @1                                                 \
 | SgmlSelect -p "@2-@1" -p @3                                                        \
 | more

Commande TimeCurationClass

  • implicitement trouve la date dans la clé (avant \t).
    • ne garde que les années
  • options f t s (from to step) le nom de la classe est la date de début
HfdCat ... SgmlSelect | TimeCurationClass -f 1990 -t 2012 -s 2
  • pistes :
    • utiliser une boucle sur un Buffer pour lire le flot d'entrée.
    • pour les paramètres voir getopt :
#include <unistd.h> /* getopt */

extern char *optarg; /* for getopt() */

void usage()
{
  perror ("usage: AssocFastWithIndex -h hfdName [-i term1 -j term2]\n");
  exit(1);
}

int main(int argc, char **argv)
{

  int     cod_arg;

  while ((cod_arg = getopt(argc,argv,"h:i:j:nL"))!=EOF)
    {switch(cod_arg)
      {
      case 'h':
	if((hfd1=IndexOpenRead(optarg)))
	  {
	    hfd2=IndexOpenRead(optarg);
	    flagHfd=1;
	    break;
	  }
	else
	  {
	    perror("HFD not found\n");
	    usage();
	  }
	break;
      case 'n':
	flagInput=0;
	break;
      case 'i':
	motI=optarg;
	break;
      case 'j':
	if(!flagHfd) usage();
	motJ=optarg;
	buildAssoc(motI,motJ);
	break;
      default: usage();
	break;
      }
    }
  if(!flagHfd) usage();

}
  • option c ou C (classification rules)
    • -c ou -C pointe vers un fichier qui contient des règles
HfdCat ... SgmlSelect | TimeCurationClass -c myRules.dict

les règles sont exprimées dans des tableaux de 3 colonnes - le séparateur utilisé sera :

  • la tabulation avec -c
  • le ";" avec -C

Exemple :

0 ; 1989 ; avant 1990
1990 ; 1994 ; 1900 - 1994
...
2010 ; 3000 ; après 2010