index : L'attribut de l'indice d'un tableau

Blogger - L'attribut de l'indice [index]

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.



Spotlight

Populaires cette semaine

Foire aux questions Blogger (Novembre 2021)

Le fichier XML du gadget Blog