site de Fabien Torre


Exercices pratiques sur le langage XSLT

Exercices sur la programmation XSLT.

Les brèves : du format Actu vers XHTML

Concevoir une feuille XSLT transformant un document de type actu (défini ci-dessus) vers XHTML. En particulier, ce traitement devra :

  • regrouper les nouvelles par thème ;
  • indiquer combien de brèves sont rédigées en français, combien en anglais ;
  • insérer l'éventuelle photo associée à chaque brève ;
  • transformer les urls disponibles en liens hypertextes, la phrase associée devenant le texte actif du lien.

Le championnat : du format Foot vers XHTML

Écrire une feuille XSLT permettant de transformer en XHTML un document respectant la DTD Foot définie ci-dessus, en particulier :

  • mettre en forme les données à l'aide de balises XHTML ;
  • distinguer pour chacun des matches l'équipe gagnante ;
  • associer une feuille de style CSS au document produit ;
  • établir des statistiques à partir du document XML et les faire apparaître dans le fichier XHTML produit :
    • le nombre de rencontres du championnat ;
    • le nombre de matches déjà joués ;
    • le nombre de matches nuls ;
    • le nombre de matches gagnés par l'équipe jouant à domicile ;
    • le nombre de matches gagnés par l'équipe extérieure ;
    (pour chacun, on donnera une valeur et un pourcentage avec deux chiffres après la virgule) ;
  • produire un sommaire permettant d'accéder à chacune des journées ;
  • calculer et afficher le nombre de points d'une équipe particulière.

Du format Acteurs au XHTML

Écrire une feuille XSLT commentée et transformant le fichier acteurs.xml créé ci-dessus en page HTML avec :

  • toutes les informations sur chaque acteur mises en page (en particulier le site web et la photo) ;
  • une mise en forme des informations contenues dans les biographies (annee, film, realisateur, etc.) ;
  • en particulier les noms d'acteur seront transformés en liens hypertextes,
  • un index des acteurs en tête de page.

Du format Films au XHTML

Proposez une feuille de transformations XSLT permettent de transformer un document de type films en page XHTML. En particulier, le résultat devra faire apparaître :

  • chaque film dans une division particulière ;
  • les titres des films dans une balise h2 ;
  • les réalisateurs dans une balise em ;
  • les années dans une balise strong ;
  • le casting sous forme de liste avec sur chaque ligne le nom de l'acteur et celui de son personnage ;
  • le synopsis dans un paragraphe p ;
  • la photo associée au film ;
  • un drapeau, français ou anglais, associé à chaque film et indiquant la langue utilisée ;
  • des références aux acteurs dans le corps du synopsis dans une balise em dont le contenu sera :
    • idéalement, le nom du personnage et entre parenthèses celui de l'acteur ;
    • à défaut l'identifiant du personnage ;
  • écrire une feuille de style CSS pour enjoliver le XHTML produit.

Transformation des TODO list

À partir des éléments suivants :

Il s'agit maintentant d'écrire une transformation XSLT qui va produire un unique fichier HTML, bien formé et contenant l'ensemble des informations de la todolist.

En particulier, on veut voir apparaître :

  • un titre dans l'en-tête et un titre dans le corps qui reprennent le nom du propriétaire de la liste ;
  • l'image associée à chaque todo ;
  • le titre de chaque todo à l'aide d'un élément HTML adéquat ;
  • également sa date limite ;
  • ensuite, les paragraphes des commentaires ;
  • puis, les items rasemblés sous la forme d'une liste HTML, les items critiques étant distingués des autres ;
  • les liens (qui doivent être cliquables), les dates et les mots importants contenus dans les parties textuelles.

Les sujets abordés dans une formation

Le problème :

  • On décrit l'ensemble des sujets abordés dans le Master à l'aide d'un format XML et on veut le présenter sous forme de pages HTML.
  • Chaque sujet est défini par un identifiant, un titre, une description (des paragraphes de contenu mixte), éventuellement des liens et au besoin par des sous-sujets.
  • Cette arborescence est décrite à plat à l'aide de l'attribut père, seule la racine n'a pas de père.
  • Le document XML (voir, récupérer).
  • Le schéma suivi par le document (voir, récupérer).

