XSLT fondamental

Philippe Drix - Objectiva

Site Objectiva

Philippe Drix



Remerciements

I - Introduction
        Traitement de documents XML
        Le langage XSL
                Statut actuel
                Evolutions
        Divers modes d'utilisation de XSLT
                Mode Commande
                Mode Navigateur
                Mode Serveur
        Typologie des utilisations d'XSL
        Un avant-goût d'XSLT
                Exemple
                Extraction individuelle (pull processing)
                Le langage XPath
                Autre exemple
        Parcours de lecture

Les langages XPath et XSLT



II - Guide de lecture
        Chapitre XPath
        Chapitre Au cœur d'XSLT
        Chapitres sur les instructions XSLT (transformation, programmation,création)
        Chapitre Découpage d'une application XSLT

III - Le langage XPath
        Modèle arborescent d'un document XML vu par XPath
                Nœud de type root
                Nœud de type element
                Nœud de type attribute
                Nœud de type namespace
                Nœud de type processing-instruction
                Nœud de type comment
                Nœud de type text
                Exemple d'arbre XML d'un document
        XPath, un langage d'expressions
                Expressions sans argument de type node-set
                        Expressions numériques
                        Expressions à base de chaînes de caractères
                        Expressions booléennes
                Expressions avec arguments de type node-set
                        Comparaison de deux node-sets avec l'opérateur =
                        Comparaison de deux node-sets avec l'opérateur !=
                        Appartenance et test d'inclusion
                Expressions mixtes
        Principes de la construction d'un chemin de localisation
                Nœud contexte
                Chemins de localisation
                Evaluation d'un chemin de localisation
        Etape de localisation
                Axes de localisation
                        Les treize axes de localisation
                        Représentation graphique
                        Indices de proximité
                Déterminant (Node Test)
                        Le déterminant est un nom
                        Le déterminant est une *
                        Le déterminant est un descripteur de type
                Prédicats
                        Contexte d'évaluation d'un prédicat
                        Conversion booléenne de node-set
                        Exemples de prédicats dans une étape de localisation
        Chemins de localisation
                Evaluation d'un chemin de localisation
                        Evaluation d'une étape de localisation par rapport à un node-set
                        Evaluation d'un chemin relatif
                        Evaluation d'un chemin absolu
                Clé pour la lecture d'un chemin de localisation
                        Lecture d'un chemin de localisation sans prédicat
                        Lecture d'un chemin de localisation avec prédicats
                        Lecture d'un chemin de localisation dans un prédicat
                Exemples de chemins de localisation
        Formes courtes des chemins de localisation
                Principe
                Exemples de chemins de localisation en formes courtes
        Variantes syntaxiques
                Expressions diverses
                Evaluation d'une étape de localisation par rapport à un node-set renvoyé par une expression
                Enumération d'un node-set renvoyé par une expression
                        Règle pour définir l'énumération d'un node-set
                        Exemple
                Application d'un prédicat à une expression renvoyant un node-set

IV - Au cœur du langage XSLT
        Structure d'un programme XSLT
                Eléments XSLT, instructions, et instructions de premier niveau
                Règles de transformation
                Forme d'une règle XSLT
                        Modèle de transformation
                        Modèle de transformation littéral
                Un premier exemple de programme XSLT
                Lancement du processeur XSLT
        Principe de fonctionnement d'un processeur XSLT
                Construction - sérialisation
                Les trois phases du processus complet
                Spécification d'une transformation
                Modèle de traitement
                        Traitement du document XML source
                        Traitement d'une liste de nœuds source
                        Traitement d'un nœud source membre d'une liste de nœuds source
                        Instanciation d'un modèle de transformation relativement à un nœud courant et une liste courante
        Motifs (patterns)
                Concordance de motifs
                Recherche de la concordance de motifs (pattern matching)
                Syntaxe et contrainte pour un motif XSLT
                Exemples de motifs
        Priorités entre règles
                Algorithme de calcul des priorités par défaut
                Forçage de la priorité
        Résumé
        Instruction xsl:value-of
                Exemple
                Déroulement du processus de traitement sur cet exemple
                        Constitution d'une liste ne contenant que la racine
                        Traitement de cette liste
                        Traitement du nœud
                        Instanciation du modèle
                        Valeur des différents node-sets
        Instruction xsl:apply-templates
                Exemple
                Déroulement du processus de traitement sur cet exemple
                        Constitution d'une liste ne contenant que la racine
                        Traitement de cette liste
                        Traitement du nœud
                        Instanciation du modèle de transformation
                        Traitement du nœud <Saison>
                        Instanciation du modèle de transformation
                        Première branche du traitement (nœud <Concert>)
                        Deuxième branche du traitement (nœud <Théâtre>)
                        Troisième branche du traitement (nœud <Théâtre>)
                        Synthèse de ces trois traitements indépendants
        Règles par défaut
                Règles par défaut pour la racine d'un arbre XML ou un élément
                Règles par défaut pour un nœud de type text ou attribute
                Règles par défaut pour un nœud de type comment ou processing-instruction
                Exemples
                Comportement inattendu d'un programme XSLT

V - Les instructions de transformation
        Instruction xsl:template
                Syntaxe
                Sémantique
        Instruction xsl:value-of
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple
                Variante syntaxique
        Instruction xsl:apply-templates
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple
                Variante syntaxique select="..."
                Variante syntaxique mode="..."
                        Exemple
        Instruction xsl:for-each
                Bande-annonce
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple
                Autre sémantique
                Exemple
        Instruction xsl:sort
                Bande-annonce
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple
                Variantes syntaxiques
                        Attribut select
                        Autres attributs
                        Exemple
                Tri à clés multiples
        Instruction xsl:copy-of
                Bande-annonce
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple trivial
                Autre exemple

VI - Les instructions de programmation
        Instruction xsl:if
                Bande-annonce
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple
        Instruction xsl:choose
                Bande-annonce
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple
        Instruction xsl:variable
                Bande-annonce
                Syntaxe
                Règle XSLT typique
                Sémantique
                Variables globales et locales
                Utilisation d'une variable
                        Dans une expression XPath
                        Dans un motif
                        Exemple d'utilisation d'une variable
                Evaluation d'une variable globale
                        Exemple
                Temporary Source Tree
                        TST obtenu littéralement
                        TST calculé
                        TST-texte
                        Opérations sur un TST (XSLT¬1.1 ou plus)
                        Exemples d'utilisation d'un TST (XSLT1.1 ou plus)
                Result Tree Fragment (XSLT 1.0)
                        Opérations sur un RTF (XSLT 1.0)
                Règles de visibilité
                        Règles de visibilité pour les variables globales
                        Règles de visibilité pour les variables locales
                Conflits de noms de variables
        Instruction xsl:param
                Bande-annonce
                Syntaxe
                Sémantique
                        Utilisation d'un paramètre global
                        Utilisation d'un paramètre local
        Instruction xsl:template
                Bande-annonce
                Syntaxe
                Modèle nommé typique
                Sémantique
                Exemple
        Instruction xsl:call-template
                Bande-annonce
                Syntaxe
                Sémantique
                Exemple
        Instruction xsl:apply-templates
                Syntaxe
                Sémantique
        Instruction xsl:message
                Syntaxe
                Sémantique
        Instruction xsl:key
                Bande-annonce
                Syntaxe
                Sémantique
                        Construction et exploitation de la table associative
                        Variante
                Exemples

VII - Les instructions de création
        Instruction xsl:text
                Bande-annonce
                Syntaxe
                Sémantique
                Exemple
                Variante syntaxique
                Sémantique
                Exemple
        Création de texte XML par un élément source littéral
                Exemple
                Descripteur de valeur différée d'attribut (Attribute Value Template)
                Suite de l'exemple
        Instruction xsl:element
                Bande-annonce
                Syntaxe
                Sémantique
                Exemple trivial
                Exemple plus évolué
                        Première étape
                        Deuxième étape
                Variante syntaxique namespace="..."
                        Exemple sans namespace="..."
                        Autre exemple sans namespace="..."
                        Exemple avec namespace="..."
                Variante syntaxique use-attribute-sets="..."
        Instruction xsl:attribute
                Bande-annonce
                Syntaxe
                Règle XSLT typique
                Emploi moins typique
                Sémantique
                Exemple trivial
                Exemple plus évolué
                Variante syntaxique namespace="..."
                Exemple avec namespace="..."
        Instruction xsl:attribute-set
                Bande-annonce
                Syntaxe
                Sémantique
                Variante syntaxique use-attribute-sets="..."
                Exemple
                Variante de l'exemple
                Commentaire de l'exemple
                Compléments
        Instruction xsl:copy
                Bande-annonce
                Syntaxe
                Variante syntaxique
                Sémantique
                        Copie d'un nœud de type element
                        Copie d'un nœud de type attribute
                        Copie d'un nœud de type namespace
                        Copie du nœud de type root
                        Copie d'un nœud de type text
                        Copie d'un nœud de type comment
                        Copie d'un nœud de type processing-instruction
        Instruction xsl:comment
                Syntaxe
                Sémantique
                Exemple
        Instruction xsl:processing-instruction
                Syntaxe
                Sémantique
        Instruction xsl:number
                Bande-annonce
                Syntaxe
                Sémantique
                        Calcul d'un numéro d'ordre
                        Différents modes de calcul d'un numéro d'ordre
                        Réinitialisation d'un numéro d'ordre
                        Numéro d'ordre sans décompte
                        Numéro d'ordre dans un document source secondaire
                        Rendu de la numérotation

VIII - Découpage d'une application XSLT
        Instruction xsl:include
                Syntaxe
                Sémantique
                        Processus mis en œuvre
                        Erreurs possibles
                        Position des instructions xsl:include
                        Intérêt de l'instruction xsl:include
                Exemple
        Instruction xsl:import
                Syntaxe
                Sémantique
                        Processus mis en œuvre
                        Intérêt de l'instruction xsl:import
                Exemple
        Instruction xsl:apply-imports
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple
                Evolution

Patterns



IX - Patterns de programmation
        Inclusion conditionnelle de feuille de style
                Motivation
                Réalisation
        Fonction
                Motivation
                Réalisation
                Exemple
        Action
                Motivation
                Réalisation
                Exemple
        Itération
                Motivation
                Réalisation récursive
                        Exemple
                Itération par la méthode de Piez
                        Exemple
        Récursion
                Motivation
                Réalisation
                Exemple du décompte de mots dans une chaîne
        Visiteur récursif de node-set
                Motivation
                Réalisation
                Application
                        Minimum d'un node-set
                        Somme des valeurs d'un node-set
        Fonction renvoyant plusieurs résultats
                Motivation
                Réalisation
                Exemple
        Utilisation d'une structure de données auxilaire
                Motivation
                Exemple
        Identité de nœuds et node-set de valeurs toutes différentes
                Motivation
                Réalisation
                        Tests d'identité
                        Node-set de valeurs toutes différentes

X - Patterns de transformation
        Copie non conforme
                Motivation
                Copie conforme générique
                Copie presque conforme
        Détection d'un élément avec domaine nominal par défaut
                Motivation
                Solution
                Exemple
        Références croisées inter fichiers
                Motivation
                Réalisation
                        Instanciation du nom de l'artiste
                        Instanciation des Nos de plages
                        Instanciation des noms d'instruments
                        Programme complet
        Génération d'hyper liens
                Motivation
                Réalisation avec recherche par clé
                Réalisation avec recherche par expression XPath
        Regroupements
                Motivation
                Regroupements par valeur ou par position
                        Des pièces regroupées par surface habitable (regroupement par valeur d'attributs)
                        Les villes regroupées par pays (regroupement par valeur d'attributs)
                        Les instrumentistes regroupés par instruments (regroupement par valeur de nœuds texte)
                        Les villes trois par trois (regroupement positionnel)
                Regroupements hiérarchiques
                        Exemple générique
                        Reconstitution hiérarchique d'un texte
                        Exemple atypique
        Génération d'une feuille de style par une autre feuille de style
                Motivation
                Exemple
        Génération de pages HTML dynamiques
                Motivation
                Réalisation
        Génération de pages HTML dynamiques pour un portail
        Localisation d'une application
                Motivation
                Réalisation
        Construction dynamique de l'agencement d'un tableau HTML
                Version statique
                Version dynamique
                        Pattern
        Génération de documents multiples

Annexes



Chapitre I - Transformation XML - RTF
        Structure du document source XML
                Description de la DTD utilisée
        Transformation XSLT
                Prologue
                Règles pour la transcription RTF d'un style
                Règles pour rendre inoffensifs certains caractères en RTF
                Entrées d'index
                Feuille de style complète

Annexe II - Les instruction ménagères
        Instruction xsl:stylesheet
                Syntaxe
                Variantes syntaxiques
                        Attribut extension-element-prefixes
                        Attribut exclude-result-prefixes
        Instruction xsl:namespace-alias
                Syntaxe
                Sémantique
        Instruction xsl:fallback
                Syntaxe
                Instruction XSLT typique
        Instruction xsl:preserve-space
Instruction xsl:strip-space

                Syntaxe
                Sémantique
        Instruction xsl:output
                Syntaxe
                Sémantique
        Instruction xsl:decimal-format
                Syntaxe
                Sémantique
                Exemple

Annexe III - Extensions et évolutions
        Extensions
        Evolutions
                Perspectives pour XSLT¬2.0
                Perspectives pour XPath¬2.0

Annexe IV - Référence des instructions XSLT
        Notations
        Symboles terminaux
        Règles syntaxiques

Annexe V - Référence des fonctions prédéfinies
        Fonctions XPath
                Fonctions de manipulation de node-sets
                         number last ()
                         number position ()
                         number count ( node-set )
                         node-set id ( object )
                         string local-name ( node-set ?)
                        string namespace-uri ( node-set ?)
                        string name ( node-set ?)
                Fonctions manipulant des chaînes de caractères
                        string string ( object ?)
                        string concat ( string , string , string *)
                        boolean starts-with ( string , string )
                        boolean contains ( string , string )
                        string substring-before ( string , string )
                        string substring-after ( string , string )
                        string substring ( string , number , number ?)
                        number string-length ( string ?)
                        string normalize-space ( string ?)
                        string translate ( string , string , string )
                Fonctions Booléennes
                        boolean boolean ( object )
                        boolean not ( boolean )
                        boolean true ()
                        boolean false ()
                        boolean lang ( string )
                Fonctions numériques
                        number number ( object ?)
                        number sum ( node-set )
                        number floor ( number )
                        number ceiling ( number )
                        number round ( number )
        Fonctions XSLT
                Fonctions de manipulation de node-sets
                        node-set document ( object , node-set ?)
                        node-set key ( string , object )
                        string generate-id ( node-set )
                        string unparsed-entity-uri ( string )
                        node-set current ()
                Formatage de nombres
                        string format-number ( number , string , string )
                Fonctions diverses
                        object system-property ( string )
                        booléen element-available ( chaîne de caractères )
                        booléen function-available ( chaîne de caractères )

Annexe VI - Glossaire

Bibliographie et ressources en ligne
        Livres
        Ressources Internet