XSLT (Extensible Stylesheet Language Transformations) je jezik za transformisanjeXML dokumenata[1] koji kasnije mogu biti konvertovani i u ostale formate kao što suPDF,PostScript iPNG.[2] XSLT 1.0 je podržan u svim današnjim pretraživačima.
Ulazni dokumenti su XML fajlovi, ali se može koristiti bilo šta od čega se može kreiratiXQuery iXPath model podataka, kao što surelacione baze podataka.[1]
Prema XSL transformacijama se odnosimo kao prema programskom jeziku, jer je sistem upita koji se može opisati Tjuringovom mašinom, tj. XSLT jeTuring-potpun.[3]
XSLT 2.0: nakon neuspešnog pokušaja da se napravi varzija 1.1 2001. godine,[7] radna grupa XSL je udružila snage saXQueryjevom radnom grupom i napravili suXPath 2.0,[8] sa bogatijim modelom podataka i sistemom zasnovanim naXML Schema. Najnovija verzija je XSLT 2.0,[9] razvijena je od straneMichael Kaya. Od 2010, XSLT 1.0[10] se i dalje široko upotrebljava, ali 2.0 verzije nije podržan od straneveb pregledača ili u okruženjima poputLAMPa.
Od oktobra 2014. godine karaktersistike XSLT 3.0 obuhvataju:[11]
Streaming transformacija: u prethodnim verzijama potpuni unos dokumenata je morao biti učitan u memoriju pre obrade,[12] a ispis nije mogao biti prikazan dok procesuiranje nije bilo završeno. Radna verzijaXML streaminga će biti korišćena za procesiranje dokumenata koji su isuviše veliki da stanu u memoriju, ili kada su transformacije pisane uXML Pipelines.
Poboljšanja u modularnost velikih stylesheet-ova.
Poboljšano upravljanje dinamičkim grešakama, na primer xsl:try instrukcija.
Funkcije sada mogu biti argumenti drugim funkcijama.
XSLT koristi jedan ili više XML izvornih dokumenata i jedan ili više XSLT stylesheetova i procesuira ih da bi napravio izlazni dokument. U poređenju sa široko upotrebljavanimimperativnim programiranjem, kome, na primer, pripada i jezikC, XSLT jedeklarativni jezik.[13] Osnova procesne paradigme je povezivanje obrazaca.[14] Umesto nabrajanja imperativnog niza naredbi koje se izvodule u okruženju, treba definisati samo kako rukovati sa povezivanjem čvorova određenog XPath obrazca, a ako se desi da procesor naiđe na neki, sadržaj obrazaca efikasno obrađuje funkcionalne izraze koji direktno predstavljaju svoj dobijeni formular - rezultujuće drvo, koje je osnova za procesorev izlaz.
Procesor prati fiksiran algoritam.[15] Na početku, uz pretpostavku da je stylesheet učitan i pripremljen, procesor gradi izvorno drvo od ulaznog XML dokumenta. Zatim se obrađuje korijenski čvor izvornog drveta, nalazi se odgovarajući šablon za taj čvor u stylesheet-u, i proverava se sadržaj šablona. Instrukcije u svakom šablonu uglavnom usmeravaju procesor ili da stvara čvorove u rezultujućem drvetu, ili da obradi više čvorova u izvornom drveta na isti način kao i korenski čvor. Izlaz predstavlja rezultatirajuće drvo.
-Altova RaptorXML Server: cross-platforma koja podržava XSLT 1.0 i 2.0, većinu XPath 3.0, i neke delove iz XSLT 3.0 radnog nacrta; takođe i XQuery. Dozvoljava operacije komandne linije i interfejsa COM,Java i.NET[16] i takođe uključuje ugrađen HTTP server.
Exselt:[17] XSLT 3.0 procesor koji radi na.NET frameworku napisanom uF#. Potpuno podržava XSLT 3.0 nacrt, XPath 3.0 preporuku i XDM 3.0 preporučene standarde.
libxslt je besplatna biblioteka realizovana podMIT licencom koja se može ponovo koristiti u komercijalnim aplikacijama. Bazirana je nalibxml i implementirana naC- u zbog brzine i portabilnosti. Podržava XSLT 1.0 iEXSLT ekstenzije.[18]
Veb pregledači: Safari, Chrome, Firefox, Opera i Internet Explorer podržavaju XSLT 1.0. Ni jedan izvorno ne podržava XSLT 2.0, iako proizvodi treće strane kao što su Saxon-CE[33] i Frameless[34] mogu obezbediti ovu funkcionalnost.[35][36] Veb pregledači mogu obavljati transformacije nad XML datotekama u hodu i prikazati rezultat obrade u prozoru pregledača. Ovo se obavlja ugrađivanjem XSL u XML dokument ili se upućuje na fajl koji sadrži XSL instrukcije iz XML dokumenta. Ovaj drugi metod ne može da radi sa Chromom zbog bezbednosnog modela.[37]
XMLStarlet je "lista alatki komandne linije koje mogu biti korištene da transformišu, izaberu, testiraju i urede XML dokumenta". Može "primeniti XSLT stylesheet-ove na XML dokumenta" i ne zahteva Javu. Koristi libxslt i podržava XSLT 1.0.
Većina ranijih XSLT procesora su prevodioci. U skorije vreme, kod sve učestalije koristi prenosive srednje jezike (kao što suJava bytecode ili .NETCommon Intermediate Language) kao cilj. Međutim, čak i interpretativni proizvodi uglavnom nude zasebne analize i faze izvršavanja, omogućavajući da se optimalno izrazno drvo kreira u memoriji i ponovo koristiti za obavljanje raznih transformacija.
Ovo omogućava značajne prednosti performansi u onlajn izdavačkim programima, gde je ista transformacija primenjena mnogo puta u sekundi nad različitim izvornim dokumentima.[40] Ovo razdvajanje se ogleda u dizajnu XSLT-a koji procesuira API-je (kao što jeJava API za XML procesiranjeJAXPa).
Raniji XSLT procesors imali su vrlo malo optimizacije. Stylesheet dokumenta su učitavana uDocument Object Modele a procesor deluje na njih direktno.XPath alati takođe nisu bili optimizovani. Međutim, sve većem uporebom, XSLT procesori počinju koristiti optimizacione tehnike funkcionalnih jezika i relacionih upitnih jezika, kao što su statička prepisivanja drveća (npr. izmestiti računananja izvan petlji) i lenje protočne procene da bi se smanjio memorijski otisak proizveden međurezultatima (i dozvolio "rani izlazak" kada procesor može oceniti izraz kao što jefollowing-sibling::*[1] bez potpunog računanja podizraza). Mnogi procesori koriste reprezentaciju drveta koja je značajno efikasnija (i u vremenu i u porstoru)[41] nego implementacija opšte namene.
U junu 2014, Debbie Lockett iMichael Kay predstavili su benchmarking okvir otvorenog koda za XSLT procesore nazvan XT-Speedo.[42]
<output> element može prihvatiti tipmedia-type, koji dopušta da se postavi tip media (ili MIME type) za rezultirajući izlaz. Na primer:<xsl:output output="xml" media-type="application/xml"/>. XSLT 1.0 preporučuje opštije tipove atributatext/xml iapplication/xml jer dugo vremena nije bilo registrovanog tipa medija za XSLT. Tada jetext/xsl postao de facto standard. U XSLT 1.0 nije bilo precizirano kakomedia-type vrednosti treba koristiti.
Objavljivanjem XSLT 2.0, W3C preporučuje registraciju MIME tipa medijaapplication/xslt+xml[43] koji je kasnije bio registrovan naInternet Assigned Numbers Authority (IANA).[44]
Radni nacrt XSLT je koristiotext/xsl u svojim primerima i ovaj tip je implementirao i nastavljao da promoviše Microsoft u Internet Explorer-u[45] i MSXML. Široko je upotrebljivana ixml-stylesheet procesna instrukcija. Zato, u praksi, korisnici koji žele da kontrolišu transformaciju u pregledaču korištenjem procesnih instrukcija moraju koristiti neregistrovan media tip.[46]
Ovaj XHTML generiše prikazani izlaz kada je pokrenut u veb pregledaču.
Dobijeni XHTML generisan od XML ulazne datoteke i XSLT transformacije.
Da bi veb pregledač mogao automatski da primenjuju XSL transformaciju u XML dokument na ekranu, XML stylesheet sa instrukcijama za procesiranje može da se ubaci u XML. Tako, na primer, ako je stylesheet u Primeru 2 iznad bio dostupni kao "primer2.xsl", sledeća uputstva se mogu dodati na originalni dolazni XML:[47]
U ovom primeru,text/xsl je tehnički netačno, sudeći po W3C specifikacijama[47] (po kojima je to trebalo da budetext/xml), ali to je jedina vrsta medija koji je široko podržan od strane brauzera od 2009.
EXSLTАрхивирано на веб-сајтуWayback Machine (19. јул 2006) je široko rasprostranjena inicijativa zajednica da obezbede proširenja XSLT.
FXSL je biblioteka koja sprovodi podršku funkcija višeg reda u XSLT. FXSLT je napisana u samom XSLT-u.
The XSLT Standard Library pruža XSLT diveloper sa setom XSLT obrazaca za najčešće korišćenih funkcija. Ovo se implementira samo u XSLT, to jest ne koriste se nikakvi dodaci.
KernowАрхивирано на веб-сајтуWayback Machine (4. јул 2008) GUI za Saxon koji obezbeđuje „i klik interfejs za pokretanje transformacija.
Овај чланак је започет или проширен кроз пројекатсеминарских радова. Потребно је проверити превод, правопис и вики-синтаксу. Када завршите са провером, допишетеда након|проверено=.