@istex/li-2mods
v3.5.3
Published
Module li-2mods (version NPM)
Downloads
2
Readme
li-2mods
Présentation
Le module li-2mods a pour but de transformer les notices XML des métadonnées éditeur en notices MODS (format pivot).
Fonctionnement
Les traitements sont réalisés via une fonction doTheJob
:
- qui récupère en entrée un
docObject
sous forme JSON, ainsi qu'une callback. - qui produit des notices MODS dans le répertoire fourni dans le JSON d'entrée corpusOutput.
- Les éventuelles erreurs sont renvoyées en paramètre de la callback.
Utilisation
Installation
Dépendances système :
- xsltproc
- NodeJS 4.0.0+
Installer les modules nécessaires :
npm install
Vérification du fonctionnement
Commande d'exécution des tests unitaires :
npm test
Exécution
Comme pour tous les modules, la présente partie métier n'est pas destinée à être exécutée directement, puisqu'elle consiste uniquement à mettre à disposition une fonction doTheJob
.
L'exécution se fera donc en appelant cette fonction depuis une instanciation de li-canvas
ou indirectement depuis les tests unitaires.
Clés du docObject nécessaires à la bonne exécution
Ces clés sont obtenues durant li-carto et li-carto :
- corpusResources
- corpusOutput
- metadata (tableau d'objets JSON)
- path (un par fichier de métadonnées)
Exemple de docObject accepté en entrée
Ce docObject peut être obtenu en sortie de li-xml-val : Normalement tous les objets qui ont passés li-xml-val possèdent des XML bien-formés et valides.
{
"idIstex": "0123456789012345678901234567890123456789",
"corpusName": "nature",
"cartoType": "nature",
"corpusRoot": "/path/to/corpus/root",
"corpusOutput": "/path/to/corpus/output",
"corpusResources": "/path/to/corpus-resources",
"metadata": [
{
"valFile": "path/to/dtd",
"path": "/path/to/original/xml",
"xmlWellFormed": true,
"mime": "application/xml",
"xmlValid": true,
"original": true
}
],
...
}
Exemple de docObject en sortie
Il s'agît du docObject ci-dessus complété.
Remarquez en fin de JSON l'ajout d'une entrée metadata étiquetée original = false
{
"idIstex": "0123456789012345678901234567890123456789",
"corpusName": "nature",
"cartoType": "nature",
"corpusRoot": "/path/to/corpus/root",
"corpusOutput": "/path/to/corpus/output",
"corpusResources": "/path/to/corpus-resources",
"metadata": [
{
"valFile": "path/to/dtd",
"path": "/path/to/original/xml",
"xmlWellFormed": true,
"mime": "application/xml",
"xmlValid": true,
"original": true
},
{
"path": "/path/to/mods",
"mime": "application/mods+xml",
"original": true
}
],
...
}
Exemple de docObject rejeté
Remarquez en fin de JSON l'ajout de errCode
et errMessage
{
"idIstex": "0123456789012345678901234567890123456789",
"corpusName": "nature",
"cartoType": "nature",
"corpusRoot": "/path/to/corpus/root",
"corpusOutput": "/path/to/corpus/output",
"corpusResources": "/path/to/corpus-resources",
"metadata": [
{
"valFile": "path/to/inexistant/dtd",
"path": "/path/to/original/xml",
"xmlWellFormed": true,
"mime": "application/xml",
"xmlValid": true,
"original": true
}
],
"errCode": "XslTransformationError",
"errMessage": "Could not generate MODS from /path/to/original/xml",
...
}
Annexes
Arborescence
.
├── node_modules/ // Modules NPM
│ └── ...
├── src/
│ └── clean-nature.sh // Script pour préparer les données de l'éditeur Nature avant la transformation
├── test/ // Fichiers nécessaires aux tests unitaires
│ ├── dataset/ // Répertoire contenant des données de test
│ │ └── corpus/
│ ├── dependencies.js // Tests de dépendances système
│ ├── run.js // Point d'entrée des tests unitaires
│ └── testSet.js // Liste de docObjects pris en entrée des test unitaires
├── .editorconfig // Configuration de l'éditeur pour l'indentation (entre autres)
├── .eslintrc.json // Configuration pour eslint
├── .gitignore
├── index.js // Point d'entrée, contenant la fonction doTheJob
├── Licence.fr.txt // Licence CeCILL en Français
├── License.en.txt // Licence CeCILL en Anglais
├── package-lock.json
├── package.json // Description du module pour NPM
└── README.md