Az XML (Extensible Markup Language) adatok strukturált tárolására szolgál, de önmagában nem határozza meg, hogyan kell ezeket az adatokat megjeleníteni vagy átalakítani. Itt lép be a képbe az XSL (Extensible Stylesheet Language).
Az XSL egy olyan nyelv, amely lehetővé teszi, hogy az XML dokumentumokat más formátumokká, például HTML-lé, szöveggé vagy akár más XML struktúrává alakítsuk. Két fő komponense van: az XSLT (XSL Transformations), amely az átalakításért felel, és az XSL-FO (XSL Formatting Objects), amely a formázást és a megjelenítést vezérli. Bár az XSL-FO létezik, az XSLT-t gyakrabban használják a webes környezetben.
Az XSLT stylesheet-ek sablonokat tartalmaznak, amelyek meghatározzák, hogyan kell az XML dokumentum egyes elemeit feldolgozni és átalakítani. Ezek a sablonok XPath kifejezéseket használnak az XML dokumentumban való navigáláshoz és az adatok kiválasztásához.
Az XSL lényegében egy híd az XML adatok és a felhasználó által látható, értelmezhető formátum között.
Gondoljunk egy webáruház termékkatalógusára, amely XML formátumban tárolja az árucikkek adatait (név, leírás, ár, kép). Az XSL segítségével ezt az XML-t HTML-vé alakíthatjuk, amelyet a webböngésző meg tud jeleníteni a felhasználó számára. Ugyanazt az XML adatot felhasználva akár PDF dokumentumot is generálhatunk, vagy egy másik XML struktúrát hozhatunk létre, amely egy másik rendszer számára alkalmas.
Az XSL használatával a megjelenítés logikája elválasztható az adatoktól, ami lehetővé teszi a rugalmas és karbantartható rendszerek építését. Egyetlen XML dokumentumhoz több XSL stylesheet is tartozhat, amelyek különböző megjelenítéseket eredményeznek. Ez különösen hasznos, ha különböző eszközökön (pl. asztali számítógép, mobiltelefon) szeretnénk ugyanazt az adatot megjeleníteni.
Az XML és az XSL kapcsolata: Adatok és megjelenítés szétválasztása
Az XSL (Extensible Stylesheet Language) kulcsfontosságú szerepet játszik az XML dokumentumok feldolgozásában, különösen akkor, amikor az adatok és a megjelenítés szétválasztása a cél. Az XML önmagában csupán az adatok strukturált tárolására szolgál, nem definiálja azok megjelenítésének módját. Itt lép be az XSL a képbe.
Az XSL alapvetően két fő részből áll:
- XSLT (XSL Transformations): Ez a nyelv felelős az XML dokumentumok átalakításáért. Az XSLT segítségével az XML adatokat más formátumokká alakíthatjuk, például HTML-é, szöveggé vagy akár más XML struktúrává.
- XSL-FO (XSL Formatting Objects): Ez a formázó nyelv az XML adatok nyomtatott formátumú megjelenítésére specializálódott. Ritkábban használják webes alkalmazásokban, inkább a nyomdai előkészítés területén elterjedt.
Az XSLT működése azon alapul, hogy sablonokat (templates) definiálunk, amelyek meghatározzák, hogy az XML dokumentum egyes elemei hogyan kerüljenek átalakításra. A sablonok mintákat tartalmaznak, amelyek illeszkednek az XML dokumentum bizonyos elemeire vagy attribútumaira. Amikor egy sablon illeszkedik, a benne definiált átalakítási szabályok végrehajtódnak.
Az XSL lehetővé teszi, hogy ugyanazt az XML adatforrást különböző módokon jelenítsük meg, anélkül, hogy magát az adatot módosítanánk. Ezáltal a tartalom és a megjelenítés teljesen függetlenné válik egymástól.
Például, egy termékkatalógust tartalmazó XML dokumentumot az XSL segítségével megjeleníthetünk weboldalon (HTML-ként), mobilalkalmazásban (egy másik XML formátumként), vagy akár nyomtatott katalógusként (XSL-FO-ként). Mindhárom esetben ugyanazt az XML adatforrást használjuk, de az XSL stíluslapok határozzák meg a végső megjelenést.
Az XSLT használatának egyik előnye, hogy a megjelenítés logikáját az XML adatoktól elkülönítve tároljuk. Ez megkönnyíti a karbantartást és a fejlesztést, mivel a megjelenítés változtatásához nem kell az XML adatokat módosítani, elég csupán a stíluslapon változtatni. Emellett, az XSLT lehetővé teszi az adatok szűrését, rendezését és csoportosítását is a megjelenítés előtt, ami tovább növeli a rugalmasságot.
XSLT: Az XSL transzformációs nyelve
Az XSLT (Extensible Stylesheet Language Transformations) az XSL család egyik legfontosabb tagja, amely az XML dokumentumok átalakítására és megjelenítésére szolgál. Lényegében egy deklaratív nyelv, amellyel XML dokumentumokat más XML dokumentumokká (vagy akár HTML, szöveg, stb.) alakíthatunk át.
Az XSLT működésének alapja a sablonok (templates) használata. Minden sablon egy adott XML elemre vagy attribútumra vonatkozik, és meghatározza, hogy az adott elemet vagy attribútumot hogyan kell átalakítani. A sablonok match attribútuma egy XPath kifejezés, amely meghatározza, hogy mely XML elemekre vagy attribútumokra vonatkozik a sablon.
Az XSLT processzor végigfut az XML dokumentumon, és minden egyes elemnél vagy attribútumnál megkeresi a hozzá illő sablont. Ha talál sablont, akkor végrehajtja a sablonban definiált átalakításokat, és létrehozza a kimeneti dokumentum megfelelő részét.
Az XSLT nem csak az XML struktúrájának megváltoztatására képes, hanem az adatok formázására és rendezésére is.
Az XSLT szabvány tartalmaz számos beépített függvényt és utasítást, amelyek megkönnyítik az átalakítások megvalósítását. Néhány példa:
- xsl:value-of: Egy XML elem vagy attribútum értékének kiírására szolgál.
- xsl:for-each: Egy XML elemcsoporton való iterálásra használható.
- xsl:if: Feltételes átalakításokat tesz lehetővé.
- xsl:choose: Több feltétel alapján történő átalakításokat tesz lehetővé.
Az XSLT stíluslapok általában .xsl kiterjesztésű fájlokban tárolódnak. Egy XSLT stíluslap tartalmazhat több sablont is, amelyek különböző XML elemekre vagy attribútumokra vonatkoznak. Az XSLT stíluslapok használata lehetővé teszi az XML adatok megjelenítésének és formázásának elkülönítését a tényleges adatoktól.
Például, ha egy XML dokumentum termékadatokat tartalmaz, akkor egy XSLT stíluslap segítségével HTML formátumban jeleníthetjük meg a termékeket egy weboldalon. A stíluslap meghatározza a termékek elrendezését, a betűtípusokat, a színeket és egyéb formázási beállításokat.
Az XSLT egy hatékony eszköz az XML dokumentumok átalakítására és megjelenítésére. Széles körben használják webes alkalmazásokban, adatbázis-integrációban és más területeken.
XSLT alapfogalmak: Sablonok, értékek kiválasztása, ciklusok

