Bien, vous comprenez des axes, je suppose, comme si été une insulte questionné ? Je peux m'exercer avec des explications suivant.
<xsl:if test="not(precediing::item-en-adress[substring(.,1,1)=$initiale)">
Cette expression dit de tester si vraie qu'il n'y pas (not()) d'élément nommé item-en-accdresse qui se trouve dans la région preceding (preceding::item-en-adresse) par rapport à l'élément en contexte (@match="article|article-de-adresse") avec le caractère suivant, viz, le premier caractère du contenu textuel étant égale à la valeur de la variable 5initiale définie aupravant (xsl:variable name="initiale").
<xsl:apply-templates select=".|following-sibling::*[substring(descendant::item-en-adresse,1,1)=$initiale"][substring(local-name(),7)='article'] />
Cette expression dit d'appliquer le template (sans qualifié par l'attribut @mode="regroupement") qui est pour l'élément en contexte (.) ou (|) tous les éléments (*) qui se trouvent dans la région following-sibling (following-sibling::*) qui ont ces deux caractères, viz, 1) qu'ils contienent au moins un élément comme décendant nommé item-en-adresse (decendant::item-en-adresse) que son contenu textuel ayant le premier caractère égale à la valeur de la variable 5initiale définie aupravant (xsl:variable name="initiale"); et 2) que le nom de ces éléments étant un string 'article' à partir de son septième caractère (comme par exemple 'xxxxxxarticle').
Voilà !
Partager