- Úvod do XSLT
- Knihy:-
- Knihy:-
- Knihy:-
- Knihy:-
- Knihy:-
- Knihy:-
- Knihy:-
- Knihy:-
- Knihy:-
- Zoznam kníh Názov :-
- Zoznam kníh Názov :-
- Záver
Tento výukový program vysvetľuje, čo je XSLT, jeho transformácie, prvky a použitie s príkladom. Zahŕňa aj dôležitosť XPath pri vývoji kódu konverzie XSLT:
Pojem "XSLT" vznikol spojením dvoch slov, t. j. "XSL" a "T", pričom "XSL" je skratka pre "Extensible Stylesheet Language" a "T" je skratka pre "Transformation".
XSLT je v podstate transformačný jazyk, ktorý sa používa na transformáciu/konverziu zdrojových dokumentov XML na dokumenty XML alebo na iné formáty, napríklad HTML, PDF, pomocou formátovacích objektov XSL-FO atď.
Úvod do XSLT
Transformácia sa uskutočňuje pomocou procesora XSLT (napríklad Saxon, Xalan). Tento procesor XSLT prevezme jeden alebo viac dokumentov XML ako zdroj s jedným súborom XSLT, ktorý obsahuje kód XSLT, ktorý je v ňom napísaný, a neskôr sa vygenerujú výsledné/výstupné dokumenty, ako je znázornené na nasledujúcom obrázku.
Procesor XSLT analyzuje zdrojové dokumenty XML pomocou funkcie X-Path na prechádzanie rôznych zdrojových prvkov počnúc koreňovým prvkom až po koniec dokumentov.
Všetko, čo potrebujete vedieť o X-Path
Transformácia XSLT
Na spustenie transformácie potrebujeme jeden dokument XML, na ktorom bude kód XSLT spustený, samotný súbor s kódom XSLT a nástroj alebo softvér s procesorom XSLT (na učebné účely môžete použiť ľubovoľnú bezplatnú alebo skúšobnú verziu softvéru).
#1) Kód XML
Nižšie je uvedený zdrojový kód XML, na ktorom sa spustí kód XSLT.
Názov súboru: Books.xml
XSLT Programmer's Reference Michael Kay Wrox $40 4. Head First Java Kathy Sierra O'reilly $19 1. SQL The Complete Reference James R. Groff McGraw-Hill $45 3.
#2) Kód XSLT
Nižšie je uvedený kód XSLT, na základe ktorého sa spustí vyššie uvedený dokument XML.
Názov súboru: Books.xsl
Knihy:-
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|---|---|---|---|---|
#3) Výsledok / výstupný kód
Po použití kódu XSLT na vyššie uvedený dokument XML sa vytvorí nasledujúci kód.
Knihy:-
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|---|---|---|---|---|
5350192956 | Príručka programátora XSLT | Michael Kay | Wrox | $40 | 4. |
3741122298 | Head First Java | Kathy Sierra | O'reilly | $19 | 1. |
9987436700 | SQL Kompletná referencia | James R. Groff | McGraw-Hill | $45 | 3. |
#4) Zobrazenie výsledku / výstupu vo webovom prehliadači
Knihy:
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|---|---|---|---|---|
5350192956 | Príručka programátora XSLT | Michael Kay | Wrox | $40 | 4. |
3741122298 | Head First Java | Kathy Sierra | O'reilly | $19 | 1. |
9987436700 | SQL Kompletná referencia | James R. Groff | McGraw-Hill | $45 | 3. |
Prvky XSLT
Aby sme pochopili vyššie uvedený kód XSLT a jeho fungovanie, musíme najprv porozumieť jednotlivým prvkom XSLT a ich atribútom.
#1) ALEBO
Každý kód XSLT musí začínať koreňovým prvkom alebo
Atribúty:
- @xmlns:xsl: Spája dokument XSLT so štandardom XSLT.
- @version: Definuje verziu kódu XSLT pre analyzátor.
#2)
Táto deklarácia definuje súbor pravidiel použitých na spracovanie alebo transformáciu vybraného vstupného prvku zdrojového dokumentu na definované pravidlá cieľového prvku výstupných dokumentov.
V zásade sú k dispozícii dva typy šablón podľa ich atribútov:
(i) Pomenovaná šablóna: Ak element xsl: šablóny obsahuje atribút @name, potom sa nazýva pomenovaná šablóna.
Pomenované šablóny sa volajú pomocou prvku xsl:call-template.
(ii) Šablóna zápasu: Element xsl:template obsahuje atribút @match, ktorý obsahuje zodpovedajúci vzor alebo XPath aplikovaný na vstupné uzly.
Šablóny zhody sa volajú pomocou prvku xsl:apply-template.
Element xsl:template musí mať buď atribút @match, alebo atribút @name, alebo oba. Element xsl:template, ktorý nemá atribút match, nesmie mať atribút mode a atribút priority.
Prepíšme vyššie uvedený XSLT(
a) XSLT kód založený na Match Template s . Pozri nižšie žltá & šedá zvýraznený zmenený kód, to bude produkovať rovnaký vyššie uvedený výstupný výsledok.
Knihy:-
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|
Zvýraznenú oblasť nájdete na snímke obrazovky:
b) Kód XSLT založený na pomenovanej šablóne s . Pozri nižšie žltý & sivo zvýraznený zmenený kód, bude produkovať rovnaký výsledok vyššie.
Knihy:-
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|
Zvýraznenú oblasť nájdete na snímke obrazovky:
#3)
Spracovateľ nájde a použije všetky šablóny, ktoré majú v atribúte @select definovanú cestu XPath.
Atribút @mode sa používa aj vtedy, ak chceme pri rovnakom vstupnom obsahu poskytnúť viacero spôsobov výstupu.
#4)
Spracovateľ zavolá šablóny, ktoré majú hodnotu v atribúte @name (povinné).
sa používa na odovzdávanie parametrov šablóne.
#5)
Poskytnite reťazcovú/textovú hodnotu týkajúcu sa výrazu XPath definovaného v atribúte @select, ako je definované vo vyššie uvedenom kóde.
Týmto sa zobrazí hodnota názvu knihy.
#6) : Opakovanie
Tým sa spracujú pokyny pre každú sadu uzlov (xpath definovaná v atribúte @select (povinný)) v zoradenej postupnosti.
Vyššie uvedený kód znamená pre každý uzol sadu prostriedkov store/book:
/store/book[1]
/store/book[2]
/store/book[3]
možno použiť aj ako podriadený xsl:for-each na definovanie poradia triedenia.
#7) : Podmienené spracovanie
Pokyny xsl:if sa spracujú len vtedy, ak bude logická hodnota atribútu @test true, inak sa pokyn nevyhodnotí a vráti sa prázdna sekvencia.
2"> Podmienka True: Počet kníh je viac ako dve.
Výsledok: Podmienka Pravda: Počet kníh je väčší ako dve.
V tomto prípade je count() preddefinovaná funkcia.
#8) : Alternatívne spracovanie podmienok
xsl:choose má viacero príčin pre rôzne podmienky, ktoré sa testujú vo vnútri atribútu @test prvkov xsl:when, pričom testovacia podmienka, ktorá je pravdivá ako prvá zo všetkých xsl:when, sa spracuje ako prvá a existuje nepovinný prvok xls:otherwise, takže ak žiadny z testov podmienok nie je pravdivý, potom sa zohľadní tento xsl:otherwise.
Podmienka True: Počet kníh je 1. Podmienka True: Počet kníh je 2. Podmienka True: Počet kníh je 3. Žiadna zhoda podmienok.
Výsledok: Podmienka Pravda: Počet kníh je tri.
#9)
xsl:copy pracuje s kontextovým prvkom, t. j. ak je to uzol, potom skopíruje kontextový uzol do novo vytvoreného uzla a nekopíruje deti kontextového uzla. Z tohto dôvodu sa nazýva plytké kopírovanie. Na rozdiel od elementu xsl:copy-of nemá xsl:copy atribút@select.
V nižšie uvedenom kóde sa kontextové položky kopírujú do výstupu & všetky detské položky sa nazývajú &; rekurzívne kopírované pomocou xsl:apply-template.
uzol() Označuje všetky uzly a všetky ich atribúty rekurzívne.
Výsledok: Tým sa rekurzívne skopírujú všetky uzly a atribúty zdrojového dokumentu do výstupného dokumentu, t. j. vytvorí sa presná kópia zdrojového dokumentu.
#10)
xsl:copy-of štandardne rekurzívne skopíruje postupnosť uzlov so všetkými ich deťmi a atribútmi, vzhľadom na túto povahu sa to nazýva aj hĺbkové kopírovanie. atribút @select je potrebný na vyhodnotenie XPath.
Výsledok: Tým sa rekurzívne skopírujú všetky uzly a atribúty zdrojového dokumentu do výstupného dokumentu, t. j. vytvorí sa presná kópia zdrojového dokumentu.
Označuje kópiu aktuálneho uzla a aktuálneho atribútu.
#11)
Tento prvok sa používa na zapísanie komentára k cieľovému výsledku, pričom akýkoľvek textový obsah, ktorý je na strane tejto značky, sa vypíše ako komentovaný výstup.
Tento údaj sa vypíše na výstup ako uzol s komentárom.
Výsledok:
#12)
Týmto sa do výsledného dokumentu vygeneruje textový uzol, hodnota vnútri xsl:text sa vypíše ako reťazec na výstup.
Toto je
textový riadok.
Výstup:
Toto je
textový riadok.
#13)
Tým sa do výsledného dokumentu vygeneruje element s názvom uvedeným v atribúte @name. Atribút name je povinný atribút.
Výsledok: 5350192956
#14)
Tým sa vo výslednom dokumente vytvorí atribút k jeho nadradenému elementu. Názov atribútu je definovaný atribútom name a hodnota atribútu sa vypočíta pomocou XPath uvedenej v atribúte select, ako je uvedené v nasledujúcom kóde. Atribút name je povinný atribút.
Výsledok:
#15)
Tento prvok zoradí vybraný uzol podľa toho vzostupne alebo zostupne. Uzol alebo XPath je zadaný prostredníctvom atribútu @select a smer zoradenia je definovaný atribútom @order.
V nasledujúcom kóde získame zoznam všetkých kníh podľa názvu knihy v abecednom poradí.
Knihy:-
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|---|---|---|---|---|
Zvýraznenú oblasť nájdete na tomto obrázku:
Výsledok: V nasledujúcom zozname sú názvy kníh zoradené abecedne, t. j. vzostupne.
Knihy:
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|---|---|---|---|---|
3741122298 | Head First Java | Kathy Sierra | O'reilly | $19 | 1. |
9987436700 | SQL Kompletná referencia | James R. Groff | McGraw-Hill | $45 | 3. |
5350192956 | Príručka programátora XSLT | Michael Kay | Wrox | $40 | 4. |
#16)
Tento prvok deklaruje premennú, ktorá v sebe uchováva hodnotu. Premenná môže byť globálna alebo lokálna premenná. Názov premennej je definovaný atribútom @name a hodnota, ktorú bude táto premenná uchovávať, je definovaná atribútom @select.
Prístup ku globálnej premennej je globálny, t. j. premenné možno volať v rámci ľubovoľného prvku a zostávajú prístupné v rámci štýlového listu.
Ak chceme definovať globálnu premennú, stačí ju deklarovať vedľa koreňového prvku súboru štýlov, ako je znázornené v nižšie uvedenom žlto zvýraznenom kóde, premenná "SecondBook" je globálna premenná a obsahuje názov druhej knihy.
Prístup k lokálnej premennej je lokálny pre prvok, v ktorom je definovaná, t. j. táto premenná nie je prístupná mimo prvku, v ktorom je definovaná, ako je znázornené v nasledujúcom kóde, ktorý je zvýraznený sivou farbou, premenná "first book" je lokálna premenná a obsahuje názov prvej knihy.
Ak chcete zavolať globálnu premennú do lokálnej premennej, pred názvom premennej sa použije symbol dolára ($), ako je znázornené nižšie žltým zvýraznením $ .
Názov prvej knihy: Názov druhej knihy:
Zvýraznenú oblasť nájdete na snímke obrazovky:
Výsledok:
Prvý názov knihy: XSLT Programmer's Reference
Názov druhej knihy: Head First Java
#17)
Tento prvok sa používa na deklarovanie kľúčov pre hodnoty vzoru zodpovedajúce danému kľúču.
Name je poskytovateľ k tomuto kľúču podľa atribútu @name(" get-publisher "), ktorý sa neskôr použije vo funkcii key(). Atribút @match slúži na indexovanie vstupného uzla pomocou výrazov XPath(" kniha "), ako v nasledujúcom žlto zvýraznenom príklade @match sa používa na indexovanie všetkých kníh dostupných v obchode.
V súvislosti s atribútom @match sa používa atribút @use, ktorý deklaruje uzol na získanie hodnoty pre daný kľúč prostredníctvom výrazu XPath("publisher").
Predpokladajme, že ak potrebujeme údaje o knihe, ktorú vydalo iba vydavateľstvo Wrox, potom môžeme túto hodnotu ľahko získať pomocou prvku xsl:key vytvorením dvojice kľúč-hodnota.
key('get-publisher', 'Wrox') Funkcia Key() prijíma dva parametre, prvým je názov kľúča, ktorý je v tomto prípade "get-publisher", druhým je hodnota reťazca, ktorú je potrebné vyhľadať, čo je v našom prípade "Wrox".
Knihy:-
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|---|---|---|---|---|
Zvýraznenú oblasť nájdete na snímke obrazovky:
Výsledok:
Knihy:-
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|---|---|---|---|---|
5350192956 | Príručka programátora XSLT | Michael Kay | Wrox | $40 | 4. |
Zobrazenie výsledku / HTML:
Knihy:
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|---|---|---|---|---|
5350192956 | Príručka programátora XSLT | Michael Kay | Wrox | $40 | 4. |
#18)
Tento prvok sa používa na účely ladenia pri vývoji XSLT. Prvok poskytuje svoj výstup na štandardnú výstupnú obrazovku aplikácie.
Atribút @terminate sa používa s dvoma hodnotami, buď "yes" alebo "no", ak je hodnota nastavená na "yes", potom sa analyzátor ukončí okamžite, akonáhle sa splní testovacia podmienka, aby sa správa vykonala.
Aby sme to pochopili, predpokladajme, že ak sa v našom vstupnom dokumente náhodou objaví prázdny prvok price, ako je to v nižšie uvedenom kóde, potom by sa spracovanie malo okamžite zastaviť, akonáhle procesor narazí na prázdny prvok price, čo možno ľahko dosiahnuť použitím xsl:message vo vnútri testovacej podmienky if, ako je to v nižšie uvedenom kóde XSLT.
Upozornenie ladiaceho programu sa zobrazuje na štandardnej obrazovke aplikácie: Spracovanie ukončené xsl:message na riadku 21.
Vstupný kód XML:
SQL Kompletná referencia James R. Groff McGraw-Hill 3.
Zvýraznenú oblasť nájdete na snímke obrazovky:
Kód XSLT:
Knihy:-
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|---|---|---|---|---|
Zvýraznenú oblasť nájdete na snímke obrazovky:
Výsledok: Všimnite si, že akonáhle analyzátor narazí na prázdnu cenovú značku, okamžite ukončí spracovanie, kvôli čomu by na konci súboru neprišli uzatváracie značky , a .
Knihy:-
ID knihy | Názov knihy | Meno autora | Vydavateľ | Cena | Edícia |
---|---|---|---|---|---|
5350192956 | Príručka programátora XSLT | Michael Kay | Wrox | $40 | 4. |
3741122298 | Head First Java | Kathy Sierra | O'reilly | $19 | 1. |
Zvýraznenú oblasť nájdete na snímke obrazovky:
#19) &
prvok definuje parameter šablóny, ak je definovaný vo vnútri. Môže byť definovaný buď vo vnútri ako globálny parameter, alebo vo vnútri ako lokálny parameter danej šablóny.
Hodnota the sa odovzdáva/poskytuje pri volaní šablóny pomocou alebo .
odovzdá hodnotu parametra definovaného vo vnútri do šablóny. Atribút ako @name obsahuje názov parametra, ktorý by sa mal zhodovať s atribútom @name prvku. Atribút @Select sa používa na nastavenie hodnoty tohto parametra.
Na získanie hodnoty parametra sa používa rovnaký znak ako pri premennej znak dolára ($).
Zdrojový kód XML:
XSLT Programmer's Reference Michael Kay Wrox $40 4. Head First Java Kathy Sierra O'reilly $19 1. SQL The Complete Reference James R. Groff McGraw-Hill $45 3.
Kód XSLT:
Zoznam kníh Názov :-
Názov knihy:
Zvýraznenú oblasť nájdete na snímke obrazovky:
Výstupný výsledok:
Zoznam kníh Názov :-
Názov knihy: XSLT Programmer's Reference
Názov knihy: Head First Java
Názov knihy: SQL The Complete Reference
#20)
sa používa na importovanie iného modulu štýlového súboru vo vnútri nášho aktuálneho štýlového súboru. To pomáha pri dosahovaní modulárneho prístupu k vývoju XSLT.
Po importovaní sa všetky šablóny sprístupnia na použitie. Priorita šablón definovaných v nadradenom súbore štýlov (ktorý importuje iný súbor štýlov) je vyššia ako importovaný súbor štýlov (ktorý je importovaný nadradeným súborom štýlov).
Ak má aj iný súbor štýlov rovnaký názov šablóny, ako je definovaný v šablóne, ktorá sa importuje, potom sa cudzie šablóny prepíšu vašou vlastnou šablónou.
Atribút @href sa používa ako URI súboru štýlov, ktorý chcete importovať.
#21)
Rovnako ako vyššie uvedené xsl:import, aj toto pomáha pri dosahovaní modulárneho prístupu k vývoju XSLT. Všetky šablóny, ktoré obsahuje, majú rovnakú prioritu/preferenciu ako volajúci štýlový súbor. Je to akoby ste skopírovali všetky šablóny z iného štýlového súboru do svojho vlastného štýlového súboru.
Atribút @href sa používa ako URI súboru štýlov, ktorý chcete importovať.
#22)
Tento prvok sa používa na špecifikáciu stromu výsledkov vo výstupnom súbore. Obsahuje atribúty ako @method, ktoré môžu mať hodnoty ako "XML", "HTML", "XHTML" a "text", pričom predvolená hodnota je "XML".
@encoding určuje kódovanie znakov, ktoré sú vo výstupnom súbore, ako je uvedené v nasledujúcom príklade encoding="UTF-16", predvolené hodnoty pre XML alebo XHTML môžu byť UTF-8 alebo UTF-16. @indent určuje odsadenie výstupného kódu XML alebo HTML, pre XML je predvolená hodnota "no" a pre HTML a XHTML je predvolená hodnota yes.
#23)
Tento prvok sa používa na odstránenie nevýznamných bielych znakov pre uvedený zdrojový prvok vnútri atribútu @element a ak chceme odstrániť biele znaky zo všetkých prvkov, môžeme použiť '*' vnútri atribútu @elements.
#24)
Tento prvok sa používa na zachovanie bielych znakov pre uvedený zdrojový prvok vo vnútri atribútu @element a ak chceme zachovať biele znaky zo všetkých prvkov, môžeme použiť '*' vo vnútri atribútu @elements.
Záver
V tomto článku sme sa teda dozvedeli o XSLT, často používaných prvkoch XSLT, ich použití s príkladom zdrojového a cieľového/výsledkového kódu, konverzii alebo transformácii zdrojového prvku na cieľový prvok.
Diskutovali sme aj o význame XPath pri tvorbe konverzného kódu XSLT. Videli sme deklaráciu šablóny XSL a volanie šablóny & odovzdávanie parametrov. Naučili sme sa deklarovať globálne a lokálne premenné, ich použitie v kóde XSLT a spôsob ich volania.
Naučili sme sa o rôznych vetviacich alebo podmienených prvkoch XSLT, ako sú xsl:if, xsl:for-each, xsl:choose. Pochopili sme rozdiel medzi plytkým a hlbokým kopírovaním, triedením uzlov, ladením kódu XSLT pomocou xsl:message, rozdiel medzi pomenovanými šablónami a šablónami zhody a formátovaním výstupu pomocou xsl:output.
O autorovi : Himanshu P. je skúsený odborník v oblasti informačných technológií. Pracoval s ITC MNC v rôznych oblastiach podnikania a s viacerými technológiami. Himanshu sa najradšej venuje čítaniu časopisov a blogovaniu.