xslt tutorial xslt transformations elements with examples
Denne opplæringen forklarer hva som er XSLT, dens transformasjoner, elementer og bruk med eksempel. Dekker også viktigheten av XPath for å utvikle XSLT-konverteringskode:
Begrepet 'XSLT' genereres ved å kombinere to ord, dvs. 'XSL' og 'T', 'XSL' er den korte formen for 'Extensible Stylesheet Language' og 'T' er en kort form for 'Transformation'.
Så, i utgangspunktet er XSLT et transformasjonsspråk som brukes til å transformere / konvertere XML-kildedokumenter til XML-dokumenter eller til andre formater som HTML, PDF ved å bruke XSL-FO (formateringsobjekter), etc.
Hva du vil lære:
Introduksjon til XSLT
Transformasjon skjer ved hjelp av XSLT-prosessoren (som Saxon, Xalan). Denne XSLT-prosessoren tar en eller flere XML-dokumenter som en kilde med en XSLT-fil som inneholder XSLT-kode skrevet i den, og resultat- / utdatadokumentene blir generert senere som vist i diagrammet nedenfor.
XSLT-prosessoren analyserer XML-kildedokumentene ved å bruke X-Path til å navigere over forskjellige kildeelementer fra rotelementet til slutten av dokumentene.
Anbefalt lesing => Alt du trenger å vite om X-sti
XSLT-transformasjon
For å starte transformasjon trenger vi ett XML-dokument som XSLT-koden vil kjøre på, selve XSLT-kodefilen og verktøyet eller programvaren som har XSLT-prosessor (Du kan bruke hvilken som helst gratisversjon eller prøveversjon av programvaren for læringsformål).
# 1) XML-kode
Nedenfor er XML-kildekoden som XSLT-koden skal kjøre 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 basert på hvilken som kjører på XML-dokumentet ovenfor.
Filnavn: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) Resultat / utgangskode
Koden nedenfor produseres etter bruk av XSLT-koden i XML-dokumentet ovenfor.
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) Vis resultat / utdata i nettleser
Bøker:
Bok-ID | Boknavn | Forfatternavn | Forlegger | Pris | Utgave |
---|---|---|---|---|---|
5350192956 | XSLT Programmeringsreferanse | Michael Kay | Wrox | $ 40 | 4. plass |
3741122298 | Leder første Java | Kathy sierra | O'reilly | $ 19 | Første |
9987436700 | SQL Den komplette referansen | James R. Groff | McGraw-Hill | $ 45 | 3. |
XSLT Elements
For å forstå XSLT-koden ovenfor og den fungerer, må vi først forstå de forskjellige XSLT-elementene og deres attributter.
# 1) ELLER
Hver XSLT-kode må starte med rotelementet eller
Attributter:
- @xmlns: xsl: Kobler XSLT-dokument med XSLT-standard.
- @versjon: Definerer versjonen av XSLT-koden til parseren.
#to)
Denne erklæringen definerer et sett med regler som brukes til å behandle eller transformere det valgte inngangselementet til kildedokumentet til de definerte målelementreglene i utdataene.
I utgangspunktet er to typer maler tilgjengelige i henhold til attributtene:
(i) Navngitt mal: Når xsl: malelementet inneholder @name-attributt, kalles dette Named Template.
Navngitte maler kalles av xsl: call-template element.
(ii) Kampmal: Malelementet xsl: inneholder @match-attributt som inneholder et matchende mønster eller XPath brukt på inngangsnodene.
Matchmaler kalles av xsl: Apply-template-element.
xsl: malelementet må ha enten @ match-attributt eller @name-attributt eller begge deler. Et xsl: malelement som ikke har noe matchattributt, må ikke ha noe modusattributt og ingen prioritetsattributt.
La oss skrive om ovennevnte XSLT (
til) XSLT-kode basert på Match Template med. Se nedenfor gul og grå uthevet endret kode, den vil gi det samme resultatene ovenfor.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se skjermbildet for uthevet område:
b) XSLT-kode basert på den navngitte malen med. Se nedenfor gul og grå uthevet endret kode, den vil gi det samme resultatene ovenfor.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se skjermbildet for uthevet område:
# 3)
Prosessoren finner og bruker alle malene som har XPath definert i attributtet @select.
Attributtet @mode brukes også hvis vi vil gi mer enn én måte å sende ut med samme inngangsinnhold.
# 4)
Prosessoren vil ringe til malene som har verdi inne i @name-attributtet (obligatorisk).
element brukes til å overføre parametere til malen.
c ++ rand mellom 0 og 1
# 5)
Gi streng- / tekstverdien angående XPath-uttrykket som er definert i @select-attributtet, som definert i koden ovenfor.
Dette vil gi verdien av boknavnet.
# 6): Gjentakelse
Dette vil behandle instruksjonene for hvert sett med noder (xpath definert i @select (obligatorisk) attributt) i den sorterte sekvensen.
Ovennevnte kode betyr for hvert nodesett med butikk / bok:
/ butikk / bok (1)
/ butikk / bok (2)
/ butikk / bok (3)
kan også brukes som et barn av xsl: for-hver for å definere rekkefølgen på sortering.
# 7): Betinget behandling
Xsl: hvis instruksjonene bare behandles hvis den boolske verdien til @test-attributtet vil være sant, ellers blir ikke instruksjonen evaluert og den tomme sekvensen returneres.
2'> Condition True: Count of books are more than two.
Resultat: Tilstand sant: Antall bøker er mer enn to.
Her er tellingen () den forhåndsdefinerte funksjonen.
# 8): Alternativ tilstandsbehandling
xsl: velg har flere tilfeller for forskjellige forhold som testes inne i @test-attributtet til xsl: når elementer, testtilstanden som blir oppfylt først blant alle xsl: når, som behandles først og det er en valgfri xls: ellers element slik at hvis ingen av tilstandstestene går i oppfyllelse, vil denne xsl: ellers bli vurdert.
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: Tilstand sant: Antallet av boken er tre.
# 9)
xsl: kopi fungerer på kontekstelement, dvs. hvis det er node, vil det kopiere kontekstnoden til den nylig genererte noden, og dette vil ikke kopiere barna til kontekstnoden. Av denne grunn kalles dette en grunne kopi. I motsetning til xsl: copy-of-element, har xsl: copy ikke attributtet @ select.
I koden nedenfor kopieres kontekstelementene til utdata, og alle barneelementene kalles & kopieres av xsl: Apply-template rekursivt.
node () | @ * Står for alle nodene og alle attributtene rekursivt.
Resultat: Dette vil kopiere alle noder og attributter til kildedokumentet rekursivt til utdatadokumentet, dvs. det vil opprette en eksakt kopi av kildedokumentet.
# 10)
xsl: copy-of vil kopiere sekvensen av noder med alle sine barn og attributter rekursivt som standard, på grunn av denne naturen kalles dette også som dyp kopiering. @select-attributt kreves for evaluering av XPath.
Resultat: Dette vil kopiere alle noder og attributter til kildedokumentet rekursivt til utdatadokumentet, dvs. det vil opprette en eksakt kopi av kildedokumentet.
Står for en kopi av gjeldende node og gjeldende attributt.
#elleve)
Dette elementet brukes til å skrive en kommentar til målresultatet. Alt tekstinnhold som ligger ved siden av denne koden, blir skrevet ut som kommentert utskrift.
Dette skrives ut for å sendes ut som kommentarenode.
Resultat:
# 12)
Dette vil generere en tekstnode til resultatdokumentet, verdien i xsl: teksten blir skrevet ut som en streng som skal sendes ut.
Dette er en
tekstlinje.
Produksjon:
Dette er en
tekstlinje.
# 1. 3)
Dette vil generere et element i resultatdokumentet med navnet nevnt i @name-attributtet. Navneattributtet er det obligatoriske attributtet.
Resultat: 5350192956
# 14)
Dette genererer et attributt til det overordnede elementet i resultatdokumentet. Navnet på attributtet er definert av navnattributtet, og verdien av attributtet beregnes av XPath nevnt i select-attributtet som angitt i koden nedenfor. Navneattributtet er det obligatoriske attributtet.
Resultat:
#femten)
Dette elementet vil sortere den valgte noden på en sekvensmessig måte i stigende eller synkende retning. Noden eller XPath er gitt gjennom @select-attributtet, og retningen på sortering er definert av @order-attributtet.
I koden nedenfor vil vi få alle bøkelister i henhold til boknavnet i alfabetisk rekkefølge.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se dette skjermbildet for det uthevede området:
Resultat: Listen nedenfor inneholder boknavnene i alfabetisk rekkefølge, dvs. i stigende rekkefølge.
Bøker:
Bok-ID | Boknavn | Forfatternavn | Forlegger | Pris | Utgave |
---|---|---|---|---|---|
3741122298 | Leder første Java | Kathy sierra | O'reilly | $ 19 | Første |
9987436700 | SQL Den komplette referansen | James R. Groff | McGraw-Hill | $ 45 | 3. |
5350192956 | XSLT Programmeringsreferanse | Michael Kay | Wrox | $ 40 | 4. plass |
# 16)
Dette elementet erklærer en variabel som inneholder en verdi i den. En variabel kan være en global variabel eller lokal variabel. Navnet på variabelen er definert av @name-attributtet, og verdien som denne variabelen vil ha, er definert av @select-attributtet.
Tilgangen til den globale variabelen er global, dvs. variablene kan kalles i hvilket som helst element og forbli tilgjengelig i stilarket.
For å definere en global variabel, trenger vi bare å erklære at ved siden av rotelementet i stilarket som vist i koden nedenfor i det gule uthevede, er variabelen ‘SecondBook’ den globale variabelen, og den inneholder navnet på den andre boka.
Tilgangen til den lokale variabelen er lokal til elementet der den er definert, dvs. at variabelen ikke ville være tilgjengelig utenfor elementet der den er definert som vist i koden nedenfor som er grå uthevet, variabelen 'første bok' er en lokal variabel og den inneholder navnet på den første boka.
For å ringe til enten den globale variabelen til den lokale variabelen brukes Dollarsymbolet ($) før navnet på variabelen, som vist nedenfor i gult uthevet $ .
First Book Name: Second Book Name:
Se skjermbildet for det uthevede området:
Resultat:
Første boknavn: XSLT Programmer's Reference
Andre boknavn: Head First Java
# 17)
Dette elementet brukes til å deklarere nøkler, for å matche mønsterverdiene til den aktuelle nøkkelen.
c ++ implementering av binært søketre
Navn er en leverandør av den nøkkelen etter @name-attributt (“ get-publisher “), Som senere blir brukt inne i key () -funksjonen. @match-attributt blir gitt til indeksinngangsnoden av XPath-uttrykk (“ bok “), Som i nedenstående gule uthevede @match brukes til å indeksere på alle bøkene som er tilgjengelige i butikken.
I forhold til @match-attributtet brukes @use-attributtet, det erklærer noden for å få verdien for den nøkkelen gjennom XPath-uttrykk ('publisher').
Anta at hvis vi trenger detaljene i boken som bare utgis av 'Wrox' forlegger, kan vi få den verdien enkelt gjennom xsl: nøkkelelement ved å lage et nøkkelverdipar.
nøkkel ('get-publisher', 'Wrox') Nøkkel () tar to parametere, det første er navnet på nøkkelen, som i dette tilfellet er 'get-publisher', for det andre er strengverdien som trenger å søke som i vårt tilfelle er 'Wrox'.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se skjermbildet for det uthevede området:
Resultat:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
Resultat / HTML-visning:
Bøker:
Bok-ID | Boknavn | Forfatternavn | Forlegger | Pris | Utgave |
---|---|---|---|---|---|
5350192956 | XSLT Programmeringsreferanse | Michael Kay | Wrox | $ 40 | 4. plass |
# 18)
Dette elementet brukes til feilsøking i XSLT-utvikling. Elementet gir utdataene til programmets standardutgangsskjerm.
Attributtet @terminate brukes med to verdier, enten 'ja' eller 'nei'. Hvis verdien er satt til 'ja', avsluttes parseren umiddelbart så snart testtilstanden blir tilfredsstilt for at meldingen skal bli utført.
For å forstå dette, la oss anta at hvis priselementet kommer til å tømmes ved et uhell i vårt inngangsdokument, som i koden nedenfor, bør behandlingen stoppe umiddelbart så snart prosessoren møter det tomme priselementet, som lett kan oppnås ved å bruke xsl: meldingen inne i hvis testtilstanden som i XSLT-koden nedenfor.
Feilsøkingsvarsel vises på applikasjonsstandardskjermen: Behandlingen avsluttet av xsl: melding på linje 21.
Angi XML-kode:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Se skjermbilde for uthevet område:
XSLT-kode:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
Se skjermbilde for uthevet område:
Resultat: Vær oppmerksom på at så snart parseren møter den tomme prislappen, avslutter den umiddelbart behandlingen på grunn av hvilken de avsluttende kodene til, og ville ikke komme på slutten av 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 skjermbilde for uthevet område:

sirkulær matrix kø c ++
# 19) &
element definerer parameteren til malen hvis den er definert inne. Den kan defineres enten inne som den globale parameteren eller inne som den lokale parameteren til den malen.
Verdien på sendes / leveres når malen kalles av eller.

den overfører verdien til parameteren som er definert i malen. Attributt som @name inneholder navnet på parameteren som skal matche @name-attributtet til elementet. @Velg-attributt brukes til å angi en verdi for den parameteren.

For å hente verdien av parameteren brukes det samme som et variabelt dollartegn ($).

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 skjermbilde for det uthevede området:

Resultatutgang:
List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference