Movatterモバイル変換


[0]ホーム

URL:


Пређи на садржај
Википедија
Претрага

XSLT

С Википедије, слободне енциклопедије

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]

Istorija

[уреди |уреди извор]

Funkcionalni jezici su imali ogroman uticaj na XSLT.[4] Najveći uticaj je imaoDSSSL, koji je formatiraoSGML kao što i XSLT formatira XML.[5]

  • XSLT 1.0: XSLT je bio deoWorld Wide Web Consortiumovog (W3C)Extensible Stylesheet Language (XSL) 1998–1999 projekta u kome su takođe nastaliXSL-FO iXPath. Neki članovi koji su kreirali XSLT, uključujućiJames Clark-a, urednika, prethodno su radili na kreiranju DSSSL. XSLT 1.0 objavljen u novembru 1999.[6]
  • 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.

Dizajn i modeliranje procesa

[уреди |уреди извор]
Dijagram toka procesa i osnovnih elemenata XSLTa.

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.

Implementacija porcesora

[уреди |уреди извор]
  • -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]
  • MSXML i .NET. MSXML uključuju XSLT 1.0 procesor. Od MSXML 4.0 uključena je alatka komandne linijemsxsl.exe.[30]
  • Saxon: XSLT (2.0 i delom 3.0) i XQuery 3.0 procesor saotvorenim kodom ivlasničkim softverom za samostalne operacije i zaJava,JavaScript[31] i.NET.
  • QuiXSLT: XSLT 3.0 procesor koji radi streaming implementiran uJavi od strane Innovimaxa iINRIA.[32]
  • Xalan: XSLT 1.0 procesor otvorenog koda odApache Software Foundation dostupan samostalno ali i za Javu i C++.
  • 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.
  • Xuriella[38] i Plexippus-xpath[39] su XSLT 1.0 procesori pisani uCommon Lispu.

Performanse

[уреди |уреди извор]

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]

XSLT tipovi media

[уреди |уреди извор]

<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]

XSLT primeri

[уреди |уреди извор]

Ispod je primer dolaznog XML dokumenta.

<?xml version="1.0" ?><osobe><osobausername="PP1"><ime>Petar</ime><prezime>Petrović</prezime></osoba><osobausername="MM1"><ime>Marko</ime><prezime>Marković</prezime></osoba></osobe>

Primer 1 (transformisanje iz XSLT u XML)

[уреди |уреди извор]

Ovaj XSLT stylesheet obezbjeđuje šablon za prevođenje XML dokumenta.

<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheetxmlns:xsl="http://www.w3.org/1999/XSL/Transform"version="1.0"><xsl:outputmethod="xml"indent="yes"/><xsl:templatematch="/osobe"><root><xsl:apply-templatesselect="osoba"/></root></xsl:template><xsl:templatematch="osoba"><imeusername="{@username}"><xsl:value-ofselect="ime"/></ime></xsl:template></xsl:stylesheet>

Ovo dovodi do novog XML dokumenta, koji ima drugačiju strukturu:

<?xml version="1.0" encoding="UTF-8"?><root><imeusername="PP1">Petar</ime><imeusername="MM1">Marko</ime></root>

Primer 2 (prevođenje iz XML u XHTML)

[уреди |уреди извор]

Procesovanje XSLT fajla

<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns="http://www.w3.org/1999/xhtml"><xsl:outputmethod="xml"indent="yes"encoding="UTF-8"/><xsl:templatematch="/osobe"><html><head><title>TestiranjeXMLprimera</title></head><body><h1>Osobe</h1><ul><xsl:apply-templatesselect="osoba"><xsl:sortselect="prezime"/></xsl:apply-templates></ul></body></html></xsl:template><xsl:templatematch="osoba"><li><xsl:value-ofselect="prezime"/><xsl:text>,</xsl:text><xsl:value-ofselect="ime"/></li></xsl:template></xsl:stylesheet>

