XSLT

From Wikipedia, the free encyclopedia

Remove ads

() je jezik za transformisanje dokumenata koji kasnije mogu biti konvertovani i u ostale formate kao što su , i . je podržan u svim današnjim pretraživačima.

Ulazni dokumenti su fajlovi, ali se može koristiti bilo šta od čega se može kreirati i model podataka, kao što su relacione baze podataka.

Prema transformacijama se odnosimo kao prema programskom jeziku, jer je sistem upita koji se može opisati Tjuringovom mašinom, tj. je Turing-potpun.

Remove ads

Istorija

Funkcionalni jezici su imali ogroman uticaj na . Najveći uticaj je imao , koji je formatirao kao što i formatira .

  • : je bio deo ovog 1998–1999 projekta u kome su takođe nastali i . Neki članovi koji su kreirali , uključujući , urednika, prethodno su radili na kreiranju . objavljen u novembru 1999.
  • : nakon neuspešnog pokušaja da se napravi varzija 1.1 2001. godine, radna grupa je udružila snage sa jevom radnom grupom i napravili su , sa bogatijim modelom podataka i sistemom zasnovanim na . Najnovija verzija je , razvijena je od strane . Od 2010, se i dalje široko upotrebljava, ali 2.0 verzije nije podržan od strane veb pregledača ili u okruženjima poput a.
  • Od oktobra 2014. godine karaktersistike obuhvataju:
    • transformacija: u prethodnim verzijama potpuni unos dokumenata je morao biti učitan u memoriju pre obrade, a ispis nije mogao biti prikazan dok procesuiranje nije bilo završeno. Radna verzija će biti korišćena za procesiranje dokumenata koji su isuviše veliki da stanu u memoriju, ili kada su transformacije pisane u .
    • Poboljšanja u modularnost velikih -ova.
    • Poboljšano upravljanje dinamičkim grešakama, na primer instrukcija.
    • Funkcije sada mogu biti argumenti drugim funkcijama.
Remove ads

Dizajn i modeliranje procesa

Thumb
Dijagram toka procesa i osnovnih elemenata XSLTa.

koristi jedan ili više izvornih dokumenata i jedan ili više ova i procesuira ih da bi napravio izlazni dokument. U poređenju sa široko upotrebljavanim imperativnim programiranjem, kome, na primer, pripada i jezik , je deklarativni jezik. Osnova procesne paradigme je povezivanje obrazaca. Umesto nabrajanja imperativnog niza naredbi koje se izvodule u okruženju, treba definisati samo kako rukovati sa povezivanjem čvorova određenog 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. Na početku, uz pretpostavku da je učitan i pripremljen, procesor gradi izvorno drvo od ulaznog dokumenta. Zatim se obrađuje korijenski čvor izvornog drveta, nalazi se odgovarajući šablon za taj čvor u -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.

Remove ads

Implementacija porcesora

  • -Altova Server: -platforma koja podržava i 2.0, većinu 3.0, i neke delove iz radnog nacrta; takođe i . Dozvoljava operacije komandne linije i interfejsa , i i takođe uključuje ugrađen server.
  • : procesor koji radi na napisanom u . Potpuno podržava nacrt, preporuku i preporučene standarde.
  • je besplatna biblioteka realizovana pod MIT licencom koja se može ponovo koristiti u komercijalnim aplikacijama. Bazirana je na i implementirana na - u zbog brzine i portabilnosti. Podržava i ekstenzije.
    • Može biti korištena u komandnoj liniji preko koji je uključen u i mnogim distribucijama i može biti korišćena na preko a.
    • i , korišćeni u i veb pregledačima respektivno, koriste biblioteku za obavljanje transformacija.
    • postoji za , , , , , , i .
  • i . uključuju procesor. Od uključena je alatka komandne linije .
  • : (2.0 i delom 3.0) i procesor sa otvorenim kodom i vlasničkim softverom za samostalne operacije i za , i
  • : procesor koji radi streaming implementiran u od strane i .
  • : procesor otvorenog koda od dostupan samostalno ali i za i .
  • Veb pregledači: i podržavaju . Ni jedan izvorno ne podržava , iako proizvodi treće strane kao što su i mogu obezbediti ovu funkcionalnost. Veb pregledači mogu obavljati transformacije nad datotekama u hodu i prikazati rezultat obrade u prozoru pregledača. Ovo se obavlja ugrađivanjem u dokument ili se upućuje na fajl koji sadrži instrukcije iz dokumenta. Ovaj drugi metod ne može da radi sa om zbog bezbednosnog modela.
  • je "lista alatki komandne linije koje mogu biti korištene da transformišu, izaberu, testiraju i urede dokumenta". Može "primeniti -ove na dokumenta" i ne zahteva . Koristi i podržava .
  • su procesori pisani u .