Az XSLT (Extensible Stylesheet Language Transformations) az XML dokumentumok átalakítására és megjelenítésére szolgáló nyelv. Az XSLT alapja a sablonok használata. A sablonok olyan szabályok, amelyek meghatározzák, hogy az XML dokumentum egyes részei hogyan legyenek átalakítva vagy megjelenítve.
Egy sablon a következőképpen épül fel:
- match attribútum: Meghatározza, hogy mely XML csomópontokra vonatkozik a sablon. A
match
attribútum egy XPath kifejezés, amely kiválasztja azokat a csomópontokat, amelyekre a sablon alkalmazandó. - sablon tartalma: Meghatározza, hogy mit kell tenni a kiválasztott csomópontokkal. Ez lehet új HTML tartalom létrehozása, meglévő tartalom átalakítása, vagy akár más sablonok meghívása.
Az értékek kiválasztása az XML dokumentumból az <xsl:value-of>
elemmel történik. Ez az elem egy XPath kifejezést vár, amely meghatározza, hogy melyik érték kerüljön beillesztésre az eredménybe. Például, ha egy <nev>
elem értékét szeretnénk megjeleníteni, akkor a következő XSLT kódot használhatjuk:
<xsl:value-of select="nev"/>
Ez a kód kiválasztja a nev
elem értékét, és beilleszti azt a végső dokumentumba.
Az XSLT támogatja a ciklusokat is, amelyek lehetővé teszik, hogy egy sablont többször is alkalmazzunk egy XML dokumentum különböző részeire. A leggyakrabban használt ciklus a <xsl:for-each>
elem, amely egy XPath kifejezést vár, és a kiválasztott csomópontokra iterál.
Például, ha egy XML dokumentum tartalmaz egy <termek>
elemet, amely több <termek>
elemet tartalmaz, akkor a következő XSLT kóddal jeleníthetjük meg az összes termék nevét:
<xsl:for-each select="termekek/termek">
<p><xsl:value-of select="nev"/></p>
</xsl:for-each>
Ez a kód kiválasztja az összes <termek>
elemet a <termekek>
elemen belül, és minden termékre megjeleníti a <nev>
elem értékét egy bekezdésben.
Az XSLT lehetővé teszi feltételes utasítások használatát is az <xsl:if>
és <xsl:choose>
elemekkel. Ezek az elemek lehetővé teszik, hogy különböző sablonokat alkalmazzunk attól függően, hogy egy adott feltétel teljesül-e vagy sem.
Az XSLT egy deklaratív nyelv, ami azt jelenti, hogy nem utasításokat adunk a programnak, hanem leírjuk, hogy mit szeretnénk elérni. A fordító (XSLT processzor) dönti el, hogy ezt hogyan valósítja meg.
A sablonok, az értékek kiválasztása és a ciklusok az XSLT alapvető építőkövei. Ezek segítségével bonyolult átalakításokat és megjelenítéseket valósíthatunk meg XML dokumentumokon.
A <xsl:template>
elem módosítókat is használhat, például a priority
attribútumot, ami a sablonok prioritását határozza meg, amennyiben több sablon is illeszkedik ugyanarra a csomópontra.
Az XSLT processzorok működése
Az XSLT processzorok az XSLT (Extensible Stylesheet Language Transformations) stíluslapok segítségével alakítják át az XML dokumentumokat. A folyamat lényege, hogy a processzor beolvassa az XML forrásfájlt és az XSLT stíluslapot, majd a stíluslapban definiált szabályok alapján generál egy új dokumentumot, ami lehet XML, HTML, szöveg vagy bármilyen más formátum.
A működés alapja a sablonillesztés. Az XSLT stíluslap sablonokat tartalmaz, melyek meghatározzák, hogy az XML dokumentum mely részeire milyen átalakításokat kell alkalmazni. A sablonok match
attribútuma egy XPath kifejezés, ami kiválasztja azokat az XML csomópontokat, melyekre a sablon vonatkozik.
Amikor a processzor egy XML csomópontra talál, amely megfelel egy sablon match
attribútumának, akkor végrehajtja a sablonban definiált utasításokat. Ezek az utasítások lehetnek például:
- Új elemek létrehozása.
- Attribútumok hozzáadása vagy módosítása.
- Szövegek beillesztése.
- Más sablonok meghívása.
Az XSLT processzor a teljes XML dokumentumot bejárja, és minden csomópontra megpróbál egy megfelelő sablont találni. Ha nem talál, akkor az alapértelmezett sablonokat használja, melyek jellemzően a szöveges tartalmat másolják át.
A processzor működésének fontos eleme a rekurzió. A sablonok egymást is meghívhatják, így összetett átalakítások valósíthatók meg. Például, egy sablon felelős lehet egy táblázat generálásáért, míg egy másik sablon a táblázat egyes sorainak létrehozásáért. A <xsl:apply-templates>
elem segítségével a processzor a stíluslap más sablonjait hívhatja meg, lehetővé téve a moduláris és újrahasznosítható stíluslapok készítését.
Az XSLT processzorok különböző implementációkban léteznek, például böngészőkbe építve, vagy különálló szoftverként. A legelterjedtebb implementációk a libxslt (C könyvtár) és a Saxon (Java könyvtár).
XPath: Az XSLT navigációs nyelve
Az XSLT (Extensible Stylesheet Language Transformations) szívében az XPath áll, ami lényegében az XML dokumentumok navigációs nyelve. Képzeljük el az XML dokumentumot egy hatalmas fának, ahol az elemek a fa ágai és levelei. Az XPath segít nekünk ebben a fában eligazodni, hogy megtaláljuk a számunkra releváns információkat.
Az XPath segítségével tudjuk kiválasztani az XML dokumentumban lévő elemeket, attribútumokat és szövegeket. Ezt útvonalak segítségével érjük el, amelyek hasonlítanak a fájlrendszerben használt elérési utakhoz. Például, ha ki szeretnénk választani egy XML dokumentumban lévő összes könyv
elemet, akkor az XPath kifejezésünk egyszerűen //könyv
lehet.
Az XPath nem csupán a kiválasztásra szolgál, hanem feltételek megadására is. Például, kiválaszthatjuk az összes könyv
elemet, aminek az ár
attribútuma nagyobb, mint 30. Az XPath ebben az esetben bonyolultabb lesz, de továbbra is érthető marad.
Az XPath számos függvényt is kínál, amelyek lehetővé teszik számunkra, hogy manipuláljuk a kiválasztott adatokat. Például, használhatjuk a string()
függvényt egy elem tartalmának szöveges értékre konvertálásához, vagy a count()
függvényt a kiválasztott elemek számának meghatározásához.
Az XPath kulcsfontosságú az XSLT-ben, mert ez az a nyelv, amellyel megmondjuk az XSLT processzornak, hogy mely adatokat kell kiválasztania az XML dokumentumból az átalakítás során.
Az XPath kifejezések kiértékelésének eredménye lehet:
- Csomópontkészlet: Egy vagy több XML csomópont (elem, attribútum, szöveg stb.).
- Szám: Egy numerikus érték.
- Szöveg: Egy szöveges érték.
- Logikai érték: Igaz vagy hamis.
Ezek az eredmények aztán felhasználhatók az XSLT sablonokban, hogy dinamikusan generáljuk a kimeneti dokumentumot. Az XPath segítségével irányíthatjuk az XSLT folyamatát, és pontosan meghatározhatjuk, hogy mely adatok kerüljenek felhasználásra a végső dokumentumban.
Az XPath használata az XSLT-ben nem csupán a kiválasztásra korlátozódik, hanem logikai műveletek, számítások és szövegmanipulációk elvégzésére is. Ez teszi az XSLT-t egy rendkívül hatékony eszközzé az XML dokumentumok átalakításához és megjelenítéséhez.
XPath kifejezések: Csomópontok, attribútumok, predikátumok
Az XSLT (XSL Transformations) nyelv az XML dokumentumok átalakítására szolgál, és az XPath nyelvet használja az XML dokumentumokban való navigálásra és a szükséges adatok kiválasztására. Az XPath kifejezések alapvető építőkövei a csomópontok, attribútumok és predikátumok, melyek együttesen teszik lehetővé a célzott lekérdezéseket.
A csomópontok az XML dokumentum szerkezetének alapvető elemei. Ide tartoznak a gyökér csomópont, az elem csomópontok, az attribútum csomópontok, a szöveg csomópontok, a megjegyzés csomópontok és a feldolgozási utasítás csomópontok. Az XPath kifejezésekkel ezek a csomópontok címezhetők meg. Például, a /könyvtár/könyv/cím
kifejezés a „könyvtár” gyökér elemtől a „könyv” elemeken keresztül a „cím” elemekhez vezet, kiválasztva az összes könyv címét a könyvtárban.
Az attribútumok az elemekhez kapcsolódó tulajdonságok. Az XPath-ban az attribútumok a @
szimbólummal érhetők el. Például, a /könyvtár/könyv/@id
kifejezés kiválasztja a „könyv” elemek „id” attribútumának értékét. Az attribútumok segítségével specifikus elemeket lehet kiválasztani a tulajdonságaik alapján.
A predikátumok szűrőfeltételek, amelyek szűkítik a csomópontok kiválasztását. A predikátumokat szögletes zárójelek ([]
) között adjuk meg. Például, a /könyvtár/könyv[ár > 30]
kifejezés kiválasztja azokat a „könyv” elemeket, amelyek „ár” elemének értéke nagyobb, mint 30. A predikátumok logikai operátorokat (and
, or
, not
) és összehasonlító operátorokat (=
, !=
, <
, >
, <=
, >=
) is tartalmazhatnak.
Az XPath lehetővé teszi a komplex lekérdezések létrehozását, kombinálva a csomópontok, attribútumok és predikátumok használatát.
Például:
//könyv[szerző='Gárdonyi Géza']/cím
- Kiválasztja az összes "könyv" elem "cím" elemét, ahol a "szerző" elem értéke "Gárdonyi Géza"./könyvtár/könyv[@műfaj='regény' and ár < 40]
- Kiválasztja azokat a "könyv" elemeket a "könyvtár" gyökér elem alatt, amelyek "műfaj" attribútuma "regény" és az "ár" elemének értéke kisebb, mint 40.
Az XPath kifejezések relatív útvonalakat is tartalmazhatnak. A .
(pont) az aktuális csomópontot jelenti, a ..
(két pont) pedig a szülő csomópontot. Például, ha az aktuális csomópont egy "könyv" elem, akkor a ./cím
kifejezés kiválasztja az adott könyv címét, míg a ../kiadó
a könyv kiadóját a szülő csomópontból.
Az XPath funkciók is rendelkezésre állnak, amelyekkel komplexebb műveleteket végezhetünk. Például a string-length()
függvény egy szöveg hosszát adja vissza, a contains()
függvény pedig ellenőrzi, hogy egy szöveg tartalmaz-e egy másik szöveget.
Az XPath ereje abban rejlik, hogy lehetővé teszi a pontos és célzott adatkiválasztást az XML dokumentumokból, ami nélkülözhetetlen az XSLT transzformációk során.
XSLT függvények és operátorok

Az XSLT stíluslapok ereje abban rejlik, hogy függvények és operátorok segítségével manipulálhatjuk az XML adatokat. Ezek teszik lehetővé a komplex átalakításokat és a kívánt kimeneti formátum elérését.
A függvények előre definiált műveleteket hajtanak végre. Például, a string-length()
függvény egy karakterlánc hosszát adja vissza, a substring()
függvény egy karakterlánc részét választja ki, a translate()
pedig karaktereket cserél le egy karakterláncban. Ezek a függvények alapvető építőelemek a karakterláncok manipulálásához.
Számos numerikus függvény is rendelkezésre áll. A sum()
függvény egy csomópontkészlet értékeinek összegét számolja ki, a round()
függvény kerekít, a floor()
pedig a legközelebbi egész számra kerekít lefelé. Ezek a függvények lehetővé teszik a numerikus adatokkal való hatékony munkát.
A logikai operátorok (and
, or
, not
) és a relációs operátorok (=
, !=
, <
, >
, <=
, >=
) elengedhetetlenek a feltételes logikához. Ezek segítségével hozhatunk létre olyan sablonokat, amelyek csak bizonyos feltételek teljesülése esetén aktiválódnak.
Az XSLT szabvány kiterjedt függvénykészletet biztosít, amely lehetővé teszi az XML adatok szinte bármilyen módon történő manipulálását.
A csomópontkészlet függvények lehetővé teszik a csomópontok közötti navigációt és kiválasztást. A last()
függvény például a jelenlegi kontextusban lévő utolsó csomópont indexét adja vissza, míg a position()
a jelenlegi csomópont pozícióját adja meg.
Az operátorok pedig lehetővé teszik a matematikai műveletek (+
, -
, *
, div
, mod
) elvégzését, valamint a karakterláncok összefűzését (concat()
függvénnyel is, de a +
operátorral is).
Például, egy termék árát 10%-kal növelhetjük a következő kifejezéssel: price * 1.1
. Vagy két karakterláncot összefűzhetünk: string1 + string2
.
XSLT kiterjesztések
Az XSLT kiterjesztések lehetővé teszik, hogy a transzformációs folyamatok során olyan funkciókat használjunk, melyek nem részei a standard XSLT specifikációnak. Ezek a kiterjesztések gyakran programozási nyelvek (pl. Java, JavaScript) segítségével implementált egyéni függvények vagy eljárások.
A kiterjesztések használata bizonyos mértékű rugalmasságot ad az XSLT fejlesztőknek, lehetővé téve, hogy olyan feladatokat is megoldjanak, melyek standard XSLT eszközökkel nehezen vagy egyáltalán nem lennének kivitelezhetőek.
A kiterjesztésekkel a transzformációk során komplex számításokat, külső adatbázisok elérését, vagy speciális formázási műveleteket végezhetünk.
Azonban a kiterjesztések használata óvatosságot igényel. A nem standard megoldások bevezetése csökkentheti a kód hordozhatóságát és a különböző XSLT processzorok közötti kompatibilitást. Ezért fontos, hogy a kiterjesztések használata jól dokumentált és indokolt legyen.
Gyakori példa a kiterjesztésekre a dátum- és időkezelő függvények, vagy a reguláris kifejezések használata, melyek nem feltétlenül részei a standard XSLT implementációnak.
XSL-FO: Az XSL formázási objektumok
Az XSL-FO (Extensible Stylesheet Language Formatting Objects) az XSL család egyik kulcsfontosságú tagja, amely az XML adatok megjelenítésére összpontosít. Míg az XSLT az XML adatok átalakítására szolgál, az XSL-FO a formázott kimenet létrehozásáért felelős. Ez a formázott kimenet lehet például PDF dokumentum, nyomtatott anyag vagy akár egy képernyőn megjelenített oldal.
Az XSL-FO dokumentum egy hierarchikus struktúrában elrendezett formázási objektumok halmaza. Ezek az objektumok határozzák meg, hogy az XML adatok hogyan jelenjenek meg. Például, egy fo:page-sequence
objektum egy oldalt definiál, míg egy fo:block
objektum egy szövegblokkot reprezentál.
A formázási objektumok tulajdonságokkal rendelkeznek, amelyek befolyásolják a megjelenésüket. Ilyen tulajdonságok lehetnek például a betűtípus, a betűméret, a margók, a térközök és a színek. Ezek a tulajdonságok lehetővé teszik a fejlesztők számára, hogy finomhangolják a dokumentum kinézetét.
Az XSLT és az XSL-FO gyakran együttműködnek. Az XSLT átalakítja az XML adatokat egy XSL-FO dokumentummá, amelyet aztán egy XSL-FO processzor dolgoz fel. A processzor értelmezi a formázási objektumokat és létrehozza a végső formázott kimenetet.
Az XSL-FO lényegében egy leíró nyelv, amely meghatározza, hogy az XML adatok hogyan legyenek elrendezve és formázva egy adott megjelenítési közegben.
Az XSL-FO támogatja a különböző formázási funkciókat, beleértve a táblázatokat, listákat, fejléceket, lábléceket és képeket. Lehetővé teszi a komplex dokumentumok, például könyvek, jelentések és számlák létrehozását.
Egy egyszerű példa: egy fo:block
objektum, amelynek beállítjuk a font-family
tulajdonságát "Arial"-ra és a font-size
tulajdonságát "12pt"-re, egy Arial betűtípussal és 12 pontos betűmérettel rendelkező szövegblokkot eredményez.
XSL-FO alapelvek és felépítés
Az XSL-FO (Extensible Stylesheet Language Formatting Objects) az XSL család egyik tagja, mely kifejezetten az XML adatok formázására és megjelenítésére összpontosít. Míg az XSLT az XML dokumentumok átalakítására szolgál, az XSL-FO a végső megjelenés definiálásáért felelős.
Az XSL-FO dokumentumok formázási objektumokból épülnek fel, melyek a dokumentum különböző elemeinek vizuális megjelenítését írják le. Ilyen objektumok például a bekezdések (fo:block
), a táblázatok (fo:table
), a képek (fo:external-graphic
) és a listák (fo:list-block
).
Az XSL-FO alapelve a tartalom és a megjelenítés szétválasztása. Az XML adatot az XSLT alakítja át egy XSL-FO dokumentummá, mely tartalmazza a formázási utasításokat. Ez az XSL-FO dokumentum ezután egy formázó processzor (pl. Apache FOP) segítségével PDF, PostScript vagy más nyomtatható formátumba konvertálható.
Az XSL-FO lényegében egy leíró nyelv, mely azt mondja meg, *hogyan* kell a dokumentumot megjeleníteni, nem pedig azt, *milyen* adatokat tartalmaz.
A formázási objektumok hierarchikus struktúrába szerveződnek, mely lehetővé teszi a részletes formázási beállítások definiálását. Például, egy fo:block
objektumon belül megadhatók a betűtípus, a margók, a háttérszín és egyéb stílusjellemzők.
Egy tipikus XSL-FO dokumentum felépítése a következő elemeket tartalmazza:
fo:root
: A dokumentum gyökéreleme.fo:layout-master-set
: Az oldalelrendezések definícióit tartalmazza. Itt adhatók meg az oldalak méretei, margói és egyéb elrendezési paraméterei.fo:page-sequence
: Az oldalsorrendeket definiálja, melyek az oldalelrendezéseket használják.fo:flow
: A tényleges tartalom (szöveg, képek, táblázatok) helyezkedik el benne.
Az XSL-FO használata nagyobb kontrollt biztosít a dokumentum megjelenése felett, mint a hagyományos HTML alapú megoldások. Különösen hasznos komplex dokumentumok, mint például könyvek, jelentések vagy számlák generálásához.
XSL-FO objektumok: Oldalak, blokkok, sorok

