index
est un attribut spécifique au langage XML de Blogger qui a pour but d'associer un nom d'indice à un tableau.
Syntaxe
index='string'
La classification de l'attribut index
est de type HTML classique (C-à-D, le contenu n'est pas une expression Blogger) dont la valeur à introduire est de type string (une simple chaîne de caractères). Il a été conçu pour associer un nom d'indice à un tableau d'items.
Ce nom doit être utilisé dans les noeuds enfants en tant que nouvelle donnée numérique dans des expressions Blogger. La valeur de la donnée devient un nombre entier positif. Quelque soit le type de tableau et les éventuels filtres appliqués, l'indice du premier item est toujours la valeur 0
.
Ainsi, nous pouvons récupérer la valeur de l'indice et l'a traiter de diverses manières, comme par exemple numéroter les items de la liste...
L'attribut peut être intégré dans ces balises Blogger :
Balises | Description | Classification | Préfixe « expr: » | Implantation |
---|---|---|---|---|
<b:loop> |
Boucle Balise permettant d'accéder aux items contenus dans un tableau. |
Classification : HTML Classic | Préfixe « expr: » : Autorisé | Implantation : Facultative |
Connaître l'indice de l'élément courant d'une boucle
C'est la méthode la plus courante, généralement utilisée pour construire des IDs ou tout simplement numéroter la liste.
L'indice par défaut
<b:loop index='i' values='["Toto","Raoul","Gustave"]' var='name'> <data:i/> : <data:name/> </b:loop>
Explication
Dans la balise <b:loop>
, le nom de l'indice associé au tableau est i
.
Dans les noeuds enfants, le numéro de l'indice est renfermé dans data:i
.
Le résultat sera :
- 0 : Toto
- 1 : Raoul
- 2 : Gustave
L'indice +1
<b:loop index='i' values='["Toto","Raoul","Gustave"]' var='name'> <b:eval expr='data:i + 1'/> : <data:name/> </b:loop>
Explication
Dans la balise <b:loop>
, le nom de l'indice associé au tableau est encore la lettre i
.
Dans les noeuds enfants, le numéro de l'indice est renfermé dans data:i
. Comme la donnée est un nombre, on l'intégre dans une addition.
Le résultat sera :
- 1 : Toto
- 2 : Raoul
- 3 : Gustave
Récupérer un élément d'un tableau par son indice
Cette méthode est à privilégier que dans des cas qu'on ne peut pas obtenir en utilisant la méthode traditionnelle. Dans notre exemple, nous récupérons dans une même boucle, l'élément courant i
, l'élément précédent i-1
et l'élément suivant i+1
. Vous trouverez un échantillon d'une mise en oeuvre concrète dans notre code de démonstration de la barre de pagination numérotée.
<b:with value='["Toto","Raoul","Gustave"]' var='name'> <b:loop index='i' values='0 to data:name.length - 1' var='arrayNumber'> <!-- Index [i] --> <b:eval expr='data:name[i]'/> <!-- Index [i+1] --> <b:with value='data:i + 1' var='next'> <b:eval expr='data:name[next]'/> </b:with> <!-- Index [i-1] --> <b:if cond='data:i gt 0'> <b:with value='data:i - 1' var='prev'> <b:eval expr='data:name[prev]'/> </b:with> </b:if> </b:loop> </b:with>
Explication
Dans la balise <b:with>
, nous définissons un tableau. Cette étape n'est pas requise si vous utilisez un tableau existant.
Dans la balise <b:loop>
, nous définissons d'abord un nom à l'index qu'on appellera encore et toujours i
. Ensuite, nous définissons un tableau de nombres avec l'opérateur to
. La plage de nombres à définir doit correspondre à la taille -1 du tableau qu'on a créé dans la balise parente <b:with>
.
Et enfin, dans les noeuds enfants de la boucle, il n'y a plus qu'à traiter l'indice i
de différentes manières pour obtenir tel ou tel résultat.
Rappel : Dans une donnée, la valeur de l'indice doit toujours être un nombre entier positif. Lorsque ce critère n'est pas respecté, l'ensemble de la section où se trouve le code ne travaillera pas.
Le résultat sera :
- Boucle #0 :
- [i] : Toto
- [i+1] : Raoul
- [i-1] : Pas de valeur (n'existe pas)
- Boucle #1 :
- [i] : Raoul
- [i+1] : Gustave
- [i-1] : Toto
- Boucle #2 :
- [i] : Gustave
- [i+1] : Pas de valeur (n'existe pas)
- [i-1] : Raoul
Usage d'un préfixe d'expression
Le préfixe expr:
peut être ajouté à l'attribut index
pour le tranformer en un attribut d'expression.
Son usage est relativement rare, voire inexistant parce qu'il n'y a pas de réelle justification pour l'employer. Les quelques cas qui nous semblaient à première vue très intéressants, nous ont conduit à devoir construire une "tour de Pise" qui ralentissait considérablement le temps de traitement du fichier. En conclusion, ça ne vaut pas le coup d'épuiser des ressources qui peuvent être mieux utilisées.