XSLT ( XSL Transformations)
Tartalomjegyzék: 1. Az XSLT helye ....................................................................................................................... 3 2. Az XSLT feldolgozás ............................................................................................................. 3 3. Az XSLT stíluslapok felépítése .............................................................................................. 4 3.1. Sablonok.......................................................................................................................... 4 3.2. Minták és kifejezések ...................................................................................................... 4 3.3. Az XSLT stíluslap hozzáadása XML dokumentumhoz................................................... 5 4. Az XSLT stíluslapok utasításai............................................................................................... 5 4.1. Sablon alkalmazása ......................................................................................................... 5 4.2. Elemek és attribútumok értékének lekérése .................................................................... 5 4.3. Ciklus XSLT-ben ............................................................................................................. 6 4.4. Elágazások XSLT-ben ..................................................................................................... 6 4.5. Rendezés XSLT-ben ........................................................................................................ 7 4.6. Egyéb hasznos XSLT elemek.......................................................................................... 7 4.6.1. Az xsl:output elem.................................................................................................... 7 4.6.2. Az xsl:attribute elem................................................................................................. 8 4.6.3. Az xsl:call-template elem ......................................................................................... 8 4.6.4. Az xsl:comment elem ............................................................................................... 8 4.6.5. Az xsl:copy-of elem ................................................................................................. 8 4.6.6. Az xsl:key elem ........................................................................................................ 9 4.6.7. Az xsl:variable elem ................................................................................................. 9 5. XSLT-ben használható operátorok és függvények ................................................................. 9 6. Az XPath-ról röviden ........................................................................................................... 11 7. Egy példa XSLT-re ............................................................................................................... 11 8. Felhasznált irodalom ............................................................................................................ 12
2
1. Az XSLT helye Az XSLT az XSL Transformations rövidítése. Ezek alapján viszont rögtön azt kérdezhetjük, hogy mi az az XSL? Az XSL az eXtensible Style Language rövidítése. Az XSL tehát egy formázó nyelv, amely XML dokumentumok formázására szolgál. Az XML dokumentumok formázásához (formázott megjelenítéséhez) kétféle formázási technológia használható, az egyik a CSS, a másik az előbb említett XSL. Ez az elgondolás már az XML kialakulásától kezdve létezik, hiszen az XML dokumentumok a tartalom leírását, nem a megjelenítést célozták meg. Míg a CSS elsősorban weblapok formázására szolgál (bár XML dokumentumokhoz is alkalmazható), addig az XSL kifejezetten az XML dokumentumok formázására. Azonban ez a két technológia nem nevezhető egymás vetélytársának, a gyakorlatban inkább egymást kiegészítve szokták alkalmazni őket. Az XSL nyelvnek két része létezik, egyik az XSL-FO (XSL Formatting Object), amely lehetővé teszi, hogy az XML dokumentumokat szépen formázott PDF dokumentumokká alakítsák. A másik az XSLT, amely segítségével lehetővé válik az XML tartalmak feldolgozása, valamilyen szempont szerinti szűrése, rendezése, átalakítása. Az XSL mindkét változata XML alapú nyelvnek tekinthető, lényegében ezek is XML dokumentumok, az XML dokumentumok szabályai érvényesek ezekre is. Azért is fontos a CSS és XSLT technológia ismerete, mert egy-egy feladat megoldása során tudnunk kell, hogy mit lehet az egyik, mit a másik segítségével megvalósítani. Nézzünk egy pár olyan dolgot, amit az XSLT tud, a CSS nem: • A dokumentum részeinek újrahasznosítása • Feltételvizsgálat, a dokumentum egyes részeinek kiválasztása • Matematikai műveletek elvégzése, változóhasználat • Dinamikus szövegelőállítás A gyakorlatban a két technológiát úgy szokták alkalmazni, hogy az XML dokumentumot XSLT segítségével HTML oldallá alakítják, majd ezt a kimenetet formázzák CSS segítségével. Az XSLT stíluslapok kiterjesztése .xsl, az XSL-FO-é pedig .fo.
2. Az XSLT feldolgozás Hogy megértsük az XSLT működését, fontos hogy bepillantást nyerjünk a háttérben működő folyamtokba. A feldolgozás első lépése az XML feldolgozás (XML processing), amelynek során az XML dokumentumban szereplő összes elemből és attribútumból egy fastruktúra épül fel. Az elemek és attribútumok a faszerkezet egy-egy csomópontját fogják alkotni. Miután az XML feldolgozó (XML processor) előállította ezt a faszerkezetet, az XSL feldolgozó végigmegy ezen a szerkezeten, és az egyes csomópontokra végrehajtja a stílusban található szabályokat. Az XSL feldolgozó mintaillesztéssel végzi a feldolgozást, amely során kikeresi, hogy az egyes csomópontokra a stíluslapban szereplő minták (pattern) alapján milyen feldolgozást kell alkalmazni. A mintaillesztés során használt technológia az XPath. Az XPath nem XML alapú nyelv. Az XPath lényegében arra szolgál, hogy az XML dokumentumok egyes részeit megcímezzük (kijelöljük) vele. Az XPath kifejezések segítségével az XML fastruktúrában egy-egy útvonalat adhatunk meg. Ezáltal egyetlen csomópontot vagy csomópontok halmazát tudunk azonosítani.
3
Az XPath-tal terjedelmessége miatt csak annyit foglalkozunk, amennyi az XSLT megértéséhez szükséges.
3. Az XSLT stíluslapok felépítése Az XSLT stíluslapok tartalmazzák az illesztendő mintákat és az illeszkedés esetén a feldolgozás lépéseit. Ezeket összefoglalva sablonnak (template) nevezzük. Egy XSLT stíluslap több sablont is tartalmazhat. Tehát egy XSLT stíluslap háromféle elemből áll: • Sablonok (template) • Minták (patterns) • Kifejezések Az XSLT dokumentumok első sorában az XML deklaráció szerepel. Például: Előbbiben megadjuk a használt XML verziót és a dokumentumban alkalmazott karakterkódolást. Ezt követi az xsl:stylesheet elem, amely az XSLT dokumentumok gyökéreleme (az xsl:stylesheet helyett használható még az xsl:transform elnevezés is). Ebben az elemben szerepel az úgynevezett XSLT névtér deklaráció. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> Az előbbi példa a W3C ajánlása az XSLT dokumentumok megfelelő deklarációjára. Ha az előbbi példában szereplő névteret használjuk, akkor ki kell rakni az XSLT verziót leíró version attribútumot is. A version attribútum értéke 1.0 vagy 2.0 lehet. A két verzió között az a különbség, hogy a 2.0 sokkal több lehetőséget kínál, például az alkalmazható függvények terén.
3.1. Sablonok A sablon olyan XSLT eszköz, amely mintailleszkedési szabályok alapján előírja, hogy egy csomópontra (vagy csomópontok halmazára) milyen formázást kell végrehajtani. A gyakorlati megvalósításban általában egy stíluslap több sablont is tartalmaz. Sablont az xsl:template elem segítségével tudunk létrehozni. Ehhez az elemhez tartozik egy match nevű attribútum is, amelyben az illeszkedő mintát kell megadni. A match értéke tulajdonképpen egy XPath kifejezés. Ez alapján dől el, hogy a sablonban leírt formázást mely csomópontokra kell végrehajtani. A teljes dokumentumfát (vagyis a gyökércsomópontot) a következőképpen tudjuk kijelölni: <xsl:template match=”/”> … Ezzel megegyező hatást érhetünk el, ha a / jel helyére az XML dokumentum gyökérelemét írjuk. Ezt a sablont gyökérsablonnak (root template) szokták nevezni, a rendszer ezt alkalmazza először a dokumentumra. Egy stíluslap végigolvasásakor az XSL feldolgozó a match attribútumok alapján eldönti, hogy melyik sablont melyik elemre kell alkalmazni.
3.2. Minták és kifejezések Az XSLT sablonokban a minták és a kifejezések feladata, hogy meghatározzák az XML dokumentumfa azon részét, amelyre az adott formázást végre kell hajtani. A mintákat viszonylag egyszerű felírni, csak tudni kell az XML dokumentum szerkezetét. Például ha szeretnénk kiválasztani az autókereskedés autóinak árát, akkor a match attribútumba a shop/car/properties/cost mintát kell megadni.
4
A kifejezések is a dokumentum egyes részeinek kijelölésére szolgálnak, de emellett még alkalmasak bizonyos műveletek elvégzésére is. Ilyen művelet lehet például egy matematikai művelet vagy valamilyen szövegfeldolgozás. Például ha szeretnénk meghatározni az autókereskedés autóinak összértéket, akkor azt így tehetjük meg: <xsl:value-of select="sum(shop/car/properties/cost)" /> Ebben a példában a sum() függvénynek egy csomóponthalmazt adtunk meg, amelyet összegzett.
3.3. Az XSLT stíluslap hozzáadása XML dokumentumhoz Amennyiben szeretnénk látni, hogy az elkészített XSLT stíluslapunk hatására hogyan jelenik meg az XML fájlunk, azt az XML fájlhoz kell csatolni. A csatolást vagy hozzárendelést a következő sorral tehetjük meg, amit az XML dokumentum elején, az XML deklaráció és a gyökérelem között kell elhelyezni: Ebből a type jelzi, hogy milyen stíluslapot kívánunk csatolni az XML-hez, a href attribútumban pedig leírjuk, hogy hol helyezkedik el az XSLT stíluslapunk. Miután ezt megtettük, az XML fájlt egy böngészőben megnyitva láthatjuk azt az eredményt, amit a stíluslap segítségével elértünk.
4. Az XSLT stíluslapok utasításai 4.1. Sablon alkalmazása A sablonokat nem elég megírni, azokat alkalmazni is kell. Sablon alkalmazását az xsl:applytemplates elemmel tehetjük meg. Ennek van egy select attribútuma, itt kell megadni, hogy a sablont mely elemekre szeretnénk alkalmazni. A select attribútum értéke egy minta vagy kifejezés. Az xsl:apply-templates használatát a gyökérelem esetén elkerülhetjük, ilyenkor ezt nem kötelező kirakni, hiszen a gyökérsablon mindig automatikusan végrehajtódik. Amennyiben szeretnénk alkalmazni az XSLT dokumentumban szereplő összes sablont, akkor azt a következőképpen tehetjük meg: <xsl:template match="/"> <xsl:apply-templates/> Ebben az esetben a feldolgozó automatikusan végrehajtja a gyökérelemre illeszkedő sablont, majd érzékeli, hogy az apply-templates select attribútuma üres, ami azt jelenti, hogy hajtsa végre az adott elem (jelen esetben a gyökérelem) minden gyermekelemére az illeszkedő sablonokat.
4.2. Elemek és attribútumok értékének lekérése Az XSLT leglényegesebb utasítása az xsl:value-of, amivel egy elem vagy attribútum értékét tudjuk lekérni. Van egy kötelező select attribútuma, ebben kell megadni, hogy mely elem vagy attribútum értékére vagyunk kíváncsiak. Itt állhat egy minta vagy valamilyen kifejezés. A select értékeként a pontot fogjuk talán legtöbbször használni, ez jelenti az aktuális csomópont értékét: <xsl:template match="/"> <xsl:value-of select="."/> Az attribútumok értékére a @ jel után az attribútum nevét írva hivatkozhatunk: 5
<xsl:template match="/"> <xsl:value-of select="//car/@id"/> Ezzel kijelöltük a gyökérelem car gyermekelemének (ezt jelöli a //car) id nevű attribútumát.
4.3. Ciklus XSLT-ben Ciklus megvalósítására XSLT-ben az xsl:for-each elem szolgál. A ciklusok segítségével lehetőség van arra, hogy bizonyos csomópontokon egyenként hajtsunk végre műveleteket. Az elemnek van egy select attribútuma, ami egy XPath kifejezés. A for-each akkor hasznos, ha egy XML dokumentum tartalmát akarunk táblázatos formában megjeleníteni. Példa: <xsl:for-each select="shop/car"> <xsl:value-of select="make"/> <xsl:value-of select="model"/>
Az előbbi példában végigmegyünk minden shop/car elemen, és kiírjuk az autó márkáját (make) és típusát (model).
4.4. Elágazások XSLT-ben Az XSLT-ben lehetőség van arra, hogy feltételes elágazásokat valósítsunk meg. Erre szolgál az xsl:if elem, aminek van egy test attribútuma, ide kell írni a feltételes kifejezést. Amennyiben ez a feltételes kifejezés igaz, csak akkor hajtódnak végre az xsl:if elemen belüli utasítások. Az xsl:if elemnek nincs hamis ága, ezért a kifejezés nem teljesülése esetén nincs lehetőség utasítás végrehajtására. Példa: <xsl:for-each select="shop/car/make"> <xsl:if test=". = 'Ford'"><xsl:value-of select="../model"/> Az előbbi példában kizárólag a Ford márkájú autók típusait írjuk ki. Abban az esetben, ha több feltételünk is van, használhatjuk az xsl:choose elemet. Ez az elem szolgál a többirányú elágazás megvalósítására, működését tekintve megegyezik a programozási nyelvekben használt switch utasítással. Általános alakja: <xsl:choose> <xsl:when test="kifejezés1">utasítás1 <xsl:when test="kifejezés2">utasítás2 … <xsl:otherwise>utasítás minden más esetben Az xsl:when ágakban a test attribútumba kell írni a feltételes kifejezést, amelynek teljesülése esetén hajtódik végre az utasítás. Az xsl:otherwise akkor hajtódik végre, ha egyik xsl:when ág sem teljesül. Az xsl:otherwise használata nem kötelező. A későbbiek során még foglalkozunk a kifejezésekben használható operátorokkal. Példa: <xsl:for-each select="shop/car"> <xsl:choose> <xsl:when test="properties/power < 80">gyenge – <xsl:value-of select="make"/><xsl:value-of select="model"/> <xsl:when test="properties/power > 80">erős – <xsl:value-of select="make"/><xsl:value-of
6
select="model"/> <xsl:otherwise>80 lóerős – <xsl:value-of select="make"/> <xsl:value-of select="model"/>
Az előző példában azoknál az autóknál, amelyek 80 lóerőnél kisebb teljesítményűek, kiírjuk, hogy gyenge és az autó nevét, 80 lóerőnél nagyobb teljesítményűnél kiírjuk, hogy erős és az autó nevét, minden egyéb esetben (ha az autó 80 lóerős), akkor kiírjuk, hogy 80 lóerős és az autót.
4.5. Rendezés XSLT-ben XSLT-ben a csomópontok rendezésére az xsl:sort elem szolgál. Ez az elem mindig egy xsl:for-each vagy xsl:apply-templates elemen belül helyezkedik el. A rendezési szempontok megadására a select, az order, a data-type és a case-order attribútumok szolgálnak. • select : egy XPath kifejezést kell megadni, a kifejezés által szolgáltatott csomóponthalmazt fogja rendezni • order : értéke ascending (növekvő) vagy descending (csökkenő) lehet, az ascending az alapértelmezett • data-type : értéke lehet text vagy number, a rendezendő adatok típusát jelenti • case-order : azt határozza meg, hogy szöveg rendezésénél a nagy vagy a kisbetűk élvezzenek elsőbbséget, értékei: upper-first, lower-first Példa: <xsl:for-each select="shop/car"> <xsl:sort select="properties/cost" data-type="number"/> <xsl:value-of select="properties/cost"/> <xsl:value-of select="make"/> <xsl:value-of select="model"/>
Az előbbi példában a car elemeket ár (properties/cost) szerint rendezzük.
4.6. Egyéb hasznos XSLT elemek Az XSLT-ben még számos alkalmazható elem van, ezek között vannak még olyanok, amelyek némely esetben rendkívül hasznosak lehetnek. 4.6.1. Az xsl:output elem Ennek az elemnek a segítségével állíthatjuk be az XSLT segítségével előállított eredménydokumentum pár paraméterét. Ilyenek például a kimeneti fájl formátuma, a verziója, kódolása, stb. Az xsl:output elem úgynevezett elsőszintű elem (top level element), ami azt jelenti, hogy közvetlenül az xsl stíluslap (xsl:stylesheet) deklarációban kell elhelyezni. Az xsl:output elem legfontosabb attribútumai: • method : a kimeneti fájl formátuma, értékei: xml, html vagy text • version : a kimeneti fájl verziója • encoding : a kimeneti fájl karakterkódolása Példa: <xsl:output method="html" version="4.0" encoding="UTF-8"/>
7
4.6.2. Az xsl:attribute elem Némely esetben szükség lehet arra, hogy a kimenetként előállított fájlban egy elemhez attribútumot hozzunk létre. Például ha egy html dokumentumot hozunk létre, akkor az img elemnek így adhatjuk meg az src, width, height attribútum értékét. Az xsl:attribute elemnek van egy name attribútuma, amely az xsl:attribute elemek között szereplő értéket fogja felvenni. Példa:
<xsl:attribute name="src"><xsl:value-of select="image"/> <xsl:attribute name="width"><xsl:value-of select="@width"/> <xsl:attribute name="height"><xsl:value-of select="@height"/> 4.6.3. Az xsl:call-template elem Az xsl:call-template elem segítségével lehetőség van arra, hogy egy sablont (template) meghívjunk. Ebben az esetben a sablonnál használni kell a name attribútumot, mert ezzel a névvel tudnuk hivatkozni rá. Példa <xsl:template match="/"> <xsl:for-each select="shop/car"> <xsl:call-template name="kocsi"/> <xsl:template name="kocsi"> <xsl:value-of select="properties/cost"/> <xsl:value-of select="make"/><xsl:value-of select="model"/>
4.6.4. Az xsl:comment elem Amennyiben szeretnénk megjegyzést elhelyezni az eredményben, azt ezzel az elemmel tehetjük meg. Példa: <xsl:comment> ez komment 4.6.5. Az xsl:copy-of elem Az xsl:copy-of elem működése hasonló az xsl:value-of elemhez. Ennek is van egy select attribútuma. Amennyiben a select-ben megadott kifejezés szöveg, szám vagy logikai érték, az eredmény megegyezik az xsl:value-of-val. Akkor szokták alkalmazni, ha az érték egy csomóponthalmaz vagy egy részfa. Példa: <xsl:variable name="header">
Make | Model |
<xsl:copy-of select="$header"/> <xsl:for-each select="//car"> <xsl:value-of select="make"/> | <xsl:value-of select="model"/> | 8
Az előbbi példában a táblázat fejlécét a header változóban tároltuk, amit a megfelelő helyen írattunk ki. Ha ugyanitt xsl:value-of-ot használnánk, az nem adná vissza a tr és th elemeket, csak azok szöveges tartalmát. 4.6.6. Az xsl:key elem Ezen elem segítségével létrehozhatunk egy kulcsot, amely segítségével a dokumentum csomópontjait azonosíthatjuk. Az xsl:key a következő attribútumokat tartalmazza: • name : ez a kulcs neve, ezzel hivatkozhatunk rá a későbbiekben • match : ez egy minta, itt adjuk meg, hogy mely csomópontokra alkalmazzuk a kulcsot • use : az az érték, amely alapján majd keresünk a csomópontok között Az xsl:key elem hasonlóan az xsl:output elemhez szintén top level elem, elhelyezése a dokumentumban ennek megfelelően történik. Az xsl:key létrehozása után erre a kulcsra a key(’kulcsnév’,’érték’) segítségével lehet hivatkozni, ahol az értéknél a keresett értéket kell megadni. Nézzünk egy példát: <xsl:key name="marka" match="//car" use="make"/> <xsl:for-each select="key('marka','Ford')"> <xsl:value-of select="make"/><xsl:text> <xsl:value-of select="model"/> Az előbbi példában a for-each-nek csak azok a car csomópontok adódnak át, amelyek make elemének értéke Ford. 4.6.7. Az xsl:variable elem Lehetőség van az XSLT-ben változók használatára is. Amennyiben a változót elsőszinten deklaráltuk (top level), akkor globális lesz, ha valamelyik sablonban, akkor lokális. A változónak a name attribútumban kell megadni a nevét, és a select attribútumban kell megadni az értékét. Egy létrehozott változóra a későbbiek során a $változónév segítségével hivatkozhatunk, azokat bármilyen kifejezésben használhatjuk. Példa: <xsl:variable name="maxcubic" select="1500"/> <xsl:for-each select="//car"> <xsl:if test="properties/cubic < $maxcubic"> <xsl:value-of select="make"/><xsl:value-of select="model"/>
Az előbbi példában csak azokat az autókat listázzuk ki, melyek lökettérfogata 1500-tól kisebb.
5. XSLT-ben használható operátorok és függvények Az előzőekben már láttuk, hogy XSLT-ben lehetőség van feltételes elágazások létrehozására az xsl:if és az xsl:choose-ban az xsl:when elemekkel. Ezeknek a test attribútumába egy
9
logikai kifejezést adhatunk meg, ami igaz vagy hamis értéket fog adni. Most azokat az operátorokat és függvényeket nézzük át, amelyeket ezekben a kifejezésekben használhatunk. Operátorok: • = - egyenlőségvizsgálat • != - nemegyenlőség vizsgálata • > - a > operátor (utánaírva az = jelet kapjuk a >= oprátort) • < - a < operátor (utánaírva az = jelet kapjuk a <= oprátort) • and - ÉS kapcsolat a feltételek között • or - VAGY kapcsolat a feltételek között • * - a szorzás operátora • + , - - számok összeadása, kivonása • div - egész osztás operátora • mod – egész osztásnál a maradék meghatározása Példa: Írjuk ki azon autók típusát, futott kilométerét és árát, amelyeknél a futott kilométerek száma kisebb 80000-től és az áruk is kevesebb 2000000 forinttól. <xsl:for-each select="//car"> <xsl:if test="properties/kmage < 80000 and properties/cost < 2000000"> <xsl:value-of select="make"/> - <xsl:value-of select="model"/> Km: <xsl:value-of select="properties/kmage"/> Ár: <xsl:value-of select="properties/cost"/>
Rengeteg olyan függvény van, amit használhatunk XSLT-ben. Ezeket csoportokra lehet osztani, vannak numerikus függvények, sztringekre vonatkozó függvények, logikai függvények, dátum és idő függvények, stb. Mi most csak a legfontosabbakat nézzük meg. Függvények: • abs(szam) - abszolútérték meghatározása • ceiling(szam) - felfelé kerekítés • floor(szam) - lefelé kerekítés • round(szam) - kerekítés • compare(sztring1,sztring2) - összehasonlítás, -1-et ad vissza, ha a sztring1 kisebb mint a sztring2, 0-t, ha megegyeznek, és 1-et egyébként • concat(sztring1,sztring2,…) - sztringeknél az összefűzést valósítja meg • string-join((sztring1,sztring2,…)[,szep]) - a megadott sztringeket összefűzi a szeparátorral elválasztva • substring(sztring, start[,len]) - résszsztringet ad vissza • string-length(sztring) - a sztring hossza • upper-case(sztring) - nagybetűssé alakítás • lower-case(sztrig) - kisbetűssé alakítás • contains(sztring,keresett) - igazzal tér vissza, ha a sztring tartalmazza a keresett sztringet • replace(sztring,mit,mire) - a sztringben kicseréli a mit-et mire • count(csomópontok) - visszatér a csomópontok számával • sum(csomópontok) - visszatér a csomópontokban lévő értékek összegével • avg(csomópontok) - visszatér a csomópontokban lévő értékek átlagával 10
• •
position() - megadja az aktuális csomópont indexét last() - megadja az aktuális (éppen feldolgozás alatt álló) csomóponthalmaz elemeinek számát
Példa: Az autók átlagára: <xsl:value-of select="avg(//car/properties/cost)"/>
6. Az XPath-ról röviden Az XML dokumentumok részeit az XPath segítségével tudjuk megcímezni. Ez jelenthet egyetlen csomópontot vagy csomópontok egy halmazát. Az XPath nem XML alapú technológia. Rendkívül tömör nyelv, számos lehetőséggel rendelkezik, mi most csak a legfontosabbakat nézzük meg, melyek az XSLT stíluslapok írásához szükségesek. Lehetőségek: • csomópontnév : csomópontra való hivatkozást jelent • / : a gyökérelem kiválasztása • // : az adott csomópont összes gyermekének kiválasztása • . : az aktuális csomópontra való hivatkozás • .. : a szülő csomópontra való hivatkozás • @attribútum : az adott attribútum A csomópontokra használt leggyakoribb függvények: • position() : a csomópont pozícióját határozza meg • last() : egy csomóponthalmaz utolsó elemét határozza meg • count() : a csomóponthalmaz csomópontjainak száma Nézzünk előbbiek alkalmazására néhány példát: • //car - az aktuális csomópont összes car csomópontja • //car/make - az aktuális csomópont minden car csomópontjának make eleme • //@id - az aktuális csomópont összes id attribútuma • //car/@id - az aktuális csomópont minden car csomópontjának id attribútuma • shop/car[2] - a második car csomópont kiválasztása • //car[properties/cost < 1000000] - azok az autók, amelyek ára egy millió forintnál kevesebb • //car[salesman/field[@name='mobile']] - azok az autók, ahol az autó eladójának van mobiltelefonja • shop/car[last()] - az utolsó car elemet adja vissza • shop/car[position()<4] - az első három car elemet adja vissza • count(shop/car) - visszadja a car elemek számát. Ezt szokták alkalmazni akkor, ha az találatok számát akarják megjeleníteni, pl: <xsl:value-of select="count(shop/car)"/>
7. Egy példa XSLT-re Az XSLT-nek egy lehetséges felhasználási módja például egy online autókereskedés megvalósítása során kerülhet elő. Képzeljünk egy autókereskedést, amelynél a felhasználók feltölthetik az eladó autóikat adatait és fényképét egy adatbázisba. Ebből az adatbázisből az egyes lekérdezések eredményét XML-ben állíthatjuk elő. Ennek az eredmény XML fájlnak a 11
formázásához használjunk XSLT-t, hiszen az XSLT stíluslapot megírva és alkalmazva az XML-re, egy formázott „kimenetet” tudunk előállítani. Mivel az eredmény XML fájl szerkezete az egyes lekérdezéseknél nem fog változni, az XSLT-t minden esetben használhatjuk. Egy XSLT-vel formázott lehetséges megvalósítást láthatunk a következő oldalon: http://talicska.ektf.hu/~andro/xslt/kereskedes.xml Az XSLT stíluslap: http://talicska.ektf.hu/~andro/xslt/kereskedes.xsl
8. Felhasznált irodalom 1. XSL Transformations – W3C - http://www.w3.org/TR/xslt 2. XSLT Tutorial - http://www.w3schools.com/xsl/
12