Comment effectuer des boucles des conditions des tris avec le langage XSL

fermer la fenetre

Des Applications Performantes Sans Vous Prendre La Tête !

Recevez la formation "Développement Facilte" GRATUITEMENT
Avec tous les Codes Sources Commentés
 
(Les événements, la programmation orientée objets, les modèles de conception, Les éditeurs, les outils, 
l'efficacité, CSS3, HTML5, JavaScript, jQuery, Dojo...)

Renseignez votre prénom et votre adresse email ci-dessous :

Un nouveau cours dédié au langage XML, et on continu sur les instructions du langage XSL.

Vous allez découvrir la suite des instructions déjà vu précédemment pour continuer sur les transformation avec le langage XSL, avec notament la copie d’objet, les boucles, les tris et les conditions.

Tout est dans la vidéo ci-dessous.

[ppmaccordion][ppmtoggle title=”Afficher le texte de la vidéo”]

Comment effectuer des boucles des conditions des tris avec le langage XSL

Bonjour à tous et bienvenu sur Développement Facile.

Ici Mathieu expert en développement applicatifs, ensemble on continu les cours dédiés au langage XML et donc là, vous allez découvrir la suite des cours précédents sur les transformations XSL, rappelez-vous dans les cours précédents vous avez découvert les instructions pour effectuer des transformations de documents XML avec les instructions XSL, là vous allez découvrir la suite de ces d’instructions dans cette nouvelle vidéo.

La copie d’objets

Vous pouvez copier des objets. Pour copier un nœud ou une valeur atomique du document origine, vous utilisez l’instruction xsl:copy, voici un exemple de la structure de l’instruction copy qui s’affiche sur votre écran, l’attribut use, attribut set est à utiliser si la copie est celle d’un nœud élément, par défaut les espaces de noms sont également copiés, mais vous avez le choix de ne pas les copier en mettant l’attribut copy namespace à la valeur no, tout simplement.

Ensuite vous pouvez … vous avez la possibilité de copier l’élément courant avec le contenu type, ça c’est un exemple de, vous allez prendre l’élément courant avec le contenu de l’élément titre, vous avez votre document source XML article href 69, le titre de l’article, tout ça dans une balise article, et donc avec l’instruction xls:template match = “article”, vous allez rechercher les nœuds articles apply-template select titre, vous allez récupérer le contenu de titre et le mettre dans la balise article, c’est pour ça que vous avez le résultat dans la balise article, le contenu, le titre de l’article, ça fait que vous pouvez réécrire à la volée des documents XML grâce à des instructions XSL que vous choisissez.

Les boucles

Alors vous allez découvrir l’instruction xsl:for-each c’est comme une boucle si vous connaissez les boucles en PHP ou en JavaScript c’est exactement le même fonctionnement qu’une boucle for, xsl:for-each, vous allez parcourir une expression, lui appliquer un traitement, et avoir une sortie. Avec xsl:for-each-group vous pouvez effectuer un groupement des objets d’une séquence, les trier et appliquer un traitement à chacun des groupes, je vous ai mis ici, vous avez la structure de l’instruction xsl:for-each pour pouvoir l’utiliser dans votre développement.

Le regroupement d’objet peut s’effectuer selon plusieurs options,

group-by c’est pour regrouper, ça défini pour chaque élément les groupes d’appartenances par évaluation de l’expression associée à cet attribut, l’objet est ajouté aux différents groupes si celui-ci n’existe pas, et le groupe est créé puis ajouté.

Vous avez group-adjacent, ça permet pour chaque élément de définir un seul groupe d’appartenance, l’objet est ajouté à ce groupe, et si le groupe n’existe pas, celui-ci est créé puis l’objet est ajouté dans le groupe, comme précédemment, si les groupe n’existes pas, l’instruction créée le groupe et on ajoute l’objet dans le groupe. Si les objets à regrouper contiennent uniquement des nœuds, les attributs group-starting-with ou group-ending-with, peuvent aussi vous servir dans le regroupement. Si la valeur du nœud séquence débute ou finit par le pattern spécifié, alors il est ajouté au groupe correspondant, sinon au groupe qui ne vérifie pas le pattern. Vous pouvez également appliquer des critères de tri avec l’instruction xsl:sort descending ascending, tri décroissant ou tri croissant, suivant ce que vous souhaitez. La fonction current-group ça vous retourne la séquence des objets du groupe courant et la fonction current-group-key ça retourne la valeur du groupe courant, les clés de regroupement sont toujours des chaînes de caractères de type xsd:string.

Voici un exemple qui va vous permettre de grouper les personnes par villes et d’ordonner les groupes. Vous avez en entrée ce document XML qui contient plusieurs nœuds personnes dans le nœud racine data, vous avez juste en dessous votre instruction XSL, avec foreach pour lui dire de boucler sur les nœuds personnes on récupère tous les nœuds personne, group-by city, donc on les regroupe par ville, et après on fait un value off select, la position et la City avec un séparateur le – et après on fait un value select groupe by, pour les regrouper par nom, les ordonner en fait tout simplement, ça donne résultats première position Clermont-Ferrand avec Alicia, deuxième position on a Nantes il y a Yannick et Nicolas, on a ordonné, classé par ville, et après les noms, on les a récupérés et on les a entrés par villes.

Si vous avez un document XML avec une liste de noms, de personnes qui habitent dans différentes villes, avec cette instruction XSL, vous pouvez déjà ordonner les villes par ordre alphabétique et regrouper toutes les personnes dans la même ville automatiquement, vous remarquez la puissance des instructions XSL que vous allez pouvoir utiliser dans votre développement.

Les conditions

Vous avez également instructions xsl:if,  c’est comme un if l’expression booléenne donnée dans l’attribut, ça permet de tester l’instruction, xsl:if est vrai alors le traitement est effectué, sinon le traitement n’est pas effectué. Xsl:if, votre test et après le traitement en fonction, si le test est vrai il a été effectué sinon il n’a pas été effectué.

Vous avez xsl:choose, ça fonctionne comme un switch case défaut que vous connaissez en langage JavaScript, PHP,  et d’autres langages, si vous avez déjà utilisé l’instruction switch, si vous la connaissez, vous savez utiliser l’instruction xsl:choose, donc xsl:when teste si le test vrai on fait cette instruction, et vous pouvez en mettre plusieurs otherwhise dans tous les autres cas on fait ce traitement donc c’est le traitement par défaut, le switch when traitement un, case traitement un, switch case traitement deux, switch case traitement trois, par défaut otherwhise comme l’instruction switch case, tout simplement.

Voilà ce texte récapitule ce que je viens de vous dire, xsl:choose ça contient au moins une instruction xsl:when et otherwise, when case, otherwise par défaut, dès xsl:when est vrai, le traitement associé est effectué et le programme sort de l’instruction xsl:choose, si toutes les instructions xsl:when sont fausses, et si xsl:otherwise est présent alors c’est le traitement par défaut qui sera effectué.

Vous avez vu c’est exactement le même principe de fonctionnement qu’un switch case.

Le tri

xsl:sort, vous l’avez vu ça permet d’effectuer un tri, vous pouvez combiner plusieurs critères de tri en exprimant pour chaque critères ordonnant en renseignant pour chaque valeur de xsl:sort, vous avez order ascending, descending, voilà. Tout est expliqué vous avez la structure de base de xsl:sort avec toutes les possibilités que vous pouvez utiliser dans votre développement, xsl:sort est présent si il y a l’instruction fille de xsl:apply-template, bien évidemment, xsl:for-each ou xsl:for-each-group ou xsl:perform-sort, ne fonctionne pas tout seul. Il est pas possible, vous ne pouvez pas trier les données si vous n’avez pas d’instruction apparente pour dire qu’elle donnée récupérer et les trier, c’est logique.

Voici un exemple, à partir d’une liste d’achat vous allez afficher le nom et le prix des achats, triés par ordre décroissant donc du moins cher au plus cher et en ajoutant un deuxième critère de tri par ordre croissant sur le nombre. En entrée vous avez ce document XML avec plusieurs nœuds, buy name pomme et le price, banane et prix, tomate prix, orange prix, vous avez l’instruction XSL qui est utilisée, match on recherche tous les nœuds, apply-template select, on sélectionne uniquement les nœuds buy, et derrière on va récupérer la valeur décimale de l’attribut Price et on va effectuer un ordre, donc un tri par ordre descendant et après on sélectionne l’attribut name, on met une deuxième instruction XSL que vous avez sur votre écran, ou on recherche tous les nœuds match=”buy”, et là on fait une sélection des attributs name et prix, et on utilise un séparateur donc une flèche pour les séparer. Comme résultat vous avez tomate la plus chère, ensuite la banane, ensuite la pomme, et ensuite l’orange avec le prix juste en face.

Comme d’habitude je vous invite vraiment à recopier à la fois le document XML dans un fichier XML, à la fois les instructions XSL dans afficher XSL et d’effectuer le test sur votre site Internet, pour voir le résultat et mieux appréhender ces instructions dans votre développement.

Votre plan d’actions !

A vous de mettre en pratique tous les enseignements de ce cours, si vous avez des questions comme d’habitude, il vous suffit de les poser Juste sous cette vidéo, l’équipe développement facile vous répondra, là juste au-dessus de moi il y a une image lancer la deuxième vidéo, je vous invite à cliquer sur cette image, dans la deuxième vidéo vous allez aller beaucoup plus loin dans l’interaction avec le langage XML, avec les bases de données, le PHP, JavaScript, vous allez également découvrir les balises CSS 3, et HTML 5, donc les nouvelles propriétés CSS 3, les nouvelles balises HTML 5 et combiner tous ces langages pour créer des applications performantes, tout ça c’est dans la deuxième vidéo cliquez là juste sur l’image au-dessus de moi, lancer la vidéo deux et justement je vous dis à tout de suite dans la deuxième vidéo.

[/ppmtoggle] [/ppmaccordion]

Posez vos questions sur les transformations XSL

Utilisez la zone commentaire pour échanger sur les transformation XSL appliquée au XML

Créez des Applications Performantes avec la Formation Gratuite Développement Facile !

Recevez des Cours Vidéos avec les codes sources 
(Les événements, la POO, les modèles de conception, Les éditeurs, 
efficacité, CSS3, HTML5, JavaScript, jQuery, Dojo...)