XSLT (Extensible Stylesheet Language Transformations) je jazyk určený na transformovanie XML dokumentov na iné XML dokumenty,"Transformation". 2012-09-19.  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."XML Output Method". 2012-09-19. 

Originálny dokument nie je zmenený, namiesto toho sa vytvorí nový dokument na základe už existujúceho."Introduction". 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.Kepser, Stephan.

Dejiny XSLT je ovplyvnené funkcionálnymi jazykmi,Dimitre Novatchev. 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."A Proposal for XSL". XSLT 1.0: XSLT bol časťou snahy World Wide Web Konzorcia (W3C), ktorý robil vývoj Extensible Stylesheet Language (XSL) v rokoch 1998–1999. Tento projekt taktiež priniesol XSL-FO a XPath. Niektorí členovia štandardizačnej komisie, ktorí vyvíjali XSLT, zahŕňajúc editora Jamesa Clarka, predtým pracovali na vývoji DSSSL. XSLT 1.0 bolo publikované ako W3C odporúčanie v novembri 1999."XML and Semantic Web W3C Standards Timeline" (PDF).  XSLT 2.0: po prerušenom pokuse vytvoriť verziu 1.1 v roku 2001,"XSL Transformations (XSLT) Version 1.1". XSL pracovná skupina spojila svoje sily s XQuery pracovnou skupinou a vytvorili XPath 2.0,"XML Path Language (XPath) 2.0 (Second Edition)". s bohatším data modelom a typovým systémom založenom na XML schéme. Posledná verzia je XSLT 2.0,"XSL Transformations (XSLT) Version 2.0". ktorej redakciu vedie Michael Kay. Dosiahlo to status odporúčania v januári 2007."XML and Semantic Web W3C Standards Timeline" (PDF). 2012-02-04.  XSLT 3.0: malo poslednú výzvu pracovného návrhu v októbri 2014. Hlavne novinky sú:"What's New in XSLT 3.0?". w3. Streamované transformácie: v predchádzajúcich verziách musel byť celý vstupný dokument prečítaný do pamäte predtým ako mohol byť spracovaný,Kay, Michael. a výstupný nemohol byť zapísaný skôr než spracovávanie skončilo (i keď Saxon nemá streaming príponu). Pracovný návrh dovoľuje XML streaming ktorý bude použitý pre spracovávanie príliš veľkých dokumentov, ktoré sa nezmestia do pamäte, alebo ak sú transformácie spojené v XML Pipeline. Vylepšenia modularity veľkých stylesheetov. Vylepšené riešenie dynamických chýb, napríklad s xsl:try inštrukciou. Funkcie môžu byť teraz argumenty pre iné funkcie vyššieho radu.

