Quelques analogies entre CSS et XSLT

Posted Thursday, August 3, 2006

Filed under: ,

Ces deux standards visent à modifier le rendu d'un document. Mais leur syntaxe, leur portée et leur complexité sont bien différentes...
Voici quelques correspondances utiles pour passer de l'un à l'autre.

Un fichier CSS est un ensemble de sélecteurs et de règles, du type :
p { text-align : justify }

La partie "p" correspond au sélecteur, et correspondra à tout les éléments "p" du document à traiter.
La règle est située entre accolades, et définit le traitement à y appliquer.

En XSL(T), on retrouve la même structure mais exprimée au format XML :
<xsl:template match="para">
<p>
<xsl:value-of select="." />
</p>
</xsl:template>

Le sélecteur <xsl:template match="para"> est équivalent à "para" en CSS.
La règle <p><xsl:value-of select="." /></p> applique elle aussi une transformation, mais plus radicale celle-ci.
En effet, une transformation XSLT produit un nouveau document qui pourra par exemple être envoyé, affiché, enregistré...
Après application de cette règle, tout les éléments "<para></para>" du document original seront contenus dans des balises "<p></p>".

Tout comme en CSS, un mécanisme de gestion des priorités hiérarchise les différentes "templates" et applique celle dont la spécificité est la plus grande.
A la différence des feuilles de styles CSS, l'ordre d'apparition des templates est sans importance.

Les sélecteurs XSLT sont des requêtes XPATH, ce qui ajoute entre autres la possibilité de remonter dans la hiérarchie du document.

La grande différence entre ces deux langages vient du fait qu'il existe en XSLT de nombreux outils de programmation:

apply-imports //équivalent à include, require, import, etc...
[Nota: correspond également à @import en CSS...]
if, choose( when | otherwise ) et for-each //(choose est équivalent à switch/case)
variable //celui-ci est transparent...
processing-instruction //équivalent à une procédure

D'autres mots-clés XSLT sont plus spécifiquement en rapport avec la hiérarchie XML :
comment //permet d'écrire un commentaire xml tel que <!-- ... -->
copy et copy-of //copie de l'élément sans ou avec ses descendants
element, attribute et text //permettent de produire des éléments, des attributs et des noeuds de texte dans le document généré

Enfin, il existe plusieurs instructions particulières à XSLT :
message //permet théoriquement d'afficher un message sur une console
value-of //renvoie du texte formaté suivant les paramètres qui lui sont passés
number //pour gérer la numérotation dans une collection d'éléments
call-template et apply-templates //pour appeler des templates

J'espère que ces comparaisons vous éclaireront, et je vous renvoie sur la toile pour des ressources plus exhaustives.

Bonne lecture !

Comments disabled because of spammers.

No comments yet

Technorati Profile