Ingénierie Documentaire Outils logiciels pour l'ingénierie documentaire http://doc.crzt.fr STÉPHANE CROZAT 16 octobre 2014
Table des matières I - L'IDE XML Oxygen 5 A. Fichiers XML...5 B. Schémas XML...6 C. Transformations XSLT...6 II - Réaliser un éditeur XML avec SCENARIbuilder 11 A. Tutoriel SCENARIbuilder...11 B. Réaliser un éditeur XML avec SCENARIbuilder...12 III - Autres outils 17 A. Mettre en ligne des contenus sur Internet avec un client FTP...17 19 Signification des abréviations 27 3
L'IDE XML Oxygen I I- Fichiers XML 5 Schémas XML 6 Transformations XSLT 6 Objectifs Ceci est un petit recueil de notes pour la prise en main de l'environnement de développement XML Oxygen (version 10). L'IDE Oxygen 10.3 peut être téléchargé à l'adresse : http://www.oxygenxml.com/software_archive_editor.html 1 Cette section présente les commandes principales pour manipuler un document XML, des schémas et des transformations XSLT. Toutes ces fonctions sont disponibles à partir du menu : Document > Document XML A. Fichiers XML Méthode : Indenter un document XML Document > Document XML > Indenter le document CTRL+MAJ+P Méthode : Contrôler qu'un document est bien formé Document > Document XML > Contrôler que le document est bien formé CTRL+MAJ+W Icône : En cas d'erreur, le message "Analyse sans validation" apparaît en bas à droite à côté d'un petit carré rouge. Les erreurs sont présentées dans la fenêtre du bas. Si le fichier est bien formé le message "Le document est bien formé" apparaît en bas à droite, à côté d'un petit carré vert. 1 - http://www.oxygenxml.com/software_archive_editor.html 5
L'IDE XML Oxygen L'IDE XML Oxygen B. Schémas XML Méthode : Associer un schéma à un fichier XML Pour une DTD (ajouter avant l'élément racine) : <!DOCTYPE elementracine SYSTEM "chemin/schema.dtd"> Pour un schéma RelaxNG (ajouter avant l'élément racine) : <?oxygen RNGSchema="chemin/schema.rng" type="xml"?> (ou <?oxygen RNGSchema="chemin/schema.rnc" type="compact"?>) Pour un W3C Schema (ajouter à l'élément racine) : <elementracine xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:schemalocation="file:/chemin/schema.xsd" xmlns=...> Méthode : Contrôler qu'un document est valide Une fois qu'un fichier XML a été associé à un schéma, il peut être validé : Document > Document XML > Valider le document CTRL+MAJ+V icône : En cas d'erreur, le message "Validation - échec" apparaît en bas à droite à côté d'un petit carré rouge. Les retours de la validation sont présentés dans la fenêtre du bas. Si le fichier est valide, le message "Le document est valide" apparaît en bas à droite, à côté d'un petit carré vert. Remarque : Validation dynamique Oxygen permet la validation dynamique des fichiers XML dès qu'ils sont associés à un schéma. Les erreurs de validation apparaissent alors soulignées en rouge directement dans l'éditeur. Complément : Autre méthode pour déclarer un schéma Document > Document XML > Associer un schéma Icône : C. Transformations XSLT Méthode : Associer une transformation XSLT à un fichier XML Pour associer une XSLT à un fichier XML : 1. Ajouter la ligne standard avant l'élément racine : <?xml-stylesheet href="adresse2.xsl" type="text/xsl"?> 6 6
L'IDE XML Oxygen Exemple : Exemple de déclaration XSLT standard Déclaration XSLT standard Méthode : Exécuter une transformation Pour exécuter une transformation : 1. Cliquer sur (ou Document > Document XML > Appliquer le scénario de transformation ou CTRL+MAJ+T) 2. Répondre Oui à la proposition d'exécuter le scénario par défaut basé sur la XSLT déclarée dans le fichier XML (lors de la première exécution seulement). 3. Le résultat de la transformation est présenté dans la fenêtre du bas. Exemple : Exemple de transformation Transformation 7
L'IDE XML Oxygen Méthode L'IDE XML Oxygen : Récupérer un résultat de transformation Pour récupérer le résultat de la transformation : 1. Faire un clic droit sur la zone de résultat (zone du bas) 2. Choisir Enregistrer les résultat dans le menu contextuel 3. Enregistrer le fichier sur le disque dur (attention, l'extension n'est pas ajoutée automatiquement, pensez à écrire fichier.html s'il s'agit d'un fichier HTML) 4. Ouvrir ce fichier, par exemple dans un navigateur Web s'il s'agit d'un fichier HTML Complément XSLT : Déclarer et exécuter un scénario de transformation Pour associer une transformation XSLT à un fichier XML, il est possible de créer d'abord un "scénario de transformation" : Document > Document XML > Configurer un scénario de transformation ou CTRL+MAJ+C ou Puis : 1. 2. 3. 4. 5. Cliquer sur Nouveau Donner un nom au scénario Sélectionner le fichier XSLT sur le disque dur Cliquer sur Accepter Cliquer sur Accepter pour fermer la seconde fenêtre et associer le scénario qui vient d'être créé au fichier XML en cours d'édition Configurer un scénario Créer un scénario Une fois qu'un scénario de transformation est déclaré avec une XSLT, il peut être associé à tout fichier XML : 1. Sélectionner le fichier XML que vous souhaitez associer au scénario 2. Choisir Document > Document XML > Configurer un scénario de transformation 3. Sélectionner le scénario à appliquer au fichier XML dans la liste 4. Cliquer sur Accepter Pour l exécuter, procéder comme précédemment ( ). 8 8
L'IDE XML Oxygen Complément : Tester une expression XPath Exécution d'expression XPath dans l'éditeur Oxygen 9
Réaliser un éditeur XML avec SCENARIbuilder II - II Tutoriel SCENARIbuilder 11 Réaliser un éditeur XML avec SCENARIbuilder 12 A. Tutoriel SCENARIbuilder Suivre le tutoriel HelloWorld disponible sur le site scenari-platform.org : http://scenariplatform.org/projects/scenari/fr/builder/co/documentation.html 2 http://scenariplatform.org/doc/builder/userguide/userguide/co/01_helloworld.html 3 Question 1 Réaliser uniquement la partie Structure du modèle permettant de définir un schéma XML et un éditeur associé. Question 2 Analyser le format XML généré dans l'éditeur SCENARItest. Indice : Créer un item et remplir ses champs, puis aller dans l'onglet "Édition textuelle" (cliquer d'abord sur l'onglet "étoile") pour afficher l'item au format XML. Observer les différents namespaces mobilisés et leur préfixe : hw pour l'identification de l'item Hello World qu'on a défini dans le.model ; bs pour les modelets dont on se sert ici (stitle et stxt) sp pour ce qui a été défini en part de cet item ; sc pour les primitives utilisées dans les modelets (fulltitle, para, etc.). Question 3 Réaliser un export du modèle en RelaxNG (onglet Export du.wspdef). 2 - http://scenari-platform.org/projects/scenari/fr/builder/co/documentation.html 3 - http://scenari-platform.org/doc/builder/userguide/userguide/co/01_helloworld.html 11
Réaliser un éditeur XML avec SCENARIbuilder Réaliser un éditeur XML avec SCENARIbuilder B. Réaliser un éditeur XML avec SCENARIbuilder Modélisation de hiérarchie Réaliser un éditeur correspondant au modèle suivant. Question 1 [Solution n 1 p 19] 1 2 3 Document -> Titre, Section+ Section -> Titre, Bloc+ Bloc -> stxt Indice : Résultat visé (SCENARItest) Récursivité Réaliser deux éditeurs correspondant aux deux modèles suivants. Question 2 [Solution n 2 p 20] 1 2 3 Document -> Titre, Section+ Section -> Titre, (Section Texte)+ Texte -> stxt Indice : 12 12
Réaliser un éditeur XML avec SCENARIbuilder Résultat visé (SCENARItest) Question 3 [Solution n 3 p 21] 1 2 3 Document -> Titre, Section+ Section -> Titre, (Section+ Texte+) Texte -> stxt Modelet "base" Copier et modifier les.model stitle et stxt dans un nouvel espace, de façon à réaliser un éditeur correspondant au modèle suivant. 13
Réaliser un éditeur XML avec SCENARIbuilder Réaliser un éditeur XML avec SCENARIbuilder Question 4 [Solution n 4 p 22] 1 2 3 4 Document -> Titre, Section+, Glossaire... Glossaire -> Entree+ Entree -> Terme, Definition Avec Terme se comportant comme un stitle et Definition comme un stxt encore simplifié comprenant seulement des Paragraphe et des mots de type Emphasis. Modelet "binaries" Réaliser un éditeur permettant l'intégration d'images (binaires externes). Question 5 [Solution n 5 p 23] Adapter le modèle Entree pour ajouter des illustrations dans les définitions. On s'inspirera pour cela de flow.model. Métadonnées Utiliser la primitive dataformprim pour ajouter à Document les 15 éléments principaux du Dublin Core, comme sur le modèle suivant. Question 6 [Solution n 6 p 24] 1 2 3 Document -> Entete, Section+, Glossaire Entete -> Titre, Créateur,...... Plan logique Renseigner les champs family de façon à obtenir le plan adéquat. 14 14
Réaliser un éditeur XML avec SCENARIbuilder Question 7 [Solution n 7 p 25] Plan logique Externalisation Autoriser la transclusion entre items sections. Question 8 [Solution n 8 p 25] Modifier la propriété d'internalisation de façon à rendre les sections (pas les soussections) externalisables et réutilisables si l'utilisateur le décide (userdependent). Déploiement Préparer le déploiement d'un modèle dans SCENARIchain. Question 9 [Solution n 9 p 25] Ajouter un item de type packmake pour générer un wsppack à installer dans SCENARIchain. 15
III - Autres outils III Mettre en ligne des contenus sur Internet avec un client FTP 17 A. Mettre en ligne des contenus sur Internet avec un client FTP Préambule Ce mini-tutoriel propose d'utiliser un site Web gratuit chez Free, n'importe quel autre hébergeur peut librement être utilisé. Se connecter à un serveur Web 1. Créez un compte chez un hébergeur de site gratuit, par exemple chez Free : http://subscribe.free.fr/accesgratuit4 2. Téléchargez et installez le client FTP Filezilla : http://filezilla-project.org/5 3. Ouvrez Filezilla et exécuter via le menu : File > Site manager (CTRL+S) 4. Cliquez sur le bouton : New site 5. Nommez votre site, par exemple : "moncompte.free.fr" 6. Renseignez les informations de connexion, par exemple pour Free : Host : ftpperso.free.fr Port : Protocol : FTP Encryption : Use plain FTP Logon type : Normal User : "moncompte" (c'est à dire votre adresse mail sans free.fr) Password : votre mot de passe Account : 7. Cliquez sur : Connect Publier des fichiers Filezilla permet de naviguer à gauche dans les fichiers locaux situés sur l'ordinateur (Local site) et sur les fichiers distants situés sur le serveur (Remote site). Pour mettre des fichiers sur le serveur Web, il suffit de les glisser-déposer depuis la fenêtre de gauche vers la fenêtre de droite. 1. Créez un dossier "test" sur le serveur (clic droit Create directory) pour recevoir votre site Web 2. Après avoir généré un contenu Web avec Scenari, faites Révéler dans le système de fichier depuis SCENARIchain 3. Copiez l'adresse dans le champ Local site de Filezilla pour vous déplacer directement à cette adresse 4. Sélectionnez tous les fichiers (une petite dizaine de dossiers et un fichier 4 - http://subscribe.free.fr/accesgratuit 5 - http://filezilla-project.org/ 17
Autres outils Autres outils index.html) et glissez-déposez-les dans votre répertoire "test" 5. Attendez que tous les fichiers soient transférés 6. Consultez votre site avec un navigateur Web à l'adresse de votre site plus "/test", par exemple : http://moncompte.free.fr/test Publication de fichiers sur le Web avec Filezilla 18 18
Solution des exercices > Solution n 1 (exercice p. 12).wspdef.model racine (document) Des items de type compositionprim sont à créer pour chaque structure composite, à savoir Document et Section ici. 19
Le modèle de la section est à référencer en allowedmodel de la part du document. > Solution n 2 (exercice p. 12).model Section (mixé) Le but est de pouvoir ajouter récursivement des sous-sections. Syntaxe En Relax NG, la structure (Section Texte)+ s'écrit : 1 2 3 4 5 6 7 8 9 10 <oneormore> <choice> <element name="section">... </element> <element name="texte">... </element> </choice> </oneormore> Dans SCENARIbuilder, cela correspond à un set de plusieurs parts : Set de parts 20 20
Remarque : Set optionnel Pour réaliser l'équivalent d'un zeroormore plutôt qu'un oneormore, mettre l'attribut usage du set à optional. > Solution n 3 (exercice p. 13).model Section (alternative) Le but est de pouvoir ajouter un ensemble de sous-sections ou un ensemble de textes (mais pas les deux à la fois au même niveau). Syntaxe En Relax NG, la structure (Section+ Texte+) s'écrit : 1 2 3 4 5 6 7 8 9 10 11 12 <choice> <oneormore> <element name="section">... </element> </oneormore> <oneormore> <element name="texte">... </element> </oneormore> </choice> 21
Dans SCENARIbuilder, cela correspond à une alternative de plusieurs sets : Alternative de sets Remarque : Name du set dans une alternative Dans une alternative, le set a besoin d'un name (pour que l'éditeur puisse proposer le choix entre un set ou un autre) : ici, cela fait sens de reprendre les names des parts en les mettant au pluriel. Remarque : Alternative optionnelle Pour réaliser l'équivalent d'un zeroormore plutôt qu'un oneormore, mettre l'attribut usage de l'alternative à optional (un ensemble de sections ou un ensemble de textes ou rien). > Solution n 4 (exercice p. 14) Copier stxt.model dans l'espace dédié à cette question (on n'a pas besoin de copier stitle.model avec, car il ne sera pas modifié). On souhaite garder uniquement les paragraphes et le balisage inline "Important", on va donc tout supprimer sauf : l'appel à la primitive paratag, de name "Paragraphe" ; l'inlinestyletag (dans les inlinetags) et l'htmlstyle (dans la partie ) de role "imp" (et de name "Important"). On peut également supprimer les balises devenues "inutiles" dans la partie authoring, à savoir toutes celles n'ayant pas le role "imp". Il est important de noter le changement de la balise identification ici, sans laquelle on aurait un conflit entre les deux versions de stxt.model mobilisées dans le modèle (l'originale de base pour les sections, et celle-ci pour les entrées) ; dans cette version modifiée, on doit donc changer : soit le code ; soit le namespace (ce qui est le plus cohérent). 22 22
Structure de stxt Créer un.model pour l'entrée et bien penser à référencer le stxt.model modifié en allowedmodel de la part. Structure d'une entrée Créer un.model pour le glossaire et le référencer en allowedmodel dans une nouvelle part de Document. Structure du glossaire (question 7) > Solution n 5 (exercice p. 14) On a besoin de remplacer stxt par un modèle plus complexe dans la part de l'entrée, ce qui donne lieu à la création de definition.model. 23
Il est important de souligner que la part correspondant aux images (png.model, jpeg.model, etc.) ne peut pas avoir son attribut internalized égal à always (les images sont par définition des ressources externes). Structure d'une définition Remarque Il y a plusieurs façons d'interpréter l'énoncé de la question ; ici, on a choisi de pouvoir en mettre un ensemble (optionnellement) à la suite du texte. Attention Les.models des images doivent être ajoutés aux publicclasses du wspdef, pour que l'auteur puisse les instancier de manière autonome. > Solution n 6 (exercice p. 14) Jusqu'à là, on a uniquement utilisé des méta-données de type titleprim (stitle) ; le type dataformprim permet une structuration plus complexe, ce qui convient bien pour les éléments du Dublin Core. Créer entete.model de type dataformprim et le paramétrer, par exemple, comme ceci : Structure des méta-données Dublin Core On remarquera les types proposés pour les champs de méta-données (string, date, etc.) 24 24
Remarque Ici, on s'est servi des balises group (pour grouper plusieurs champs de métadonnées sous un nom) et field (champ auquel on peut associer un type), mais la dataformprim fournit également : une balise subdata pour référencer d'autres dataformprim (utile quand on a un modèle de méta-données complexe et/ou requérant des parties externalisées) ; une balise setof (équivalent d'un set dans la compositionprim, utile pour pouvoir définir des mots-clés par exemple). > Solution n 7 (exercice p. 15) Mettre l'attribut family des parts correspondant aux sections (dans document.model et section.model) à la valeur sub-level : cela permet de spécifier que ces parts sont des éléments structurels (par opposition à des éléments de contenu). Attribut "family" Dès lors, dans SCENARIchain (ou SCENARItest), un clic-droit sur un item de type "document", puis "Afficher le plan" doit faire apparaître le plan à droite, sous forme d'arborescence où la racine est le document et les feuilles sont ses différentes sections ou sous-sections. > Solution n 8 (exercice p. 15) Mettre l'attribut internalized des parts correspondant aux sections à la valeur userdependant : cela laisse le choix à l'auteur d'externaliser une section, ou au contraire de la laisser intégrée au document ou à la section la contenant. Attribut "userdependant" Attention Comme dans la question 8, il faut ajouter section.model aux publicclasses dans le wspdef, pour que l'auteur puisse instancier des items de type "section". Cette démarche est à faire impérativement, dès lors qu'un item est "externalisable" (concrètement, le choix "Section" sera présent dans le menu de création d'item pour l'auteur). > Solution n 9 (exercice p. 15) Créer un item de type packmake ("Gestion des ateliers -> Compilation" dans le menu de création d'item) puis référencer le wspdef dans la balise du même nom. Le résultat de la compilation dans cet item est un fichier.wsppack, qu'on peut 25
installer dans SCENARIchain ensuite. 26 26
Signification des abréviations - IDE Integrated Development Environment (Environnement de Développement Intégré) 27