Performanse

Većina ranijih procesora su prevodioci. U skorije vreme, kod sve učestalije koristi prenosive srednje jezike (kao što su ili 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. Ovo razdvajanje se ogleda u dizajnu -a koji procesuira -je (kao što je za procesiranje a).

Raniji procesors imali su vrlo malo optimizacije. dokumenta su učitavana u e a procesor deluje na njih direktno. alati takođe nisu bili optimizovani. Međutim, sve većem uporebom, 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 je bez potpunog računanja podizraza). Mnogi procesori koriste reprezentaciju drveta koja je značajno efikasnija (i u vremenu i u porstoru) nego implementacija opšte namene.

U junu 2014, i predstavili su benchmarking okvir otvorenog koda za procesore nazvan .

Remove ads

tipovi media

element može prihvatiti tip , koji dopušta da se postavi tip media (ili ) za rezultirajući izlaz. Na primer: . preporučuje opštije tipove atributa i jer dugo vremena nije bilo registrovanog tipa medija za . Tada je postao standard. U nije bilo precizirano kako vrednosti treba koristiti.

Objavljivanjem , preporučuje registraciju tipa medija koji je kasnije bio registrovan na.

Radni nacrt je koristio u svojim primerima i ovaj tip je implementirao i nastavljao da promoviše u -u i . Široko je upotrebljivana i procesna instrukcija. Zato, u praksi, korisnici koji žele da kontrolišu transformaciju u pregledaču korištenjem procesnih instrukcija moraju koristiti neregistrovan media tip.

Remove ads

primeri

Ispod je primer dolaznog dokumenta.

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

Primer 1 (transformisanje iz u )

Ovaj obezbjeđuje šablon za prevođenje dokumenta.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/osobe">
    <root>
      <xsl:apply-templates select="osoba"/>
    </root>
  </xsl:template>

  <xsl:template match="osoba">
    <ime username="{@username}">
      <xsl:value-of select="ime" />
    </ime>
  </xsl:template>

</xsl:stylesheet>

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

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

Primer 2 (prevođenje iz u )

Procesovanje fajla

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.w3.org/1999/xhtml">

  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>

  <xsl:template match="/osobe">
    <html>
      <head> <title>Testiranje XML primera</title> </head>
      <body>
        <h1>Osobe</h1>
        <ul>
          <xsl:apply-templates select="osoba">
            <xsl:sort select="prezime" />
          </xsl:apply-templates>
        </ul>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="osoba">
    <li>
      <xsl:value-of select="prezime"/><xsl:text>, </xsl:text><xsl:value-of select="ime"/>
    </li>
  </xsl:template>

</xsl:stylesheet>

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

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

Ovaj generiše prikazani izlaz kada je pokrenut u veb pregledaču.

Thumb
Dobijeni generisan od ulazne datoteke i transformacije.

Da bi veb pregledač mogao automatski da primenjuju transformaciju u dokument na ekranu, sa instrukcijama za procesiranje može da se ubaci u . Tako, na primer, ako je u Primeru 2 iznad bio dostupni kao , sledeća uputstva se mogu dodati na originalni dolazni

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

U ovom primeru, je tehnički netačno, sudeći po specifikacijama (po kojima je to trebalo da bude ), ali to je jedina vrsta medija koji je široko podržan od strane brauzera od 2009.

Remove ads

Reference

Dodatna literatura

Spoljašnje veze

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads