XSLT

XSLT (Extensible Stylesheet Language Transformations) je jazyk určený na transformovanie XML dokumentov na iné XML dokumenty, alebo iné formáty ako napríklad HTML pre web pages, obyčajný text alebo do XSL Formatting Objects, ktoré môžu byť prekonvertované do iných formátov, ako napríklad PDF, PostScript a PNG.
Originálny dokument nie je zmenený, namiesto toho sa vytvorí nový dokument na základe už existujúceho. Vstupné dokumenty sú zväčša typu XML, ale môže byt použité čokoľvek, z čoho procesor dokáže zostaviť XQuery a XPath Data Model. Príkladom sú tabuľky relačnej databázy, alebo geografické informačne systémy.
XSLT je jazyk Turingovo úplný, t.j. dokáže špecifikovať akýkoľvek výpočet, ktorý môže byt vykonaný počítačom.
Dejiny.
XSLT je ovplyvnené funkcionálnymi jazykmi, a textovo založenými pattern matching jazykmi ako SNOBOL a awk. Jeho najpriamejší predchodca je DSSSL, ktorý spravil pre SGML to, čo XSLT robí pre XML.
Dizajn a spracovanie modelu.
XSLT processor zoberie jeden alebo viac XML zdrojových dokumentov, plus jeden alebo viac XSLT stylesheetov a spracuje ich tak, aby vyprodukovali výstupný dokument. V kontraste s široko implementovanými imperatívnymi programovacími jazykmi ako napríklad C, XSLT je deklaratívne. Toto robí daný XSLT program viac odolný na zmeny na vstupe["citation needed"] a viac užitočný v jazyku, ktorý je použitý na aplikácie, ktoré spracovávajú informácie. Základná spracovávacia paradigma je pattern matching. Skôr než vymenovávanie imperatívnych postupnosti akcii, ktoré sa majú vykonať v stavovom prostredí, šablónové pravidla iba definujú ako spracovať node matching konkrétneho XPath podobného vzoru (pattern), v prípade ak processor na nejaký narazí a obsah šablóny účinne zahrnie funkcionálne výrazy ktoré priamo reprezentujú ich ohodnotenú formu: výsledný strom, ktorý je základom výstupu.
Processor postupuje podľa fixného algoritmu. Najprv predpokladajúc, zem stylesheet bol už prečítaný a pripravený, processor zostaví zdrojový strom zo vstupného XML dokumentu. Potom spracováva koreňový vrchol zdrojového stromu, nájde šablónu, ktorá má najlepšiu zhodu pre vrchol v stylesheete a vyhodnotí obsah šablóny. Inštrukcie v každej šablóne processoru rozhodujú, či ma vo výslednom strome vytvoriť nový vrchol alebo spracovať viac vrcholov v zdrojovom strome rovnakým spôsobom ako koreňový vrchol. Výstup je odvodený z výsledného stromu.
Processorová implementácia.
Výkon.
Prvé XSLT processory boli interprétre. V poslednej dobe je stále bežnejšie generovanie kódu, kde sa používajú prenosne prechodné jazyky (ako napríklad Java bytecode alebo .NET Common Intermediate Language) ako cieľ. Napriek tomu interpretačné výsledky vo všeobecnosti častejšie oddeľujú analyzačnú a vykonávaciu fázu, čim dovoľujú aby bol v pamäti vytvorený optimalizovaný výrazový strom a znova použitý na vykonanie viacerých transformácii. Toto poskytuje významne výkonnostné zlepšenia v online publikovaných aplikáciách, kde je rovnaká transformácia aplikovaná mnoho krát za sekundu na rôzne zdrojové dokumenty. Táto separácia je vidieť v dizajne mnohých API, ktoré sú pomocou XSLT spracovávané (ako napríklad JAXP).
Skoré XSLT processory mali veľmi málo optimalizácií. Stylesheetové dokumenty boli prečítané do Document Object Models a processor pôsobil priamo na ne. XPathové enginy tiež neboli optimalizované. Ale stále viac XSLT processorov používa optimalizačné techniky prevzaté z funkcionálnych programovacích jazykov a databázových výrazových jazykov, ako napríklad statické prepisovanie výrazového stromu (napríklad na presunutie výpočtu mimo cyklu) a lazy pipelined evaluation na zníženie pamäťovej stopy medzivýsledkov (čim sa umožní „early exit“, keď processor môže vyhodnotiť výrazy ako codice_2 bez celkového vyhodnotenia všetkých podvýrazov). Mnoho processorov taktiež používa stromové reprezentácie, ktoré sú oveľa efektívnejšie (v priestore a zároveň aj v čase) ako DOM implementácie so všeobecným účelom.
V júni 2014, Debbie Lockett a Michael Kay predstavili open-source benchmarking framework pre XSLT processory s názvom XT-Speedo.
XSLT a XPath.
XSLT používa XPath na identifikovanie podmnožín zdrojového vstupného stromu a vykonávanie výpočtov. XPath taktiež poskytuje množstvo funkcií, ktoré XSLT ďalej vylepšuje.
XSLT 1.0 používa XPath 1.0. XSLT 2.0 používa XPath 2.0. A XSLT 3.0 používa XPath 3.0. V prípade verzií 1.0 a 2.0 boli špecifikácie publikované naraz. Ale s príchodom verzie 3.0 už neboli ďalej synchronizované; XPath 3.0 sa stal Odporúčaním v Apríli roku 2014, zatiaľ čo XSLT 3.0 bol stále v rozpracovanom stave.
XSLT a XQuery porovnanie.
XSLT funkcionality sa prekrývajú s tými od XQuery, ktorý bol pôvodne zamýšľaný ako vyhľadávací jazyk pre veľké zbierky XML dokumentov.
XSLT 2.0 a XQuery 1.0 štandardy boli vyvíjané rôznymi pracovnými skupinami v W3C, ktoré pracovali spolu, aby zaistili spoločný prístup tam, kde to je vhodné. Zdieľajú rovnaký data model, typový systém, funkčnú knižnicu a obe obsahujú XPath 2.0 ako podjazyk.
Oba jazyky sú ale zakorenené v rôznych tradíciách a slúžia potrebám rôznych komunít. XSLT bolo primárne plánované ako stylesheet jazyk, ktorého hlavný cieľ bolo poskytnúť XML pre ľudského čitateľa na obrazovke, na webe (ako webový šablónový jazyk), alebo na papieri. XQuery bolo primárne zamýšľané ako databázový vyhľadávací jazyk v tradíciíSQL.
Kvôli rôznemu pôvodu oboch jazykov, XSLT je silnejšie v zvládaní naratívnych dokumentov s viac pružnou štruktúrou, zatiaľ čo XQuery je silnejšie vo svojom spracovávaní dát, napríklad, keď vytvára vzťahové spojenia.["citation needed"]
XSLT media typy.
Element codice_3 môže voliteľne zobrať atribút codice_4, ktorý umožňuje nastavenie media typu (alebo MIME typu) pre výsledný výstup, napríklad: codice_5. XSLT 1.0 odporúčanie odporúča viac všeobecný atribútový typ codice_6 a codice_7, keďže dlho nebol žiaden registrovaný media typ pre XSLT. Počas tohto obdobia sa codice_8 stal de facto štandardom. V XSLT 1.0 nebolo špecifikované ako by codice_4 hodnoty mali byť používané.
S vydaním XSLT 2.0, W3C odporučilo registráciu MIME media typu codice_10 a to bolo neskôr registrované s Internet Assigned Numbers Authority
Pracovné návrhy, ktoré boli pred verziou 1.0 XSLT používali codice_8 v ich vložených príkladoch a tento typ bol implementovaný a pokračuje jeho propagácia Microsoftom vo webovom prehliadači Internet Explorer. a MSXML. Taktiež je široko používaný v codice_12 spracovávacej inštrukcii. V praxi teda používatelia, ktorí chcú ovládať transformáciu vo webovom prehliadači cez túto spracovávaciu inštrukciu musia používať tento neregistrovaný media typ.
XSLT príklady.
Pre grouping problémy, pozri XSLT/Muenchian grouping. Nižšie je úryvok z prichádzajúceho XML dokumentu.
Príklad 1 (transformovanie XML na XML).
Tento XSLT stylesheet poskytuje šablónu na transformovanie XML dokumentu:Jeho vyhodnotenie vyústi do nového XML dokumentu, ktorý má inú štruktúru:
Príklad 2 (transformovanie XML do XHTML).
Spracovanie nasledujúceho XSLT súborus XML vstupným súborom ukazuje horné výsledky v nasledujúcom XHTML (pre zrejmosť, whitespace znak tu bol upravený):Toto XHTML vygeneruje nasledujúci výsledok, keď je zobrazené v prehliadači.
Na to, aby webový prehliadač mohol automaticky aplikovať XSL transformáciu na XML dokument na displeji, XML stylesheet spracovávacia inštrukcia môže byť vsunutá do XML. Takže, napríklad, ak stylesheet v Príklade 2 by bol dostupný ako "example2.xsl", nasledujúca inštrukcia by mohla byť pridaná do originálneho prichádzajúceho XML dokumentu:V tomto príklade codice_8 je technicky nesprávne podľa W3C špecifikácií, ale je to iba media typ ktorý je široko podporovaný naprieč prehliadačmi.