xslt tutorial xslt transformations elements with examples
Tento kurz vysvětluje, co je XSLT, jeho transformace, prvky a použití s příkladem. Pokrývá také význam XPath pro vývoj konverzního kódu XSLT:
Termín „XSLT“ je generován kombinací dvou slov, tj. „XSL“ a „T“, „XSL“ je krátká forma „Extensible Stylesheet Language“ a „T“ je krátká forma „Transformace“.
V zásadě je tedy XSLT transformační jazyk, který se používá k transformaci / převodu zdrojových dokumentů XML na dokumenty XML nebo do jiných formátů, jako je HTML, PDF, pomocí XSL-FO (formátování objektů) atd.
Co se naučíte:
Úvod do XSLT
Transformace probíhá pomocí procesoru XSLT (jako Saxon, Xalan). Tento procesor XSLT převezme jeden nebo více dokumentů XML jako zdroj s jedním souborem XSLT, který obsahuje zapsaný kód XSLT, a dokumenty výsledku / výstupu se vygenerují později, jak je znázorněno v následujícím diagramu.
Procesor XSLT analyzuje zdrojové dokumenty XML pomocí X-Path k navigaci po různých zdrojových prvcích od kořenového prvku až do konce dokumentů.
Doporučené čtení => Vše, co potřebujete vědět X-Path
Transformace XSLT
Pro zahájení transformace potřebujeme jeden dokument XML, na kterém bude spuštěn kód XSLT, samotný soubor kódu XSLT a nástroj nebo software s procesorem XSLT (Pro výukové účely můžete použít libovolnou bezplatnou verzi nebo zkušební verzi softwaru).
# 1) XML kód
Níže je uveden zdrojový kód XML, na kterém bude spuštěn kód XSLT.
Název souboru: 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) Kód XSLT
Níže je uveden kód XSLT, na jehož základě bude spuštěn výše uvedený dokument XML.
Název souboru: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) Výsledek / výstupní kód
Níže uvedený kód bude vytvořen po použití kódu XSLT ve výše uvedeném dokumentu XML.
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) Zobrazit výsledek / výstup ve webovém prohlížeči
Knihy:
ID knihy | Název knihy | Jméno autora | Vydavatel | Cena | Edice |
---|---|---|---|---|---|
5350192956 | Reference programátora XSLT | Michael Kay | Wrox | 40 $ | 4. místo |
3741122298 | Hlava první Java | Kathy sierra | O'reilly | 19 $ | 1. místo |
9987436700 | SQL Kompletní reference | James R. Groff | McGraw-Hill | 45 $ | 3. místo |
Prvky XSLT
Abychom porozuměli výše uvedenému kódu XSLT a jeho fungování, musíme nejprve porozumět různým prvkům XSLT a jejich atributům.
# 1) NEBO
Každý kód XSLT musí začínat kořenovým prvkem nebo
Atributy:
- @xmlns: xsl: Propojuje dokument XSLT se standardem XSLT.
- @verze: Definuje verzi kódu XSLT analyzátoru.
#dva)
Tato deklarace definuje sadu pravidel použitých pro zpracování nebo transformaci vybraného vstupního prvku zdrojového dokumentu na definovaná pravidla cílového prvku výstupních dokumentů.
V zásadě jsou podle jejich atributů k dispozici dva typy šablon:
(i) Pojmenovaná šablona: Když prvek xsl: template obsahuje atribut @name, pak se tomu říká Pojmenovaná šablona.
Pojmenované šablony jsou volány prvkem xsl: call-template.
ii) Šablona zápasu: Prvek xsl: template obsahuje atribut @match, který obsahuje odpovídající vzor nebo XPath použitý na vstupních uzlech.
Zápasové šablony jsou volány elementem xsl: apply-template.
prvek xsl: template musí mít buď atribut @ match, nebo @name nebo obojí. Prvek xsl: template, který nemá žádný atribut shody, nesmí mít žádný atribut režimu a žádný atribut priority.
Přepíšeme výše uvedený XSLT (
na) Kód XSLT založený na šabloně shody s. Viz níže žlutě a šedě zvýrazněný změněný kód, vyprodukuje stejný výše uvedený výstupní výsledek.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Podívejte se na snímek obrazovky pro zvýrazněnou oblast:
b) Kód XSLT založený na pojmenované šabloně s. Viz níže žlutě a šedě zvýrazněný změněný kód, vyprodukuje stejný výše uvedený výstupní výsledek.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Podívejte se na snímek obrazovky pro zvýrazněnou oblast:
# 3)
Procesor vyhledá a použije všechny šablony, které mají XPath definované v atributu @select.
Atribut @mode se také používá, pokud chceme poskytnout více než jeden způsob výstupu se stejným vstupním obsahem.
# 4)
Procesor zavolá na šablony, které mají hodnotu uvnitř atributu @name (povinné).
prvek se používá k předání parametrů do šablony.
jak vložit kód na web
# 5)
Zadejte hodnotu řetězce / textu týkající se výrazu XPath definovaného v atributu @select, jak je definován ve výše uvedeném kódu.
Získáte tak hodnotu názvu knihy.
# 6): Opakování
Tím se zpracují pokyny pro každou sadu uzlů (xpath definovaná v atributu @select (required)) v seřazeném pořadí.
Výše uvedený kód znamená pro každou sadu uzlů úložiště / kniha znamená:
/ obchod / kniha (1)
/ obchod / kniha (2)
/ obchod / kniha (3)
lze také použít jako podřízený prvek xsl: for-each k definování pořadí řazení.
# 7): Podmíněné zpracování
Pokyny xsl: if budou zpracovány pouze v případě, že logická hodnota atributu @test bude pravdivá, jinak nebude instrukce vyhodnocena a bude vrácena prázdná sekvence.
2'> Condition True: Count of books are more than two.
Výsledek: Pravda: Počet knih je více než dvě.
Zde je count () předdefinovaná funkce.
# 8): Alternativní zpracování podmínek
xsl: choose have multiple cases for different conditions that are developed inside @test attribute of the xsl: when elements, the test condition which comes true first among all the xsl: when, that will be processed first and there are an optional xls: otherwise prvek, takže pokud se žádný z testů stavu nesplní, bude se uvažovat tento xsl: jinak.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
Výsledek: Pravdivá podmínka: Počet knih je tři.
# 9)
xsl: copy funguje na kontextové položce, tj. pokud je to uzel, zkopíruje kontextový uzel do nově vygenerovaného uzlu a nebude kopírovat podřízené objekty kontextového uzlu. Z tohoto důvodu se tomu říká mělká kopie. Na rozdíl od prvku xsl: copy-of nemá prvek xsl: copy atribut @ select.
V níže uvedeném kódu jsou kontextové položky zkopírovány na výstup a všechny podřízené položky jsou volány a zkopírovány pomocí xsl: apply-template rekurzivně.
uzel () | @ * Znamená všechny uzly a všechny jejich atributy rekurzivně.
Výsledek: Tím se rekurzivně zkopírují všechny uzly a atributy zdrojového dokumentu do výstupního dokumentu, tj. Vytvoří se přesná kopie zdrojového dokumentu.
# 10)
xsl: copy-of zkopíruje sekvenci uzlů se všemi svými potomky a atributy ve výchozím nastavení rekurzivně, kvůli této povaze se to také nazývá hluboké kopírování. Pro vyhodnocení XPath je vyžadován atribut @select.
Výsledek: Tím se rekurzivně zkopírují všechny uzly a atributy zdrojového dokumentu do výstupního dokumentu, tj. Vytvoří se přesná kopie zdrojového dokumentu.
příkaz grep v linuxu s příklady
Znamená kopii aktuálního uzlu a aktuálního atributu.
#jedenáct)
Tento prvek se používá k zápisu komentáře k cílovému výsledku, veškerý textový obsah, který je na straně této značky, se vytiskne jako komentářový výstup.
To se vytiskne na výstup jako uzel komentáře.
Výsledek:
# 12)
Tím se vygeneruje textový uzel do výsledného dokumentu, hodnota uvnitř xsl: text se vytiskne jako řetězec k výstupu.
Tohle je
textový řádek.
Výstup:
Tohle je
textový řádek.
# 13)
Tím se vygeneruje prvek do výsledného dokumentu s názvem uvedeným v jeho atributu @name. Atribut name je povinný atribut.
Výsledek: 5350192956
# 14)
Tím se ve výsledném dokumentu vygeneruje atribut jeho nadřazeného prvku. Název atributu je definován atributem name a hodnota atributu je vypočítána pomocí XPath uvedeného v atributu select, jak je uvedeno v následujícím kódu. Atribut name je povinný atribut.
Výsledek:
#patnáct)
Tento prvek bude řadit vybraný uzel sekvenčním způsobem ve vzestupném nebo sestupném směru. Uzel nebo XPath se zadává pomocí atributu @select a směr řazení je definován atributem @order.
V níže uvedeném kódu dostaneme seznam všech knih podle názvu knihy v abecedním pořadí.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Na této obrazovce najdete zvýrazněnou oblast:
Výsledek: Níže uvedený seznam obsahuje názvy knih v abecedním pořadí, tj. Ve vzestupném pořadí.
Knihy:
ID knihy | Název knihy | Jméno autora | Vydavatel | Cena | Edice |
---|---|---|---|---|---|
3741122298 | Hlava první Java | Kathy sierra | O'reilly | 19 $ | 1. místo |
9987436700 | SQL Kompletní reference | James R. Groff | McGraw-Hill | 45 $ | 3. místo |
5350192956 | Reference programátora XSLT | Michael Kay | Wrox | 40 $ | 4. místo |
# 16)
Tento prvek deklaruje proměnnou, která v sobě obsahuje hodnotu. Proměnná může být globální proměnná nebo místní proměnná. Název proměnné je definován atributem @name a hodnota, kterou tato proměnná bude obsahovat, je definována atributem @select.
Přístup globální proměnné je globální, tj. Proměnné lze volat v rámci kteréhokoli prvku a zůstat přístupné v šabloně stylů.
Chcete-li definovat globální proměnnou, stačí deklarovat, že vedle kořenového prvku šablony stylů, jak je znázorněno v níže uvedeném kódu ve žlutě zvýrazněné proměnné, je proměnná „SecondBook“ globální proměnnou a obsahuje název druhé knihy.
Přístup k místní proměnné je lokální k prvku, ve kterém je definována, tj. Tato proměnná by nebyla přístupná mimo prvek, ve kterém je definována, jak je znázorněno v níže uvedeném kódu, který je šedě zvýrazněn, proměnná „první kniha“ je místní proměnná a obsahuje název první knihy.
K volání globální proměnné do místní proměnné se před názvem proměnné používá symbol dolaru ($), jak je znázorněno níže žlutě zvýrazněným $ .
First Book Name: Second Book Name:
Podívejte se na snímek obrazovky pro zvýrazněnou oblast:
Výsledek:
Název první knihy: XSLT Programmer's Reference
Název druhé knihy: Head First Java
# 17)
Tento prvek se používá k deklaraci klíčů pro odpovídající hodnoty vzoru pro daný klíč.
Name je poskytovatelem tohoto klíče pomocí atributu @name („ get-publisher “), Který se později použije uvnitř funkce key (). Atribut @match je poskytován do vstupního uzlu indexu pomocí výrazů XPath („ rezervovat “), Podobně jako v níže uvedené žluté zvýrazněné @match se používá k indexování všech knih dostupných v obchodě.
Ve vztahu k atributu @match se používá atribut @use, který deklaruje uzel, aby získal hodnotu pro tento klíč prostřednictvím výrazu XPath („publisher“).
Předpokládejme, že pokud budeme potřebovat podrobnosti o knize, kterou vydal pouze vydavatel „Wrox“, můžeme tuto hodnotu snadno získat pomocí prvku xsl: key vytvořením páru klíč – hodnota.
klíč („get-publisher“, „Wrox“) Key () má dva parametry, první je název klíče, který je v tomto případě „get-publisher“, druhý je hodnota řetězce, kterou je třeba prohledat, což je v našem případě „Wrox“.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Podívejte se na snímek obrazovky pro zvýrazněnou oblast:
Výsledek:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
Výsledek / Zobrazení HTML:
Knihy:
ID knihy | Název knihy | Jméno autora | Vydavatel | Cena | Edice |
---|---|---|---|---|---|
5350192956 | Reference programátora XSLT | Michael Kay | Wrox | 40 $ | 4. místo |
# 18)
Tento prvek se používá pro účely ladění ve vývoji XSLT. Prvek dává svůj výstup na standardní výstupní obrazovku aplikace.
Atribut @terminate se používá se dvěma hodnotami „ano“ nebo „ne“, pokud je hodnota nastavena na „ano“, analyzátor se okamžitě ukončí, jakmile bude splněna podmínka testu, aby se zpráva mohla provést.
Abychom tomu porozuměli, předpokládejme, že pokud se v našem vstupním dokumentu cenový prvek náhodně vyprázdní, jako v níže uvedeném kódu, pak by se zpracování mělo okamžitě zastavit, jakmile procesor narazí na prázdný cenový prvek, kterého lze snadno dosáhnout pomocí xsl: zpráva uvnitř podmínky testu if jako v níže uvedeném kódu XSLT.
Výstraha ladicího programu se zobrazuje na standardní obrazovce aplikace: Zpracování ukončeno xsl: zpráva na řádku 21.
Zadejte kód XML:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Viz snímek obrazovky pro zvýrazněnou oblast:
Kód XSLT:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
Viz snímek obrazovky pro zvýrazněnou oblast:
Výsledek: Vezměte prosím na vědomí, že jakmile analyzátor narazí na prázdnou cenovku, okamžitě ukončí zpracování, kvůli kterému uzavírací značky, a nepřijde na konec souboru.
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 Viz snímek obrazovky pro zvýrazněnou oblast:

# 19) &
element definuje parametr šablony, pokud je definován uvnitř. Může být definován buď uvnitř jako globální parametr, nebo uvnitř jako místní parametr k této šabloně.
Hodnota je předána / dodána, když je šablona volána nebo.

předává hodnotu parametru definovaného uvnitř šablony. Atribut jako @name obsahuje název parametru, který by měl odpovídat atributu @name prvku. Atribut @ Select se používá k nastavení hodnoty tohoto parametru.

K načtení hodnoty parametru se používá stejná proměnná jako znak dolaru ($).

Zdrojový kód 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
Kód XSLT:
List of Books Name :-
Book Name:
Viz snímek obrazovky pro zvýrazněnou oblast:

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