220 likes | 340 Views
7. XSL. Extensible Stylesheet Language – jezik za definiranje stila XML dokumenta. Što je XSL?. XSL = Extensible Stylesheet Language (proširivi jezik stilskog uzorka) XSL definira kako će se neki XML dokument prikazati u pregledniku i kakve elemente posjeduje Nastao je 1999. kao W3C preporuka
E N D
7. XSL Extensible Stylesheet Language – jezik za definiranje stila XML dokumenta
Što je XSL? XSL = Extensible Stylesheet Language (proširivi jezik stilskog uzorka) • XSL definira kako će se neki XML dokument prikazati u pregledniku i kakve elemente posjeduje • Nastao je 1999. kao W3C preporuka XSL se sastoji od tri dijela: • XSLT – jezika za transformaciju XML dokumenata • XPath - jezika za pozicioniranje (navigaciju) u XML dokumentima • XSL-FO - jezika za formatiranje XML dokumenata
XSLT – XSL Transformations • XSLT je važan dio XSL-a, koristi se za transformaciju XML dokumenta u HTML dokument, ili drugi XML dokument (XHTML) • Funkcionira na način da stableno transformira XML dokument u drugi XML dokument (npr. XHTML) • XSLT pri transformaciji koristi XPath da bi definirao dijelove izvornog dokumenta koji odgovaraju jednom ili više unaprijed definiranh uzoraka (predefined templates). Kad se odgovarajući uzorak podudara, XSLT će transformirati taj dio izvornog dokumenta u rezultirajući dokument.
Deklaracija stilskog uzorka XSL • Ako neki dokument sadrži XSL stilski uzorak, tada treba imati korjenski element: <xsl:stylesheet> ili <xsl:transform> (imaju isto značenje) • U narebi se poziva i xmlns (prostor za nazive) na W3C (kao i broj verzije), tako da cijela naredba izgleda ovako: <xsl:stylesheet version="1.0“ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Primjer 1 • Pretpostavimo da želimo ovaj XML dokument pretvoriti u html dokument kako bi se prikazao u pregledniku kao html: <?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> </catalog> Za izgled ovog XML dokumenta u pregledniku kliknite na P7_primjer1.xml
Primjer 1 - nastavak • Prethodni XML dokument će u pregledniku izgledati ovako: Oznake +, - omogućuju prikaz “roditeljskih” elemenata i njihove “djece”, te zatvoreni i otvoreni prikaz pojedinih grana u stablu
Primjer 1 - nastavak • Ako želimo ovaj dokument uklopiti (transformirati) u HTML oblik, kako se u pregledniku ne bi vidjeli XML tagovi nego samo tekst, potrebno je s pomoću editora napraviti posebnu datoteku stila (npr. stil.xsl) • Na početku datoteke upisuju se naredbe za deklaraciju stila: <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> Ova naredba ukazuje da se neće koristiti neki gotov predložak za stil
Primjer 1 - nastavak • U nastavku započinjemo HTML tagovima i umećemo posebne XSL tagove: <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">Title</th> <th align="left">Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> Započinje tablica s okvirom Ovdje prvi red (zaglavlje) tablice Ovdje je petlja iteracije “for-each” (koja određuje da se po jedan red tablice prikazuje za svaki naslov CD-a i umjetnika (artist)
Primjer 1 - nastavak • Na kraju se upisuju završni tagovi: </body> </html> </xsl:template> </xsl:stylesheet> • Zatim još treba povezati XML dokument sa XSL dokumentom: to ćemo učiniti tako da dodamo XSL referencu unutar XML dokumenta ("cdcatalog.xml"): <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href=“P7_Primjer1.xsl"?> <catalog> .... Ovo je nova naredba koja se dodaje u XML dokument
Primjer 1 – rezultat transformacije • Kao rezultat, XML dokument sada u pregledniku izgleda ovako (što se može vidjeti i klikom miša na P7_Primjer1_transformirani.xml): U pregledniku sada dobivamo uređeni tekst (prema HTML tagovima), te prikazani elementi u retku tablice iz povezanog XML dokumenta
Predlošci u XSL-u • Skupovi pravila za uređivanje XSL stilskog uzorka zovu se predlošci (templates). • Svaki predložak sadrži pravila koja će se primijeniti na određenom čvoru u stablu dokumenta • Oznaka za korištenje predloška je: <xsl:template>Element - ova naredba označava početak XSL predloška • U toj naredbi često se piše atribut “match” kojemu se pridružuje pod navodnicima XPath izraz (odnosno korjenski XML element s kojim se ovaj predložak mora podudarati). Ako je kao XPath izraz navedna samo kosa crta “/”, tada se koristi cijeli XML dokument kao korjenski element za podudaranje, npr: <xsl:template match=“...”>
Izlučivanje vrijednosti iz XML dokumenta • Kako bi se iz XML dokumenta izlučile upisane vrijednosti u prikazale s pomoću HTML naredbi, koristi se naredba: <xsl:value-of> element Npr. ako se u retku neke tablice želi u jednoj ćeliji ispisati element “title” iz XML dokumenta, a u drugoj element “artist”, upisat ćemo ove naredbe: <tr> <td><xsl:value-of select="catalog/cd/title"/></td> <td><xsl:value-of select="catalog/cd/artist"/></td> </tr> Pod navodnicima se navodi neki XPath izraz, odnosno XML element koji će se prikazati
Iterativno izlučivanje vrijednosti iz XML dokumenta • Rezultat prethodnih naredbi (ako XML dokument pogldamo u pregledniku) će biti ovakva tablica sa podacima za jedan CD: • Ako želimo prikazati više CD-ova iz XML dokumenta, tj. više korjenskih elemenata <cd> ... </cd> potrebno je upisati petlju iteracije pomoću naredbi: <xsl:for-each> element
Umetanje petlje iteracije • Ako u prethodni primjer ispred retka tablice umetnemo naredbu za početak petlje: <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> • Tada će se svi elementi <cd> ... </cd> kojima je roditeljski element <catalog>, prikazati onoliko puta koliko u povezanom XML dokumentu bude umetnuto tih elemenata <cd>, i prikazat će se toliko redaka tablice. Rezultat:
Sortiranje izlaznih podataka • Ukoliko želimo prikazati XML elemente sortirane po nekim kriterijima po abecedi teksta ili redosljedu brojeva, koristi se naredba: <xsl:sort> koji se dodaje unutar <xsl:foreach> elementa u XSL datoteku, npr: <xsl:for-each select="catalog/cd"> <xsl:sort select="artist"/> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> Prikaz elemenata dobit će se sortiran prema imenu umjetnika
Filtriranje izlaznih podataka • Ako se prema nekom kriteriju žele filtrirati podaci koje prikazujemp iz XML dokumenta, treba filter upisati u atribut “select” na sljedeći način: • <xsl:for-each select="catalog/cd[artist='Bob Dylan']"> • Ovaj primjer određuje da će se prikazati podaci o cd-u samo ako je umjetnik Bob Dylan
Filterski operatori U filteru se mogu koristiti ovi operatori za usporedbu izraza: • = (equal) • != (not equal) • < less than • > greater than
Uvjetna provjera izlaza • Ako želimo prikazati neki izlazni podatak samo ako odgovara određenom uvjetu, koristi se element <xsl:if> • Sintaksa: <xsl:if test="expression"> ... ... Ovdje naredbe za prikaz izlaza koji će se prikazati samo ako je uvjet ispunjen... ... </xsl:if>
Dodavanje uvjetne provjere • Ako želimo dodati uvjetnu provjeru, <xsl:if> element dodaje se unutar <xsl:for-each> elementa u XSL datoteci, npr: <xsl:for-each select="catalog/cd"> <xsl:if test="price > 10"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:if> </xsl:for-each> Izlaz će se prikazati samo ako je cijena CD-a veća od 10
Transformacija XML u XHTML dokument • Osim ručnim upisivanjem tagova, transformacija XML dokumenta u XHTML dokument može se raditi: • S pomoću XML editora • S pomoću web aplikacije koja se izvršava na poslužitelju, npr. ASP aplikacija Profesionalni XML editori omogućuju: • Automatsko dodavanje završnih tag-ova na sve otvorene tag-ove • Usmjeravanje na pisanje valjanog XML-a • Provjeru XML-a prema DTD • Provjeru XML-a prema XML Schemi • Označavanje XML sintakse posebnom bojom radi preglednosti dokumenta
Zaključak • XSL je jezik za definiranje stila XML dokumenta • XSL se sastoji od tri dijela: XSLT – jezika za transformaciju XML dokumenata, XPath - jezika za pozicioniranje (navigaciju) u XML dokumentima i XSL-FO - jezika za formatiranje • XSLT uzorak se upisuje u posebnoj xml datoteci, treba ga deklarirati naredbom <xsl:stylesheet>, a određuje način kako će se prikazati podaci iz XML dokumenta u pregledniku • XSL omogućava da korisnik vidi XML dokument kao web stranicu, čime se korisnika rasterećuje XML tagova, dok se XML tagovima bavi web aplikacija koja će obraditi podatke
Literatura • Essert, M., Web programiranje, materijali s predavanja, http://www.mathos.hr/wp, 20.02.2008.) • Wikipedia, www.wikipedia.org, 28.02.08. • W3C Consortium, www.w3c.org, 28.02.08. • M. Zekić-Sušac, Računarski praktikum 3, materijali s predavanja, http://www.mathos.hr/rp3, 28.02.08. • http://archive.ncsa.uiuc.edu/General/Internet/WWW/HTMLPrimer.html - NCSA html beginner’s guide