Précédent

Table des matières

bas de page     

Suivant     


Table des matières abrégée
1 Introduction et vue d'ensemble
    1.1 Le traitement d'une feuille de style
    1.2 Les avantages de XSL

1 Introduction et vue d'ensemble

Cette spécification définit le langage extensible de feuille de style XSL. C'est un langage pour décrire des feuilles de style. À partir d'une classe de documents ou de fichiers de données XML [XML], arbitrairement structurés, les auteurs utilisent une feuille de style XSL pour déterminer la façon dont ce contenu structuré devrait être représenté ; c'est-à-dire la façon dont le contenu source devrait être stylé, disposé et paginé pour un support de présentation donné, comme par exemple dans une fenêtre de navigateur web, un appareil portatif ou un jeu de pages physiques dans un catalogue, un rapport, un essai ou un livre.

1.1 Le traitement d'une feuille de style

Un processeur de feuille de style XSL reçoit un document, ou des données, XML avec une feuille de style XSL et produit une présentation de cette source XML de la manière voulue par l'auteur de la feuille de style. Ce procédé de présentation revêt deux aspects : premièrement, la construction d'un arbre élaboré à partir de celui de la source XML et, deuxièmement, l'interprétation de cet arbre résultant pour produire les sorties adaptées pour une représentation sur un écran, sur du papier, en parole ou sur un autre média. On appelle la première opération transformation de l'arbre et la seconde mise en forme. L'opération de mise en forme est accomplie par un formateur. Ce formateur peut simplement être le moteur de rendu d'un navigateur.

La transformation de l'arbre autorise une différenciation significative de la structure de l'arbre résultant par rapport à celui de la source. Par exemple, on pourrait ajouter une table des matières qui agirait comme un filtre de sélection sur un document source original ou on pourrait réarranger les données de la source en une présentation tabulaire ordonnée. Lors de l'élaboration de l'arbre résultant, l'opération de transformation de l'arbre inclut également les instructions nécessaires pour la propre mise en forme de celui-ci.

La mise en forme est activée par l'incorporation d'une sémantique de formatage dans l'arbre résultant. Cette sémantique de formatage s'exprime sous la forme d'un catalogue de classes d'objets de mise en forme. Les nœuds de l'arbre résultant sont des objets de mise en forme. Les classes d'objets de mise en forme représentent des abstractions typographiques comme une page, un paragraphe, une table et ainsi de suite. Un contrôle plus fin de la représentation de ces abstractions est réalisé par un jeu de propriétés de mise en forme, ainsi celles régissant les indentations, les espacements entre les mots et les lettres, les veuves, les orphelins et les césures. En XSL, les classes des objets de mise en forme et les propriétés de mise en forme fournissent un vocabulaire pour exprimer une présentation souhaitée.

Le modèle de traitement XSL n'est que conceptuel. On ne requiert pas d'une mise en œuvre qu'elle reproduise ces opérations de manière distincte. En outre, les mises en œuvre sont libres de traiter un document source à leur façon, pourvu que le résultat de ce traitement soit le même que celui qui aurait été obtenu selon le modèle de traitement conceptuel de XSL. Ci-dessous, un schéma montrant le modèle conceptuel en détails.

Les deux processus de XSL : la transformation et la mise en forme   [D]

En XSL, deux opérations : la transformation et la mise en forme.

1.1.1 Les transformations de l'arbre

La transformation de l'arbre construit l'arbre résultant. En XSL, on appelle ce dernier l'arbre des éléments et des attributs, avec des objets principalement dans l'espace de nommage de « l'objet de mise en forme ». Dans cet arbre, un objet de mise en forme est représenté comme un élément XML dont les propriétés se présentent sous la forme d'un jeu de paires XML attribut-valeur. Le contenu d'un objet de mise en forme est tout simplement le contenu de l'élément XML. La transformation de l'arbre est définie par la recommandation XSLT [XSLT]. Ci-dessous, un schéma illustrant ce modèle conceptuel.

Le processus de transformation XSL   [D]

Transformation vers un autre vocabulaire

La feuille de style XSL intervient dans la transformation de l'arbre. Une feuille de style contient un jeu de règles de construction de l'arbre. Celui-ci se compose de deux parties : un motif qui est comparé avec les éléments de l'arbre de la source et un modèle qui construit une partie de l'arbre résultant. Ceci permet l'application d'une feuille de style sur un large éventail de classes de documents dont les arbres des sources ont des structures similaires.

Dans certaines mises en œuvre XSL/XSLT, le produit de la construction de l'arbre peut prendre la forme d'un document XML. Ceci permettrait la production d'un document XML qui contient des objets et des propriétés de mise en forme. Cette possibilité, qui n'est pas nécessaire pour un processeur XSL, n'est pas non plus encouragée. Cependant, il y a des cas où ceci peut avoir une certaine importance, ainsi quand un serveur prépare une sortie vers un client identifié ; par exemple, la façon dont un serveur WAP (http://www.wapforum.org/faqs/index.htm) prépare les données particulières pour un appareil portatif qui supporte WAP. Pour garder une certaine accessibilité, les auteurs de systèmes web ne devraient pas développer une architecture qui nécessite, ou utilise, la transmission de documents contenant des objets et des propriétés de mise en forme, à moins que l'émetteur n'ait l'assurance que le récepteur puisse les traiter ou que le document transmis ne contienne une référence vers le document source (ou les documents source) qui a été utilisé pour l'élaboration de ce document et ses objets et propriétés de mise en forme.

1.1.2 La mise en forme

La mise en forme est une interprétation de l'arbre résultant, dans sa forme d'arbre des objets de mise en forme, pour la production de la présentation souhaitée par l'auteur de la feuille de style, à partir de laquelle l'arbre des éléments et des attributs XML dans l'espace de nommage « fo » a été construit.

Le vocabulaire des objets de mise en forme reconnu par XSL, le jeu des types d'élément fo:, représente le jeu des abstractions typographiques dont l'auteur dispose. Sémantiquement, chacun des objets de mise en forme représente une spécification pour une partie des informations de pagination, de disposition et de style qui seront appliquées au contenu de l'objet de mise en forme en question, suivant en cela la mise en forme de l'ensemble de l'arbre résultant. Chacune des classes d'objets de mise en forme représente un comportement de mise en forme d'un genre particulier. Par exemple, la classe d'objet de mise en forme bloc correspond au découpage du contenu d'un paragraphe en lignes. D'autres objets de mise en forme peuvent intervenir dans la spécification ; par exemple, la mise en forme d'un paragraphe (objet de mise en forme bloc) dépend à la fois des spécifications des propriétés agissant sur l'objet de mise en forme bloc et de la spécification de la structure de présentation dans laquelle le bloc est disposé par le formateur.

Les propriétés associées avec une instance d'un objet de mise en forme contrôlent la mise en forme de cet objet. Certaines de ces propriétés, par exemple 'color', ont une action directe sur le résultat formaté. D'autres, par exemple 'space-before', ne font que contraindre un jeu possible de résultats formatés sans spécifier de résultat particulier. Le formateur peut privilégier d'autres aspects notamment des considérations esthétiques.

La mise en forme consiste en la génération d'un arbre d'aires géométriques, appelée arbre des aires. Les aires géométriques sont disposées sur une séquence d'une ou plusieurs pages (un navigateur emploie typiquement une seule page). Chaque aire géométrique a une position sur la page, une spécification de ce qui doit y être affiché et peut avoir un arrière-plan, un espacement et des bordures. Par exemple, la mise en forme d'un seul caractère génère une aire suffisante pour contenir le glyphe qui représente visuellement ce caractère, le glyphe étant ce qui doit être affiché dans cette aire. Ces aires peuvent être imbriquées. Par exemple, le glyphe peut avoir une position dans une ligne, elle-même dans un bloc, lui-même dans une page.

Le rendu tient compte de l'arbre des aires, du modèle abstrait de la représentation (les pages et leurs collections d'aires) pour une représentation sur le média approprié, comme la fenêtre d'un navigateur sur un moniteur ou des feuilles de papier. La sémantique du rendu n'est pas décrite en détails dans cette spécification.

La première étape de la mise en forme est « l'objectivation » de l'arbre des éléments et des attributs via une transformation XSLT. L'objectivation de l'arbre consiste essentiellement à transformer les éléments en des nœuds d'objets de mise en forme et les attributs en des spécifications de propriétés. Le résultat de cette opération, c'est l'arbre des objets de mise en forme.

Objectivation de l'arbre des objets de mise en forme   [D]

La construction de l'arbre des objets de mise en forme XSL

Partie intégrante de l'étape d'objectivation, les caractères qui surviennent dans l'arbre résultant sont remplacés par des nœuds fo:character. Les caractères, dans des nœuds de texte, qui consistent seulement en des caractères blancs et qui sont les enfants d'éléments dont les objets de mise en forme correspondants n'admettent justement pas de nœuds fo:character comme enfant, ces caractères sont ignorés. Des caractères autres contenus dans ces éléments qui n'admettent pas comme enfant des nœuds fo:character seraient des erreurs.

Le contenu de fo:instream-foreign-object n'est pas objectivé ; à la place, l'objet représentant l'élément fo:instream-foreign-object pointe vers le nœud concerné dans l'arbre des éléments et des attributs. De la même façon, tout élément enfant de l'espace de nommage non XSL de fo:declarations n'est pas objectivé ; à la place, l'objet représentant l'élément fo:declarations pointe vers le nœud concerné de l'arbre des éléments et des attributs.

La deuxième étape de la mise en forme est l'affinage de l'arbre des objets de mise en forme pour obtenir l'arbre des objets de mise en forme affiné. Le processus d'affinage réalise les correspondances entre propriétés et traits. Ceci comporte : (1) le développement des raccourcis vers leurs propriétés individuelles, (2) la mise en relation des propriétés correspondantes, (3) la détermination des valeurs calculées (éventuellement l'évaluation d'expressions), (4) la prise en charge des effets des propriétés 'white-space-treatment' et 'linefeed-treatment' et (5) l'héritage. Voir les détails dans le chapitre [5 L'affinage et la résolution des propriétés].

L'étape d'affinage est illustrée ci-dessous.

Affinage de l'arbre des objets de mise en forme   [D]

L'affinage de l'arbre des objets de mise en forme

La troisième étape de la mise en forme est la construction de l'arbre des aires. Celui-ci est généré selon la sémantique de chacun des objets de mise en forme. Les traits qui s'appliquent à chacune des classes d'objets de mise en forme déterminent la manière dont les aires sont générées. Bien que chacune des propriétés de mise en forme puisse être spécifiée pour chacun des objets de mise en forme, pour chacune des classes d'objets de mise en forme, seul un sous-ensemble de ces propriétés sera employé pour déterminer les traits des objets de cette classe.

La génération des aires est illustrée ci-dessous.

Génération de l'arbre des aires   [D]

La génération de l'arbre des aires

Résumé du traitement de l'objet de mise en forme en une aire   [D]

Résumé du processus

1.2 Les avantages de XSL

À la différence de HTML, les noms des éléments en XML n'ont aucune signification de présentation intrinsèque. En l'absence d'une feuille de style, un processeur n'aurait aucun moyen à sa disposition pour rendre le contenu d'un document XML, autrement que sous la forme d'une chaîne indifférenciée de caractères. XSL fournit un modèle complet et un vocabulaire pour l'écriture d'une telle feuille de style avec une syntaxe XML.

Ce document est destiné à ceux chargés de la mise en œuvre de tels processeurs XSL. Bien que les auteurs de feuilles de style XSL puissent l'employer comme un manuel de référence, ce n'est pas un tutoriel par nature.

