Pour publier un document, nous avons souvent besoin de publier une donnée plusieurs fois, et de plusieurs manières différentes. Lorsque l'on fait un appel classique à un transformer, c'est toujours le même qui est appelé, et il publie toujours les données de la même manière, avec toujours les mêmes classes pour le stylage.
Le rôle des axis est de définir plusieurs versions d'un même transformer, qui peuvent publier la même donnée de plusieurs manières différentes. Autrement dit : Un axis est une variante d'un transformer, il permet de parcourir un .model dans un contexte particulier.
Par exemple, dans notre liste de planètes, nous pouvons rajouter une page "galerie" qui va afficher des miniatures de toutes les photos des planètes.
En XSL, ce concept se rapproche de celui de l’attribut mode sur xsl:apply-template et sur xsl:template.
À partir d'un transformer ou du template, lorsque l'on utilise callSubModel, callRootModel, callSubMeta, callMeta, ou autre appel à un transformer fils, nous avons la possibilité de préciser un axis. Par exemple, dans universe.transf, on rajoute un appel, pour chaque astre de la liste, avec l'axis gallery.
Vous allez maintenant créer les transformers fils pour reproduire toute une hiérarchie jusqu'à arriver au niveau "image".
Par convention, on nomme les fichiers axis avec transformers sous la forme codeObjet@codeAxis.transf.
Le premier callSubModel axis gallery situé dans universe.transf est un appel au transformer de XXXX.model d’axis YYYY. Dupliquez XXXX.transf en XXXX@YYYY.transf
est un appel au transformer de la composition astrobj.model d’axis galery
Dupliquez astrobj.transf en astrobj@gallery.transf
Paramétrez le transformer en renseignant bien l’axis dans la définition du transformer (sous sm:model), et faites un appel à ses métadonnées d’axis gallery.
On cherche à afficher seulement quelques informations sur l’astre, donc on ne veut pas toutes les métadonnées, seulement une sélection.
Notre deuxième appel callCompositionMeta axis gallery que l’on vient de paramétrer est un appel au transformer de XXXX.model d’axis YYYY. Dupliquez XXXX.transf en XXXX@YYYY.transf
est un appel au transformer de la dataform astrobjM.model d’axis galery
Dupliquez astrobjM.transf en astrobjM@gallery.transf
Paramétrez le transformer en renseignant bien l’axis.
Proposition : afficher seulement la photo en miniature (avec encore une fois un axis gallery pour paramétrer l’affichage de l’image dans ce contexte précis).
Enregistrez les items en cours et jetez un œil à l’écran de contrôle. Quel est le problème ? Quelle étape manque ?
Utiliser les axis sur les ressources binaires permet de spécifier leurs propriétés de publication dans un cas d'usage, par exemple changer la taille d'une image dans la version "galeries de miniatures".
Nous allons utiliser cette possibilité pour forcer la taille des images à 200 pixels de large (200 en min et en max). On copie les transformeurs jpeg_web.transf et png_web.transf du modelet binary pour avoir un point de départ.

D’axis gallery.
on modifie ces 2 transformers.

On pourrait aussi appeler les transformeurs des images sans axis une fois arrivés dans astrobjMeta@gallery.transf mais dans ce cas, nous n'aurions pas l'image à la taille personnalisée que nous souhaitons.
Déclarez les nouveaux transformers créés.
Créez un contenu de test avec 3 planètes et autant de photos. Si vous avez réussi, les 3 photos devraient apparaître sur la page d'introduction.
Comme toujours, pensez à rajouter vos nouveaux transformers dans le fichier
transflist de votre modèle (comme vous pouvez le voir sur la fenêtre ci-dessous), c'est valable aussi pour les transformeurs avec axis, chacun doit être ajouté.