sa XML ulaznom datotekom prikazanom gore rezultira u narednomXHTML (razmak je prilagođen zbog čitljivosti):

<?xml version="1.0" encoding="UTF-8"?><htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>TestiranjeXMLprimera</title></head><body><h1>Osobe</h1><ul><li>Markovic,Marko</li><li>Petrovic,Petar</li></ul></body></html>

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]

<?xml-stylesheet href="primer2.xsl" type="text/xsl" ?>

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.

Reference

[уреди |уреди извор]
  1. ^аб„Transformation”. 19. 9. 2012. 
  2. ^„XML Output Method”. 19. 9. 2012. 
  3. ^Kepser, Stephan.„A Simple Proof for the Turing-Completeness of XSLT and XQuery”. Proceedings of Extreme Markup Languages. Архивирано изоригинала 04. 05. 2012. г. Приступљено30. 11. 2016. 
  4. ^Michael Kay.„What kind of language is XSLT?”. 
  5. ^„A Proposal for XSL”. W3C. 
  6. ^„XML and Semantic Web W3C Standards Timeline”(PDF). Архивирано изоригинала(PDF) 24. 04. 2013. г. Приступљено30. 11. 2016. 
  7. ^„XSL Transformations (XSLT) Version 1.1”. W3.org. 24. 8. 2001. Приступљено12. 7. 2014. 
  8. ^„XML Path Language (XPath) 2.0 (Second Edition)”. W3.org. 14. 12. 2010. Приступљено12. 7. 2014. 
  9. ^„XSL Transformations (XSLT) Version 2.0”. W3.org. 23. 1. 2007. Приступљено12. 7. 2014. 
  10. ^„XSL Transformations (XSLT)”. W3.org. 16. 11. 1999. Приступљено12. 7. 2014. 
  11. ^„What's New in XSLT 3.0?”. w3. Приступљено6. 1. 2014. 
  12. ^Kay, Michael.„A Streaming XSLT Processor”. Balisage: The Markup Conference 2010 Proceedings. Приступљено15. 2. 2012. 
  13. ^„Discover the Wonders of XSLT: XSLT Quirks”. Архивирано изоригинала 09. 07. 2011. г. Приступљено30. 11. 2016. „XSLT is a very specialized language with a distinct declarative flavor. 
  14. ^Kay, Michael.„What kind of language is XSLT?”. IBM. Приступљено13. 11. 2013. 
  15. ^„XSLT Definitions”. „XSLT declarations define a set of rules and guidelines that are applied during processing according to a predefined algorithm. 
  16. ^„RaptorXML”. Приступљено21. 8. 2013. 
  17. ^„Exselt XSLT Processor”. Exselt. 6. 6. 2015. Архивирано изоригинала 18. 10. 2016. г. Приступљено30. 11. 2016. 
  18. ^„The XSLT C library for GNOME: libxslt”. Приступљено23. 11. 2012. 
  19. ^„The XSLT C library for GNOME: The xsltproc tool”. Приступљено23. 11. 2012. 
  20. ^„xsltproc man page”. Приступљено23. 11. 2012. 
  21. ^„New package: libxslt”. Приступљено23. 11. 2012. 
  22. ^„The WebKit Open Source Project - XSLT”. Архивирано изоригинала 05. 09. 2015. г. Приступљено25. 10. 2009. 
  23. ^„The XML C parser and toolkit of Gnome: Python and bindings”. Приступљено23. 11. 2012. 
  24. ^„XML::LibXSLT - Interface to the GNOME libxslt library”. CPAN. Приступљено23. 11. 2012. 
  25. ^„libxslt-ruby”. Приступљено23. 11. 2012. 
  26. ^„libxml”. Приступљено23. 11. 2012. 
  27. ^„cl-libxml2 High-level wrapper around libxml2 and libxslt libraries”. 
  28. ^„TclXML”. Приступљено21. 5. 2013. 
  29. ^„libxml++”. sourceforge.net. Приступљено23. 11. 2012. 
  30. ^„Command Line Transformation Utility (msxsl.exe)”. Microsoft. Приступљено22. 10. 2012. 
  31. ^„Saxon Client Edition 1.0”. Saxonica. Приступљено14. 8. 2012. 
  32. ^„QuiXSLT » QuiX-Tool Suite”. Project.inria.fr. 14. 11. 2013. Приступљено12. 7. 2014. 
  33. ^Saxonica.„About Saxon-CE”. Приступљено16. 6. 2012. 
  34. ^Frameless.„Frameless XSLT/XPath 2.0 processor”. Приступљено9. 6. 2014. [мртва веза]
  35. ^Delpratt, O'Neil (2013).„XML on the web: is it still relevant?”.XML London 2013: 35—48.ISBN 978-0-9926471-0-0.doi:10.14337/XMLLondon13.Delpratt01. Архивирано изоригинала 13. 03. 2017. г. Приступљено30. 11. 2016. 
  36. ^Broersma, Robbert; Van der Kolk, Yolijn (2014).„Frameless for XML - The Reactive Revolution”.XML London 2014: 128—132.ISBN 978-0-9926471-1-7.doi:10.14337/XMLLondon14.Broersma01. Архивирано изоригинала 03. 03. 2016. г. Приступљено30. 11. 2016. 
  37. ^„Can't read an XML and/or XSLT in Google Chrome”.Stack Overflow. 2014. Приступљено12. 7. 2014. 
  38. ^„Xuriella XSLT”. 
  39. ^„Plexippus XPath”. 
  40. ^Saxon: Anatomy of an XSLT processor - Article describing implementation & optimization details of a popular XSLT processor.
  41. ^Lumley, John; Kay, Michael (2015).„Improving Pattern Matching Performance in XSLT”.XML London 2015: 9—25.ISBN 978-0-9926471-2-4.doi:10.14337/XMLLondon15.Lumley01. Архивирано изоригинала 15. 04. 2016. г. Приступљено30. 11. 2016. 
  42. ^Kay, Michael; Lockett, Debbie (2014).„Benchmarking XSLT Performance”.XML London 2014: 10—23.ISBN 978-0-9926471-1-7.doi:10.14337/XMLLondon14.Kay01. Архивирано изоригинала 04. 03. 2016. г. Приступљено30. 11. 2016. 
  43. ^„XSL Transformations (XSLT) Version 2.0”. W3C. Приступљено19. 10. 2012. 
  44. ^„Application Media Types”. IANA. Приступљено19. 10. 2012. 
  45. ^„XSLT Requirements for Viewing XML in a Browser”. Microsoft. Приступљено19. 10. 2012. 
  46. ^Kay, Michael (2008).XSLT 2.0 and XPath 2.0 Programmer's Reference. Wiley. стр. 100.ISBN 978-0-470-19274-0. 
  47. ^аб„XSL Transformations (XSLT) Version 1.0: W3C Recommendation – Embedding Stylesheets”. W3C. 16. 11. 1999. 

Dodatna literatura

[уреди |уреди извор]

Spoljašnje veze

[уреди |уреди извор]
Викикњиге имају више информација оXSLT
Dokumentacija
XSLT kod biblioteka
Овај чланак је започет или проширен кроз пројекатсеминарских радова. Потребно је проверити превод, правопис и вики-синтаксу.
Када завршите са провером, допишетеда након|проверено=.
Производи и
стандарди
Препоруке
Напомене
Радни нацрти
Смернице
Иницијатива
Застарело
Организације
Изабране групе
Радне групе
Затворене групе
Софтвер
Прегледачи
Конференције
Нормативна контрола: ДржавнеУреди на Википодацима
Преузето из „https://sr.wikipedia.org/w/index.php?title=XSLT&oldid=28308304
Категорије:
Сакривене категорије:

[8]ページ先頭

©2009-2025 Movatter.jp