xslt tutorial xslt transformations elements with examples
Denne vejledning forklarer, hvad der er XSLT, dets transformationer, elementer og anvendelse med eksempel. Dækker også vigtigheden af XPath for at udvikle XSLT-konverteringskode:
Udtrykket 'XSLT' genereres ved at kombinere to ord, dvs. 'XSL' og 'T', 'XSL' er den korte form for 'Extensible Stylesheet Language' og 'T' er en kort form for 'Transformation'.
Så grundlæggende er XSLT et transformationssprog, der bruges til at omdanne / konvertere XML-kildedokumenter til XML-dokumenter eller til andre formater såsom HTML, PDF ved hjælp af XSL-FO (Formateringsobjekter) osv.
Hvad du vil lære:
Introduktion til XSLT
Transformation sker ved hjælp af XSLT-processoren (som Saxon, Xalan). Denne XSLT-processor tager et eller flere XML-dokumenter som en kilde med en XSLT-fil, der indeholder XSLT-kode skrevet i den, og resultat / output-dokumenter genereres senere som vist i nedenstående diagram.
XSLT-processoren parserer XML-kildedokumenter ved hjælp af X-Path til at navigere over forskellige kildeelementer startende fra rodelementet til slutningen af dokumenter.
Anbefalet læsning => Alt hvad du behøver at vide om X-sti
XSLT-transformation
For at starte transformation har vi brug for et XML-dokument, som XSLT-koden kører på, selve XSLT-kodefilen og værktøjet eller softwaren, der har XSLT-processor (Du kan bruge enhver gratis version eller prøveversion af softwaren til læringsformål).
# 1) XML-kode
Nedenfor er XML-kildekoden, som XSLT-koden kører på.
Filnavn: 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) XSLT-kode
Nedenfor er XSLT-koden baseret på hvilken der kører på ovenstående XML-dokument.
Filnavn: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) Resultat / outputkode
Nedenstående kode produceres efter brug af XSLT-koden i ovenstående XML-dokument.
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) Se resultat / output i webbrowser
Bøger:
Bog-id | Bogens navn | Forfatternavn | Forlægger | Pris | Udgave |
---|---|---|---|---|---|
5350192956 | XSLT-programmeringsreference | Michael Kay | Wrox | $ 40 | 4. plads |
3741122298 | Hoved første Java | Kathy sierra | O'reilly | $ 19 | 1. |
9987436700 | SQL Den komplette reference | James R. Groff | McGraw-Hill | $ 45 | 3. |
XSLT-elementer
For at forstå ovenstående XSLT-kode, og den fungerer, skal vi først forstå de forskellige XSLT-elementer og deres attributter.
# 1) ELLER
Hver XSLT-kode skal starte med rodelementet eller
Egenskaber:
- @xmlns: xsl: Forbinder XSLT-dokument med XSLT-standard.
- @version: Definerer versionen af XSLT-koden til parseren.
#to)
Denne erklæring definerer et sæt regler, der anvendes til at behandle eller omdanne det valgte inputelement i kildedokumentet til de definerede målelementregler i outputdokumenterne.
Dybest set er to typer skabeloner tilgængelige i henhold til deres attributter:
(i) Navngivet skabelon: Når xsl: skabelonelementet indeholder @name-attribut, kaldes dette Navngivet skabelon.
Navngivne skabeloner kaldes af xsl: call-template-element.
(ii) Matchskabelon: Skabelonelementet xsl: indeholder @match-attribut, der indeholder et matchende mønster eller XPath anvendt på inputknudepunkterne.
Matchskabeloner kaldes af xsl: Apply-template-element.
xsl: skabelonelementet skal have enten @ match-attribut eller @name-attribut eller begge dele. Et xsl: skabelonelement, der ikke har nogen matchattribut, skal ikke have nogen tilstandsattribut og ingen prioritetsattribut.
Lad os omskrive ovenstående XSLT (
til) XSLT-kode baseret på matchskabelon med. Se nedenfor gul og grå fremhævet ændret kode, den vil producere det samme ovenstående outputresultat.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se skærmbilledet for det fremhævede område:
b) XSLT-kode baseret på den navngivne skabelon med. Se nedenfor gul og grå fremhævet ændret kode, den vil producere det samme ovenstående outputresultat.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se skærmbilledet for det fremhævede område:
# 3)
Processoren finder og anvender alle de skabeloner, der har XPath defineret i attributten @select.
Attributten @mode bruges også, hvis vi vil give mere end én måde at output med det samme inputindhold på.
# 4)
Processoren ringer til de skabeloner, der har værdi inde i @name-attributten (påkrævet).
element bruges til at overføre parametre til skabelonen.
shell scripting interview spørgsmål og svar til erfarne
# 5)
Angiv streng- / tekstværdien vedrørende det XPath-udtryk, der er defineret i attributten @select, som defineret i ovenstående kode.
Dette giver værdien af bognavnet.
# 6): Gentagelse
Dette behandler instruktionerne for hvert sæt noder (xpath defineret i @select (krævet) attribut) i den sorterede sekvens.
Ovenstående kode betyder for hvert nodesæt af butik / bog betyder:
/ butik / bog (1)
/ butik / bog (2)
/ butik / bog (3)
kan også bruges som et barn af xsl: for-hver til at definere rækkefølgen af sortering.
fase af softwareudviklings livscyklus
# 7): Betinget behandling
Xsl: hvis instruktioner kun behandles, hvis den boolske værdi af @test-attributten vil være sand, ellers evalueres instruktionen ikke, og den tomme sekvens returneres.
2'> Condition True: Count of books are more than two.
Resultat: Betingelse sand: Antallet af bøger er mere end to.
Her er optællingen () den foruddefinerede funktion.
# 8): Alternativ behandling af betingelser
xsl: vælg har flere tilfælde for forskellige forhold, der testes inden for @test-attribut for xsl: når elementer, testtilstanden, der først går i opfyldelse blandt alle xsl: hvornår, der behandles først, og der er en valgfri xls: ellers element, så hvis ingen af betingelsestestene går i opfyldelse, vil denne xsl: ellers blive betragtet.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
Resultat: Betingelse sand: Antallet af bogen er tre.
# 9)
xsl: kopi fungerer på kontekstelement, dvs. hvis det er node, så kopierer det kontekstknudepunktet til den nyligt genererede knude, og dette kopierer ikke børnene til kontekstknudepunktet. Af denne grund kaldes dette en lav kopi. I modsætning til xsl: copy-of-element har xsl: copy ikke attributten @ select.
I nedenstående kode kopieres kontekstelementerne til output, og alle børnepunkter kaldes & kopieres af xsl: anvend-skabelon rekursivt.
node () | @ * Står for alle knudepunkter og alle deres attributter rekursivt.
Resultat: Dette vil kopiere alle noder og attributter i kildedokumentet rekursivt til outputdokumentet, dvs. det vil skabe en nøjagtig kopi af kildedokumentet.
# 10)
xsl: copy-of kopierer sekvensen af noder med alle sine børn og attributter rekursivt som standard, på grund af denne art kaldes dette også som dyb kopiering. @select-attribut er påkrævet til evaluering af XPath.
Resultat: Dette vil kopiere alle noder og attributter i kildedokumentet rekursivt til outputdokumentet, dvs. det vil skabe en nøjagtig kopi af kildedokumentet.
Står for en kopi af den aktuelle node og aktuelle attribut.
#elleve)
Dette element bruges til at skrive en kommentar til målresultatet. Alt tekstindhold, der sidder ved dette tag, udskrives som kommenteret output.
Dette vil blive udskrevet for at blive sendt som en kommentarnode.
Resultat:
# 12)
Dette vil generere en tekstnode til resultatet dokumentet, værdien inde i xsl: tekst bliver udskrevet som en streng til output.
Dette er en
tekstlinje.
Produktion:
Dette er en
tekstlinje.
# 13)
Dette genererer et element til resultatdokumentet med navnet nævnt i dets @name-attribut. Navneattributten er den krævede attribut.
Resultat: 5350192956
# 14)
Dette genererer en attribut til dets overordnede element i resultatdokumentet. Navnet på attributten er defineret af navnattributten, og værdien af attributten beregnes af XPath nævnt i select-attributten som angivet i nedenstående kode. Navneattributten er den krævede attribut.
Resultat:
#femten)
Dette element sorterer den valgte node på en rækkefølge i overensstemmelse med stigende eller faldende retning. Noden eller XPath gives via @select-attributten, og sorteringsretningen er defineret af attributten @order.
I nedenstående kode får vi alle bøger listen efter bognavnet i alfabetisk rækkefølge.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se dette skærmbillede for det fremhævede område:
Resultat: Nedenstående liste indeholder bognavne i alfabetisk rækkefølge, dvs. i stigende rækkefølge.
Bøger:
Bog-id | Bogens navn | Forfatterens navn | Forlægger | Pris | Udgave |
---|---|---|---|---|---|
3741122298 | Hoved første Java | Kathy sierra | O'reilly | $ 19 | 1. |
9987436700 | SQL Den komplette reference | James R. Groff | McGraw-Hill | $ 45 | 3. |
5350192956 | XSLT-programmeringsreference | Michael Kay | Wrox | $ 40 | 4. plads |
# 16)
Dette element erklærer en variabel, der indeholder en værdi i den. En variabel kan være en global variabel eller lokal variabel. Navnet på variablen er defineret af attributten @name, og den værdi, som denne variabel har, defineres af attributten @select.
Adgangen til den globale variabel er global, dvs. variablerne kan kaldes inden for ethvert element og forblive tilgængelige inden for stilarket.
For at definere en global variabel er vi bare nødt til at erklære, at ved siden af rodelementet i stilarket som vist i nedenstående kode i det gule fremhævede, er variablen 'SecondBook' den globale variabel, og den indeholder navnet på den anden bog.
Adgangen til den lokale variabel er lokal til det element, hvori den er defineret, dvs. at variablen ikke ville være tilgængelig uden for det element, hvori den er defineret som vist i nedenstående kode, der er grå fremhævet, variablen 'første bog' er en lokal variabel, og den indeholder navnet på den første bog.
For at foretage et opkald til enten den globale variabel til den lokale variabel anvendes Dollarsymbolet ($) foran variabelens navn, som vist nedenfor i gul fremhævet $ .
First Book Name: Second Book Name:
Se skærmbilledet for det fremhævede område:
Resultat:
Første bognavn: XSLT programmeringsreference
Andet bognavn: Head First Java
# 17)
Dette element bruges til at erklære nøgler til at matche mønsterværdier til den pågældende nøgle.
Navn er en udbyder af denne nøgle ved attributten @name (“ get-publisher “), Som senere bruges inde i nøglefunktionen (). @match-attribut leveres til indeksinputknudepunkt af XPath-udtryk (“ Bestil “), Som i nedenstående gule fremhævede @match bruges til at indeksere på alle de tilgængelige bøger i butikken.
I forhold til @match-attribut bruges @use-attributten, den erklærer noden for at få værdien for den nøgle gennem XPath-udtryk ('udgiver').
Antag nu, at hvis vi har brug for detaljerne i den bog, der kun udgives af 'Wrox' udgiver, kan vi nemt få denne værdi gennem xsl: nøgleelement ved at oprette et nøgleværdipar.
nøgle ('get-publisher', 'Wrox') Nøgle () tager to parametre, det første er navnet på nøglen, som i dette tilfælde er 'get-publisher', for det andet er strengværdien, der skal søges, som i vores tilfælde er 'Wrox'.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se skærmbilledet for det fremhævede område:
Resultat:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
Resultat / HTML-visning:
Bøger:
Bog-id | Bogens navn | Forfatterens navn | Forlægger | Pris | Udgave |
---|---|---|---|---|---|
5350192956 | XSLT-programmeringsreference | Michael Kay | Wrox | $ 40 | 4. plads |
# 18)
Dette element bruges til fejlfindingsformål i XSLT-udvikling. Elementet giver sin output til programmets standardoutputskærm.
Attributten @terminate bruges med to værdier, enten 'ja' eller 'nej'. Hvis værdien er indstillet til 'ja', afsluttes parseren med det samme, så snart testbetingelsen bliver tilfreds for, at meddelelsen bliver udført.
For at forstå dette, lad os antage, at hvis priselementet i vores inputdokument ved et uheld tømmes som i nedenstående kode, skal behandlingen stoppe med det samme, så snart processoren møder det tomme priselement, som let kan opnås ved hjælp af xsl: meddelelse inde i hvis testtilstand som i nedenstående XSLT-kode.
Fejlfindingsalarm vises på applikationsstandardskærmen: Behandling afsluttet med xsl: besked på linje 21.
Indtast XML-kode:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Se skærmbillede for fremhævet område:
XSLT-kode:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
Se skærmbillede for fremhævet område:
Resultat: Vær opmærksom på, at så snart parseren møder den tomme pris, afslutter den straks behandlingen, på grund af hvilken de afsluttende tags af, og ville ikke komme i slutningen af filen.
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 Se skærmbillede for fremhævet område:
# 19) &
element definerer parameteren til skabelon, hvis den er defineret inde. Det kan defineres enten indeni som den globale parameter eller inde som den lokale parameter til den skabelon.
Værdien af sendes / leveres, når skabelonen kaldes af eller.
den overfører værdien af den definerede parameter i skabelonen. Attribut som @name indeholder navnet på den parameter, der skal matche elementet @name-attribut. @Vælg attribut bruges til at indstille en værdi til denne parameter.
For at hente værdien af parameteren bruges det samme som et variabelt dollartegn ($).
c ++ udefineret henvisning til klassefunktion
Kilde XML-kode:
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
XSLT-kode:
List of Books Name :-
Book Name:
Se skærmbillede for det fremhævede område:
Resultat output:
List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference