xslt tutorial xslt transformations elements with examples
Ce didacticiel explique ce qu'est XSLT, ses transformations, ses éléments et son utilisation avec un exemple. Couvre également l'importance de XPath pour développer le code de conversion XSLT:
Le terme «XSLT» est généré en combinant deux mots, à savoir «XSL» et «T», «XSL» est la forme courte de «Extensible Stylesheet Language» et «T» est une forme courte de «Transformation».
Donc, fondamentalement, XSLT est un langage de transformation qui est utilisé pour transformer / convertir des documents XML source en documents XML ou dans d'autres formats tels que HTML, PDF en utilisant XSL-FO (Objets de mise en forme), etc.
Ce que vous apprendrez:
Introduction à XSLT
La transformation se fait à l'aide du processeur XSLT (comme Saxon, Xalan). Ce processeur XSLT prend un ou plusieurs documents XML comme source avec un fichier XSLT contenant du code XSLT écrit et les documents de résultat / de sortie seront générés plus tard, comme indiqué dans le diagramme ci-dessous.
Le processeur XSLT analyse les documents XML source à l'aide de X-Path pour naviguer sur différents éléments source à partir de l'élément racine jusqu'à la fin des documents.
Lecture recommandée => Tout ce que vous devez savoir X-Path
Transformation XSLT
Pour démarrer la transformation, nous avons besoin d'un document XML sur lequel le code XSLT s'exécutera, le fichier de code XSLT lui-même et l'outil ou le logiciel doté d'un processeur XSLT (vous pouvez utiliser n'importe quelle version gratuite ou version d'essai du logiciel à des fins d'apprentissage).
# 1) Code XML
Vous trouverez ci-dessous le code XML source sur lequel le code XSLT s'exécutera.
Nom de fichier: Books.xml
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 2) Code XSLT
Vous trouverez ci-dessous le code XSLT basé sur celui qui fonctionnera sur le document XML ci-dessus.
Nom de fichier: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) Code de résultat / sortie
Le code ci-dessous sera produit après avoir utilisé le code XSLT sur le document XML ci-dessus.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st 9987436700 SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 4) Afficher le résultat / la sortie dans le navigateur Web
Livres:
ID du livre | Nom du livre | Nom de l'auteur | Éditeur | Prix | Édition |
---|---|---|---|---|---|
5350192956 | Référence du programmeur XSLT | Michael Kay | Wrox | 40 $ | 4e |
3741122298 | Tête d'abord Java | Kathy Sierra | O'reilly | 19 $ | 1er |
9987436700 | SQL La référence complète | James R. Groff | McGraw-Hill | 45 $ | 3e |
Éléments XSLT
Pour comprendre le code XSLT ci-dessus et qu'il fonctionne, nous devons d'abord comprendre les différents éléments XSLT et leurs attributs.
# 1) OU
Chaque code XSLT doit commencer par l'élément racine ou
Les attributs:
- @xmlns: xsl: Connecte le document XSLT avec la norme XSLT.
- @version: Définit la version du code XSLT pour l'analyseur.
#deux)
Cette déclaration définit un ensemble de règles appliquées pour traiter ou transformer l'élément d'entrée sélectionné du document source en règles d'élément cible définies des documents de sortie.
Fondamentalement, deux types de modèles sont disponibles selon leurs attributs:
(i) Modèle nommé: Lorsque l'élément xsl: template contient l'attribut @name, cela s'appelle Named Template.
Les modèles nommés sont appelés par l'élément xsl: call-template.
(ii) Modèle de correspondance: L'élément xsl: template contient l'attribut @match qui contient un modèle correspondant ou XPath appliqué aux nœuds d'entrée.
Les modèles de correspondance sont appelés par l'élément xsl: apply-template.
L'élément xsl: template doit avoir l'attribut @ match ou l'attribut @name ou les deux. Un élément xsl: template qui n'a pas d'attribut de correspondance ne doit avoir aucun attribut de mode et aucun attribut de priorité.
Réécrivons le XSLT ci-dessus (
à) Code XSLT basé sur Match Template avec. Voir ci-dessous le code modifié surligné en jaune et gris, il produira le même résultat de sortie ci-dessus.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Reportez-vous à la capture d'écran pour la zone en surbrillance:
b) Code XSLT basé sur le modèle nommé avec. Voir ci-dessous le code modifié surligné en jaune et gris, il produira le même résultat de sortie ci-dessus.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Reportez-vous à la capture d'écran pour la zone en surbrillance:
# 3)
Le processeur trouvera et appliquera tous les modèles dont XPath est défini dans l'attribut @select.
L'attribut @mode est également utilisé si nous voulons donner plus d'un moyen de sortie avec le même contenu d'entrée.
# 4)
Le processeur appellera les modèles ayant une valeur dans l'attribut @name (obligatoire).
element est utilisé pour transmettre des paramètres au modèle.
c ++ rand entre 0 et 1
# 5)
Fournissez la valeur de chaîne / texte concernant l'expression XPath définie dans l'attribut @select, comme défini dans le code ci-dessus.
Cela donnera la valeur du nom du livre.
# 6): Répétition
Cela traitera les instructions pour chaque ensemble de nœuds (xpath défini dans l'attribut @select (obligatoire)) dans la séquence triée.
Le code ci-dessus signifie pour chaque ensemble de nœuds de magasin / livre signifie:
/ magasin / livre [1]
/ magasin / livre [2]
/ magasin / livre [3]
peut également être utilisé comme enfant de xsl: for-each pour définir l'ordre de tri.
# 7): Traitement conditionnel
Les instructions xsl: if ne seront traitées que si la valeur booléenne de l'attribut @test sera vraie sinon l'instruction ne sera pas évaluée et la séquence vide est retournée.
2'> Condition True: Count of books are more than two.
Résultat: Condition vraie: le nombre de livres est supérieur à deux.
Ici, le count () est la fonction prédéfinie.
# 8): Traitement des conditions alternatives
xsl: choose ont plusieurs cas pour différentes conditions qui sont testées à l'intérieur de l'attribut @test des éléments xsl: when, la condition de test qui se vérifie en premier parmi tous les xsl: when, qui sera traitée en premier et il y a un xls optionnel: sinon élément de sorte que si aucun des tests de condition ne se vérifie, alors ce xsl: sinon sera considéré.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
Résultat: Condition vraie: le nombre de livres est de trois.
# 9)
xsl: copy fonctionne sur l'élément de contexte, c'est-à-dire que s'il s'agit d'un nœud, il copiera le nœud de contexte sur le nœud nouvellement généré et cela ne copiera pas les enfants du nœud de contexte. Pour cette raison, cela s'appelle une copie superficielle. Contrairement à l'élément xsl: copy-of, le xsl: copy n'a pas l'attribut @ select.
Dans le code ci-dessous, les éléments de contexte sont copiés dans la sortie et tous les éléments enfants sont appelés et copiés par le xsl: apply-template de manière récursive.
nœud () | @ * Représente tous les nœuds et tous leurs attributs de manière récursive.
Résultat: Cela copiera tous les nœuds et attributs du document source de manière récursive dans le document de sortie, c'est-à-dire qu'il créera une copie exacte du document source.
# dix)
xsl: copy-of copiera la séquence de nœuds avec tous ses enfants et attributs récursivement par défaut, en raison de cette nature, cela est également appelé copie profonde. L'attribut @select est requis pour l'évaluation de XPath.
Résultat: Cela copiera tous les nœuds et attributs du document source de manière récursive dans le document de sortie, c'est-à-dire qu'il créera une copie exacte du document source.
Représente une copie du nœud actuel et de l'attribut actuel.
#Onze)
Cet élément est utilisé pour écrire un commentaire sur le résultat cible, tout contenu de texte situé à côté de cette balise sera imprimé en tant que sortie commentée.
Cela sera imprimé pour sortir en tant que nœud de commentaire.
Résultat:
N ° 12)
Cela générera un nœud de texte vers le document de résultat, la valeur à l'intérieur du xsl: text sera imprimée sous forme de chaîne à la sortie.
C'est un
ligne de texte.
Production:
C'est un
ligne de texte.
N ° 13)
Cela générera un élément dans le document de résultat avec le nom mentionné dans son attribut @name. L'attribut de nom est l'attribut requis.
Résultat: 5350192956
N ° 14)
Cela générera un attribut à son élément parent dans le document de résultat. Le nom de l'attribut est défini par l'attribut name et la valeur de l'attribut est calculée par le XPath mentionné dans l'attribut select comme indiqué dans le code ci-dessous. L'attribut de nom est l'attribut requis.
Résultat:
#quinze)
Cet élément triera le nœud sélectionné de manière séquentielle en conséquence dans le sens ascendant ou descendant. Le nœud ou XPath est donné via l'attribut @select et le sens du tri est défini par l'attribut @order.
Dans le code ci-dessous, nous obtiendrons la liste de tous les livres selon le nom du livre dans un ordre alphabétique.
meilleur ripper de dvd gratuit pour windows 10
Books:-
Book ID Book Name Author Name Publisher Price Edition
Reportez-vous à cette capture d'écran pour la zone en surbrillance:
Résultat: La liste ci-dessous contient les noms de livres par ordre alphabétique, c'est-à-dire par ordre croissant.
Livres:
ID du livre | Nom du livre | Nom de l'auteur | Éditeur | Prix | Édition |
---|---|---|---|---|---|
3741122298 | Tête d'abord Java | Kathy Sierra | O'reilly | 19 $ | 1er |
9987436700 | SQL La référence complète | James R. Groff | McGraw-Hill | 45 $ | 3e |
5350192956 | Référence du programmeur XSLT | Michael Kay | Wrox | 40 $ | 4e |
# 16)
Cet élément déclare une variable qui contient une valeur. Une variable peut être une variable globale ou une variable locale. Le nom de la variable est défini par l'attribut @name et la valeur que cette variable contiendra est définie par l'attribut @select.
L'accès à la variable globale est global, c'est-à-dire que les variables peuvent être appelées dans n'importe quel élément et rester accessibles dans la feuille de style.
Pour définir une variable globale, il suffit de déclarer qu’à côté de l’élément racine de la feuille de style comme indiqué dans le code ci-dessous dans le jaune surligné, la variable «SecondBook» est la variable globale et elle contient le nom du deuxième livre.
L'accès de la variable locale est local à l'élément dans lequel elle est définie c'est-à-dire que cette variable ne serait pas accessible en dehors de l'élément dans lequel elle est définie comme indiqué dans le code ci-dessous qui est surligné en gris, la variable 'premier livre' est un variable locale et contient le nom du premier livre.
Pour appeler la variable globale vers la variable locale, le symbole Dollar ($) est utilisé avant le nom de la variable, comme indiqué ci-dessous en jaune surligné $ .
First Book Name: Second Book Name:
Reportez-vous à la capture d'écran pour la zone en surbrillance:
Résultat:
Nom du premier livre: référence du programmeur XSLT
Nom du deuxième livre: Head First Java
# 17)
Cet élément est utilisé pour déclarer des clés, pour les valeurs de modèle correspondant à cette clé particulière.
Name est un fournisseur de cette clé par l'attribut @name (' get-publisher “), Qui est ensuite utilisé dans la fonction key (). L'attribut @match est fourni pour indexer le nœud d'entrée par des expressions XPath (' livre '), Comme dans le jaune ci-dessous, @match est utilisé pour indexer tous les livres disponibles dans le magasin.
Par rapport à l'attribut @match, l'attribut @use est utilisé, il déclare le nœud pour obtenir la valeur de cette clé via l'expression XPath («publisher»).
Maintenant, supposons que si nous avons besoin des détails du livre qui est publié uniquement par l'éditeur «Wrox», nous pouvons obtenir cette valeur facilement via xsl: key element en créant une paire clé-valeur.
clé ('get-publisher', 'Wrox') Key () prend deux paramètres, le premier est le nom de la clé, qui dans ce cas est 'get-publisher', le second est la valeur de chaîne qui doit rechercher qui dans notre cas est 'Wrox'.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Reportez-vous à la capture d'écran pour la zone en surbrillance:
Résultat:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
Résultat / Affichage HTML:
quel est le meilleur téléchargeur vidéo
Livres:
ID du livre | Nom du livre | Nom de l'auteur | Éditeur | Prix | Édition |
---|---|---|---|---|---|
5350192956 | Référence du programmeur XSLT | Michael Kay | Wrox | 40 $ | 4e |
# 18)
Cet élément est utilisé à des fins de débogage dans le développement XSLT. L'élément donne sa sortie à l'écran de sortie standard de l'application.
L’attribut @terminate est utilisé avec deux valeurs «yes» ou «no», si la valeur est définie sur «yes», l’analyseur se termine immédiatement dès que la condition de test est satisfaite pour que le message soit exécuté.
Pour comprendre cela, supposons que si dans notre document d'entrée l'élément de prix se vide accidentellement comme dans le code ci-dessous, le traitement devrait s'arrêter immédiatement dès que le processeur rencontre l'élément de prix vide qui peut être facilement atteint en utilisant xsl: message dans la condition de test if comme dans le code XSLT ci-dessous.
L'alerte du débogueur est affichée par l'écran standard de l'application: Traitement terminé par xsl: message à la ligne 21.
Code XML d'entrée:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Reportez-vous à la capture d'écran pour la zone en surbrillance:
Code XSLT:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
Reportez-vous à la capture d'écran pour la zone en surbrillance:
Résultat: Veuillez noter que dès que l'analyseur rencontre l'étiquette de prix vide, il met immédiatement fin au traitement à cause duquel les balises de fermeture de, et ne viendrait pas à la fin du fichier.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st Reportez-vous à la capture d'écran pour la zone en surbrillance:
# 19) et
element définit le paramètre du template s'il est défini à l'intérieur. Il peut être défini à l'intérieur comme paramètre global ou à l'intérieur comme paramètre local de ce modèle.
La valeur de est transmise / fournie lorsque le modèle est appelé par ou.
il transmet la valeur du paramètre défini dans le modèle. Un attribut comme @name contient le nom du paramètre qui doit correspondre à l'attribut @name de l'élément. L'attribut @Select est utilisé pour définir une valeur sur ce paramètre.
Pour récupérer la valeur du paramètre de la même manière qu'un signe dollar variable ($) est utilisé.
Code XML source:
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Code XSLT:
List of Books Name :-
Book Name:
Reportez-vous à la capture d'écran pour la zone en surbrillance:
Résultat de sortie:
List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference