-
1 pièce(s) jointe(s)
comprendre un code xslt
salut à tous j'ai des difficulté:( à comprendre un code en XSLT avec un prédicat, je ne sais pas si vous pouvez me l'expliquer.
ce sont les parties surlignée en jaune: Que testons-nous dans le <if> ? Pourquoi faire ceci ?; et Que fait le <xsl:apply-templates> ?
Merci d'avance
-
D'abord, savez-vous le sens des axes preceding, descendant et following-sibling ? Sinon, c'est plus convenqble à expliquer par quelques graphiques, inconvenient à faire ici en quelques mots de description.
-
comprendre un code xslt
pour la première question, je comprends que le if nous permet de faire un test de position qui nous montre qu'il ne doit pas être suivi d'un frère précedent qui s'appelle item en adresse, avec un prédicat qui récupère la chaîne de caractère.
et sur le applytemplates, il va sélectionner l'élément courant suivi d'un frère postposé et de n'importe quel élément qui est représenté par le * avec une condition qui récupère les descendants d'item en adresse.
mais plus concrètement, je n'arrive à me répertorier. pouvez vous m'expliquez mieux?
merci d'avance.
-
Bien, vous comprenez des axes, je suppose, comme si été une insulte questionné ? Je peux m'exercer avec des explications suivant.
Code:
<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").
Code:
<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à !
-
comprendre un code xslt
merci beaucoup j'arrive à comprendre mieux avec vos explications:D. C'est ma première année en XSLT, c'est pourquoi je cale un peu sur certains codes.
j'arrivais pas à bien comprendre la fonction substring, j'ai pu comprendre qu'il récupère une chaîne de caractère et renvoie un résultat. et c'est ce résultat que je n'arrive pas à comprendre la logique.
si vous pouvez m'expliquer juste la fonction substing dans ce code je vous en serait reconnaissant.
j'espère juste que celà ne vous embête pas.
merci beaucoup.
-