Discussion:Dilib, module Sgml, commande SgmlSelect

De Wicri Outils

Pour Ali

HfdCat $DILIB_IMPORT/Samples/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                                                 \
 | DateCurationClass -f 1985 -s 5                                                        \
 | more

Commande DateCurationClass

  • 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();

}

ou

 while ((cod_arg = getopt(argc,argv,"f:t:s:m:"))!=EOF)
    {
      switch(cod_arg) 
	{
	case 'f':
	  nFrom=atoi(optarg);
	  break;
	case 't':
	  nTo=atoi(optarg);
	  break;
	case 's':
	  nStep=atoi(optarg);
	  break;
	case 'm':
	  nMax=atoi(optarg);
	  nTo=0;
	  break;
	}
    }
  • 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

Edition graphique char bar

On dispose en entrée d'un document XML

<listClass>
  <class>
     <name>1990</name>
     <value>50</value>
     <link>http://coucou</link>
     <color>blue</blue>
  </class>
  <class>
     <name>1995</name>
     <value>75</value>
  </class>
</listClass>

fonction :

SxmlNode *BarChart (SxmlNode *listClass, float l, float h, char *implicitColor);

Programme principal :

  • lire un fichier ( année -> nombre )
  • ecrit une page :
<html>
  début bidon
  <svg>...</svg>
  fin bidon
</html>