- Bevezetés az XSLT-be
- Könyvek:-
- Könyvek:-
- Könyvek:-
- Könyvek:-
- Könyvek:-
- Könyvek:-
- Könyvek:-
- Könyvek:-
- Könyvek:-
- Könyvek listája Név :-
- Könyvek listája Név :-
- Következtetés
Ez a bemutató elmagyarázza, mi az XSLT, a transzformációkat, az elemeket és a felhasználást példákkal. Az XPath fontosságát is tárgyalja az XSLT konverziós kód fejlesztéséhez:
Az "XSLT" kifejezés két szó, az "XSL" és a "T" kombinálásával jön létre, az "XSL" az "Extensible Stylesheet Language" rövidítése, a "T" pedig a "Transformation" rövidítése.
Az XSLT tehát alapvetően egy olyan transzformációs nyelv, amelyet a forrás XML dokumentumok XML dokumentumokká vagy más formátumokká, például HTML, PDF formátumokká történő átalakítására/konvertálására használnak az XSL-FO (Formatting Objects) stb. segítségével.
Bevezetés az XSLT-be
A transzformáció az XSLT processzor (mint például a Saxon, Xalan) segítségével történik. Ez az XSLT processzor egy vagy több XML dokumentumot vesz forrásként egy XSLT-fájllal, amely XSLT kódot tartalmaz, és az eredmény/kimeneti dokumentumokat később generálja, ahogy az alábbi ábrán látható.
Az XSLT processzor az X-Path segítségével elemzi a forrás XML dokumentumokat, hogy a gyökérelemtől kezdve a dokumentumok végéig navigáljon a különböző forráselemek között.
Minden, amit tudni kell X-Path
XSLT transzformáció
Az átalakítás megkezdéséhez szükségünk van egy XML dokumentumra, amelyen az XSLT kód futni fog, magára az XSLT kódfájlra és az XSLT processzorral rendelkező eszközre vagy szoftverre (a szoftver bármely ingyenes vagy próbaverzióját használhatja tanulási célokra).
#1) XML kód
Az alábbiakban az XML forráskódot mutatjuk be, amelyen az XSLT kód futni fog.
Fájlnév: Books.xml
XSLT Programmer's Reference Michael Kay Wrox $40 4th Head First Java Kathy Sierra O'reilly $19 1st SQL The Complete Reference James R. Groff McGraw-Hill $45 3rd
#2) XSLT kód
Az alábbiakban az XSLT kódot mutatjuk be, amely a fenti XML dokumentumon fut.
Fájlnév: Books.xsl
Könyvek:-
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|---|---|---|---|---|
#3) Eredmény / kimeneti kód
Az alábbi kódot az XSLT kód használata után a fenti XML dokumentumon kapjuk.
Könyvek:-
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|---|---|---|---|---|
5350192956 | XSLT programozói referencia | Michael Kay | Wrox | $40 | 4. |
3741122298 | Head First Java | Kathy Sierra | O'Reilly | $19 | 1. |
9987436700 | SQL A teljes referencia | James R. Groff | McGraw-Hill | $45 | 3. |
#4) Eredmény / kimenet megtekintése a webböngészőben
Könyvek:
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|---|---|---|---|---|
5350192956 | XSLT programozói referencia | Michael Kay | Wrox | $40 | 4. |
3741122298 | Head First Java | Kathy Sierra | O'Reilly | $19 | 1. |
9987436700 | SQL A teljes referencia | James R. Groff | McGraw-Hill | $45 | 3. |
XSLT elemek
A fenti XSLT kód és működésének megértéséhez először is meg kell értenünk a különböző XSLT elemeket és azok attribútumait.
#1) VAGY
Minden XSLT kódnak a gyökérelemmel kell kezdődnie. vagy
Attribútumok:
- @xmlns:xsl: Az XSLT-dokumentumot összekapcsolja az XSLT-szabvánnyal.
- @verzió: Meghatározza az XSLT kód verzióját az elemző számára.
#2)
Ez a deklaráció meghatározza a forrásdokumentum kiválasztott bemeneti elemének feldolgozására vagy átalakítására alkalmazott szabálykészletet a kimeneti dokumentumok meghatározott célelem-szabályai szerint.
Alapvetően kétféle sablon áll rendelkezésre a tulajdonságaiknak megfelelően:
(i) Megnevezett sablon: Ha az xsl: sablon elem tartalmazza a @name attribútumot, akkor ezt nevezzük Named Template-nek.
A megnevezett sablonokat az xsl:call-template elem hívja meg.
(ii) Match Template: Az xsl:template elem tartalmazza a @match attribútumot, amely a bemeneti csomópontokra alkalmazott megfelelő mintát vagy XPath-ot tartalmazza.
A megfelelő sablonokat az xsl:apply-template elem hívja meg.
Az xsl:template elemnek vagy@match attribútummal vagy @name attribútummal vagy mindkettővel kell rendelkeznie. A match attribútummal nem rendelkező xsl:template elemnek sem mode attribútummal, sem priority attribútummal nem szabad rendelkeznie.
Írjuk át a fenti XSLT(
a) XSLT kód alapján Match Template with . Lásd az alábbi sárga & bélyegző; szürkével kiemelt módosított kódot, ez ugyanazt a fenti kimeneti eredményt fogja eredményezni.
Könyvek:-
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|
A kiemelt területet lásd a képernyőképen:
b) XSLT kód a Named Template alapján a . Lásd alább sárga & bélyegző; szürkével kiemelt módosított kód, ez ugyanazt a fenti kimeneti eredményt fogja eredményezni.
Könyvek:-
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|
A kiemelt területet lásd a képernyőképen:
#3)
A processzor megkeresi és alkalmazza az összes olyan sablont, amely a @select attribútumban definiált XPath-tel rendelkezik.
A @mode attribútumot akkor is használjuk, ha egynél több kimeneti módot akarunk megadni ugyanazzal a bemeneti tartalommal.
#4)
A processzor meghívja a sablonokat, amelyeknek értéke a @name attribútumon belül van (kötelező).
elemet használjuk a sablon paramétereinek átadására.
#5)
Adja meg a fenti kódban meghatározott @select attribútumban definiált XPath-kifejezéshez tartozó karakterlánc/szöveg értékét.
Ez megadja a könyv nevének értékét.
#6) : Ismétlés
Ez az utasításokat minden egyes csomópontra (a @select (kötelező) attribútumban meghatározott xpath) a rendezett sorrendben fogja feldolgozni.
A fenti kód minden egyes csomóponthoz tároló/könyvkészletet jelent:
/store/book[1]
/store/book[2]
/store/book[3]
az xsl:for-each gyermekeként is használható a rendezés sorrendjének meghatározására.
#7) : Feltételes feldolgozás
Az xsl:if utasítások csak akkor kerülnek feldolgozásra, ha a @test attribútum bólusos értéke igaz, különben az utasítás nem kerül kiértékelésre, és az üres szekvencia kerül visszaadásra.
2"> Feltétel True: A könyvek száma több mint kettő.
Eredmény: Igaz feltétel: A könyvek száma több mint kettő.
Itt a count() az előre definiált függvény.
#8) : Alternatív feltételek feldolgozása
Az xsl:choose több okból különböző feltételeket tesztel az xsl:when elemek @test attribútumán belül, az a tesztfeltétel, amelyik az összes xsl:when közül elsőként válik igazzá, az lesz először feldolgozva, és van egy opcionális xls:otherwise elem is, így ha egyik feltétel tesztelése sem válik igazzá, akkor ez az xsl:otherwise lesz figyelembe véve.
Igaz feltétel: A könyv száma egy. Igaz feltétel: A könyv száma kettő. Igaz feltétel: A könyv száma három. Nincs feltétel egyezés.
Eredmény: Igaz feltétel: A könyv száma három.
#9)
Az xsl:copy a kontextus elemre működik, azaz ha az egy csomópont, akkor a kontextus csomópontot másolja az újonnan létrehozott csomópontba, és ez nem másolja a kontextus csomópont gyermekeit. Emiatt ezt sekély másolásnak nevezzük. Az xsl:copy-of elemmel ellentétben az xsl:copy nem rendelkezik a@select attribútummal.
Az alábbi kódban a kontextuselemek a kimenetre & az összes gyermekelemet & másolja az xsl:apply-template rekurzívan.
node() Áll az összes csomópontra és azok összes attribútumára rekurzívan.
Eredmény: Ez a forrásdokumentum összes csomópontját és attribútumát rekurzív módon átmásolja a kimeneti dokumentumba, azaz a forrásdokumentum pontos másolatát hozza létre.
#10)
Az xsl:copy-of alapértelmezés szerint rekurzívan másolja a csomópontok sorozatát az összes gyermekével és attribútumával együtt, ennek jellege miatt ezt mélymásolásnak is nevezik. Az XPath kiértékeléséhez szükséges a @select attribútum.
Eredmény: Ez a forrásdokumentum összes csomópontját és attribútumát rekurzív módon átmásolja a kimeneti dokumentumba, azaz a forrásdokumentum pontos másolatát hozza létre.
Az aktuális csomópont és az aktuális attribútum másolatát jelöli.
#11)
Ez az elem arra szolgál, hogy kommentárt írjon a céleredményhez, minden olyan szöveges tartalom, amely ezt a taget oldalról érinti, kommentált kimenetként kerül kiírásra.
Ez a kimenetre kerül kiírásra, mint egy megjegyzés csomópont.
Eredmény:
#12)
Ez egy szöveges csomópontot generál az eredménydokumentumhoz, az xsl:textben lévő értéket pedig stringként kiírja a kimenetre.
Ez egy
szöveges sor.
Kimenet:
Ez egy
szöveges sor.
#13)
Ez egy olyan elemet hoz létre az eredménydokumentumban, amelynek neve a @name attribútumban szerepel. A name attribútum a kötelező attribútum.
Eredmény: 5350192956
#14)
Ez egy attribútumot generál a szülő elemhez az eredménydokumentumban. Az attribútum nevét a name attribútum határozza meg, az attribútum értékét pedig a select attribútumban említett XPath számítja ki az alábbi kódban megadott módon. A name attribútum a kötelező attribútum.
Eredmény:
#15)
Ez az elem a kiválasztott csomópontot sorrendbe rendezi, ennek megfelelően növekvő vagy csökkenő irányban. A csomópontot vagy az XPath-ot a @select attribútummal adjuk meg, a rendezés irányát pedig a @order attribútum határozza meg.
Az alábbi kódban az összes könyv listáját megkapjuk a könyv neve szerint, betűrendben.
Könyvek:-
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|---|---|---|---|---|
A kiemelt területet lásd ezen a képernyőképen:
Eredmény: Az alábbi lista a könyvek nevét alfabetikus sorrendben, azaz növekvő sorrendben tartalmazza.
Könyvek:
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|---|---|---|---|---|
3741122298 | Head First Java | Kathy Sierra | O'Reilly | $19 | 1. |
9987436700 | SQL A teljes referencia | James R. Groff | McGraw-Hill | $45 | 3. |
5350192956 | XSLT programozói referencia | Michael Kay | Wrox | $40 | 4. |
#16)
Ez az elem egy változót deklarál, amely egy értéket tart benne. A változó lehet globális vagy helyi változó. A változó nevét a @name attribútum határozza meg, az értéket, amelyet ez a változó tartalmazni fog, pedig a @select attribútum.
A globális változóhoz való hozzáférés globális, azaz a változók bármely elemen belül meghívhatók, és a stíluslapon belül elérhetőek maradnak.
Egy globális változó definiálásához csak annyit kell tennünk, hogy a stílustábla gyökéreleme mellett, ahogy az alábbi kódban sárgával kiemelve látható, a 'SecondBook' változó a globális változó, és ez tartalmazza a második könyv nevét.
A helyi változó hozzáférése lokális ahhoz az elemhez, amelyben definiálva van, azaz a változó nem lenne elérhető azon az elemen kívül, amelyben definiálva van, ahogy az alábbi szürkével kiemelt kódban látható, az 'első könyv' változó egy helyi változó, és az első könyv nevét tartalmazza.
Ahhoz, hogy a globális változót a helyi változóhoz hívjuk, a dollár szimbólumot ($) kell használni a változó neve előtt, ahogy az alább sárgával kiemelve látható. $ .
Első könyv neve: Második könyv neve:
A kiemelt területet lásd a képernyőképen:
Eredmény:
Első könyv neve: XSLT Programmer's Reference (XSLT programozói referencia)
Második könyv neve: Head First Java
#17)
Ez az elem a kulcsok deklarálására szolgál, az adott kulcshoz illeszkedő mintaértékekhez.
A név a kulcs szolgáltatója a @name attribútummal(" get-publisher "), amelyet később a key() függvényen belül használunk. A @match attribútumot a bemeneti csomópont XPath-kifejezésekkel történő indexeléséhez adjuk meg(" könyv "), mint az alábbi sárgával kiemelt @match, a boltban elérhető összes könyv indexelésére szolgál.
A @match attribútumhoz képest a @use attribútumot használjuk, amely kijelöli a csomópontot, hogy az adott kulcs értékét XPath-kifejezéssel("publisher") kapja meg.
Most tegyük fel, hogy ha szükségünk van annak a könyvnek a részleteire, amelyet csak a 'Wrox' kiadó adott ki, akkor ezt az értéket könnyen megkaphatjuk az xsl:key elem segítségével, egy kulcs-érték pár létrehozásával.
key('get-publisher', 'Wrox') A Key() két paramétert vesz fel, az első a kulcs neve, ami ebben az esetben a 'get-publisher', a második a keresendő string érték, ami esetünkben a 'Wrox'.
Könyvek:-
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|---|---|---|---|---|
A kiemelt területet lásd a képernyőképen:
Eredmény:
Könyvek:-
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|---|---|---|---|---|
5350192956 | XSLT programozói referencia | Michael Kay | Wrox | $40 | 4. |
Eredmény / HTML nézet:
Könyvek:
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|---|---|---|---|---|
5350192956 | XSLT programozói referencia | Michael Kay | Wrox | $40 | 4. |
#18)
Ezt az elemet hibakeresési célokra használják az XSLT fejlesztés során. Az elem a kimenetét az alkalmazás standard kimeneti képernyőjére adja.
Az @terminate attribútum két értékkel használatos: 'yes' vagy 'no', ha az érték 'yes', akkor az elemző azonnal leáll, amint a tesztfeltétel teljesül az üzenet végrehajtásához.
Ennek megértéséhez tegyük fel, hogy ha a bemeneti dokumentumunkban az ár elem véletlenül üres lesz, mint az alábbi kódban, akkor a feldolgozásnak azonnal le kell állnia, amint a processzor találkozik az üres ár elemmel, ami könnyen elérhető az xsl:message használatával az if tesztfeltételen belül, mint az alábbi XSLT kódban.
A hibakereső riasztás az alkalmazás standard képernyőjén jelenik meg: A feldolgozást az xsl:message a 21. sorban megszakította.
XML kód bevitele:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
A kiemelt területet lásd a képernyőképen:
XSLT kód:
Könyvek:-
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|---|---|---|---|---|
Lásd a képernyőképen a kiemelt területet:
Eredmény: Felhívjuk a figyelmet arra, hogy amint az elemző az üres árcímkével találkozik, azonnal megszakítja a feldolgozást, ami miatt a zárócímkék , és nem érnének a fájl végére.
Könyvek:-
Könyv ID | Könyv neve | Szerző neve | Kiadó | Ár | Kiadás |
---|---|---|---|---|---|
5350192956 | XSLT programozói referencia | Michael Kay | Wrox | $40 | 4. |
3741122298 | Head First Java | Kathy Sierra | O'Reilly | $19 | 1. |
A kiemelt területet lásd a képernyőképen:
#19) &
elem határozza meg a sablon paraméterét, ha az a sablonon belül van definiálva . Meg lehet határozni vagy a sablonon belül globális paraméterként, vagy a sablon helyi paramétereként.
Az értékét a sablon meghívásakor a vagy .
átadja a paraméter értékét, amelyet a Az olyan attribútum, mint a @name tartalmazza a paraméter nevét, amelynek meg kell egyeznie az elem @name attribútumával. A @Select attribútumot a paraméter értékének beállítására használjuk.
A paraméter értékének lekérdezéséhez ugyanúgy, mint egy változóhoz dollárjelet ($) használunk.
XML forráskód:
XSLT Programmer's Reference Michael Kay Wrox $40 4th Head First Java Kathy Sierra O'reilly $19 1st SQL The Complete Reference James R. Groff McGraw-Hill $45 3rd
XSLT kód:
Könyvek listája Név :-
A könyv neve: A könyv neve:
A kiemelt területet lásd a képernyőképen:
Eredmény kimenet:
Könyvek listája Név :-
A könyv neve: XSLT programozói referenciák
Könyv neve: Head First Java
A könyv neve: SQL The Complete Reference
#20)
egy másik stílustábla modul importálására szolgál az aktuális stílustáblánkon belül. Ez segít a moduláris XSLT fejlesztési megközelítés megvalósításában.
Az importálás után az összes sablon elérhetővé válik. A szülői stíluslapban (amely egy másik stíluslapot importál) definiált sablonok prioritása magasabb, mint az importált stíluslapé (amelyet a szülői stíluslap importál).
Ha egy másik stílustáblának is ugyanaz a sablon neve, mint ami az importáló sablonon belül definiálva van, akkor az idegen sablonokat felülírja a saját sablonja.
Az @href attribútumot az importálni kívánt stílustábla URI-jeként használjuk.
#21)
Ugyanúgy, mint a fenti xsl:import, ez is segít a moduláris XSLT fejlesztési megközelítés elérésében. Az összes beillesztett sablon ugyanolyan prioritással/előbbséggel rendelkezik, mint a hívó stíluslap. Olyan, mintha az összes sablont egy másik stíluslapból másolnánk a saját stíluslapunkba.
Az @href attribútumot az importálni kívánt stílustábla URI-jeként használjuk.
#22)
Ez az elem a kimeneti fájlban lévő eredményfa meghatározására szolgál. Olyan attribútumokat tartalmaz, mint a @method, amely olyan értékeket vehet fel, mint 'XML', 'HTML', 'XHTML' és 'text', alapértelmezés szerint az 'XML'.
@encoding megadja a kimeneti fájlban szereplő karakterkódolást, ahogy az alábbi példában látható encoding="UTF-16″, az alapértelmezett értékek XML vagy XHTML esetén UTF-8 vagy UTF-16. @indent megadja az XML vagy HTML kimeneti kód behúzását, XML esetén az alapértelmezett érték "no", HTML és XHTML esetén az alapértelmezett érték yes.
#23)
Ezt az elemet a @element attribútumban felsorolt forráselemek nem jelentős szóközének eltávolítására (eltávolítására) használják, és ha az összes elemtől el akarjuk távolítani a szóközt, akkor használhatjuk a '*' karaktert a @elements attribútumon belül.
#24)
Ezt az elemet arra használjuk, hogy megőrizzük az @element attribútumon belül felsorolt forráselemek szóközeit, és ha az összes elemtől meg akarjuk őrizni a szóközöket, akkor használhatjuk a '*' karaktert az @elements attribútumon belül.
Következtetés
Így ebben a cikkben megismerkedtünk az XSLT-vel, a gyakran használt XSLT elemekkel, azok használatával, példákkal a forrás- és cél/eredmény kóddal, a forráselem átalakításával vagy transzformációjával a célelembe.
Megbeszéltük az XPath fontosságát is az XSLT konverziós kód fejlesztéséhez. Láttuk az XSL sablon deklarációt és a sablonhívást & paraméterek átadása. Megtanultuk a globális és helyi változók deklarálását, használatukat az XSLT kódban, és hogyan hívjuk őket.
Megismertük a különböző elágazó vagy feltételes XSLT elemeket, mint például az xsl:if, xsl:for-each, xsl:choose. Megértettük a sekély másolás és a mély másolás közötti különbséget, a csomópontok rendezését, az XSLT kód hibakeresését az xsl:message használatával, a különbséget a nevesített sablonok és a megfelelő sablonok között, valamint a kimenet formázását az xsl:output használatával.
A szerzőről : Himanshu P. tapasztalt szakember az információtechnológia területén. Az ITC MNC-knél dolgozott több üzleti területen és több technológián. Himanshu kedvenc időtöltése a magazinok olvasása és a blogolás.