XSL est bâti sur un travail précédent effectué sur les feuilles de style en cascade [CSS2] et le langage de sémantique et de spécification du style du document [DSSSL]. Alors que plusieurs des objets de mise en forme et des propriétés de XSL trouvent des correspondances avec le jeu de propriétés commun, ceci n'aurait pas été suffisant en soi pour atteindre tous les objectifs de XSL. XSL introduit notamment un modèle de pagination et de disposition qui va au-delà de ce qui était disponible et qui peut en outre être étendu, sans ambiguïté, aux structures de la page, bien plus que les modèles de la page décrits dans cette spécification.

1.2.1 La mise en page et le défilement

Réaliser à la fois des fenêtres de document qui défilent et des pages amène de nouvelles difficultés pour le style et la mise en page d'un contenu XML. Comme la mise en page introduit des frontières arbitraires (les pages ou les régions des pages) au contenu, des concepts, comme le contrôle de l'espacement aux limites de la page, des régions et des blocs, sont devenus cruciaux. Sans oublier les concepts liés aux ajustements des espaces entre les lignes (l'ajustement vertical de la page) et entre les mots et les lettres (la justification des lignes de texte). Ces difficultés n'apparaissent pas toujours avec les fenêtres de document simples qui défilent, comme on en trouve sur les navigateurs actuels. Cependant, il existe une correspondance entre une page avec des régions multiples, tels que le corps, l'en-tête, le pied et les bandeaux latéraux, et une présentation web faisant appel aux « cadres ». La distribution du contenu selon ces régions se fait essentiellement de la même façon dans ces deux cas, XSL les gère de manière analogue.

XSL a été développé pour donner aux auteurs un contrôle des fonctions nécessaires autant pour des documents paginés que pour fournir une structure équivalente aux « cadres » pour la navigation sur le web. Pour obtenir ce contrôle, XSL a étendu le jeu des objets et des propriétés de mise en forme. De plus, la sélection des composants d'une source XML, ceux pouvant recevoir un style (éléments, attributs, nœuds de texte, commentaires et instructions de traitement), se base sur XSLT et XPath [XPath], ce qui offre à l'utilisateur un mécanisme de sélection très puissant.

Le design des extensions des objets de mise en formes et des propriétés s'est d'abord inspiré de DSSSL. Ces extensions effectives, cependant, ne ressemblent pas toujours aux constructions DSSSL de leur origine. Soit pour une plus grande conformité avec la spécification CSS2, soit pour une gestion de situations plus simplement qu'avec DSSSL, certaines extensions divergent de DSSSL.

Ces extensions ont été fabriquées de plusieurs façons. Dans certains cas, il a suffi de rajouter de nouvelles valeurs, celles prenant en compte divers modes d'écriture, comme les sens haut-en-bas et bas-en-haut qui viennent en complément de simplement gauche-à-droite et droite-à-gauche.

Dans d'autres cas, les propriétés communes, exprimées en CSS2 comme une seule propriété avec de multiples valeurs simultanées, sont découpées en plusieurs nouvelles propriétés, ce qui offre un contrôle séparé pour les aspects indépendants de la propriété. Par exemple, la propriété 'white-space' a été éclatée en quatre propriétés : la propriété 'white-space-treatment' qui régit le traitement des blancs, la propriété 'linefeed-treatment' qui régit le traitement des retours à la ligne, la propriété 'white-space-collapse' qui régit la fusion de plusieurs blancs consécutifs et la propriété 'wrap-option' qui régit la coupure automatique des lignes quand celles-ci se heurtent à une limite, comme par exemple le bord d'une colonne. La conséquence de la segmentation d'une propriété en deux, ou plus, (sous-)propriétés c'est de faire, de la propriété équivalente et existante en CSS2, un « raccourci » pour le jeu de sous-propriétés qu'elle regroupe.

Dans d'autres cas encore, il a fallu créer des propriétés nouvelles. C'est le cas, par exemple, de celles qui contrôlent les opérations de césure. Parmi celles-ci, il y en a qui servent à identifier l'écriture et le pays originaire du texte ou, comme la propriété 'hyphenation-character', pour désigner le caractère de la césure (variable d'une écriture à l'autre).

Certains des objets de mise en forme et de nombreuses propriétés de XSL sont issus de la spécification CSS2, ce qui affirme leur compatibilité.

Il y a quatre classe de propriétés XSL qu'on peut identifier ainsi :

  1. les propriétés CSS copiées (inchangées dans leur sémantique CSS2) ;

  2. les propriétés CSS avec des valeurs supplémentaires ;

  3. les propriétés CSS éclatées et/ou étendues ;

  4. les propriétés seulement XSL.

1.2.2 Les sélecteurs et la construction de l'arbre

Comme mentionné plus haut, XSL s'appuie sur XSLT et XPath pour la construction de l'arbre et la reconnaissance de motif, ce qui offre une grande finesse d'action sur la manière de présenter des parties du contenu source et sur les propriétés qui leurs sont associées, même dans un contexte d'espaces de nommage mélangés.

Par exemple, les motifs de XPath permettent la sélection d'une partie de chaîne ou le nème nœud de texte d'un paragraphe. Par exemple, cela permet aux utilisateurs de disposer de règles pour rendre tous les troisièmes paragraphes, lors d'étapes procédurales, d'apparaître en caractères gras. De plus, on peut associer des propriétés à une partie du contenu, en fonction de la valeur numérique de celle-ci ou des attributs de l'élément conteneur. Cela permet à quelqu'un une règle de style pour faire apparaître en rouge les valeurs négatives et en noir les valeurs positives. On peut également générer un texte en fonction d'un contexte donné dans l'arbre de la source, ou encore répéter la présentation de parties de cet arbre, à chaque fois dans des styles différents.

1.2.3 Un modèle étendu de disposition de la page

En XSL, un jeu d'objets de mise en forme décrit à la fois la structure de la disposition d'une page, ou « cadre », (quelle est la taille du corps ?, y-a-t'il plusieurs colonnes ?, y-a-t'il des en-têtes, des pieds ou des bandeaux latéraux ?, quelle sont leurs tailles ?) et les règles qui placent le contenu de la source XML dans ces « conteneurs ».

La structure de disposition se définit en termes d'une ou plusieurs instances d'un objet de mise en forme fo:simple-page-master. Cet objet de mise de forme permet à chacun de définir des régions de remplissage indépendantes pour le corps (avec plusieurs colonnes), l'en-tête, le pied et les bandeaux latéraux d'une page. On peut employer ces objets fo:simple-page-master dans des séquences de pages qui spécifieront l'ordre d'utilisation de ces divers objets. La séquence de pages spécifie également comment le contenu stylé remplit ces pages. Ce modèle permet à chacun la spécification d'une séquence d'objets fo:simple-page-master pour le chapitre d'un livre, où les instances de page sont générées automatiquement par le formateur, ou d'une séquence de pages explicite, comme celle utilisée pour la mise en page d'un magazine. Le contenu stylé est attribué aux diverses régions de la page par association du nom de la région aux noms attachés au contenu stylé dans l'arbre résultant.

En plus de ces objets et propriété de mise en forme liés à la disposition, il existe des propriétés dont le rôle est de fournir un niveau de contrôle pour la mise en forme typique des documents paginés. Ceci comprend le contrôle des césures et l'élargissement des contrôles sur du texte inclus dans un autre texte dans la même ligne, la même colonne ou la même page.

1.2.4 Un modèle des aires complet

L'élargissement des propriétés et des objets de mise en forme, notamment dans le domaine de l'espacement des blocs, des lignes et des régions de la page ainsi que dans les lignes, nécessitait l'élargissement du modèle de mise en forme de la boîte de CSS2. Ce modèle élargi est décrit dans le chapitre [4 Le modèle des aires] de cette spécifation. Le modèle de la boîte de CSS2 en représente un sous-ensemble. Voir les correspondances terminologiques entre le modèle de la boîte de CSS2 et celui de l'aire en XSL au chapitre [7.2 Les aires XSL et le modèle de la boîte de CSS]. Le modèle des aires fournit un vocabulaire pour décrire les relations et l'ajustement des espacements entre les lettres, les mots, les lignes et les blocs.

1.2.5 L'internationalisation et les modes d'écriture

Certaines écritures, notamment en Extrême-Orient, ont typiquement un déroulement des mots de haut-en-bas et un déroulement des lignes soit de droite-à-gauche (le plus courant), soit de gauche-à-droite. D'autres sens sont employés également. Les propriétés, qui s'expriment selon un cadre de référence fixe, absolu (en utilisant haut, bas, gauche et droite) et qui ne se conçoivent que selon un déroulement des mots de gauche à droite ou de droite-à-gauche, s'appliquent en général mal au texte produit dans ces écritures.

Pour cette raison XSL (et auparavant DSSSL) utilise un cadre de référence relatif pour les descriptions des objets de mise en forme et les propriétés. Tout comme le cadre de référence de CSS2 avait quatre directions (haut, bas, gauche et droite), celui de XSL en a quatre (avant, après, début et fin), cependant, celles-ci étant définies en fonction du « mode d'écriture ». La propriété 'writing-mode' est nécessaire au formateur dans la gestion des directions pour la disposition précise des glyphes, des mots, des lignes, des blocs, etc. sur la page ou l'écran. Celle-ci exprime les directions de base mentionnées plus haut. Il existe divers modes d'écriture tels que « gauche-à-droite - haut-en-bas » (correspondant à la valeur "lr-tb"), « droite-à-gauche - bas-en-haut » (correspondant à la valeur "rl-tb"), « haut-en-bas - droite-à-gauche » (correspondant à la valeur "tb-rl"), etc. Voir le chapitre [7.27.7 'writing-mode'] décrivant la propriété 'writing-mode'. Typiquement, la valeur de mode d'écriture donne deux directions : la première indique la direction de progression en-ligne [N.d.T. inline-progression-direction], qui correspond au sens de placement des mots, et la seconde la direction de progression de bloc [N.d.T. block-progression-direction], qui correspond au sens de placement, les uns après les autres, des blocs (et des lignes). En plus, la direction de progression en-ligne d'une séquence de caractère peut se déterminer implicitement à partir des types de caractères bidirectionnels de ceux-ci, dans la base de données des caractères Unicode[UNICODE Character Database] et à partir de l'algorithme Unicode bidirectionnel (BIDI) [UNICODE UAX #9].

À côté des directions, qui sont explicites dans le nom des valeurs de la propriété 'writing-mode', les modes d'écriture en déterminent d'autres, nécessaires aux formateurs, comme 'shift-direction' (utilisé pour l'écriture en indice et en exposant), etc.

1.2.6 Les liens

À la différence de HTML, parce que XML ne contient pas de sémantique interne, il n'existe pas de notion interne de lien hypertexte. Dans ce sens, le terme « lien » se rapporte à « lien hypertexte », tel que définis à http://www.w3.org/TR/html401/struct/links.html#h-12.1 et, pour certains aspects du « lien », tel que défini à http://www.w3.org/TR/xlink/#intro, où il est dit que le "lien exprime une relation entre une ou plusieurs ressources, ou parties de ressources, qui est rendue explicite par un élément de liaison XLink". Ainsi, XSL propose un objet de mise en forme qui est l'expression d'une sémantique double, celle de la mise en forme du contenu de la référence du lien et celle de la poursuite du lien en question.

XSL fournit quelques mécanismes pour modifier l'aspect de la cible d'un lien en train d'être visiter. L'un de ceux-ci permet de désigner la cible du lien en tant que telle ; un autre contrôle le placement de la cible du lien dans l'aire de présentation ; un autre encore permet un certain contrôle sur la manière dont la cible du lien s'affiche en relation avec l'ancre initiant ce lien.

XSL fournit également un mécanisme général pour modifier la mise en forme des éléments en fonction de leur état actif. C'est particulièrement utile, dans le cas des liens, pour indiquer si une référence de lien donnée a déjà été visitée ou pour appliquer un certain style en fonction, par exemple, du survol, ou non, par le pointeur, d'une référence de lien.


    
Précédent

Table des matières

début de page          

Suivant