Az XSL-FO (Extensible Stylesheet Language Formatting Objects) egy XML-alapú nyelv, amelyet elsősorban nyomtatott dokumentumok előállítására terveztek. Az XSLT segítségével egy XML dokumentumot XSL-FO dokumentummá alakítunk, amely leírja, hogyan kell a dokumentumot megjeleníteni. Az XSL-FO dokumentum azután feldolgozható egy formázó processzorral, amely PDF, PostScript vagy más nyomtatásra alkalmas formátumot generál.
Az XSL-FO dokumentumok alapvető építőkövei a különböző formázási objektumok, melyek hierarchikus struktúrába rendeződnek. Ezek közül a legfontosabbak az oldalak, blokkok és sorok, melyek a dokumentum tartalmának elrendezéséért felelnek.
Oldalak (fo:page-sequence
és fo:page-master
): Az oldalak a legfelső szintű formázási objektumok. A fo:page-sequence
egy vagy több oldal sorozatát képviseli. A fo:page-master
pedig az oldal elrendezését definiálja, beleértve a margókat, a fejlécet és a láblécet. Egy fo:page-sequence
egy vagy több fo:page-master
-t használhat, lehetővé téve különböző elrendezések alkalmazását a dokumentum különböző részein.
Blokkok (fo:block
): A blokkok téglalap alakú területek a lapon, amelyek szöveget, képeket vagy más blokkokat tartalmazhatnak. A blokkokat egymás alá rendezve hozzuk létre a dokumentum tartalmának függőleges struktúráját. A blokkok formázásával befolyásolhatjuk a szöveg igazítását, a betűtípust, a színeket és a margókat. Fontos, hogy a blokkok egymásba ágyazhatók, így komplex elrendezések hozhatók létre.
Sorok (fo:inline
): A sorok a blokkokon belül helyezkednek el, és a szöveg legkisebb formázási egységét képviselik. Egy sor egy vagy több szót tartalmazhat, és a szöveg formázására használható, például a betűtípus, a méret és a szín megváltoztatására. Az fo:inline
objektumok lehetővé teszik, hogy egyetlen blokkon belül különböző szövegrészeket eltérően formázzunk.
A blokkok és sorok formázásához számos attribútum áll rendelkezésre. Néhány példa:
font-family
: A betűtípus családja.font-size
: A betűméret.color
: A szöveg színe.margin
: A margók mérete.padding
: A belső margók mérete.text-align
: A szöveg igazítása.
Az XSL-FO lehetővé teszi a precíz kontrollt a dokumentum megjelenése felett. A formázási objektumok helyes használatával professzionális minőségű nyomtatott dokumentumok hozhatók létre.
Az XSL-FO objektumok hierarchikus elrendezése (oldalak, blokkok, sorok) kulcsfontosságú a dokumentum tartalmának strukturált és szabályozott megjelenítéséhez.
Az XSL-FO dokumentumok létrehozása és karbantartása néha bonyolult lehet, ezért gyakran használnak XSLT-t az XML adatok automatikus XSL-FO formátumba történő átalakítására. Ezzel a módszerrel a tartalom és a megjelenés szétválasztható, ami megkönnyíti a dokumentumok karbantartását és frissítését.
XSL-FO processzorok és kimeneti formátumok
Az XSL-FO processzorok az XSLT által generált XSL Formatting Objects (XSL-FO) dokumentumokat dolgozzák fel. Ezek a processzorok felelősek a formázási utasítások értelmezéséért és a végső kimeneti formátum előállításáért.
Számos XSL-FO processzor létezik, mindegyik más és más képességekkel és támogatott kimeneti formátumokkal. Néhány népszerű opció:
- Apache FOP: Egy ingyenes, nyílt forráskódú processzor, amely széles körben használatos.
- RenderX XEP: Egy kereskedelmi processzor, amely nagy teljesítményt és sokoldalúságot kínál.
- Antenna House Formatter: Egy másik kereskedelmi megoldás, amely nagy hangsúlyt fektet a szabványoknak való megfelelésre.
A kimeneti formátumok széles skálán mozoghatnak. A leggyakoribb formátum a PDF (Portable Document Format), amely ideális nyomtatásra és elektronikus dokumentumok terjesztésére. Ezen kívül az XSL-FO processzorok gyakran támogatják a PostScript, RTF (Rich Text Format), AFP (Advanced Function Presentation), és bizonyos esetekben a plain text formátumokat is. A választott kimeneti formátum nagyban függ a felhasználási céltól.
Az XSL-FO processzor kulcsfontosságú szerepet játszik az XML adatok nyomtatható és vizuálisan megjeleníthető formátumokká alakításában.
A processzor kiválasztásakor figyelembe kell venni a teljesítményt, a szabványoknak való megfelelést, a támogatott kimeneti formátumokat, és a licencelési költségeket.
XSLT és XSL-FO kombinációja: XML adatok nyomtatásra kész formátummá alakítása
Az XSLT (XSL Transformations) és XSL-FO (XSL Formatting Objects) együttes használata lehetővé teszi az XML adatok nyomtatásra kész formátummá alakítását. Az XSLT az XML dokumentum szerkezetének átalakítására szolgál, míg az XSL-FO a végső formázásért és megjelenítésért felelős.
A folyamat tipikusan úgy néz ki, hogy először az XSLT segítségével az XML adatokat egy XSL-FO dokumentummá alakítjuk. Ez az XSL-FO dokumentum tartalmazza az összes formázási utasítást, például a betűtípusokat, margókat, oldaltöréseket és egyéb elrendezési beállításokat. Ezt követően egy XSL-FO processzor (például Apache FOP) feldolgozza az XSL-FO dokumentumot, és létrehoz egy nyomtatásra kész formátumot, leggyakrabban PDF-et.
Az XSLT transzformáció során meghatározzuk, hogy az XML adatok mely elemei kerüljenek megjelenítésre, és hogyan. Például:
- Kiválaszthatjuk a releváns adatokat.
- Rendezhetjük az adatokat.
- Kiszámolhatunk összesítéseket.
- Hozzáadhatunk kiegészítő szövegeket.
Az XSL-FO dokumentumban definiáljuk:
- Az oldalak méretét és margóit.
- A betűtípusokat és színeket.
- A bekezdések és táblázatok formázását.
- A fejléceket és lábléceket.
A két technológia együttműködése rendkívül hatékony, mert lehetővé teszi az adatok és a megjelenítés elkülönítését. Ez azt jelenti, hogy az XML adatok megváltoztatása nem feltétlenül igényli a formázás módosítását, és fordítva. Ez egyszerűsíti a karbantartást és a fejlesztést.
Az XSLT és XSL-FO kombinációja egy robusztus és rugalmas megoldást kínál az XML adatok professzionális minőségű dokumentumokká alakítására.
Például, ha egy termékkatalógust szeretnénk nyomtatásra kész formátumban előállítani, az XML adatok tartalmazhatják a termékek nevét, leírását, árát és képeit. Az XSLT transzformáció kiválasztja ezeket az adatokat, és elrendezi őket egy XSL-FO dokumentumban. Az XSL-FO dokumentum definiálja, hogy a terméknevek félkövéren jelenjenek meg, a leírások egy adott betűtípussal, és a képek egy adott méretben. Végül az XSL-FO processzor létrehozza a PDF katalógust.
Az XSL-FO formázási objektumok hierarchikus struktúrában épülnek fel, lehetővé téve a részletes formázási beállításokat. Rugalmasan kezelhetőek a különböző oldaltörések, fejlécek, láblécek, és akár komplex táblázatok is.
Példák XSLT átalakításokra: HTML generálás
Az XSLT (XSL Transformations) segítségével XML dokumentumokat alakíthatunk át más formátumokba, például HTML-be. Ez a folyamat lehetővé teszi, hogy az XML adatokból dinamikusan generáljunk weboldalakat, anélkül, hogy közvetlenül a HTML kódot kellene szerkesztenünk.
A HTML generálás alapja az XSLT stylesheet, ami sablonokat tartalmaz. Ezek a sablonok meghatározzák, hogy az XML dokumentum egyes elemeit hogyan kell HTML elemekké alakítani. A <xsl:template match="...">
elem felelős a sablonok definiálásáért, ahol a match
attribútum azt adja meg, hogy melyik XML elemre vonatkozik a sablon.
Például, ha van egy XML dokumentumunk, ami termékeket tartalmaz, az XSLT stylesheet segítségével létrehozhatunk egy HTML táblázatot, ami felsorolja a termékeket, azok nevét, árát és leírását. Az XSLT stylesheetben ciklusokat használhatunk (<xsl:for-each>
), hogy végigiteráljunk az XML dokumentum elemein, és létrehozzuk a megfelelő HTML elemeket.
Egy egyszerű példa:
- Tegyük fel, hogy van egy
termekek.xml
fájlunk, ami termékeket tárol. - Létrehozunk egy
termekek.xsl
fájlt, ami tartalmazza az XSLT stylesheetet. - Az XSLT stylesheetben definiálunk egy sablont, ami a
<termek>
elemeket HTML táblázatsorokká alakítja. - Az XSLT processzor (pl. egy böngésző vagy egy parancssori eszköz) alkalmazza az XSLT stylesheetet a termekek.xml fájlra.
- Az eredmény egy HTML fájl lesz, ami egy táblázatot tartalmaz a termékek adataival.
Az XSLT lehetővé teszi, hogy feltételeket is beépítsünk az átalakításba (<xsl:if>
, <xsl:choose>
). Például, csak azokat a termékeket jelenítjük meg, amelyek ára meghalad egy bizonyos értéket.
Az XSLT tehát egy hatékony eszköz az XML adatokból dinamikusan generált HTML oldalak létrehozására, lehetővé téve a tartalom és a megjelenítés szétválasztását.
A <xsl:value-of select="...">
elem segítségével kinyerhetjük az XML elemek tartalmát, és beilleszthetjük a HTML kódba. A select
attribútum egy XPath kifejezést tartalmaz, ami meghatározza, hogy melyik XML elemet vagy attribútumot kell kinyerni.
Az XSLT stylesheetek modulárisak is lehetnek. Az <xsl:import>
vagy <xsl:include>
elemekkel más XSLT stylesheeteket is beilleszthetünk, így újra felhasználhatjuk a már megírt kódot.
A HTML generálás során ügyelni kell a helyes HTML szintaxisra, hogy a generált HTML kód érvényes legyen. Az XSLT processzorok általában ellenőrzik a generált HTML kódot, és hibát jeleznek, ha valami nem megfelelő.
Példák XSLT átalakításokra: XML adatok szűrése és rendezése

Az XSLT (XSL Transformations) az XSL egyik legfontosabb része, amely lehetővé teszi XML dokumentumok átalakítását más formátumokba, például HTML-be, szöveggé, vagy akár egy másik XML struktúrába. Az XSLT ereje abban rejlik, hogy képes szűrni és rendezni az XML adatokat a transzformáció során.
Szűrés segítségével kiválaszthatjuk az XML dokumentumból csak azokat az elemeket, amelyek megfelelnek bizonyos feltételeknek. Például, ha van egy termékeket tartalmazó XML fájlunk, szűrhetjük a termékeket ár szerint, és csak a 1000 Ft-nál drágább termékeket jeleníthetjük meg. Ez a szűrés az <xsl:if>
vagy az <xsl:for-each>
elem XPath kifejezésekkel kombinált használatával valósítható meg.
A rendezés lehetővé teszi az XML adatok sorba rendezését egy vagy több attribútum alapján. Tegyük fel, hogy a termékeket tartalmazó XML fájlunkban szeretnénk a termékeket áruk szerint növekvő sorrendbe rendezni. Ezt az <xsl:sort>
elemmel tehetjük meg. Az <xsl:sort>
elem a <xsl:for-each>
elemen belül helyezkedik el, és megadja, hogy melyik attribútum alapján történjen a rendezés.
Az XSLT szűrés és rendezés funkciói rendkívül hasznosak a komplex XML adatok kezelésekor, mivel lehetővé teszik a releváns információk kinyerését és a logikus megjelenítésüket.
Példa az XSLT kódra, ami a nev elemek szerint rendezi a termek elemeket:
<xsl:for-each select="termekek/termek">
<xsl:sort select="nev"/>
<p><xsl:value-of select="nev"/></p>
</xsl:for-each>
Ez a kód először kiválasztja a termekek gyökérelem alatti összes termek elemet, majd azokat a nev elemük szerinti ábécé sorrendbe rendezi. Végül kiírja a rendezett nev elemek értékét.
Az XSLT erőteljes eszköz az XML adatok manipulálásához, és a szűrés és rendezés csak két példa a sok lehetőség közül, amit kínál.
XSLT hibakeresés és optimalizálás
Az XSLT hibakeresése és optimalizálása kritikus fontosságú az XML alapú alkalmazások teljesítményének biztosításához. A hibakeresés során gyakran XML validátorokat és XSLT debuggereket használunk, amelyek segítenek azonosítani a szintaktikai és logikai hibákat a transzformációban.
Az optimalizálás a transzformáció sebességének növelésére és az erőforrás-felhasználás csökkentésére irányul. Ennek egyik módja a kulcsok használata a gyakran használt elemek gyors eléréséhez. A kulcsok indexeket hoznak létre, ami jelentősen felgyorsíthatja a keresési műveleteket.
Egy másik fontos szempont a sablonok hatékony használata. Kerüljük a felesleges rekurziót és a redundáns számításokat. A call-template utasítás használata a apply-templates helyett bizonyos esetekben hatékonyabb lehet, különösen, ha egy adott sablon csak egyszer kerül felhasználásra.
Az XSLT kód optimalizálása jelentősen javíthatja az alkalmazás válaszidejét és csökkentheti a szerver terhelését.
A teljesítmény optimalizálása érdekében érdemes figyelembe venni a következőket:
- Minimalizáljuk a válogatási műveleteket a xsl:sort használatával.
- Használjunk változókat a köztes eredmények tárolására, elkerülve a többszöri számítást.
- Figyeljünk az XPath kifejezésekre; a kevésbé hatékony kifejezések lassíthatják a transzformációt.
XSLT és más technológiák: AJAX, JavaScript
Az XSLT (Extensible Stylesheet Language Transformations) nem csupán egy statikus átalakító eszköz. A modern webes alkalmazásokban gyakran kombinálják más technológiákkal, mint például az AJAX (Asynchronous JavaScript and XML) és a JavaScript, hogy dinamikus és interaktív felhasználói felületeket hozzanak létre.
Az AJAX lehetővé teszi az adatok aszinkron letöltését a szerverről anélkül, hogy a teljes oldalt újra kellene tölteni. Az XSLT ebben a folyamatban kulcsszerepet játszhat. A szerver például XML formátumban küld adatokat, amelyeket a kliens oldali JavaScript XSLT segítségével alakít át HTML-re, majd dinamikusan beszúrja a weboldalba.
Az XSLT kliens oldali használata jelentősen javíthatja a felhasználói élményt, mivel a szerver terhelése csökken, és a válaszidő lerövidül.
A JavaScript emellett lehetővé teszi az XSLT átalakítás paramétereinek dinamikus módosítását. Például, egy felhasználói beavatkozás (pl. szűrés, rendezés) hatására a JavaScript módosíthatja az XSLT stíluslap paramétereit, így az átalakítás eredménye a felhasználó igényeihez igazodik. Ez különösen hasznos lehet komplex adatmegjelenítési feladatoknál.
Az alábbiakban egy példa található arra, hogyan használható az XSLT JavaScripttel a kliens oldalon:
- A szerver XML adatokat küld.
- A JavaScript letölti az XML adatokat és az XSLT stíluslapot.
- A JavaScript az XSLT stíluslap segítségével átalakítja az XML adatokat HTML-re.
- A JavaScript dinamikusan beszúrja a generált HTML kódot a weboldalba.
Bár az XSLT kliens oldali használata előnyös lehet, fontos figyelembe venni a böngésző kompatibilitást és a teljesítménybeli szempontokat. A komplex átalakítások a kliens oldalon erőforrásigényesek lehetnek, ezért a megfelelő optimalizálás elengedhetetlen.
XSLT jövője és alternatív megoldások
Az XSLT, bár továbbra is használatban van, a jövőben várhatóan a specializált feladatokra koncentrálódik. A modern webfejlesztés egyre inkább a kliens oldali technológiákra helyezi a hangsúlyt, ami azt jelenti, hogy az XML adatok JSON formátumra konvertálása és JavaScript keretrendszerekkel történő megjelenítése egyre elterjedtebbé válik.
Alternatív megoldások közé tartoznak a template engine-ek (mint például a Handlebars vagy a Pug), amelyek egyszerűbb szintaxist kínálnak az adatok megjelenítéséhez. Emellett, a JSON alapú transzformációs nyelvek is egyre népszerűbbek, mivel közvetlenül tudják kezelni a JSON adatokat anélkül, hogy szükség lenne az XML köztes lépésre.
Az XSLT jövője nem a teljes eltűnés, hanem a specializáció.
A serverless architektúrák elterjedése is hatással van az XSLT használatára. Ahol a szerver oldali logika minimálisra van szorítva, ott a kliens oldali megoldások kerülnek előtérbe. Mindazonáltal, az XSLT továbbra is értékes eszköz marad azokban az esetekben, amikor nagy teljesítményű, szerver oldali XML transzformációra van szükség, különösen a vállalati környezetben.