Transformations XML : XPath et XSL-XSLT

Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique : http://creativecommons.org/licenses/by-nc-sa/4.0/fr/ Table des matières

I - Introduction à XSL-XSLT 4 1. Un langage pour publier les documents XML...... 4 2. Définition de XSL-XSLT ...... 4 3. Principe de XSL-XSLT...... 4 II - Programmation XSL-XSLT 6 1. L'arbre du document XML...... 6 2. Introduction à XPath...... 7 3. Syntaxe XPath ...... 8 4. Syntaxe générale XSL-XSLT ...... 10 5. Principales instructions XSLT ...... 11 6. Fonctionnement des programmes XSL-XSLT...... 12 7. Exemple : Un programme XSLT pour générer du HTML ...... 13 III - Introduction à HTML et XHTML 15 1. HTML ...... 15 2. XHTML ...... 15 3. Structure générale XHTML...... 16 4. Balises de base XHTML ...... 17 IV - oXygen XML Editor 18 1. Présentation de oXygen XML Editor ...... 18 2. Fichiers XML ...... 19 3. Schémas XML ...... 20 4. Transformations XSLT ...... 21 V - Compléments 25 1. XSLT et namespaces...... 25 2. Transformation identité ...... 26 3. Transformation substitution de namespace ...... 27 4. Approfondissement ...... 28

2 Stéphane Crozat Table des matières

VI - Exercices 29 1. Exercices XSLT ...... 29 1.1. Exercice : CV ...... 29 1.2. Exercice : Poème...... 30 1.3. Exercice : Glossaire II ...... 32 2. Quiz XSLT et XPath ...... 33 2.1. Exercice ...... 33 2.2. Exercice ...... 33 2.3. Exercice ...... 34 VII - Exercice : Devoir I 36 VIII - Exercice : Devoir II 37 Contenus annexes 38 Glossaire 52 Abréviations 53 Bibliographie 54 Webographie 55 Index 56

Stéphane Crozat 3 Introduction à XSL-XSLT I

1. Un langage pour publier les documents XML

XML lorsqu'il est utilisé pour définir des formats documentaire métier est un format de représentation de l'information, et non un format de publication (de présentation) de cette information : donc un tel fichier XML n'est pas utilisable tel que par un lecteur. XML ne peut donc être utilisé pour des langages abstrait que si l'on est capable de transformer les documents sources en document publiés lisibles grâce à un format de présentation : HTML par exemple dans le cas de publication Web, ou PDF pour l'impression.

2. Définition de XSL-XSLT

XSL-XSLT Définition

XSL-XSLT est une partie du standard W3C XSL qui a trait à la transformation des documents XML (l'autre partie étant XSL-FO). XSL-XSLT est un langage de programmation déclaratif écrit en XML (un programme XSL-XSLT est un document XML). XSL-XSLT est langage de manipulation de document XML (fondé sur XPath et sur le modèle arborescent de représentation des documents XML) XSl-XSLT est utilisé pour transformer un document XML source dans un autre format, typiquement HTML, mais aussi tout autre format codé sur des caractères dont la syntaxe est connue. XSL-XSLT est aussi utilisé pour faire des changements de schéma XML (export d'un XML vers un autre XML structuré différemment) par exemple pour échanger des données selon un standard.

XSL-XSLT, XSL-FO, XSLT, XSL, FO Remarque

On parle souvent (par simplification) de XSL ou de XSLT pour désigner XSL-XSLT et de FO pour désigner XSL-FO. XSL utilisé seul désigne donc par convention XSL-XST (et non XSL-FO).

3. Principe de XSL-XSLT

XSL-XSLT fonctionne selon le principe suivant : 1. Il prend en entrée un fichier XML bien formé 2. Il livre en sortie un fichier texte (XML, HTML ou texte sans balise)

4 Stéphane Crozat Introduction à XSL-XSLT

Algorithme L'algorithme général de XSL-XSLT est : 1. Il sélectionne (match) les éléments XML du fichier source. 2. Pour chaque élément reconnu il génère une sortie sur le fichier cible.

Structure : Notion de règle Un programme XSL-XSLT est composé d'une succession de règles. Chaque règle est indépendante des autres et à en charge de sélectionner un élément dans la source et d'effectuer une écriture dans la cible.

Application d'une règle XSL-XSLT Exemple

Sources : 1 2 3 4 5 Règle XSL-XSLT : 1 2 3 Résultat : 1

Stéphane Crozat 5 Programmation XSL-XSLT II

1. L'arbre du document XML

Il est possible de représenter un document XML sous forme d'arbre, tel que : L'arbre possède une racine / qui a comme fils l'élément racine l'élément racine est l'élément du document XML qui contient tous les autres chaque nœud a comme fils les éléments et le texte qu'il contient, ainsi que ses attributs.

Fichier XML Exemple

1 2 3 4 5 L'assurance de la responsabilité de voisinage 6 21/02/01 7 AEA 8 1.00 9 10 11 12 13 Cette garantie est appelée : recours des voisins et des tiers. 14 15 L'image suivante montre la 17 garantie. 18 19 20 21

Arbre XML Exemple

1 / 2 |document 3 |@modele = "ULCoursGeneral" 4 |@code = "BP-Incendie3_S1_E2_UL1" 5 |entete 6 |identification 7 |titre 8 |text() = "L'assurance de ..." 9 |date 10 |text() = "21/02/01" 11 |auteur 12 |text() = "AEA"

6 Stéphane Crozat Programmation XSL-XSLT

13 |version 14 |text() = "1.00" 15 |corps 16 |contenu 17 |paragraphe 18 |text() = "Cette garantie ..." 19 |remarque 20 |paragraphe 21 |text() = "L'image suivante" 22 |ressource 23 |@URIsrc = "img07.jpg" 24 |@titre = "Recours des voisins..." 25 |@type = "image" 26 |text() = "montre la garantie."

Ordre des nœuds Remarque

L'ensemble des nœuds de l'arbre d'un document est muni d'un ordre, qui est celui de l'ordre dans le document XML sérialisé.

2. Introduction à XPath

Voir aussi Rappel

L'arbre du document XML (cf. p.6)

Expression XPath Définition

