====== Imports dans ChainEdit 3 ======
===== Principes =====
Un import consiste à prendre le contenu d'un fichier (en format zip) pour le transformer dans un format reconnu par Chainedit. Par exemple, transformer un fichier OpenOffice (utilisant une feuille de style spécifique) en projet ChainEdit dans le format Opus. Un import a donc un format d'entrée et un format de sortie. Le paramétrage des imports a changé avec ChainEdit 3. Un import est constitué d'un ensemble d'instructions de copie de répertoires et/ou de fichiers, et d'un ensemble de fichiers XSL de traitement de données.
===== Processus =====
Après avoir sélectionner un import et donné à ChainEdit un fichier Zip à traiter. La séquence de traitement sera la suivante :
- Création d'un répertoire temporaire ici appelé TMP
- Dézip du fichier dans le répertoire temporaire
- Création d'un répertoire cible ici appelé PROCESS
- Lancement des traitements de BEFOREPROCESS (copie des médias dans PROCESS)
- Lancement des traitements XSL (le résultat du traitement doit se retrouver dans le répertoire PROCESS à la fin)
- Lancement des traitements de AFTERPROCESS (déplacement du fichier XML produit par le traitement XSL dans PROCESS par exemple)
- En cas d'erreur les répertoires TMP et PROCESS sont supprimés et le répertoire du projet reste à l'état initial.
- En cas de succès le répertoire PROCESS va remplacer le répertoire du projet, le fichier xml contenu dans ce répertoire (il ne doit y en avoir qu'un à la racine) est renommé avec l'identifiant du projet. Le répertoire TMP est supprimé. **Le contenu initial est donc supprimé**.
===== Paramétrage =====
Un import est constitué d'un fichier XML de paramétrage qui se présente comme suit (ici un import odf to opus):
===== Explications =====
Un import a un identifiant (//id//), un label (//label//) et une version (//version//) pour information. Il y a aussi un attribut //chainEditVersion// qui permet de vérifier si cet import est compatible avec ChainEdit à partir de la version indiquée (ici la 3)
* TARGETSCHEMA et ORIGINALSCHEMA donnent des informations sur les formats pour lesquels cet import a été conçu, mais ces informations ne sont pas contraignantes (ChainEdit ne les vérifient pas).
* la séquence BEFOREPROCESS est exécutée avant le lancement du parsing XSL . Elle permet de copier des répertoires ou des fichiers (voir plus loin). Ici il y a une copie d'un répertoire /Pictures contenant les images sous OpenOffice dans un répertoire /ressouces/images conforme au modèle OPUS (bien entendu le traitement XSL devra assurer la transformation du chemin d'accès aux images vers ce nouveau répertoire).
* la séquence IMPORTXSL va exécuter la liste des fichiers XSL (dans l'ordre des attributs "//order//")sur le fichier XMLFILE passé en paramètre. Si le paramètre XMLFILE est omit, le premier fichier xml trouvé dans le répertoire /TMP sera traité(Ici transformation du fichier openOffice content.xml dans le format OPUS de ChainEdit).
* la séquence AFTERPROCESS est exécutée après le lancement du parsing XSL . Elle permet de copier des répertoires ou des fichiers (voir plus loin). Ici le fichier newproject issu du traitement XSL est copié dans le répertoire /PROCESS pour être ensuite renommé par ChainEdit avec l'identifiant du projet conformément aux conventions de nommage de ChainEdit.
* BEFOREPROCESS et AFTERPROCESS peuvent avoir comme traitements :
- MKDIR pour créer un répertoire
- COPYCONTENTDIR pour copier les répertoires contenus dans un répertoire parent (Si un répertoire A contient des répertoires B et C et un fichier D.xml, cette commande copiera B et C dans le répertoire cible)
- COPYDIR pour copier un répertoire
- COPYFILE pour copier un fichier