Plan du cours (1) XML pour la publication multilingue Cours à l ISTI : 5 décembre 2003 Andrei Popescu-Belis ISSCO/TIM/ETI, Université de Genève andrei.popescu-belis@issco.unige.ch http://www.issco.unige.ch/staff/andrei/ I. Introduction à XML (15 ) 1. Motivation, définition, historique 2. Applications d XML 3. La «galaxie XML» II. Fondements d XML (50 ) 1. La bonne formation d un document XML 2. Les DTD et la validité d un document XML cas particulier : la validation de HTML 3. Les transformations XSLT Pause (20 ) 2 Plan du cours (2) III. Quelques applications d XML (15 ) 1. Serveur web de documents multilingues : Cocoon (Apache) 2. Format d échange pour la localisation : OpenTag et LIFF 3. Format d échange pour les mémoires de traduction TMX 4. Marquage de corpus linguistiques : XCES I. Introduction à XML IV. Exercices pratiques (50 ) 1. Outils de base pour la gestion de XML 2. Vérification et validation d exemples simples 3. Application de feuilles de style XSLT 3 Qu est-ce que XML? «extended Markup Language» Langage de balises permettant de marquer les documents afin de les structurer Coder la structure ou le sens plutôt que la forme d un document Langage flexible, expressif, simple, répandu Un premier exemple en XML Entrée lexicale d un dictionnaire bilingue <?xml version="1.0" encoding="utf-8"?> <LETTRE VALEUR="x"> <ENTREE> <mot_cle>xerox</mot_cle> <trad pos="nf">photocopieuse</trad> <trad pos="nf">photocopie</trad> </ENTREE> </LETTRE> 5 6 1
XML vs. HTML : différences Qu est-ce que XML n est pas? HTML définit la signification de chaque balise et attribut XML laisse l entière interprétation des données aux applications qui les lisent Noms de balises XML : à définir selon les besoins HTML : fixés en vue de l affichage Syntaxe des balises XML : plutôt stricte HTML : assez tolérante, dépend du navigateur Nombreux outils associés à XML, applications XML, etc. Ce n est pas un langage de programmation tels Basic, C, Prolog, Perl, Java, etc. Ce n est pas un format propriétaire tel le format de Word, ou PDF Ce n est pas non plus une base de données mais en en un certain sens XML permet le stockage des informations structurées 7 8 Intérêt d XML XML et le traitement multilingue Structurer l information Rendre explicite le contenu des documents Echanger de l information entre humains et/ou entre programmes informatiques Traiter l information structurée en XML grâce aux nombreux outils existants Applications (exemples): http://xml.coverpages.org/xml.html#applications Structuration de documents : XML Support des caractères spéciaux : XML Interfaçage avec Unicode : XML Format de localisation : LIFF < XML Echange de mém. de trad. : TMX < XML Et aussi: sites web multilingues (Cocoon), terminologie, Toutefois: outils d édition à adapter (en cours) 9 10 La «galaxie XML» (1) La «galaxie XML» (2) XML : la syntaxe de base des balises XSL (extensible Stylesheet Language) langage évolué pour les feuilles de style XSLT : transformations d un document XML XSL-FO : formatage de bas niveau (graphique) en vue de l affichage CSS (Cascading Style Sheets) : langage de feuilles de style graphiques pour HTML et XML Espaces de noms : éviter les conflits entre noms de balises pour différentes applications XPath : mécanisme pour faire référence à une partie d un document XML XLink : connexions (hyperliens) entre documents XML XPointer : pointer sur (indiquer) des parties d un document (basé sur XPath) 11 12 2
La «galaxie XML» (3) XML Query : langage de requêtes DOM : manipuler des fichiers XML à partir d un programme DTD et XML Schema définir la syntaxe des balises pour une application DTD : Document Type Definition (ex-sgml) XML Schema: plus riche, écrite elle-même en XML XML est le fondement de RDF et du Web Sémantique RDF : norme pour les méta-données = un texte au format XML qui décrit d'autres données (p.ex. un site web) RDF intègre les applications en un "Web Sémantique«Les serveurs communiquent entre eux, à propos de leur contenu, grâce à des ontologies RDF 13 14 Eléments de syntaxe XML II. Fondements d XML Bonne formation (BF) Validité et DTD Transformations XSLT En quoi consiste un document XML? Ligne de déclaration XML Eventuellement déclaration d un DOCTYPE Eléments emboîtés, à partir d une racine éléments avec ou sans contenu contenu : texte et/ou autres éléments commentaires balises avec ou sans attributs Commentaires 16 Premier exemple Entrée lexicale d un dictionnaire bilingue <?xml version="1.0" encoding="utf-8"?> <LETTRE VALEUR="x"> <ENTREE> <mot_cle>xerox</mot_cle> <trad pos="nf">photocopieuse</trad> <trad pos="nf">photocopie</trad> </ENTREE> </LETTRE> Second exemple Fiche bibliographique pour un ouvrage <?xml version="1.0" encoding="iso-8859-1"?> <ouvrage> <index valeur="125"/> <titre>la légende des siècles</titre> <auteur> <nom>hugo</nom> <prénom>victor</prénom> </auteur> </ouvrage> 17 18 3
Explications (1) Explications (2) Première ligne : déclaration XML <?xml version="1.0" encoding="utf-8"?> la version est toujours 1.0 l encodage des caractères est à préciser si l on veut US-ASCII, ISO-8859-1, UTF-8, etc. Puis : une suite d éléments élément sans attributs <trad>photocopieuse</trad> ou bien, élément avec attributs <trad pos="nf" dom="tech">photocopieuse</trad> Elément : <AUTEUR> GOETHE </AUTEUR> balise ouvrante + contenu + balise fermante Règle de base Eléments emboîtés : OK <AA> <BB> contenu </BB> </AA> Eléments enchaînés : OK <AA> contenu1 </AA> <BB> contenu2 </BB> Eléments chevauchés : JAMAIS! <AA> contenu1 <BB> contenu2 </AA>... </BB> 19 20 Explications (3) Balises et attributs: noms permis Un fichier XML est donc: un fichier texte = suite de caractères lisibles sur tout ordinateur pas un fichier Word, PDF, ou autre format propriétaire Les noms des éléments (balises) sont à définir selon les besoins de chaque application Les noms XML peuvent contenir des lettres de tous les alphabets (Unicode) des chiffres, et: _ -. Les noms XML ne peuvent pas: contenir d autres ponctuations (sauf :) contenir des blancs, retour à la ligne, etc. commencer par autre chose qu une lettre ou _ Attention : majuscules minuscules 21 22 Commentaires, caractères réservés Commentaire standard (texte ne devant pas être traité) <!-- Ceci est un commentaire --> Commentaire plus «robuste» Peut contenir des caractères spéciaux Mettre le commentaire entre <![CDATA[ et ]]> Caractères réservés à remplacer par des entités: <( < ) &( & ) >( > ) "( " ) '( ' ) XML et caractères «spéciaux» Déclaration de l encodage (défaut = UTF-8) <?xml version="1.0" encoding=..."?> Utilisation des codes correspondants dans l encodage (exemple : UTF-8) on souhaite insérer un epsilon : son code Unicode est 603 d ou 25B h on écrit alors: ɛ ou bien ɛ Cinq entités prédéfinies : & & < < > > " " ' 23 24 4
Définition d entités en XML Dans une DTD, on peut facilement définir des noms pour des caractères spéciaux : <!ENTITY gamma "γ"> Puis dans le document XML on écrit: γ Exemple de DTD externes avec des entités prédéfinies : les DTD de XHTML pour les entités HTML http://www.w3.org/tr/xhtml1/dtd/... xhtml-lat1.ent, xhtml-special.ent, xhtml-symbol.ent Conclusion sur la bonne formation Un document bien formé (well-formed): respecte la syntaxe de base XML Exemples d erreurs de bonne formation absence de déclaration XML mauvaise syntaxe des balises pas d élément racine, pas de fermeture, croisement, mauvaise formation des noms XML caractères spéciaux mal utilisés p.ex. incompatibles avec l encodage déclaré 25 26 Pour être plus précis: la DTD * * Validité des documents XML DTD Comment communiquer à quelqu un sa propre convention de balisage? Comment vérifier qu elle est respectée? Objectifs décrire les noms de balises autorisés décrire un ordre autorisé pour les balises quels éléments peuvent contenir quels éléments quels éléments sont optionnels quels sont les attributs autorisés, obligatoires / optionnels, leur type, etc. 28 La «grammaire des balises» DTD : Document Type Definition notion provenant de SGML très utilisée en XML écrite dans un langage spécifique Document conforme à une DTD : valide <?xml version="1.0" standalone="no"?> <!DOCTYPE racine SYSTEM "exemple.dtd"> <racine>... </racine> Comment associer une DTD externe locale à un document XML 1. Déclaration DOCTYPE dans le fichier XML <!DOCTYPE ouvrage SYSTEM "biblio.dtd"> 2. Présence d une DTD = fichier texte bib.dtd <!ELEMENT ouvrage (index, titre, auteur+)> <!ELEMENT index EMPTY> <!ATTLIST index valeur CDATA #REQUIRED> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (nom, prenom+)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prenom (#PCDATA)> 29 30 5
Que contient une DTD? Symboles pouvant être utilisés Déclarations des noms de balises autorisés <!ELEMENT nom_balise (contenu)> Déclarations de l ordre des balises dans chaque "contenu" : voir les exemples Déclarations des attributs de chaque élément (noms, types, attribut obligatoire ou non) <!ATTLIST élément attribut-1 type-1 attribut-2 type-2 attribut-3 type-3> <!ELEMENT nom (surnom vrai-nom)> ou : 'nom' contient soit 'surnom' soit 'vrai-nom' <!ELEMENT exemple (exa, exb?, exc*, exd+)> l élément 'exemple' contient: RIEN = un seul 'exa'? = zéro ou un 'exb' * = zéro, un ou plusieurs 'exc' + = un ou plusieurs 'exd' Dans cet ordre, sans autres caractères entre eux. 31 32 Davantage d informations? HTML, une application de XML Deux attributs par défaut (tout élément) xml:space="default" ou bien ="preserve" xml:lang="fr-be" ou bien en, fr, etc. Sur la définition des DTD Consulter les sites Internet, surtout www.w3.org Sur les DTD existantes Consulter les sites web, surtout xml.coverpages.org Une application d XML = définie par la DTD + docs HTML : langage de marquage pour les pages web Hyper-Text Markup Language HTML : application de SGML, donc peut être validé Il est possible d écrire du HTML qui soit (presque) du XML bien formé et valide fermer toutes les balises (<br></br>, etc.) mettre les attributs entre guillemets attention à l ordre des balises etc... problème de la déclaration XML 33 34 Document HTML 4.01 valide Validation de HTML <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <title>page de Jean Dupont</title> </head> <body> <h1>jean Dupont</h1> <p align="left">jean Dupont is a student at ISTI in Belgium. </p> </body> </html> Choisir une DTD publique adaptée : HTML X.Y avec un éditeur web HTML : 2.0, 3.0, 4.01 variantes : frameset, strict, transitional XHTML s il est généré à partir d XML Préciser l encodage du document Utiliser par exemple le valideur qui se trouve à : http://validator.w3.org Si la page est valide, on peut y mettre un logo 35 36 6
Les feuilles de style XSL * * * Transformations XSLT Un langage à part entière: XSL : Extensible Stylesheet Language Deux sous-langages XSLT : XSL Transformations XSL-FO : XSL Formatting Objects XSLT = Définit comment on peut transformer un fichier XML en un autre fichier XML, ou en un fichier HTML 38 Principe Fichier XML ( + DTD éventuellement) = D Feuille de style XSL = F Processeur XSL = programme qui applique la feuille de style au fichier = P P D + F D Le processeur P transforme D en D grâce à F Exemples d utilisation de XSLT Utiliser plusieurs feuilles de style pour un même type de documents afin de varier l affichage (HTML, PDF, etc.) selon les besoins affichage détaillé affichage résumé catalogue Conversion de formats entre différents outils ou utilisateurs pour sélectionner / recombiner les documents structurés 39 40 Rôle du processeur XSL Structure d une feuille de style (1) Feuille de style XSL n 1 Feuille de style XSL n 2 Les feuilles de style sont elles-mêmes des fichiers XML (contrairement aux DTD, mais cf. XML Schema) Fichier XML initial (bien formé ou valide) Fichier XML ou HTML ou TXT résultat (transformé) n 1 Processeur XSL Fichier XML ou HTML ou TXT résultat (transformé) n 2 41 Extension «.xsl», p.ex. nom-de-feuille.xsl Donc, ce sont aussi des fichiers texte + balises Possibilité de déclarer l encodage 42 7
Structure d une feuille de style (2) Structure d une feuille de style (3) Au début : déclaration habituelle XML Puis : élément principal <xsl:stylesheet déclaration de version déclaration du nom d'espace XSL > Puis : série d instructions de transformation Puis : fin de </xsl:stylesheet> I 1 I 2 I n <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="nom-element-ou-joker">... INSTRUCTIONS-OU-BALISES-OU-TEXTE... </xsl:template> <xsl:template match="nom-autre-element-ou-joker">... AUTRES-INSTRUCTIONS-OU-TEXTE-OU-BALISES... </xsl:template>... AUTANT DE BLOCS XSL:TEMPLATE QUE NECESSAIRE... 43 </xsl:stylesheet> 44 Principes d application de XSL XSL est très complexe... Le processeur lit d abord la feuille de style et mémorise ses instructions Le processeur parcourt le document XML initial du début à la fin, sous forme d arbre (i.e., des éléments parents vers les élément enfants) A chaque élément (balise), le processeur cherche l instruction de formatage XSL qui s applique, et transforme l élément en un nouvel élément du document XML final L ordre de parcours des éléments peut être modifié par les instructions de formatage Il y a un ensemble d instructions par défaut Il y a des instructions de formatage générales, à mettre au début de la feuille XSL Il y a des instructions conditionnelles (xsl:choose, xsl:otherwise, xsl:if, etc.) Les expressions dans match=" " et select=" " sont des expressions XPath langage à part entière, très riche Il y a un mécanisme pour traiter aussi les attributs 45 46 Schéma récapitulatif Document XML Valideur III. Applications de XML au traitement informatique multilingue Vérificateur BF Feuille de style XSLT Moteur XSLT Définitions des balises DTD Nouveau document XML Cocoon (Apache) XLIFF et OpenTag TMX (LISA) XCES 47 8
Cocoon Capacités et intérêt Objectif = publier (ou rendre visibles) grâce aux feuilles de style XSLT des sites web écrits en XML, mais aussi du contenu "dynamique" des bases de données, etc. Cocoon se présente comme un logiciel qui s ajoute au serveur web APACHE (en Java) Sur Internet http://xml.apache.org/cocoon http://www.ibm.com/developerworks/ 49 Avec Cocoon, on peut facilement: afficher sur le site web des données en XML interroger une base de données à travers le site produire des résultats en HTML, XML, PDF, programmer des modules supplémentaires Intérêt séparer clairement le contenu des données, leur structure logique, et leur forme graphique et tout cela gratuitement... 50 Principe de l'architecture XML pour la localisation et la traduction : OpenTag L utilisateur qui consulte le serveur envoie des requêtes ("afficher une information") Le serveur produit cette information en combinant plusieurs modules Enchaînement ("pipeline") des traitements permet de recombiner les modules Nombreux modules prédéfinis, mais on peut en programmer d'autres Un fichier de configuration «sitemap» déclare tous les modules au serveur + les chaînes de traitement OpenTag : séparer : dans une application le texte qui doit être localisé menus, boutons, aide, infos, etc. les éléments de programme qui ne changent pas 51 52 XML pour la localisation et la traduction : XLIFF XLIFF XML Localization Interchange File Format http://www.oasis-open.org/committees/ xliff/documents/xliff-specification.htm Gestion de segments source, traduits, ou en cours Une fois le texte à traduire extrait, on le traduit avec un outil qui ne change pas les balises (ex.: Trados TagEditor) 53 Le format TMX Organisation groupe OSCAR de LISA http://www.lisa.org/tmx Définition du format échange de mémoires de traduction entre différents logiciels Certification «TMX-compliant» en place 54 9
Exemple simple en TMX Autre exemple TMX <?xml version="1.0"?> <!DOCTYPE tmx SYSTEM "tmx14.dtd"> <tmx version="1.4"> <header creationtoolversion="1.0.0" datatype="winres" segtype="sentence" adminlang="en-us" srclang="en-us" o-tmf="abc" creationtool="xyztool" > </header> <body> <tu> <tuv xml:lang="en-us"><seg>text with 3 spaces [ ] and 2 [ ]</seg></tuv> <tuv xml:lang="fr-ca"><seg>texte avec 3 espaces [ ] et 2 [ ]</seg></tuv> </tu> <tu> <tuv xml:lang="en-us"><seg>text with 1 tab [ ] and 2 [ ]</seg></tuv> <tuv xml:lang="fr-ca"><seg>texte avec 1 tab [ ] et 2 [ ]</seg></tuv> </tu> <tu> <tuv xml:lang="en-us"><seg><=lt, >=gt, &=amp, {=obrace, }=cbrace</seg></tuv> <tuv xml:lang="fr-ca"><seg><=lt, >=gt, &=amp, {=obrace, }=cbrace</seg></tuv> </tu> </body> </tmx> <?xml version="1.0"?> <!DOCTYPE tmx SYSTEM "tmx14.dtd"> <tmx version="1.4"> <header creationtoolversion="1.0.0" datatype="plaintext" segtype="sentence" adminlang="en" srclang="es-es" o-tmf="abc" creationtool="xyztool"> </header> <!-- For import with source=en-us and target=en-gb, only first and second entries should be imported --> <body> <tu srclang="en-us"> <tuv xml:lang="en-us"><seg>first entry in US English</seg></tuv> <tuv xml:lang="en-gb"><seg>first entry in UK English</seg></tuv> </tu> <tu srclang="en-us"> <tuv xml:lang="en-gb"><seg>second entry in UK English</seg></tuv> <tuv xml:lang="en-us"><seg>second entry in US English</seg></tuv> </tu> <tu> <tuv xml:lang="es-es"><seg>[not to import] Third entry in Spanish</seg></tuv> <tuv xml:lang="en-us"><seg>[not to import] Third entry in US English</seg></tuv> </tu> </body> </tmx> 55 56 Le processus de certification TMX Autre application de XML: XCES TMX 1.4 «Compliance Verification» Recommandation OSCAR, 10 juillet 2002 http://www.lisa.org/tmx/comp.htm Série de tests import / export de mémoires et comparaison avec l original ou application à la traduction d un document tests de validité XML des mémoires exportées cf. logiciel + DTD Seulement exécutés par des sociétés 57 Standard pour l annotation des corpus textuels 1. Première tentative: TEI (définie en SGML) Text Encoding Initiative 2. Simplification de la TEI et adoption des directives du projet EAGLES: CES Corpus Encoding Standard 3. Définition de CES en XML: XCES 58 Objectifs de XCES Standard pour baliser la structure des corpus textuels Deux parties Annotation des méta-données = information sur le texte, sa version électronique, l annotation Annotation du texte = structures sur plusieurs niveaux Niveau de la section / chapitre Niveau du paragraphe Niveau de la phrase XCES : démo et discussion http://www.cs.vassar.edu/xces/ Conclusion Objectifs vous expliquer les fondements techniques vous donner une première introduction avant la documentation technique vous familiariser avec un ensemble de standards en pleine évolution Standards approfondissez ceux qui vous paraissent utiles au fond, chacun = description + DTD + outils logiciels on gagne toujours à utiliser les standards 59 60 10
Visualisation, édition IV. EXERCICES Introduction aux outils Application des notions d XML Internet Explorer, Netscape affichage seulement, mais assez convivial vérification aussi de la bonne formation Edition : tout éditeur texte convient Wordpad, Notepad, même Word Outils plus avancés XMLSpy : éditeur XML/XSLT + nombreux outils intégrés Treebeard : éditeur XML/XSLT seulement; gratuit, simple : http://treebeard.sf.net 62 Vérifier la bonne formation (1) Vérifier la bonne formation (2) Nombreuses possibilités! Un survol des outils: http://www.xml.com/pub/a/2001/06/27/cheapxml.html EXEMPLES : 1. Ouvrir le fichier dans Internet Explorer (ou Netscape > 6) : le système indiquera la première erreur trouvée, ou affichera le fichier si correct 2. Utiliser un vérificateur en ligne, par exemple http://www.xml.com/pub/a/tools/ruwf/check.html (saisir/coller le document XML dans le cadre) Utilisation de l outil RXP, sur la disquette (à l origine : http://www.cogsci.ed.ac.uk/~richard/rxp.html) 3. Utiliser le raccourci appliquer-rxp.bat : faire glisserdéplacer (drag-and-drop) avec le fichier XML sur ce raccourci. Une fenêtre s ouvre, et le programme s arrête à la première erreur trouvée (la fin du document si correct) 4. Utiliser RXP dans une fenêtre de commandes DOS. Syntaxe: H:\prive\xml\> rxp x livrea.xml Le programme s arrête aussi à la première erreur trouvée. Lire le mode d emploi pour les options: rxp-manuel.txt 63 64 Vérifier la validité (1) 1. Netscape ou Internet Explorer : ne le font pas 2. Utiliser un vérificateur en ligne : la difficulté est de mettre le document XML et la DTD (si elle est externe) sur Internet. A défaut, on utilisera une DTD interne dans le document XML. Exemples: STG (http://www.stg.brown.edu/service/xmlvalid/) ou RUWF (http://www.xml.com/pub/a/tools/ruwf/check.html) Vérifier la validité (2) 3. Utiliser le raccourci rxp-validate.bat : faire glisser-déplacer (drag-and-drop) avec le fichier XML sur ce raccourci (qui utilise RXP). Le programme s arrête à la première erreur trouvée (à la fin du document si correct) 4. Utiliser RXP en mode validation dans une fenêtre de commandes DOS. Syntaxe: H:\prive\xml\> rxp VV x livrea.xml Le programme s arrête aussi à la première erreur de validité trouvée. Lire le mode d emploi pour les options: rxp-manual.txt 65 66 11
Appliquer des feuilles de style XSLT Outils avancés XMLSpy, Treebeard = le font Internet Explorer, Netscape = versions récentes (appliquent la feuille de style indiquée au début du document XML) Sablotron (gratuit) Saxon (sur la disquette) Notre application : Saxon utiliser le raccourci convert-xx-yy.bat applique une feuille de style fixée (éditer le fichier.bat pour changer) glisser-déplacer le fichier à transformer le résultat reçoit l extension.html le visualiser Exercices (1) Se placer dans C: si possible Décomprimer l archive xml.zip depuis la disquette Vérifier qu un dossier C:\xml\ a été créé et l ouvrir 3 dossiers : easy, book, xces-documents Pour chaque dossier : (utiliser les outils décrits précédemment) visualiser les documents XML dans Internet Explorer et dans Wordpad vérifier la bonne formation de tous les fichiers XML grâce au raccourci rxp-wellformedness (glisser déplacer) et/ou à Internet Explorer 67 68 Exercices (2) (suite) vérifier la validité de tous les fichiers ( erreurs pour ceux qui n ont pas de DTD) visualiser les feuilles de style XSLT (*.xsl) convertir les fichiers XML en HTML avec les raccourcis convert fournis (glisser-déplacer) Pour la série easy corriger les fichiers marqués «two-mistakes» utiliser les différentes feuilles de style pour varier le format d affichage en HTML pouvez-vous créer un document XML valide et/ou une nouvelle feuille de style, en adaptant les fichiers existants? 69 12