XPath est un langage d'expressions permettant de pointer sur n'importe quel élément d'un arbre XML depuis n'importe quel autre élément de l'arbre. Une expression XPath peut-être absolue (sa résolution est indépendante d'un contexte ou nœud courant : elle commence dans ce cas par /. Une expression XPath peut-être relative (sa résolution est dépendante d'un contexte ou nœud courant : elle ne commence dans ce cas pas par /, elle peut commencer par ./ (syntaxe développée).

Fondamental

Une expression XPath renvoie un node-set, ou ensemble de nœuds, c'est à dire un sous-arbre de l'arbre du document une chaîne de caractères un booléen un réel

Exemples d'expressions XPath Exemple

1 /document/entete/identification/titre 2 /document/@modele 3 corps//contenu 4 contenu/* 5 contenu/remarque[1] 6 ../paragraphe

Stéphane Crozat 7 Programmation XSL-XSLT

7 @type

Types de nœuds XPath Complément

root nodes element nodes text nodes attribute nodes namespace nodes processing instruction nodes comment nodes http://www.w3.org/TR/xpath/#data-model

Complément

Pour une introduction à XPath : Brillant07∗ pp.123-129

Voir aussi Complément

Syntaxe XPath (cf. p.8)

3. Syntaxe XPath

Pas de localisation Définition

Une expression XPath est composée de plusieurs pas de localisation successifs séparés par des /. Un pas de localisation est caractérisé par : un axe, un test de nœud, un prédicat (éventuellement aucun ou plusieurs).

Expression XPath Syntaxe

1 pas-de-localisation-1/.../pas-de-localisation-N

Pas de localisation Syntaxe

1 axe::test-de-nœud[prédicat]

Axes et tests de nœuds Syntaxe

/ : sélectionne la racine (expression absolue) . : sélectionne le nœud courant (expression relative) child::x ou x ou ./x : sélectionne les éléments fils "x" child::x/child::y ou ./x/y ou x/y : sélectionne les éléments y fils de l'élément fils x (petits fils)

8 Stéphane Crozat Programmation XSL-XSLT

attribute::a ou ./@a ou @a : sélectionne l'attribut "a" du nœud courant child::* ou ./* ou * : sélectionne tous les éléments fils attribute::* ou ./*@ ou *@: sélectionne tous les attributs child::text() ou ./text() ou text() : sélectionne les nœuds de type texte parent::x ou ../x : sélectionne le père "x" (ancestor::x sélectionne les ancêtres "x") descendant::x ou .//x : sélectionne tous les descendants "x" (enfants, petits enfants, etc.) preceding::x, following::x : sélectionne les nœuds précédents ou suivants dans le document (ordre), à l'exclusion des ancêtres (et des attributs) preceding-sibling::x, following-sibling::x : similaire à preceding et following, mais pour les nœuds de même niveau uniquement ("fratrie")

* , @*, text() Attention

* sélectionne les nœuds de type élément, mais pas les attributs (sélectionnés par @*), ni les nœuds de type texte sélectionnés par text().

Axes Complément

Pour bien visualiser le fonctionnement des axes, voir XML : Cours et exercices∗, p.124 (Figures 5-1 et 5- 2). Carré rouge : Le point de départ Carré gris numéroté : Nœud sélectionné (avec son ordre de sélection) Carré gris non numéroté ; Nœud non sélectionné

Illustration des axes XPath (Brillant 07)

Prédicats Exemple

x[1], x[2], etc. : sélectionne le premier x, le second x, etc. x[last()] : sélectionne le dernier x

Stéphane Crozat 9 Programmation XSL-XSLT

x[@a='valeur'] : sélectionne les x tels que leur attribut a est égal à "valeur" x[y=1] : sélectionne les x tels qu'ils ont un élément fils y égal à 1 x[@a='v1' and @b='v2'] : sélectionne tous les x tels que leurs attributs a et b sont respectivement égaux à v1 et v2 x[y or z] : sélectionne tous les x tels qu'ils possède un élément fils y ou z

Union Exemple

Il est possible d'unifier deux expressions XPath en utilisant | : x | y : sélectionne les éléments x et les éléments y x[y] | x[z] : sélectionne les éléments x tels qu'ils contiennent un y ou un z (équivalent ici à x[y or z])

current() Complément

La fonction current() permet de renvoyer le nœud courant dans le contexte d'une exécution XSLT. Cela permet de différencier : elem1[@att1=@att2] : Les elem1 qui ont deux attributs att1 et att2 égaux et elem1[@att1=current()/@att2] : Les elem1 qui ont un attribut att1 égal à l'attribut att2 du nœud courant

Liste des fonctions XPath Complément

http://fr.selfhtml.org/xml/representation/fonctionsxpath.htm

4. Syntaxe générale XSL-XSLT

Structure générale d'un programme XSl-XSLT Syntaxe

1 2 3 4 5 ... 6 7 8 ... 9 10 ... 11

Règle (template) Syntaxe

1 2 Instruction XSLT et/ou génération de texte sur la sortie 3

10 Stéphane Crozat Programmation XSL-XSLT

5. Principales instructions XSLT

Les deux instructions de base Fondamental

: Relance les règles du programme sur le sous-arbre pointé par le select (fondement de la récursivité) : Génère le texte contenu dans le nœud ou attribut pointé par le select {XPATH} : Génère le texte contenu dans le nœud ou attribut pointé par le XPath entre accolades (alternative à xsl:value-of à utiliser dans la génération d'attributs exclusivement, par exemple :

Autres instructions courantes : Génère le sous-arbre pointé par le select ... : Ne s'exécute que si test est vrai ... : Exécute pour chaque sous-arbre renvoyé par le select

Extension XPath "document()" Complément

document(chemin-accès) où chemin d'accès permet d'accéder à un fichier sur le disque. Par exemple : document("c:\monfichier.xml")//x : Tous les éléments x présents dans le fichier monfichier.xml. document(child::source)/* : La racine du document XML pointé par l'expression XPath child::source.

Déclaration explicite sur la cible Complément

contenu valeur chaîne de caractère

Référence Complément

http://fr.selfhtml.org/xml/representation/elementsxslt.htm

Références synthétiques Complément

https://developer.mozilla.org/fr/XSLT/Éléments1 http://www.daniel-lemire.com/inf6450/mod3/xsltenbref.xhtml http://personnel.univ-reunion.fr/fred/Enseignement/XML/intro-.

1 https://developer.mozilla.org/fr/XSLT/%C3%89l%C3%A9ments

Stéphane Crozat 11 Programmation XSL-XSLT

6. Fonctionnement des programmes XSL-XSLT

La récursivité 1 2 ... 3 4 ... 5 6 7 ... 8 9 ... 10 11 12 ... 13 14 ... 15

Règles par défaut XSLT comporte trois règles par défaut qui sont appliquées quand aucune règle du programme n'est sélectionnée. 1. La première règle s'applique à la racine et à tous les éléments et déclenche un appel récursif sur tous les fils du nœud courant : 2. La deuxième règle s'applique aux nœuds texte et aux attributs et insère le résultat textuel de ces nœuds dans le document résultat : 3. La troisième règle s'applique aux commentaires et aux instructions de traitement et les ignore :

Le programme XSLT minimal Exemple

1 2

Attention

Il faut donc prendre garde aux règles par défaut, sources d'effets de bord.

Conseil

Veiller à bien traiter tous les cas.

Méthode

Court-circuiter les règles par défaut, en générant des messages d'erreurs sur la sortie.

12 Stéphane Crozat Programmation XSL-XSLT

Mode, priorité, règles nommées Complément

priority : permet de surcharger les règles de priorité par défaut mode : permet de définir plusieurs règles pour une même prémisse et de choisir explicitement celle que l'on veut au moment de l'appel name : permet de définir des templates nommés, qui sont appelés explicitement (comme des fonctions) par l'instruction et non plus seulement par le moteur de récursivité.

Priorité entre les règles Complément

Si un attribut priority est défini sur la règle, la règle est prioritaire, l'attribut le plus élevé est prioritaire sur le moins élevé. Sinon, c'est celle dont le XPath est le plus spécifique d'abord (expression d'un axe, d'un prédicat) Exemple : http://www.zvon.org/xxl/XSLTutorial/Output_fre/example69_ch2.html

7. Exemple : Un programme XSLT pour générer du HTML

Fichier XML source Exemple

1 2 3 4 5

6 XML est un format de représentation de l'information. 7 XML n'est pas un format de présentation. 8
9 10 11
12 XSLT est un langage de manipulation de documents XML. 13 XSLT est utilisé pour exporter une source XML sous un autre format, par exemple HTML. 14
15

Fichier HTML cible souhaité Exemple

1 2 3 XSLT 4 5 6 7

XSLT : Un besoin

8

XML est un format de représentation de l'information.

9

XML n'est pas un format de présentation.

10

XSLT : Un langage

11

XSLT est un langage de manipulation de documents XML.

12

XSLT est utilisé pour exporter une source XML sous un autre format, par exemple HTML

Stéphane Crozat 13 Programmation XSL-XSLT

13 14

Programme XSLT permettant la transformation Exemple

1 2 3 4 5 6 7 8 9 <xsl:value-of select="@titre"/> 10 11 12 13 14 15 16 17 18 19 20

21 22 23 24 25 26

27
28 29 30 31 32 33

14 Stéphane Crozat Introduction à HTML et XHTML III

Objectifs Savoir écrire une page simple en HTML Savoir créer des formulaires en HTML

1. HTML

HTML Définition

HTML∗ est un langage inventé à partir de 1989 pour coder des pages de contenu sur le Web. Il est standardisé par le W3C∗.

Langage à balises Définition

HTML est un langage à balises : il se fonde sur le mélange entre du contenu et des balises permettant de caractériser ce contenu. HTML utilise le formalisme SGML∗ pour définir les balises et combinaisons de balises autorisées.

Extrait de code HTML Exemple

1

Ceci est un contenu, caractérisé par des balises

Les balises p et b ont une signification dans le langage HTML : Créer un paragraphe et mettre en gras.

HTML5 Remarque

La version courante de HTML et la version 4.01 de 1999. Le HTML5 en cours de spécification est déjà dans un état avancé de spécification et d'implémentation, il peut d'ors et déjà être employé et est prévu pour 2014.

2. XHTML

XHTML Définition

XHTML est une réécriture du HTML : tandis que HTML est fondé sur SGML, XHTML est fondé sur XML, plus récent et plus rigoureux. XHTML et HTML ne présentent pas de différence fonctionnelle, uniquement des différences syntaxiques.

Comparaison XHTML et HTML Exemple

1

  • Ceci est un extrait de contenu HTML 1
    • Ceci est un extrait de contenu XHTML

    Stéphane Crozat 15 Introduction à HTML et XHTML

    Dans le cas du HTML les balises fermantes sont optionnelles, en XHTML c'est obligatoire. Les deux exemples sont donc équivalents, mais dans l'exemple HTML, il existait en fait plusieurs interprétations possibles, par exemple :

    • Ceci est un extrait de contenu
    XHTML

    XHTML5 Remarque

    La version actuelle de XHTML est la version 1, correspondant à HTML4. XHTML5 est le pendant de HTML5.

    Complément

    Définition du XML (cf. p.38) Historique : de SGML à XML (cf. p.48) Discussion : HTML et XML (cf. p.48)

    3. Structure générale XHTML

    Structure générale Syntaxe

    1 2 ... 3 ... 4

    Entête Syntaxe

    1 2 3 ... 4 5 6 ... 7

    Corps Syntaxe

    1 2 3 ... 4 5 6 7

    ...

    8

    ...

    9

    ...

    10 11

    Complément

    developer.mozilla.org : Les bases du HTMLL1

    1 https://developer.mozilla.org/fr/docs/Apprendre/Commencer_avec_le_web/Les_bases_HTML

    16 Stéphane Crozat Introduction à HTML et XHTML

    4. Balises de base XHTML

    Syntaxe

    1

    Un paragraphe de texte

    2

    Paragraphe contenant du texte, mot gras ou italique.

    3

    Un lien vers une autre page

    4 5

    Titre de niveau 1

    6

    Titre de niveau 2

    7

    Titre de niveau 3

    8 9 10 11 12
    Titre colonne 1 Titre colonne 2 ...
    Ligne 1 colonne 1Ligne 1 colonne 2...
    Ligne 2 colonne 1Ligne 2 colonne 2...
    13
      14
    • Item de liste à puce
    • 15
    • Item de liste à puce
    • 16
    17
      18
    1. Item de liste à ordonnée
    2. 19
    3. Item de liste à ordonnée
    4. 20

    Complément

    Pour une description des balises de base : Brillant07, pp108-112∗.

    Complément

    Introduction à CSS (cf. p.49)

    Stéphane Crozat 17 oXygen XML Editor IV

    Ceci est un petit recueil de notes pour la prise en main de l'environnement de développement oXygen XML Editor.

    1. Présentation de oXygen XML Editor

    Oxygen XML Editor est un environnement de développement XML. Il permet notamment de créer des documents XML bien formés, créer des schémas et valider des documents XML créer des transformations XSLT et les exécuter sur des documents XML Toutes ces fonctions sont disponibles à partir du menu : Document > Document XML. Il permet également de tester des expressions XPath sur un document XML ouvert dans l'éditeur.

    Installation Il peut être téléchargé ici : http://www.oxygenxml.com1 et il est possible de bénéficier d'une licence d'essai de 30 jours. Les anciennes versions d'Oxygen peuvent être téléchargées à l'adresse : http://www.oxygenxml.com/so ware_archive_editor.html

    1 http://www.oxygenxml.com/

    18 Stéphane Crozat oXygen XML Editor

    Interface

    Menu File pour créer des fichiers XML, des schémas (DTD, RNG, XSD) ou des transformations XSLT. Menu Document pour vérifier qu'un document est bien formé, le valider, le transformer. Icône pour valider ou vérifier que le document est bien formé. Icône pour exécuter les transformations.

    Zone de saisie et test des XPath :

    Complément

    Fichiers XML (cf. p.19) Schémas XML (cf. p.20) Transformations XSLT (cf. p.21)

    2. Fichiers XML

    Indenter un document XML Méthode

    Document > Document XML > Indenter le document CTRL+MAJ+P

    Stéphane Crozat 19 oXygen XML Editor

    Contrôler qu'un document est bien formé Méthode

    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 .

    3. Schémas XML

    Associer un schéma à un fichier XML Méthode

    Pour une DTD (ajouter avant l'élément racine) : Pour un schéma RelaxNG (ajouter avant l'élément racine) : (ou ) Pour un W3C Schema (ajouter à l'élément racine) :

    Contrôler qu'un document est valide Méthode

    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 .

    Validation dynamique Remarque

    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.

    Autre méthode pour déclarer un schéma Complément

    Document > Document XML > Associer un schéma Icône :

    20 Stéphane Crozat oXygen XML Editor

    4. Transformations XSLT

    Associer une transformation XSLT à un fichier XML Méthode

    Pour associer une XSLT à un fichier XML : 1. Ajouter la ligne standard avant l'élément racine :

    Exemple de déclaration XSLT standard Exemple

    Déclaration XSLT standard

    Exécuter une transformation Méthode

    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.

    Stéphane Crozat 21 oXygen XML Editor

    Exemple de transformation Exemple

    Transformation

    Récupérer un résultat de transformation Méthode

    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

    Déclarer et exécuter un scénario de transformation XSLT Complément

    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

    22 Stéphane Crozat oXygen XML Editor

    Puis : 1. Cliquer sur Nouveau 2. Donner un nom au scénario

    3. Sélectionner le fichier XSLT sur le disque dur

    4. Cliquer sur Accepter 5. 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

    Stéphane Crozat 23 oXygen XML Editor

    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 ( ).

    Tester une expression XPath Complément

    Exécution d'expression XPath dans l'éditeur Oxygen

    24 Stéphane Crozat Compléments V

    1. XSLT et namespaces

    Le problème Exemple

    Soit le fichier XML et un programme XSLT associé. La transformation ne fonctionne pas comme prévue, car la règle essaye de matcher document, alors que le nom développé est document.fr:document. 1 2 3 Mon texte 4 1 2 3 4

    5 6 7

    XSL 1.0 Syntaxe

    En XSLT 1.0, il faut matcher le nom des éléments en utilisant explicitement les namespaces : 1. Il faut déclarer l'espace de nom dans la feuille XSLT Exemple : 2. Il faut que les noms d'éléments soient préfixés Exemple :

    Solution en XSLT 1.0 Exemple

    1 2 3 4 5

    6 7 8

    Stéphane Crozat 25 Compléments

    Solution en XSLT 1.0 avec namespace cible Exemple

    1 2 3 4 5 6

    7 8 9 10

    XSLT 2.0 Syntaxe

    En XSLT 2.0, l'attribut -default-namespace permet de spécifier le namespace par défaut d'une XSLT et évite ainsi de préfixer tous les éléments : .

    Solution en XSLT 2.0 avec namespace cible Exemple

    1 2 4 5 6 7

    8 9 10 11

    Rappel

    Namespace (cf. p.50)

    2. Transformation identité

    Identité Définition

    Une transformation identité est une transformation qui délivre en sortie le même fichier XML qu'entrée.

    Exemple

    1 2 3 4 5 6 7

    26 Stéphane Crozat Compléments

    8

    Méthode

    L'avantage de la transformation identité est qu'elle peut servir de base pour des modifications partielles de document XML. Il est en effet possible de lui ajouter des règles pour traiter spécifiquement certains éléments, sans modifier les autres.

    node() Complément

    La fonction XPath node() doit en principe renvoyer tous les nœuds d'un élément selon le standard. Mais il est fréquent que les parseurs ne renvoient pas les attributs. D'où la nécessité de matcher node()|@* pour avoir tous les nœuds.

    3. Transformation substitution de namespace

    Substitution de namespace Définition

    Une substitution de namespace est une transformation qui substitue un namespace par un autre.

    Exemple

    1 2 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

    Version avec XSLT 2.0 et préfixe de namespace par défaut Exemple

    1 2

    Stéphane Crozat 27 Compléments

    7 > 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

    local-name() Complément

    La fonction XPath local-name() renvoie le nom d'un élément privé de son namespace.

    4. Approfondissement

    Standards Complément

    http://www.w3.org/TR/xslt http://www.w3.org/TR/xpath/

    Cours détaillés Complément

    [cf. W3C Xpath] [cf. W3C XSL-XSLT]

    Références rapides Complément

    http://www.mulberrytech.com/quickref/XSLT_1quickref-v2.pdf XML précis & concis∗

    Ouvrage détaillé Complément

    XML et les bases de données∗, chapitre 8.

    Tutoriel Complément

    http://www.zvon.org/xxl/XSLTutorial/Output_fre/contents.html

    28 Stéphane Crozat Exercices VI

    1. Exercices XSLT

    1.1. Exercice : CV Un schéma de CV Soit le schéma XML suivant (formalisme DTD) : 1 2 3 4 5 6 7 Question 1 Écrire un document XML valide par rapport à ce schéma avec au moins un élément age et deux rubriques. Indice : 1 2 ... 3 ... 4 5 ... 6 7 8 ... 9 10 Question 2 Écrire un document HTML cible d'une transformation XSLT de ce document. Les nom, prénom et age seront en italique, les titres de rubriques seront en gras. Indice : 1 2 3 ... 4 5 6

    ...

    7

    ...

    8

    ...

    9

    ...

    10

    ...

    11 ... 12 13

    Stéphane Crozat 29 Exercices

    Question 3 Écrire le programme de transformation XSLT d'un fichier XML en fichier HTML. Indice : 1 2 3 4 5 6 CV de <xsl:value-of select="..."/> <xsl:value-of select="..."/> 7 8 9 10 11 12 13 14

    ...

    15 16 ... 17 18 ... 19 20 21 ... 22 23 ... 24 1.2. Exercice : Poème Soit l'extrait de poème suivant écrit en XML : 1 2 3 Troll sat alone on his seat of stone, 4 And munched and mumbled a bare old bone; 5 For many a year he had gnawed it near, 6 For meat was hard to come by. 7 Done by! Gum by! 8 In a cave in the hills he dwelt alone, 9 And meat was hard to come by. 10 11 12 Up came Tom with his big boots on. 13 Said he to Troll: 'Pray, what is yon? 14 For it looks like the shin o' my nuncle Tim. 15 As should be a-lyin' in the graveyard. 16 Caveyard! Paveyard! 17 This many a year has Tim been gone, 18 And I thought he were lyin' in the graveyard. 19 20 Question 1 Écrire un programme XSL-XSLT permettant de le transformer selon le format HTML suivant : 1 2 3 The Stone Troll (JRR Tolkien) 4 5

    30 Stéphane Crozat Exercices

    6

    Troll sat alone on his seat of stone,

    7

    And munched and mumbled a bare old bone;

    8

    For many a year he had gnawed it near,

    9

    For meat was hard to come by.

    10

    Done by! Gum by!

    11

    In a cave in the hills he dwelt alone,

    12

    And meat was hard to come by.

    13
    14

    Up came Tom with his big boots on.

    15

    Said he to Troll: 'Pray, what is yon?

    16

    For it looks like the shin o' my nuncle Tim.

    17

    As should be a-lyin' in the graveyard.

    18

    Caveyard! Paveyard!

    19

    This many a year has Tim been gone,

    20

    And I thought he were lyin' in the graveyard.

    21 22 Indice : 1 2 3 4 5 6 ... 7 8 9 10 11 12 13 14 15 ... 16 17 18 ...... 19 20 ... 21 Indice : Pour gérer l'absence de
    sur la dernière strophe, ajouter une règle qui sélectionne strophe[last()]. Question 2 Après avoir rappelé que l'ordre des règles n'est pas signifiant en XSLT, expliquer pourquoi, d'après les règles de priorité implicite, strophe[last()] sera toujours prioritaire sur strophe. Question 3 En utilisant la fonction XPath position(), proposer une transformation qui affiche une strophe sur deux en italique. Vous mettrez en place des règles de priorité explicite.

    Stéphane Crozat 31 Exercices

    1.3. Exercice : Glossaire II Soit le schéma RelaxNG suivant permettant de représenter un glossaire. 1 2 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Question 1 Expliquer ce qu'exprime les datatypes ID et REFID. Préciser le format que doit respecter un attribut ou un élément de type ID. Question 2 Instancier un document de type glossaire, sur une thématique au choix. Question 3 Réaliser un programme XSLT permettant de publier les documents de type glossaire en HTML. Indice : Utiliser les ancres en HTML pour gérer les "voir aussi" (on se limitera pour le moment à utiliser l'id comme texte de l'ancre). Question 4 Ajouter un sommaire au début du fichier HTML, permettant de pointer chaque définition. Proposer deux implémentations une avec xsl:template mode="..." et une avec xsl:for- each. Trier les définitions par ordre alphabétique. Indice : Pour trier les termes par ordre alphabétique utiliser xsl:sort. 1 2 3 ... 1 2 3

    32 Stéphane Crozat Exercices

    Question 5 Pour les "voir aussi", afficher le terme de la définition plutôt que l'id. Indice : Utiliser la fonction XPath current().

    2. Quiz XSLT et XPath

    2.1. Exercice Soit le fichier XML ci-après. Le nœud courant est un des éléments terme, écrivez 4 expressions XPath différentes permettant de renvoyer le titre du document : 1. Sachant que titre est unique dans tout le document. 2. Sachant que titre est le fils de l'élément racine papier. 3. Sachant que titre est le fils du père du père du nœud courant. 4. Sachant que titre est avant le nœud courant dans l'ordre du document. 1 2 3 Réinterroger les structures documentaires 4 De la numérisation à l'informatisation 5 Stéphane Crozat 6 Bruno Bachimont 7 Nous proposons dans cet article d'aborder ... 8 In this paper we define... 9 10 Ingénierie des connaissances 11 XML 12 Document 13 14 15 Knowledge engineering 16 XML 17 Document 18 19 20 21 22 1. // 2. / 3. .. 4. preceding 2.2. Exercice Écrire le programme XSLT permettant de transformer le fichier file.xml en result.xhtml. 1 2 3 Lorem ipsum dolor sit amet. 4 Consectetur adipiscing elit. 5 Nunc eu lectus in diam. 6

    Stéphane Crozat 33 Exercices

    1 2 3 4

    Lorem ipsum dolor sit amet.

    5

    Consectetur adipiscing elit.

    6

    Nunc eu lectus in diam.

    7 8 < > < > < > < >< > 2.3. Exercice Soit le fichier XML ci-après. 1 2 3 Réinterroger les structures documentaires 4 De la numérisation à l'informatisation 5 Stéphane Crozat 6 Bruno Bachimont 7 Nous proposons dans cet article d'aborder ... 8 In this paper we define... 9 10 Ingénierie des connaissances 11 XML 12 Document 13 14 15 Knowledge engineering 16 XML 17 Document 18 19 20 21 22

    34 Stéphane Crozat Exercices

    Compléter le fichier XSLT transf.xsl afin de générer, pour chaque élément terme, une instruction SQL d'insertion dans une table relationnelle de schéma : tMotsCles (terme, titre, url) (où terme est le terme sélectionné, titre est le titre du document et url est l'adresse de la ressource associée). Pour rappel, la syntaxe d'insertion de données dans une table relationnelle en SQL : INSERT INTO () VALUES (). (terme, titre, url) ( '', '', '' );

    Stéphane Crozat 35 Exercice : Devoir I VII

    Proposez un programme XSLT permettant de transformer un CV respectant la DTD élaborée en groupe en HTML. Publiez votre résultat sur le canal XSLT CV de Mattermost. Testez le programme d'un autre participant.

    36 Stéphane Crozat Exercice : Devoir II VIII

    À partir du module complémentaire Langages XML pour l'ingénierie documentaire et/ou des contributions d'étudiants ci-après et/ou de vos propres recherches, proposez un export des CV vers un autre format, par exemple : DITA Docbook LaTeX Markdown Atom RSS JSON EPUB ... Publiez votre résultat sur le canal XSLT CV de Mattermost. Testez le programme d'un autre participant.

    Contributions d'étudiants https://stph.scenari-community.org/contribs Sections concernées : Formats orientés document Formats de publication

    Langages XML pour l'ingénierie documentaire https://stph.scenari-community.org/doc/lan

    Stéphane Crozat 37 Contenus annexes

    1. Définition du XML

    XML Définition

    L'eXtensible Markup Language XML∗ est un méta-langage permettant de définir des langages à balises. Il standardisé comme une recommandation par le W3C∗ depuis 1998.

    Exemple

    LaTeX et HTML sont des langages à balises (mais ce ne sont pas des langages XML) XHTML est un langage XML

    Fondamental

    En tant que méta-langage XML sert à définir des formats informatiques, c'est à dire des façons de représenter de l'information. Les bonnes caractéristiques d'XML - non-ambiguïté, lisibilité, passivité - en font un très bon candidat pour de très nombreux usages, il est donc utilisé dans des secteurs très variés de l'informatique. On distingue généralement deux grandes catégories d'utilisation : les langages orientés données et les langages orientés documents.

    Versions de XML Complément

    La version historique de XML est la version 1.0, qui reste aujourd'hui la plus largement utilisée. Il existe également une version 1.1 de XML, qui propose des différences mineures et nécessaires uniquement dans des contextes particuliers. Cette nouvelle version a été nécessaire pour des raisons de compatibilité des outils existants. Les évolutions principales de XML 1.1 sont de nouveaux caractères permis pour les noms d'éléments (pour suivre l'évolution d'Unicode depuis 1998), de nouvelles conventions pour les caractères de fin de ligne (pour la compatibilité avec des ordinateurs main frame) et de nouveaux caractères de contrôle dans le contenu.

    Voir aussi Complément

    XML : Un langage à balise (cf. p.39) XML : un méta-langage (cf. p.40) Langages XML orientés données (cf. p.40) Langages XML orientés documents (cf. p.41) Caractéristiques recherchées pour un format XML (cf. p.47)

    38 Stéphane Crozat Contenus annexes

    2. XML : un langage à balise

    Langage à balises Définition

    Une balise est un descripteur ajouté au contenu en vue d'un traitement informatique. Un langage à balises est un langage permettant d'associer à un contenu (généralement du texte) des balises explicites (par exemple pour rendre compte de la structure du texte).

    Balises Lambda Exemple

    1 2 3

    Thisisanexample

    4 5 Ici le texte est "This is an example", il est balisé afin d'ajouter les informations suivantes : c'est est un paragraphe (balise p) du corps (balise body) d'un document Lambda (balise lambda).

    Voir aussi Complément

    Balises et poignées de calcul (cf. p.39)

    3. Balises et poignées de calcul

    L'ingénierie documentaire met à profit deux thèses complémentaires : le contenu est numérisé dans sa forme signifiante : il est manipulable par la machine mais indépendamment du sa signification qui lui reste inaccessible ; le contenu est enrichi par des balises qui sont connues syntaxiquement et sémantiquement par la machine ; elle sait quoi en faire.

    Fondamental

    Le principe du balisage consiste à enrichir un contenu numérisé (dans sa forme sémiotique), sans l'altérer, pour lui ajouter des poignées qui vont être manipulables par l'ordinateur (logiquement).

    Remarque

    Le contenu est donc interprétable par l'homme et la machine, chacun via ce qui lui est destiné : l'humain interprète le contenu signifiant numérisé ; la machine interprète les balises ;

    XML Exemple

    XML est une illustration de ce principe, puisque l'on va coupler une information sémiotique (texte, image, etc.) destinée à l'interprétation humaine, avec un ensemble de balises qui permettent de décrire formellement une structure documentaire qui sera alors manipulable par le calcul.

    Stéphane Crozat 39 Contenus annexes

    4. XML : un méta-langage

    Méta-langage Définition

    Un méta-langage est un langage permettant de définir d'autres langages, les langages ainsi définis permettent à leur tour la description d'informations respectant ces langages.

    Langage Lambda Exemple

    Si l'on désire définir informatiquement un langage Lambda, en posant qu'il contient un élément de type body qui lui même contient des éléments de type p, il faut spécifier les contraintes de ce langage grâce à un méta-langage permettant donc de définir : Le vocabulaire : lambda, body, p La grammaire : lambda contient exactement un body qui contient un ou plusieurs p XML en tant que méta-langage ne contient pas les mots du langage Lambda, en revanche il dispose des mécaniques permettant de les définir.

    Notion de schéma Définition

    La définition d'un langage XML particulier se fait grâce à un schéma qui permet de lister les mots du langage (vocabulaire) et de définir leur utilisation (grammaire). On parle également de format.

    Schéma Lambda Exemple

    1 2 3 Ce code exprime formellement (avec la syntaxe DTD) le langage, ou format, Lambda.

    5. Langages XML orientés données

    Définition

    Ils permettent d'enregistrer et de transporter des données informatiques structurées (comme par exemple des données gérées par des bases de données) selon des formats ouvert (c'est à dire dont on connaît la syntaxe) et facile à manipuler (les structures arborescentes XML étant plus riches que des fichiers à plat par exemple). Les langages XML orientées données servent surtout à l'échange ou la sérialisation∗ des données des programmes informatiques.

    Remarque

    L'utilisation d'XML est en fait ici assez accessoire, d'autres formalismes s'y substituent sans difficulté, souvent moins explicites pour la manipulation humaine et souvent plus performant pour la manipulation informatique : CSV, JSON, ... (voir par exemple : http://www.xul.fr/ajax-format-json.html pour une comparaison JSON / XML).

    40 Stéphane Crozat Contenus annexes

    Format verbeux Remarque

    XML est en général plus verbeux que ses alternatives (il contient plus de caractères), c'est pourquoi il est plus explicite pour un humain (ce qui n'est pas toujours utile), et moins performant informatiquement (ce qui n'est pas toujours un problème).

    Formats XML orientés données standards Exemple

    MathML, ChemML, ... ATOM, RSS Dublin Core RDF, OWL SVG ...

    Formats XML orientés données locaux Exemple

    XML est utilisé pour de nombreux langages orientés données locaux, en fait chaque fois qu'un format XML est défini pour les besoins spécifique d'un programme. 1 2 5 3 19 4

    Langages XML de programmation Complément

    Le formalisme XML est également utilisé pour définir des langages de programmation, à l'instar du C ou du Java. Les langages de programmation écrits en XML sont généralement à vocation déclarative et adressent le plus souvent des traitements eux mêmes liés à XML. XSL-XSLT est un exemple de langage de programmation écrit en XML. On peut également citer par exemple le langage de script ANT (http://ant.apache.org/) ou XUL pour la réalisation d'IHM (http://ww w.xul.fr/)

    6. Langages XML orientés documents

    Définition

    Ils permettent de représenter informatiquement des documents numériques. Les formats de documents faisant appel à des représentations fortement arborescentes, XML est un candidat idéal pour cet usage. En fait SGML, l'ancêtre de XML, a été inventé pour l'informatique documentaire. Aujourd'hui la très grande majorité des formats de représentation de document sont en XML.

    Langages XML orienté documents formatés Définition

    Ils définissent des formats de mise en forme de document (structure physique), en général pour un support donné.

    Stéphane Crozat 41 Contenus annexes

    Langages XML orientés documents formatés Exemple

    XHTML XSL-FO SMIL OpenDocument OOXML ...

    Langages XML orientés documents structurés Définition

    Ils définissent des formats de structuration de document (structure logique), en général pour un métier donné, plus ou moins précis selon la généralité du langage.

    Langages XML orientés documents structurés Exemple

    DocBook TEI DITA ...

    Format local orienté document structuré Exemple

    1 2 3 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque sit amet libero ac mauris egestas venenatis nec vitae sapien. 4 Donec a lectus sed augue pellentesque accumsan eu ac justo. Etiam est urna, sagittis ac cursus nec, placerat quis velit. 5

    Voir aussi Complément

    Documents structurés et documents formatés (cf. p.42)

    7. Documents structurés et documents formatés

    Document formaté Définition

    On appelle document formaté un document dont le fichier informatique source décrit la façon de le mettre en forme. C'est la façon la plus courante de traiter avec les documents informatiques, telle qu'elle est mise en œuvre dans les traitements de texte ou sur le Web avec HTML. Un document formaté nécessite un logiciel capable d'en interpréter le format pour permettre de le lire. XML est un excellent candidat à la sérialisation∗ de documents formatés.

    42 Stéphane Crozat Contenus annexes

    Document formaté (format OpenDocument : extrait simplifié ) Exemple

    1 2 3 6 9 13 17 20 21 22 23

    As We May Think

    24

    25 By Vannevar Bush 26

    27

    As Director of the Office of Scientific Research and Development, Dr. 28 Vannevar Bush ...

    29

    This has not been a scientist's war ...

    30

    1

    31

    Of what lasting benefit has been man's use of science ...

    32

    2

    33

    A record if it is to be useful to science ...

    34 35 36

    Visualisation dans OpenOffice.org Writer de l'extrait de l'article "As We May Think"

    Stéphane Crozat 43 Contenus annexes

    Notion de documents structurés Définition

    On appelle document structuré un document dont la structure logique est décrite plutôt que la mise en forme physique (Structured documents∗, p.7). Après SGML qui avait été inventé pour cela, XML est aujourd'hui le candidat quasi-unique pour la réalisation de documents structurés.

    Document structuré (format DocBook, légèrement simplifiée) Exemple

    1

    2 3 As we may think 4 5 Vannevar Bush 6 7 8 9 As Director of the Office of Scientific Research and Development, Dr. Vannevar Bush 10 ... 11 12 This has not been a scientist's war ... 13 14 Of what lasting benefit has been man's use of science ... 15 16 17 A record if it is to be useful to science ... 18 19

    Transformation des documents structurés Définition

    Un document structuré n'est pas destiné à être directement utilisé pour la lecture humaine, il doit être d'abord transformé dans un document formaté pour être utilisé (visualisé, imprimé, ...).

    Processus de transformation d'un document structuré en document formaté

    44 Stéphane Crozat Contenus annexes

    Chaîne XML complète Remarque

    La technologie XML peut en fait être utilisée tout au long de la chaîne : Langage XML orienté document structuré en amont (DocBook, DITA, TEI, langage local, ...) Langage XML de programmation pour la transformation (XSL-XSLT) Langage XML orienté document formaté pour l'aval (OpenDocument, XHTML, ...)

    Voir aussi Complément

    La structuration logique (cf. p.45) Exemple de structuration logique (cf. p.46) Architecture des chaînes éditoriales XML (cf. p.47) Un langage pour publier les documents XML (cf. p.4) Définition de XSL-XSLT (cf. p.4)

    Bibliographie Complément

    Technologie de la GED∗ : Structure logique et structure physique (pp58-61)

    8. La structuration logique

    Un document peut être décrit comme une collection d'objets comportant des objets de « plus haut niveau composés d'objets plus primitifs. Les relations entre ces objets représentent les relations logiques entre les composants du document. Par exemple [...] un livre est divisé en chapitres, chaque chapitre en sections, sous-sections, paragraphes, etc. Une telle organisation documentaire est appelée représentation de document structuré. (traduit depuis la préface de Structured documents∗) » Structuration logique Définition

    On appelle structuration logique d'un contenu une inscription explicitant la structure de ce contenu en fonction de son organisation et des attributs intrinsèques qui le caractérisent et non en fonction de propriétés de présentation sur un support.

    Document abstrait Définition

    Un document décrit par sa structure logique est appelé document abstrait, on parle aussi de document structuré.

    Structuration physique Définition

    On appelle structuration physique ou mise en forme d'un contenu une inscription décrivant la façon dont ce contenu doit être présenté sur un support donné.

    Document formaté Définition

    Un document décrit par sa structure physique est appelé document formaté, c'est en général également ce dont on parle quand on parle simplement de document.

    Stéphane Crozat 45 Contenus annexes

    Remarque

    Il est possible de calculer une ou plusieurs structurations physiques pour une même structuration logique. Il est possible de calculer d'autant plus de structurations physiques que la structuration logique est indépendante de ses supports de présentation.

    Remarque

    La structuration logique est associée au fond du contenu, tandis que la structuration physique est associée à sa forme sur un support.

    Voir aussi Complément

    Langages XML orienté documents (cf. p.41)

    9. Exemple de structuration logique

    Un exercice structuré logiquement Exemple

    Soit la structuration logique d'un exercice : 1 Exercice = {Enonce, Question, Indice, Solution} 2 avec 3 Enonce = Soit un triangle rectangle disposant d'un angle de 30 degrés. 4 Question = Donner la valeur des autres angles du triangle. 5 Indice = La somme des angles d'un triangle est égale à 180 degrés. 6 Solution = 90 et 60 degrés. Il est possible à partir de cette représentation de calculer différentes présentations. Pour l'écran on peut générer une présentation HTML, en laissant la solution en hyperlien cliquable. Pour le papier on peut générer une présentation PDF, en affichant la solution sur une page séparée de l'énoncé. Pour un usage multimédia on pourra générer une présentation SMIL, avec affichage de l'énoncé, lecture de la question, et affichage de la solution après un temps de pause. Notons que si l'on avait choisi une des représentations physiques, plutôt que la représentation logique, il n'aurait pas été possible de générer les autres représentations.

    Un exercice mis en forme Exemple

    Soit la mise en forme en HTML du même exercice : 1 2 3 Soit un triangle rectangle disposant d'un angle de 30 degrés.
    4 Donner la valeur des autres angles du triangle.
    5 Vous avez besoin d'aide ? 6 Vérifier votre réponse ! 7 8 On voit que dans ce format la structure logique n'apparaît plus explicitement et qu'il n'est plus possible d'identifier l'énoncé, la question et la solution sans comprendre le contenu.

    46 Stéphane Crozat Contenus annexes

    Fondamental

    L'exemple montre que l'on peut calculer la mise en forme à partir de la structure logique, mais non l'inverse.

    10. Architecture des chaînes éditoriales XML

    Architecture classique

    Architecture classique d'une chaîne éditoriale XML

    L'approche classique pour réaliser une chaîne éditoriale XML est la suivante : 1. Formalisation du schéma documentaire, avec un langage de modélisation de schéma XML (XML Schema, Relax NG, etc.) 2. Utilisation d'un éditeur XML standard et stylage de cet éditeur (il existe de très nombreux éditeurs XML, plus ou moins graphiques, qui se paramètrent automatiquement lorsqu'on leur fournit un schéma : Oxygen, XMetal, Arbortext, etc.). 3. Utilisation de serveurs de fichiers XML pour la gestion centralisée des contenus (pour les projets les plus importants surtout). 4. Réalisation de moteurs de transformation avec les technologies XSL-XSLT, combinées avec des langages de rendu (XSL-FO∗ pour le papier, XHTML pour l'écran, etc.) L'ensemble est en général intégré avec un langage applicatif tiers (Java, PHP, etc.).

    11. Caractéristiques recherchées pour un format XML

    Non ambiguïté Fondamental

    Les règles syntaxiques strictes d'XML rendent son interprétation informatique univoque.

    Lisibilité Fondamental

    Un format XML a pour objectif d'être lisible par un être humain, afin de plus facilement en appréhender le langage.

    Passivité Fondamental

    Un format XML est passif, il dépend de programmes informatiques qui le transforment.

    Stéphane Crozat 47 Contenus annexes

    12. Historique : de SGML à XML

    SGML XML hérite historiquement (et fonctionnellement) du méta-langage SGML, développé au début des années 1980 et largement utilisé dans le cadre des systèmes documentaires, notamment dans les industries de hautes technologies pour lesquelles la fiabilité de la documentation est cruciale. SGML restait un formalisme insuffisamment explicite et trop complexe, ce qui rendait difficile la programmation d'applications SGML dans des cadres plus larges. SGML laissait notamment des ambiguïtés en terme d'interprétation du balisage. XML est un langage respectant la syntaxe SGML, mais en y ajoutant des contraintes supplémentaires, afin d'en lever les ambiguïtés. A l'origine SGML : norme ISO (1986) créé pour la représentation de documents structurés bien adapté aux systèmes documentaires massifs exemple de langage SGML : HTML Un formalisme pas assez explicite : rend difficile la programmation d'applications SGML (navigateurs, etc.) XML (98) : hérite de SGML en contraignant la syntaxe

    Ambiguïté en SGML Exemple

    En SGML une balise ouvrante n'est pas obligatoirement fermée par une balise fermante (sa fermeture pouvant rester implicite), tandis qu'en XML toute balise ouvrante est obligatoirement fermée. Le code SGML est ambigu car on ne sait pas s'il faut l'interpréter comme : ou . En XML seule l'une des deux formulations non ambiguës est autorisée.

    Exemple

    HTML est un langage SGML DocBook est à l'origine un langage SGML, porté depuis en XML

    Fondamental

    XML hérite de SGML en contraignant la syntaxe, tout document XML est donc un document SGML.

    Voir aussi Complément

    Documents structurés et documents formatés (cf. p.42)

    13. Discussion : HTML et XML

    XML et HTML ne sont pas au même niveau Fondamental

    XML est un méta-langage et HTML est un langage, XML et HTML ne sont donc pas directement comparables. En particulier XHTML est un langage XML, c'est donc du XML !

    48 Stéphane Crozat Contenus annexes

    XML et le Web Une question pertinente est en revanche de se demander pourquoi HTML ou XHTML ne suffisent pas pour les usages Web, et donc pourquoi XML est utile en dehors de son instanciation via XHTML. La réponse est que si HTML, et a fortiori XHTML, fournissent une solution de publication efficiente, ils n'offrent pas le même potentiel en terme d'ingénierie documentaire. XML possède donc un potentiel de manipulation plus important (par exemple pour le multi-supports, la rééditorialisation, ...).

    Exemple de limites du HTML Exemple

    Le HTML∗, langage de référence du web qui a su s'imposer par sa simplicité d'écriture, possède également des inconvénients qui ont motivé les recherches du W3C∗ sur le XML∗ : Jeu de balises restreint : HTML est un langage, les balises sont définies a priori , il est impossible de définir ses propres balises et de créer un vocabulaire propre à un domaine spécifique. Ce manque d'extensibilité le rend mal approprié pour l'indexation de documents variés, le multimédia, ... Mélange des descripteurs physiques et logiques : Les balises HTML fournissent des informations relatives à la typographie ou la mise en page d'un texte (CENTER, B, ...) mais également relatives à son rôle dans le document (H1, H2, ...). Cette non séparation stricte entre contenu et présentation nuit à la publication multi-supports et la rééditorialisation par exemple. Liens : En HTML, les liens sont généralement des pointeurs directs vers une autre ressource (A). Cette mise en œuvre limite fortement les possibilités de réutilisation, notamment par le risque de lien cassé.

    Voir aussi Complément

    Documents structurés et documents formatés (cf. p.42)

    14. Introduction à CSS

    CSS (Cascading Style Sheets) est un standard du W3C qui complète HTML. CSS sert à : Mieux séparer méthodologiquement la structure (en HTML) de la mise en forme (CSS) Simplifier l'écriture HTML (et la génération HTML dans le cas de sites dynamiques réalisés avec PHP par exemple) Factoriser et réutiliser la mise en forme, notamment pour assurer l'homogénéisation d'un site Web (externalisation des feuilles CSS) Augmenter les possibilités de mise en forme du HTML (couches CSS)

    Association HTML et CSS Syntaxe

    On peut associer à tout fichier HTML, dans le head, une ou plusieurs feuilles CSS (qui se complètent "en cascade"). 1 2 3 4 ... 5 6 7 ...

    Stéphane Crozat 49 Contenus annexes

    Syntaxe CSS Syntaxe

    Un fichier CSS permet d'associer une mise en forme aux éléments utilisés dans le fichier HTML. 1 p { font-family:sans-serif;}

    DIV et SPAN Méthode

    On peut différencier les styles en fonction des attributs class et id des éléments HTML. On recours alors massivement aux éléments div et span pour le stylage, avec des attributs id (pour référencer un élément particulier) et/ou class (pour référencer un ensemble d'éléments de même type). 1 div.class { ... } 2 span.class { ... } 3 #id { ... }

    Complément

    Tutoriel CSS didactique et complet : http://fr.html.net/tutorials/css/. Pour une introduction à CSS : Brillant07, pp112-122∗. Zen Garden : http://www.csszengarden.com1 ; Le Zen des CSS∗

    15. Namespace

    Principe Un namespace (ou espace de noms en français) est une mécanique qui permet d'assurer l'unicité des noms des éléments utilisés au sein des fichiers XML, dans l'objectif de pouvoir « mélanger » différents schémas. Soit un extrait de schéma S1 qui définit un élément de syntaxe en informatique comme contenant du code : ... {element syntaxe {code {...}}}* Soit un extrait de schéma S2 qui définit un élément de syntaxe en mathématique comme contenant une équation : ... {element syntaxe {equation {...}}}* Si je souhaite, dans un schéma S3 réutiliser les éléments syntaxe issus de S1 et S2, je rencontre un conflit de noms : en effet, deux éléments portant le même nom, « syntaxe », définissent en fait des éléments différents. Le namespace va me permettre de différencier ces deux éléments, en associant un nom unique aux schémas S1 et S2, par exemple une adresse web. Si j'associe www.utc.fr/S1 au premier schéma et www.utc.fr/S2 au second, j'obtiens alors deux noms de balises différents : www.utc.fr/S1:syntaxe www.utc.fr/S2:syntaxe

    Préfixe Cette écriture étant quelque peu fastidieuse, il est également possible d'associer un préfixe au namespace. La correspondance entre le namespace et le préfixe est déclarée dans le fichier XML, ce qui permet à un programme informatique de remplacer les préfixes par les namespaces.

    1 http://www.csszengarden.com/

    50 Stéphane Crozat Contenus annexes

    Finalement, on obtient : Préfixe s1 associé au namespace www.utc.fr/S1 et écriture XML s1:syntaxe Préfixe s2 associé au namespace www.utc.fr/S2 et écriture XML s2:syntaxe

    Namespace par défaut Remarque

    Il est possible de définir un namespace par défaut ce qui permet d'avoir un namespace pour chaque balise, sans avoir à utiliser de préfixe.

    Syntaxe

    1

    Nom développé Définition

    Un nom développé (expanded name) est le couple constitué par un nom d'espace de nommage (namespace name) et par un nom local (local name).

    Complément

    http://www.w3.org/TR/2004/REC-xml-names11-20040204/ Traduction : http://www.yoyodesign.org/doc/w3c/xml-names11/

    Stéphane Crozat 51 Glossaire

    Sérialisation Processus consistant à enregistrer des données en mémoire vive (par exemple des objets) sous une forme permettant leur persistance, typiquement sur une mémoire secondaire. XSL-FO XSL-FO (FO pour Formatting Objects) est la seconde partie du standard W3C « Extensible Stylesheet Language Family ». Il propose un langage XML de mise en forme de documents imprimables. Exemple d'extrait de code FO : Ceci est un paragraphe en police Times de taille 12pt.

    52 Stéphane Crozat Abréviations

    HTML : HyperText Markup Language SGML : Standard Generalized Markup Language W3C : World Wide Web Consortium XML : eXtensible Markup Language

    Stéphane Crozat 53 Bibliographie

    Gérard Dupoirier, Technologie de la GED : Techniques et management des documents électroniques, Hermes, 1995. Jacques André, Richard Furuta, Vincent Quint, Structured documents, Cambridge University Press, 1989. Alexandre Brillant, XML : Cours et exercices, Eyrolles, 2007 [ISBN 978-2212126914] Robert Eckstein, Michel Casabianca, XML précis & concis, O'Reilly, 2000. Dave Shea, Molly Holzschlag, Le Zen des CSS, Eyrolles, 2006. Kevin Williams, Michael Brundage, Patrick Dengler, Jeff Gabriel, Andy Hoskinson, Michael Kay, Thomas Maxwell, Marcello Ochoa, Johnny Papa, Mohan Vanmane, XML et les bases de données, Eyrolles, 2001.

    54 Stéphane Crozat Webographie

    XML, http://www.w3.org/XML.

    Stéphane Crozat 55 Index

    Balise ...... 39 HTML...... 48 Méta-langage...... 40 SGML...... 48 XML...... 38, 39, 40, 47

    56 Stéphane Crozat