Dizajn a spracovanie modelu náhľad|Diagram základných elementov a vývoj procesov XSLT. 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."Discover the Wonders of XSLT: XSLT Quirks" . 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.Kay, Michael. 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."XSLT Definitions". 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 Altova RaptorXML Server: cross-platformový engine, ktorý podporuje XSLT 1.0 a 2.0, veľkú časť XPath 3.0, a niektoré doplnky z XSLT 3.0 pracovného návrhu; taktiež aj XQuery. Umožňuje operácie príkazového riadku a rozhrania na COM, Java, a .NET"RaptorXML". a taktiež zahŕňa vstavaný HTTP server. Exselt:"Exselt XSLT Processor" . Streamovaný XSLT 3.0 processor, ktorý beží na .NET frameworku napísanom v F#. Plne podporuje XSLT 3.0 Draft, XPath 3.0 Recommendation a XDM 3.0 Recommendation standards. libxslt je voľne dostupná knižnica vydaná pod MIT License, ktoré sa môže znova použiť v komerčných aplikáciách. Je to založené na libxml a implementované v C pre rýchlosť a prenosnosť. Podporuje XSLT 1.0 a EXSLT rozšírenia."The XSLT C library for GNOME: libxslt". Môže to byť použité v príkazovom riadku cez xsltproc"The XSLT C library for GNOME: The xsltproc tool". , ktorý je obsiahnutý v OS X"xsltproc man page". a viacerých Linuxových distribúciách, a môže byť použitý na Windows cez Cygwin"New package: libxslt". WebKit a Blink layout enginy, ktoré sú napríklad použité vo webových prehliadačoch Safari a Chrome, používajú libxslt knižnicu na vykonanie XSL transformácií."The WebKit Open Source Project - XSLT". Bindings existuje pre Python,"The XML C parser and toolkit of Gnome: Python and bindings". Perl,"XML::LibXSLT - Interface to the GNOME libxslt library". Ruby,"libxslt-ruby". PHP,"libxml". Common Lisp,"cl-libxml2 High-level wrapper around libxml2 and libxslt libraries".  Tcl,"TclXML". a C++."libxml++". sourceforge.net. MSXML a .NET. MSXML obsahuje XSLT 1.0 processor. Od verzie MSXML 4.0 tiež obsahuje funkčnosť príkazového riadkumsxsl.exe."Command Line Transformation Utility (msxsl.exe)". Saxon: XSLT (2.0 a čiastočne 3.0) a XQuery 3.0 processor s open-source a proprietárnymi verziami pre samostatné operácie a pre Java, JavaScript"Saxon Client Edition 1.0". a .NET. QuiXSLT: XSLT 3.0 processor robí streaming implementovaný v jazyku Java spoločnosťami Innovimax and INRIA "QuiXSLT » QuiX-Tool Suite". Xalan: Open sourceový XSLT 1.0 processor od spoločnosti Apache Software Foundation dostupný samostatne pre jazyky Java and C++. Webové prehliadače: Safari, Chrome, Firefox, Opera a Internet Explorer všetky podporujú XSLT 1.0. Žiaden z nich nepodporuje XSLT 2.0 natívne, i keď existujú produkty tretích strán ako napríklad Saxon-CESaxonica. alebo FramelessFrameless. , ktoré môžu poskytnúť túto funkcionalitu.Delpratt, O'Neil (June 2013). Broersma, Robbert; van der Kolk, Yolijn (June 2014). Prehliadače môžu vykonať transformácie XML súboru za pochodu a zobraziť výstup transformácie v okne prehliadača. Toto sa deje buď vkladaním XSL do XML dokumentu alebo odkazovaním súboru, ktorý obsahuje XSL inštrukcie z XML dokumentu. Posledné spomenuté nemusí správne fungovať v prehliadači Chrome kvôli jeho bezpečnostnému modelu."Can't read an XML and/or XSLT in Google Chrome". XMLStarlet je "súhrn funkčností (nástrojov) príkazového riadku, ktoré môžu byť použité na zmenu, vyhodnotenie, validovanie a úpravu XML dokumentov". Môže "aplikovať XSLT stylesheety na XML dokumenty" a nevyžaduje Javu. Využíva libxslt a podporuje XSLT 1.0. Xuriella"Xuriella XSLT".  a Plexippus-xpath"Plexippus XPath".  sú XSLT 1.0 processory napísané v Common Lisp.

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.Saxon: Anatomy of an XSLT processor - Article describing implementation & optimization details of a popular XSLT processor. 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 following-sibling::* 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) Lumley, John; Kay, Michael (June 2015). 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.Kay, Michael; Lockett, Debbie (June 2014).

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 <output> môže voliteľne zobrať atribút media-type, ktorý umožňuje nastavenie media typu (alebo MIME typu) pre výsledný výstup, napríklad: <xsl:output output="xml" media-type="application/xml"/>. XSLT 1.0 odporúčanie odporúča viac všeobecný atribútový typ text/xml a application/xml, keďže dlho nebol žiaden registrovaný media typ pre XSLT. Počas tohto obdobia sa text/xsl stal de facto štandardom. V XSLT 1.0 nebolo špecifikované ako by media-type hodnoty mali byť používané.

S vydaním XSLT 2.0, W3C odporučilo registráciu MIME media typu application/xslt+xml"XSL Transformations (XSLT) Version 2.0". a to bolo neskôr registrované s Internet Assigned Numbers Authority"Application Media Types".