xslt tutorial xslt transformations elements with examples
Denna handledning förklarar vad som är XSLT, dess omvandlingar, element och användning med exempel. Täcker också vikten av XPath att utveckla XSLT-omvandlingskod:
Uttrycket 'XSLT' skapas genom att kombinera två ord, dvs. 'XSL' och 'T', 'XSL' är den korta formen av 'Extensible Stylesheet Language' och 'T' är en kort form av 'Transformation'.
Så i grund och botten är XSLT ett transformationsspråk som används för att omvandla / konvertera XML-källedokument till XML-dokument eller till andra format som HTML, PDF med hjälp av XSL-FO (formateringsobjekt) etc.
Vad du kommer att lära dig:
Introduktion till XSLT
Transformation sker med hjälp av XSLT-processorn (som Saxon, Xalan). Denna XSLT-processor tar ett eller flera XML-dokument som en källa med en XSLT-fil som innehåller XSLT-kod skriven i den och resultatet / utdatadokumenten genereras senare som visas i nedanstående diagram.
XSLT-processorn analyserar källans XML-dokument genom att använda X-Path för att navigera över olika källelement från rotelementet till slutet av dokumenten.
Rekommenderad läsning => Allt du behöver veta om X-Path
XSLT-transformation
För att starta omvandlingen behöver vi ett XML-dokument som XSLT-koden kommer att köras på, själva XSLT-kodfilen och verktyget eller programvaran som har XSLT-processor (Du kan använda valfri gratisversion eller testversion av programvaran för inlärningsändamål).
# 1) XML-kod
Nedan visas XML-källkoden som XSLT-koden ska köras på.
Filnamn: 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-kod
Nedan är XSLT-koden baserad på vilken kommer att köras på ovanstående XML-dokument.
Filnamn: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) Resultat / utmatningskod
Nedanstående kod kommer att produceras efter att XSLT-koden har använts i ovanstå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) Visa resultat / utdata i webbläsaren
Böcker:
Bok-ID | Boknamn | Författarens namn | Utgivare | Pris | Utgåva |
---|---|---|---|---|---|
5350192956 | XSLT programmerarreferens | Michael Kay | Wrox | $ 40 | 4: e |
3741122298 | Huvud första Java | Kathy Sierra | O'reilly | $ 19 | 1: a |
9987436700 | SQL Den fullständiga referensen | James R. Groff | McGraw-Hill | 45 dollar | 3: e |
XSLT-element
För att förstå XSLT-koden ovan och den fungerar måste vi först förstå de olika XSLT-elementen och deras attribut.
# 1) ELLER
Varje XSLT-kod måste börja med rotelementet eller
Attribut:
- @xmlns: xsl: Ansluter XSLT-dokument med XSLT-standard.
- @version: Definierar versionen av XSLT-koden till parsern.
#två)
Denna deklaration definierar en uppsättning regler som tillämpas för att bearbeta eller omvandla det valda inmatningselementet i källdokumentet till de definierade målelementreglerna i utdatadokumenten.
I grund och botten finns två typer av mallar tillgängliga enligt deras attribut:
(i) Namngiven mall: När xsl: mallelementet innehåller @name-attribut kallas det namngiven mall.
Namngivna mallar kallas av xsl: call-template-element.
(ii) Matchmall: Mallelementet xsl: innehåller @match-attribut som innehåller ett matchande mönster eller XPath applicerat på ingångsnoderna.
Matchmallar anropas av xsl: applicera-mallelement.
xsl: mallelementet måste ha antingen @ matchattribut eller @name-attribut eller båda. Ett xsl: mallelement som inte har något matchattribut får inte ha något lägesattribut och inget prioritetsattribut.
Låt oss skriva om ovanstående XSLT (
till) XSLT-kod baserad på matchningsmall med. Se nedan gul och grå markerad ändrad kod, den kommer att ge samma resultat ovan.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se skärmdumpen för markerat område:
b) XSLT-kod baserad på namngiven mall med. Se nedan gul och grå markerad ändrad kod, den kommer att ge samma resultat ovan.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se skärmdumpen för markerat område:
# 3)
Processorn hittar och tillämpar alla mallar som har XPath definierade i attributet @select.
Attributet @mode används också om vi vill ge mer än ett sätt att mata ut med samma ingång.
# 4)
Processorn ringer till mallarna som har värde i @name-attributet (krävs).
element används för att skicka parametrar till mallen.
c ++ rand mellan 0 och 1
# 5)
Ange sträng- / textvärdet angående XPath-uttrycket som definierats i attributet @select, enligt definitionen i ovanstående kod.
Detta ger värdet på boknamnet.
# 6): Upprepning
Detta kommer att bearbeta instruktionerna för varje uppsättning noder (xpath definierad i @select (krävs) attribut) i den sorterade sekvensen.
Ovanstående kod betyder för varje noduppsättning av butik / bok:
/ butik / bok (1)
/ butik / bok (2)
/ butik / bok (3)
kan också användas som ett barn av xsl: för-varje för att definiera sorteringsordningen.
# 7): Villkorlig bearbetning
Xsl: om instruktionerna endast bearbetas om det booleska värdet för attributet @test kommer att vara sant, annars kommer inte instruktionen att utvärderas och den tomma sekvensen returneras.
2'> Condition True: Count of books are more than two.
Resultat: Villkor sant: Antalet böcker är mer än två.
Här är räkningen () den fördefinierade funktionen.
# 8): Alternativ tillståndsbehandling
xsl: välj ha flera fall för olika förhållanden som testas inuti @test-attributet för xsl: när element, testvillkoret som blir sant först bland alla xsl: när, det kommer att behandlas först och det finns en valfri xls: annars element så att om inget av villkorstesterna går i uppfyllelse kommer detta xsl: annars att beaktas.
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: Villkor sant: Antalet bokar är tre.
# 9)
xsl: kopia fungerar på kontextobjekt, dvs om det är nod, kommer det att kopiera kontextnoden till den nyligen genererade noden och detta kommer inte att kopiera kontextenodens underordnade. På grund av denna anledning kallas detta en grunt kopia. Till skillnad från xsl: copy-of-elementet har xsl: copy inte attributet select.
I koden nedan kopieras kontextobjekten till utdata och alla barnobjekten anropas och kopieras av xsl: applicera-mall rekursivt.
nod () | @ * Står för alla noder och alla deras attribut rekursivt.
Resultat: Detta kopierar alla noder och attribut i källedokumentet rekursivt till utdatadokumentet, dvs det skapar en exakt kopia av källedokumentet.
# 10)
xsl: copy-of kopierar sekvensen av noder med alla dess barn och attribut rekursivt som standard, på grund av denna natur kallas detta också som djupkopiering. Attributet @select krävs för utvärderingen av XPath.
Resultat: Detta kopierar alla noder och attribut i källedokumentet rekursivt till utdatadokumentet, dvs det skapar en exakt kopia av källedokumentet.
Står för en kopia av den aktuella noden och det aktuella attributet.
#elva)
Detta element används för att skriva en kommentar till målresultatet. Allt textinnehåll som ligger vid denna tagg kommer att skrivas ut som kommenterad utdata.
Detta kommer att skrivas ut för att skrivas ut som kommentar nod.
Resultat:
# 12)
Detta genererar en textnod till resultatdokumentet, värdet inuti xsl: texten kommer att skrivas ut som en sträng för utmatning.
Det här är en
textrad.
Produktion:
Det här är en
textrad.
# 13)
Detta genererar ett element i resultatdokumentet med namnet som nämns i attributet @name. Namnattributet är det obligatoriska attributet.
Resultat: 5350192956
# 14)
Detta genererar ett attribut till dess överordnade element i resultatdokumentet. Namnet på attributet definieras av namnet attributet och värdet på attributet beräknas av XPath som nämns i attributet select som anges i koden nedan. Namnattributet är det obligatoriska attributet.
Resultat:
#femton)
Detta element kommer att sortera den valda noden på ett sekvensmässigt sätt i stigande eller fallande riktning. Noden eller XPath ges genom attributet @select och sorteringsriktningen definieras av attributet @order.
I koden nedan får vi alla boklistor enligt boknamnet i alfabetisk ordning.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se den här skärmdumpen för det markerade området:
Resultat: Listan nedan innehåller boknamnen i alfabetisk ordning, dvs. i stigande ordning.
Böcker:
Bok-ID | Boknamn | Författarens namn | Utgivare | Pris | Utgåva |
---|---|---|---|---|---|
3741122298 | Huvud första Java | Kathy Sierra | O'reilly | $ 19 | 1: a |
9987436700 | SQL Den fullständiga referensen | James R. Groff | McGraw-Hill | 45 dollar | 3: e |
5350192956 | XSLT programmerarreferens | Michael Kay | Wrox | $ 40 | 4: e |
# 16)
Detta element deklarerar en variabel som innehåller ett värde i den. En variabel kan vara en global variabel eller lokal variabel. Variabelns namn definieras av attributet @name och värdet som variabeln kommer att innehålla definieras av attributet @select.
Tillgången till den globala variabeln är global, dvs variablerna kan anropas inom vilket element som helst och förbli tillgängliga inom stilarket.
För att definiera en global variabel behöver vi bara förklara att variabeln 'SecondBook' är den globala variabeln och den innehåller namnet på den andra boken bredvid root-elementet som visas i nedanstående kod i den gula markerade.
Tillgången till den lokala variabeln är lokal för det element där den är definierad, dvs att variabeln inte skulle vara tillgänglig utanför elementet där den definieras som visas i nedanstående kod som är grå markerad, variabeln 'första boken' är en lokal variabel och den innehåller namnet på den första boken.
För att ringa antingen den globala variabeln till den lokala variabeln används dollarsymbolen ($) före variabelns namn, som visas nedan i gult markerat $ .
First Book Name: Second Book Name:
Se skärmdumpen för det markerade området:
Resultat:
Första bokens namn: XSLT programmeringsreferens
Andra bokens namn: Head First Java
# 17)
Detta element används för att deklarera nycklar för att matcha mönstervärdena till den specifika nyckeln.
Namn är en leverantör av den nyckeln med attributet @name (“ get-publisher “), Som senare används inuti nyckelfunktionen (). Attributet @match tillhandahålls indexindexnoden av XPath-uttryck (“ bok “), Som i nedanstående gul markerade @match används för att indexera alla böcker som finns i butiken.
I förhållande till @match-attributet används @use-attributet, det förklarar noden för att få värdet för den nyckeln genom XPath-uttryck ('publisher').
hur man spelar en torrentfil
Antag nu att om vi behöver detaljerna i boken som bara publiceras av 'Wrox' förläggare kan vi enkelt få det värdet genom xsl: nyckelelement genom att skapa ett nyckel-värdepar.
nyckel ('get-publisher', 'Wrox') Nyckel () tar två parametrar, det första är namnet på nyckeln, som i det här fallet är 'get-publisher', andra är strängvärdet som behöver sökas som i vårt fall är 'Wrox'.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Se skärmdumpen för det markerade området:
Resultat:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
Resultat / HTML-vy:
Böcker:
Bok-ID | Boknamn | Författarens namn | Utgivare | Pris | Utgåva |
---|---|---|---|---|---|
5350192956 | XSLT programmerarreferens | Michael Kay | Wrox | $ 40 | 4: e |
# 18)
Detta element används för felsökningsändamål i XSLT-utveckling. Elementet ger sin utdata till programmets standardutgångsskärm.
Attributet @terminate används med två värden antingen 'ja' eller 'nej', om värdet är inställt på 'ja' avslutas tolkaren omedelbart så snart testvillkoren blir uppfyllda för att meddelandet ska köras.
För att förstå detta, låt oss anta att i vårt inmatningsdokument kommer priselementet att tömmas av misstag som i nedanstående kod, så ska behandlingen avbrytas omedelbart så snart processorn stöter på det tomma priselementet, vilket lätt kan uppnås genom att använda xsl: meddelande i if-testvillkoret som i XSLT-koden nedan.
Felsökningsvarning visas på programmets standardskärm: Bearbetningen avslutas av xsl: meddelande vid rad 21.
Ange XML-kod:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Se skärmdump för markerat område:
XSLT-kod:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
Se skärmdump för markerat område:
Resultat: Observera att så snart tolkaren stöter på den tomma prislappen, avslutar den omedelbart behandlingen på grund av vilken de stängande taggarna för, och skulle inte komma i slutet 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 skärmdump för markerat område:

# 19) &
element definierar parametern till mallen om den definieras inuti. Det kan definieras antingen inuti som den globala parametern eller inuti som den lokala parametern för den mallen.
Värdet på det skickas / levereras när mallen anropas av or.

vad är en trådlös nätverksnyckel
den skickar värdet för den definierade parametern i mallen. Attribut som @name innehåller namnet på parametern som ska matcha @name-attributet för elementet. @Välj attribut används för att ställa in ett värde för den parametern.

För att hämta parametervärdet används samma som ett variabelt dollartecken ($).

Källa XML-kod:
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-kod:
List of Books Name :-
Book Name:
Se skärmdump för det markerade området:

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