Projet de XML du master 2 ILI semestre 1 2019-2020 de l'université d'Artois à Lens

Loquicom 9e58ba721d MaJ programme de reference há 5 anos atrás
data df11503f7b :tada: há 5 anos atrás
ref 9e58ba721d MaJ programme de reference há 5 anos atrás
src 3514a975ef Correction erreur balise header xml há 5 anos atrás
.gitignore 83188c2a9a Ajout partie 3 há 5 anos atrás
README.md 9745fecacb Amelioration README.md há 5 anos atrás
SUBJECT1.md cb100edcfe Ajout sujet há 5 anos atrás
SUBJECT2.md 273dd9885b Amélioration visuel sujet 2 há 5 anos atrás
SUBJECT3.md cb100edcfe Ajout sujet há 5 anos atrás
coauth.js 94243f8af8 Traduction aide en anglais + passage version 1.5.0 há 5 anos atrás
convert.xsl 4a46052cad Amelioration convert.xsl há 5 anos atrás
deploy.js 92a88a17d5 Passage version 1.2.1 há 5 anos atrás
deploy.json edaacf29bd Passage extract version 1.2.0 há 5 anos atrás
extract.js edaacf29bd Passage extract version 1.2.0 há 5 anos atrás
main.js d7a63d5b6e Possibilité d'appeler les programmes sans argument há 5 anos atrás
package-lock.json 01a2dbe596 Maj Version saxophone há 5 anos atrás
package.json 01a2dbe596 Maj Version saxophone há 5 anos atrás

README.md

Projet XML : TP SAX

Arthur Brandao & Maxence Bacquet - M2 ILI

Programme pour interroger la base de données DBLP au format XML.

Documentation des commandes

La documentation suivante pars du principe qu'un terminal est ouvert dans le dossier du projet et que nodejs est installée.

Pour installer les dépendances il suffit d'utiliser la commande suivante dans le repertoire du projet :

npm i

De plus l'utilisation des commandes avec npm génère automatiquement des informations dans la sortie standard, comme ci-dessous :

> projet-dblp@2.0.1 start /home/arthur/TP/M2-S1/xml/projet-dblp
> node main.js

Pour éviter l'affichage de ces informations dans la console il est possible d'utiliser l'option silent juste après la commande npm (voir les exemples ci-dessous).

npm --silent start
npm --silent run test

Partie 0 - Paramétrage et Déploiement

Le projet est composé de plusieurs programmes avec la même base. Pour exécuter les scripts propres à chaque programme il faut utiliser la commande npm suivante :

npm start <program> [script]
# Par exemple
npm start extract
npm start coauth test

Ou directement avec Node Js :

node main.js <program> [script]
# Par exemple
node main.js extract
node main.js coauth test

Si aucun script n'est spécifié le programme est appelé directement sans argument.

Pour séparer chaque programme en un ensemble de fichier indépendant il faut lancer la commande :

npm run deploy

Un dossier sera créé avec le nom de chaque programme dans le dossier dist (si il n'existe pas il sera créé).

Chaque dossier comportera ses sources, son package.json et son README.md.

Le paramétrage des différents projets (les scripts, la version, les dépendances, ...) sont paramétrables depuis le fichier deploy.json

Partie 1 - Recherche des co-auteurs d'un auteur

L'objectif du programme est de trouver les co-auteurs d'un auteur donné. Le programme possède deux fonctions, la première permet de faire un pré-traitement de la base dans un fichier .ppf (Pre Processing File), le second permet d'effectuer la recherche depuis le fichier obtenu suite au pré-traitement.

Commande de pré-traitement de la base

Cette commande permet de générer un fichier .ppf (si aucune destination n'est indiquée le chemin vers le fichier seras le quivant : ./data/data.ppf)

La commande est :

node coauth.js prepare <source> [destination]
  • <source> : correspond au chemin vers la base de données au format xml
  • [destination] : Le chemin et le nom du fichier .ppf à créer suite au pré-traitement de la base de données (si l'extension n'est pas .pff elle seras automatiquement ajoutée), cet argument est optionel

Une commande npm est aussi disponible, elle est l'équivalent de la commande en dessous d'elle :

npm run preprocess
# <=>
node coauth.js prepare ./data/dblp.xml ./data/data.ppf

Commande de recherche des co-auteurs

La recherche des co-auteurs ne peut avoir lieu qu'après avoir executé une fois la commande de pré-traitement car elle nécéssite un fichier .ppf pour fonctionner

La commande de base est la suivante :

node coauth.js

Avec cette commande le programme considère que le fichier .ppf est dans ./data/data.ppf. Le nom de l'auteur dont il faut chercher les co-auteurs seras demandé par le programme dans la console.

La commande admet plusieurs options :

  • -n <string> ou --name <string> ou --name=<string> : Pour indiquer le nom de l'auteur pour la recherche
  • -f <source> ou --file <string> ou --file=<string> : Pour indiquer le chemin vers le fichier .ppf à utiliser
  • -v ou --verbose : Permet d'afficher plus d'informations dans la console
  • -h ou --help : Affiche l'aide
  • -V ou --version : Affiche la version du programme

Voici quelques exemples avec des options :

node coauth.js -n "Fabien Delorme"
node coauth.js --name="Anne-Cécile Caron" -f "./data/data.ppf"
node coauth.js --name "Francis Bossut" --file "./tmp/coauth.ppf" -v

Le retour du programme sans l'option verbose est similaire au retour du programme de reference fournit. Attention la recherche sur le nom est sensible à la casse.

Il existe aussi une commande npm pour executer le programme, elle est équivalente à la commande en dessous d'elle :

npm start
# <=>
node coauth.js -f "./data/data.ppf"

Commande d'éxecution du pré-traitement puis de la recherche

En ajoutant l'option -p <source> ou --process <source> il est possible d'effectuer le pré-traitement puis une recherche des co-auteurs. <source> correspond au chemin vers le fichier de base de données en XML. De plus l'option process est utilisable avec les autres options du programme, la seul différence est que l'option file sert en plus à indiquer le chemin pour créer le fichier de pré-traitement (fichier qui seras utilisé pour la recherche).

Voici quelques exemples expliqués de la commande avec l'option process :

# Lance le pré-traitement sur le fichier ./data/dblp.xml, génere le fichier ./data/data.ppf et le nom de l'auteur pour la recherche est demandé dans la console
node coauth.js --process ./data/dblp.xml

# Lance le pré-traitement sur le fichier ./data/dblp.xml, génere le fichier ./data/data.ppf et fait la recherche sur Fabien Delorme
node coauth.js -p ./data/dblp.xml -n "Fabien Delorme"

# Lance le pré-traitement sur le fichier ./data/dblp.xml, génere le fichier ./tmp/coauth.ppf et fait la recherche sur Fabien Delorme
node coauth.js -p ./data/dblp.xml -n "Fabien Delorme" -f ./tmp/coauth.ppf

Une commande avec npm est aussi disponible, elle est équivalente à la commande en dessous d'elle. Le nom de l'auteur pour la recherche est demandé dans la console lors de l'execution.

npm run process
# <=>
node coauth.js --process ./data/dblp.xml

Temps d'exécution

Les temps d'executions des commandes sur nos PC sont de :

Ubuntu (I7-8550U) Kubuntu (I5-7300HQ) Kde Neon (I7-8550U)
Référence (Total) ~ 4 minutes 20 ~ 2 minutes 30 ~ 2 minutes 30
Préparation ~ 3 minutes 20 ~ 2 minutes ~ 1 minute 45
Recherche 4 à 6 secondes 5 à 10 secondes 3 à 5 secondes

Partie 2 - Extraction de données d'un auteur

L'objectif du programme est de générer un document XML avec les infos extraites des articles et des inproceedings d'un auteur donné dans la base de données DBLP au format XML. Le document comporte aussi une section avec tous les co-auteurs de l'auteur donné dans les données extraites.

Commande d'extraction des données

La commande pour extraire les données de la base est la suivante (en dessous son équivalent avec npm) :

node extract.js
# <=>
npm start

Par défaut le programme va chercher le fichier XML de la base dans le dossier data avec le nom dblp.xml et créer un fichier extract.xml dans ce même dossier. Le nom de l'auteur sera demandé dans la console avant de lancer la recherche.

Le programme possède plusieurs options :

  • -n <string> ou --name <string> ou --name=<string> : Pour indiquer le nom de l'auteur pour la recherche
  • -f <source> ou --file <string> ou --file=<string> : Pour indiquer le chemin vers le fichier de la base (en XML)
  • -o <source> ou --output <string> ou --output=<string> : Pour indiquer le chemin pour la création du fichier contenant les données de l'extraction (en XML)
  • -v ou --verbose : Permet d'afficher plus d'informations dans la console
  • -h ou --help : Affiche l'aide
  • -V ou --version : Affiche la version du programme

Voici quelques exemples et leur explication de la commande avec ces options :

# Recherche les informations sur Fabien Delorme dans la base ./data/dblp.xml et extrait les informations dans ./data/extract.xml
node extract.js --name "Fabien Delorme"

# Recherche les informations sur Fabien Delorme dans la base ./data/dblp.xml et extrait les informations dans ./data/fabienDelorme.xml
node extract.js --name="Fabien Delorme" --output "./data/fabienDelorme.xml"

# Recherche les informations sur Fabien Delorme dans la base ./data/base.xml et extrait les informations dans ./data/extract.xml
node extract.js -n "Fabien Delorme" -o "./data/fabienDelorme.xml" -f "./data/base.xml"

# Recherche les informations sur Fabien Delorme dans la base ./data/base.xml et extrait les informations dans ./data/extract.xml et affiche des informations sur l'exécution
node extract.js -n "Fabien Delorme" -o "./data/fabienDelorme.xml" -f "./data/base.xml" -v

Temps d'exécution

Ubuntu (I7-8550U) Kubuntu (I5-7300HQ) KDE Neon (I7-8550U)
Extraction ~ 1 minute 20 50 à 70 secondes 45 à 50 secondes

Partie 3 - Transformation en HTML

Pour convertir le document xml extrait en un fichier html il suffit d'utiliser la commande suivante (ou son équivalent avec npm) :

xsltproc -o out.html convert.xsl ./data/extract.xml
# <=>
npm run xslt

La fichier est crée dans le dossier data sous le nom de extract.html en utilisant la commande npm