Production d'un document unique :

  • Écrire une transformation XSLT qui produit un unique fichier HTML avec toute l'arborescence des sujets sous forme de listes imbriquées.
  • Pour chaque sujet, faire apparaître toutes les informations le décrivant.
  • La liste de liens doit être produite seulement si le sujet possède au moins un lien.
  • Utiliser une règle nommée pour produire des liens hypertextes.
  • À l'intérieur d'un sujet, les sous-thèmes doivent être triés par ordre alphabétique.

Plusieurs sorties :

  • Compléter la feuille XSLT pour qu'elle permette de produire une page HTML pour chaque sujet.
  • Utiliser pour cela la possibilité de transmettre des paramètres lors de la transformation.
  • Sur chaque page, faire apparaître le titre et la description du sujet, les liens associés disponibles.
  • La page d'un sujet doit également contenir la liste de ses fils, chaque item pointant vers la page appropriée.
  • Enfin, il faut faire apparaître la liste des ancêtres du sujet, à nouveau sous forme de liens.

Les sujets abordés dans une formation (épisode 2, le retour)

On revient sur le document décrivant les sujets abordés durant le master, mais cette fois organisé en réelle arborescence (voir, récupérer) et non plus >à plat à l'aide d'un attribut père.

Écrire la feuille XSLT qui permet de produire une page HTML pour chaque sujet, le sujet souhaité étant désigné par son identifiant à l'aide d'un paramètre extérieur lors de la transformation.

La sortie obtenue doit être comparable à celle obtenue pour l'exercice précédent :

  • Sur chaque page, faire apparaître le titre et la description du sujet, les liens associés disponibles.
  • La page d'un sujet doit également contenir la liste de ses fils, chaque item pointant vers la page appropriée.
  • Enfin, il faut faire apparaître la liste des ancêtres du sujet, à nouveau sous forme de liens.

Tourner les tables

Concevoir une feuille XSLT qui retourne toutes les tables contenues dans un document (c'est-à-dire qui inverse colonnes et lignes).

Transformer un fichier XML quelconque

Écrire une transformation XSLT et une feuille de style CSS qui permettent de visualiser un fichier XML sous forme de page HTML avec une indentation traduisant l'imbrication des différents éléments et des colorations particulières pour le nom des éléments, des attributs, les commentaires, etc.

Calcul de la fonction factorielle

Proposer une feuille XSLT qui calcule la fonction factorielle, à partir d'un fichier de ce type (voir,récupérer).

Résolution des tours de Hanoï

Proposer une feuille XSLT qui fournit les instructions pour résoudre le problème des tours de Hanoï à partir d'un fichier de ce type (voir,récupérer).

Réfléchir à une sortie sous forme d'animation SVG.

Tester la conjecture de Syracuse

Ce problème est apparu pour la première fois dans les années 30. Puis, à nouveau, à l'université de Syracuse (New York) dans les années 50. Aucune solution n'étant trouvée, le problème s'est propagé aux autres universités américaines. Dans le contexte de la guerre froide, on évoque (comme une plaisanterie ?) une manoeuvre russe pour paralyser la recherche américaine.

L'énoncé de ce problème est le suivant. On part d'un entier n auquel on fait subir une transformation :

  • si n est pair, on le divise par deux ;
  • si n est impair, on le multiplie par 3, et ajoute 1.

Puis, on recommence sur le résultat. Par exemple, en partant de n=10, on obtient :

10 5 16 8 4 2 1 4 2 1 etc.

Conjecture : quel que soit l'entier n, on finit par tomber sur 1.

Questions :

  1. Écrire le code XSLT qui permet de tester la conjecture pour un entier donné dans un fichier XML de la forme :
    <syracuse value="10" />
  2. Modifier ce programme pour tester tous les entiers dans un intervalle, intervalle donné sous la forme :
    <syracuse minvalue="2" maxvalue="20" />

Dans le programme final, les deux formats d'entrée doivent être possibles. Vous êtes laissé libre du format de sortie.

La parité d'un entier peut être testée à l'aide d'une expression XPath utilisant l'opérateur modulo :

/ > xpath 5 mod 2
Object is a number : 1

/ > xpath 6 mod 2
Object is a number : 0

Fabien Torre Valid HTML5! Valid CSS!
Accueil > Enseignement > En pratique > Documents numériques > XML > XSLT
(contenu mis à jour )
site de Fabien Torre, université de Lille

Description

Survoler un lien de navigation pour lire sa description ici...