Oldal 5 |
Az XSL feldolgozók elemzik az XML forrást megfelel? sablon szabályt keresve. Amennyiben van ilyen, az adott sablonon belül
megadott instrukciók kerülnek alkalmazásra.
|
Oldal 6 |
Az XML dokumentum azon részeit, melyekre a sablonok alkalmazásra kerülnek, az elérési útvonalak segítségével lehet meghatározni.
A szükséges szintaxis leírása az XPath specifikációban található meg. Egyszer? esetekben ez nagymértékben hasonlít a fájlrendszereknél
használt elérési útvonalakra. ( XSLT stíluslap )
|
Oldal 7 |
A feldolgozás mindig azon sablonnal kezd?dik, mely a "/" elemhez illeszkedik (azaz match="/"). Ez megfelel a gy?kér elemnek
(azon elem, melynek egyetlen gyereke maga a dokumentum elem, a mi esetünkben "source"). Sok stíluslap azonban nem tartalmazza
k?zvetlenül ezt a sablont. Amennyiben ez a sablon nincs k?zvetlenül megadva, a k?zvetett sablon kerül felhasználásra (amelyik
egyedül az instrukciót tartalmazza). Ennek az instrukciónak a jelentése: dolgozd fel az aktuális elem minden gyerekét, a sz?veges elemeket
is beleértve. Hasonlítsd ?ssze az XSLT stíluslap és az XSLT stíluslap példákat. Ha egy adott elemhez létezik sablon, nincsen alapértelmezett feldolgozás ( XSLT stíluslap ). Amennyiben egy adott elem leszármazottait is szeretnéd feldolgozni, egyenként kell kérned azok sablonjainak feldolgozását
( XSLT stíluslap ).
|
Oldal 8 |
Egy sablon t?bbféle elérési utat is kombinálhat, az ilyen elérési utakat "|" jellel kell elválasztani ( XSLT stíluslap ). A "*" minden lehetséges találatot kiválaszt. Hasonlítsd ?ssze az XSLT stíluslap példát az XSLT stíluslap példával.
|
Oldal 9 |
Az "//" gyakran el?fordul elérési utakban. Amikor egy elérési út elején van használva, a jelentése: minden megadott típusú
elem kijel?lése az adott dokumentumban ( XSLT stíluslap ). Egyéb helyeken használva az elérési utakban: minden elem kijel?lése az elérési útvonal els? részében megadott elemen belül
( XSLT stíluslap ).
|
Oldal 10 |
A mode attribútum segítségével egy elem t?bbsz?r is feldolgozható, minden esetben másféle kimenetet eredményezve. Az XSLT stíluslap példában az egyik "mode" nem létezik.
|
Oldal 11 |
Elég gyakran fordul el?, hogy egyszerre t?bb sablon is alkalmazható az XML forrás egy-egy elemére. Ebben az esetben el kell
d?nteni, melyik lesz használva. Ez a prioritási sorrend a priority attribútummal határozható meg. Ha ez az attribútum nincs
meghatározva, a prioritás t?bbféle szabály szerint kerül megállapításra. Az XSLT stíluslap és az XSLT stíluslap példák sablonjai eltérnek prioritás szempontjából. Az XSLT stíluslap az alapértelmezett m?k?dést illusztrálja a priority attribútum hiánya esetén. A CCC sablonnak alacsonyabb a prioritása, mint
a CCC/CCC sablonnak, mivel az kevésbé specifikus. Hasonlítsd ?ssze az XSLT stíluslap és az XSLT stíluslap példákat. A CCC sablonnak alacsonyabb a prioritása, mint a CCC/CCC vagy a AAA/CCC/CCC sablonoknak, ez utóbbi kett?nek azonban
azonos a prioritása. Ilyen esetben egy XSLT feldolgozó jelzi a hibát; amennyiben ezt nem teszi meg, akkor az adott esetben
alkalmazható sablonok k?zül azt választja ki, mely legutolsóként fordul el? a stíluslapon belül. Az XSLT stíluslap példában a kevésbé specifikus "*" alacsonyabb prioritással bír, mint a CCC. A kiszámított prioritások értéke -0.5 és 0.5
k?z?tt lehet. Az XSLT specifikáció b?vebb részletekkel szolgál.
|
Oldal 15 |
A tengelyek (axis) nagyon fontos szerepet t?ltenek be az XSLT használatakor. B?vebb részletekért lásd az XSLT referenciát. Hasonlítsd ?ssze: child tengely ( XSLT stíluslap ), descendant tengely ( XSLT stíluslap ), parent tengely ( XSLT stíluslap ), ancestor tengely ( XSLT stíluslap ), following-sibling tengely ( XSLT stíluslap ), preceding-sibling tengely ( XSLT stíluslap ), following tengely ( XSLT stíluslap ), preceding tengely ( XSLT stíluslap ), attribute tengely( XSLT stíluslap ), namespace tengely ( XSLT stíluslap ), self tengely ( XSLT stíluslap ), descendant-or-self tengely ( XSLT stíluslap ), ancestor-or-self tengely ( XSLT stíluslap ).
|
Oldal 16 |
Ebben a példában minden tengely használva van.
|
Oldal 17 |
A child:: tengely használata nem szükséges elérési útvonalakon belül, mivel ez az alapértelmezett tengely. Az attribute::
tengely r?vidíthet? így: @. A // jel a /descendant-or-self:: r?vidítése, míg a . jel a self:: és a .. jel a parent::. r?videbb
formája
|
Oldal 22 |
Az xsl:element feldolgozás k?zben generál elemeket.
Az XSLT stíluslap ezt a lehet?séget alkalmazza, míg az
XSLT stíluslap ugyanazt a hatást éri el egy kissé más, nehézkesebb módon.
|
Oldal 23 |
Az xsl:attribute a feldolgozás k?zben generál elemeket. Attribútumot generál azon elemen belül, amelyikben el?fordul.
|
Oldal 24 |
A copy és a copy-of instrukciók az elemek másolására szolgálnak. A copy elem csak az aktuális elemet másolja, annak gyerekei
és attribútumai nélkül, míg a copy-of mindent másol.
|
Oldal 25 |
Az xsl:copy elemben szerepelhet az use-attribute-sets attribútum. Ilyen módon szabályozhatóak a másolt elem attribútumai.
Az XSLT stíluslap nem a várt módon m?k?dik (az use-attribute-sets attribútumot a name függvénnyel használva), mivel azok az attribútumokban
található kifejezések, melyek névszerinti XSLT objektumokra mutatnak, nem kerülnek feldolgozásra.
|
Oldal 32 |
Az XSLT stíluslap és az XSLT stíluslap az xsl:variable kül?nféle értékadási lehet?ségeit példázza, míg az XSLT stíluslap és az XSLT stíluslap az xsl:param értékadását.
|
Oldal 33 |
Egy stíluslap t?bb változót is tartalmazhat ugyanazon a néven. Az XSLT stíluslap bemutatja, hogyan lehet egy globálisan meghatározott változó értékét egy ugyanolyan nev? helyi változónak megadni. Az XSLT stíluslap egy helytelen megk?zelítést mutat be. A helyi változó értékének figyelembevétele az xsl:when elem határáig terjed. A sablon
t?bbi része csak a globális változó értékét veszi figyelembe.
|
Oldal 34 |
A sablonoknak t?rtén? paraméter átadás az xsl:with-param elem segítségével t?rténhet meg. Amennyiben a sablon tartalmaz egy
xsl:param elemet, melynek a neve megegyezik az xsl:with-param name attribútumával, ez megkapja azt az értéket. Az XSLT stíluslap egy tipikus példát mutat be. Amennyiben egy változót szeretnél átadni, ezt definiálnod kell az xsl:param elem segítségével.
Nézd meg az XSLT stíluslap példát, amely a helytelen módszert mutatja be.
|
Oldal 35 |
Egy változó az eredmény fa egy darabjának tárolására alkalmas. Egy ilyen eredmény fa darabon végrehajtható m?veletek a normál
elemkészleten végrehajtható m?veletek egy sz?kebb készlete. Egy m?velet akkor engedélyezett egy eredmény fa darabon, amennyiben
az a m?velet egy normál sztring értéken is végrehajtható lenne (ez a m?velet persze magában foglalhatja a sztring számmá vagy
boolean értékké konvertálását). Azaz t?bbek k?z?tt a /, //, és a [] operátorok használata nem engedélyezett egy eredmény fa
darabon. Amikor egy m?velet kerül végrehajtásra egy eredmény fa darabon, ez úgy t?rténik meg, mintha a m?velet a megfelel?
elemkészleten lenne végrehajtva. Hasonlítsd ?ssze az XSLT stíluslap és az XSLT stíluslap példákat.
|
Oldal 36 |
íme egy lényeges kül?nbség a változók értékeinek megadásánál.
|
Oldal 37 |
A number() függvény a kapott argumentumot számmá alakítja. Az XSLT stíluslap sztringek konverzióját mutatja be, az XSLT stíluslap pedig a boolean típusú true és false értékekét.
|
Oldal 38 |
Az ?sszeadás, kivonás és szorzás a máshol is megszokott szintaxissal t?rténik ( XSLT stíluslap ). Az osztás szintaxisa viszont meglehet?sen egyedi. Az osztásjel / az elérési útvonalakban van használva, ezért helyette
a div használható ( XSLT stíluslap ). A mod operátor egy maradékos osztás maradékával tér vissza. ( XSLT stíluslap )
|
Oldal 39 |
A sum() függvény ?sszesíti az ?sszes kijel?lt elemekben található számokat. Az XSLT stíluslap minden számot ?sszesít, az XSLT stíluslap csak a páratlanokat.
|
Oldal 40 |
A ceiling(), floor() és round() függvények lebeg?pontos számokat kovertálnak egész számokká az alább látható módon.
|
Oldal 41 |
A string() függvény az argumentumának értékét sztringgé konvertálja. Ez a függvény általában nincs használva stíluslapokban,
független attól, hogy máshol gyakran alkalmazzák. Az XSLT stíluslap számok sztringgé alakítását mutatja be. Figyeld meg a 0-val t?rtén? osztás eredményét.
|
Oldal 42 |
Annak tesztelése, hogy egy elem értéke szám-e.
|
Oldal 43 |
Az XSLT stíluslap esetében szerepl? sztringek a boolean() függvény argumentumai. Egy sztring akkor és csak akkor true, azaz igaz, ha a hossza
nem nulla. Az XSLT stíluslap esetében a sz?veget számmá konvertáljuk, majd ezután alkalmazzuk azt a boolean() függvényben. Az XSLT stíluslap a "0" értékét hasonlítja ?ssze számként és sztringként. Az XSLT stíluslap elem-készleteket használ a boolean() függvény argumentumaként.
|
Oldal 44 |
A not() függvény true értékkel tér vissza, ha az argumentum hamis, és false értékkel egyéb esetben.
|
Oldal 45 |
A true() és false() függvények hasznosak, amikor bizonyos feltételeket kell tesztelni a programozás során.
|
Oldal 46 |
A lang() function true vagy false értékkel tér vissza, attól függ?en, hogy az adott elem esetében megadott xml:lang attribútum
értéke megegyezik, vagy egy al-nyelve a függvény attribútumaként megadott nyelvnek. Az adott elem nyelvét az adott k?rnyezetben
megadott xml:lang attribútum határozza meg, vagy amennyiben az adott k?rnyezetben ez nincs meghatározva, akkor a legk?zelebbi
?s xml:lang attribútumának értéke kerül megvizsgálásra, amennyiben van ilyen. Amennyiben egyáltalán nincs ilyen attribútum,
a függvény false értékkel tér vissza. Amennyiben van ilyen attribútum, a lang() true értékkel tér vissza, ha az argumentum
értéke megyegyezik az attribútum értékével, vagy amennyiben valamiféle el?tagjával - például az adott argumentum el?tag nélküli
értékével, vagy annak kis-nagybet?s változatával.
|
Oldal 47 |
A string() függvény az argumentumának értékét sztringgé konvertálja. Ez a függvény általában nincs használva stíluslapokban,
független attól, hogy máshol gyakran alkalmazzák. Az XSLT stíluslap számok sztringgé alakítását mutatja be. Figyeld meg a 0-val t?rtén? osztás eredményét.
|
Oldal 48 |
A concat() függvény az argumentumok ?sszef?z?tt értékével tér vissza.
|
Oldal 49 |
A starts-with() függvény visszatérési értéke true, amennyiben az els? argumentum sztring a második argumentum sztringgel kezd?dik,
egyébként false értékkel tér vissza. A contains() függvény értéke true, ha az els? sztring tartalmazza a másodikat, egyébként
az értéke false.
|
Oldal 50 |
A substring-before() függvény az els? argumentumként megadott sztring azon rész-sztringjével tér vissza, mely megel?zi, míg
a substring-after() függvény azon rész-sztringjével tér vissza, mely k?veti a második argumentumként megadott sztring els?
el?fordulását az els? argumentum sztringen belül. A substring() függvény az els? sztring azon rész-sztringjével tér vissza,
mely a második argumentumként megadott pozíciónál kezd?dik, a hossza pedig a harmadikként megadott argumentum. Ha a harmadik
argumentum nincs megadva, akkor a második argumentumként megadott pozíciótól kezdve a sztring végéig tart a visszakapott rész-sztring.
A számolás 1-el kezd?dik. ( XSLT stíluslap ). Az XSLT stíluslap azokat a helyzeteket szimulálja, ahol az argumentum a tartományon kívül esik, vagy értéke nem egész szám. A visszakapott
rész-sztring azokat a karaktereket tartalmazza, melyek esetén a karakter pozíciója nagyobb vagy egyenl? a második argumentummal,
és amennyiben a harmadik argumentum meghatározott, akkor kisebb mint a második és harmadik argumentum ?sszege.
|
Oldal 51 |
A string-length() függvény a sztring karaktereinek számával tér vissza. A normalize-space() függvény az argumentumként megadott
sztring normalizált változatával tér vissza, azaz levágja az elején és a végén található felesleges szók?z?ket valamint az
egynél t?bb szók?zt lecseréli egy szók?zre.
|
Oldal 52 |
A translate() függvény az els? argumentumként megadott sztringgel tér vissza, melyben a második argumentumként megadott sztring
karakterei a harmadik argumentumként megadott sztring megfelel? pozíciójú karaktereivel vannak lecserélve. Ha egy karakter
egynél t?bbsz?r fordul el? a második argumentum sztringben, akkor az els? pozíció alapján t?rténik a megfelel? csere-karakter
meghatározása. Ha a harmadik argumentum sztring hosszabb, mint a második argumentum sztring, akkor a felesleges karakterek
nem kerülnek feldolgozásra.
|
Oldal 53 |
A position() függvény egy számmal tér vissza, amely egyenl? az adott k?rnyezet pozíciójával míg a last() függvény által visszaadott
szám az adott kifejezés által meghatározott k?rnyezet méretével egyenl?. Az XSLT stíluslap ezen függvények használatát mutatja be t?bbféle k?rnyezetben. Az XSLT stíluslap a rendezett és rendezetlen xsl:for-each elemeket hasonlítja ?ssze.
|
Oldal 54 |
A count() függvény az argumentumban megadott elemkészlet elemeinek számával tér vissza.
|
Oldal 55 |
Az id() függvény az elemeket azok egyedi azonosítója (ID) alapján választja ki. Az XSLT stíluslap ennek egyszer? felhasználását mutatja be. Figyelmesen tanulmányozd át az XSLT stíluslap példát. A title elem tartalma nem sz?gletes zárójelben "[]" kerül megjelenítésre, mivel a DTD-ben annak id attribútuma CDATA-ként
van meghatározva, nem pedig ID-ként. T?bb id is el?állítható egyszerre ( XSLT stíluslap ).
|
Oldal 56 |
Egy példa az id() függvény használatára.
|
Oldal 57 |
A name(), local-name(), és a namespace-uri() függvények segítségével gy?jthet?k információk az elemekr?l, attribútumokról
és névterekr?l.
|
Oldal 58 |
Az xsl:output elem a stíluslap fejleszt?k számára lehet?vé teszi, hogy meghatározzák, milyen formában szeretnék az eredmény
fát megjeleníteni a kimeneten. Ha egy XSLT feldolgozó az eredmény fát jeleníti meg, ezt az xsl:output elemben meghatározott
módon kell megtennie; habár ez nem k?vetelmény. Az xsl:output elem csakis fels?-szint? elemként jelenhet meg. Az XSLT stíluslap kimenete html, az XSLT stíluslap példáé pedig xml. Figyeld meg, hogy az üres tagok milyen formában kerülnek a kimenetre.
|
Oldal 59 |
Az xml:output elem hiánya esetén az a alapértelmezett kimeneti metódus az xml
( XSLT stíluslap ), de amennyiben a kimenet dokumentum elemének a neve html (ilyen formában, kis-nagybet? érzékenység figyelembevételével),
akkor a html metódus van használva ( XSLT stíluslap ).
|
Oldal 60 |
A html kimeneti metódus nem állít el? lezáró-tagot a HTML specifikációban megadott elemek részére. A html kimeneti metódus
nem hajt végre eszképelést a script és a style elemeken belül (tekintsd meg a k?zépen alul található ablak forrását a b?ngész?dben).
Ezt hasonlítsd ?ssze az XSLT stíluslap példával, b?vebb részletekért pedig lásd az XSLT specifikációt.
|
Oldal 61 |
Az encoding attribútum a használni kívánt kódolást határozza meg. A html kimeneti metódus k?zvetlen a HEAD elem után egy megfelel?
META elemet hoz létre, mely tartalmazza a használt kódolást. Az XSLT stíluslap példa kimenete UTF-8, az XSLT stíluslap példáé UTF-16, és az XSLT stíluslap példáé pedig Cp1250. Az XSLT stíluslap példánál nézd meg a b?ngész?ben a k?zépen alul látható ablak forrását. Az xml forrás olyan karaktereket tartalmaz, melyek
nem részei a meghatározott karakterkészletnek, ezért azok eszképelésre kerülnek.
|
Oldal 62 |
A text kimeneti metódus az eredmény fa minden elemének sz?veges tartalmát jeleníti meg a dokumentum sorrend alapján bármiféle
eszképelés nélkül. Nézd meg a forrást a b?ngész?n belül a kimenet megtekintéséhez.
|