XSLT

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::*[1] 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". 

Pracovné návrhy, ktoré boli pred verziou 1.0 XSLT používali text/xsl 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."XSLT Requirements for Viewing XML in a Browser".  a MSXML. Taktiež je široko používaný v  xml-stylesheet 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.Kay, Michael (2008). 

 XSLT príklady 
Pre grouping problémy, pozri XSLT/Muenchian grouping. Nižšie je úryvok z prichádzajúceho XML dokumentu.<?xml version="1.0" ?>
<persons>
  <person username="JS1">
    <name>John</name>
    <family-name>Smith</family-name>
  </person>
  <person username="MI1">
    <name>Morka</name>
    <family-name>Ismincius</family-name>
  </person>
</persons>

 Príklad 1 (transformovanie XML na XML) 
Tento XSLT stylesheet poskytuje šablónu na transformovanie XML dokumentu:<?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="/persons">
    <root>
      <xsl:apply-templates select="person"/>
    </root>
  </xsl:template>

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

</xsl:stylesheet>Jeho vyhodnotenie vyústi do nového XML dokumentu, ktorý má inú štruktúru:<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name username="JS1">John</name>
  <name username="MI1">Morka</name>
</root>

 Príklad 2 (transformovanie XML do XHTML) 
Spracovanie nasledujúceho XSLT súboru<?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="/persons">
    <html>
      <head> <title>Testing XML Example</title> </head>
      <body>
        <h1>Persons</h1>
        <ul>
          <xsl:apply-templates select="person">
            <xsl:sort select="family-name" />
          </xsl:apply-templates>
        </ul>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="person">
    <li>
      <xsl:value-of select="family-name"/><xsl:text>, </xsl:text><xsl:value-of select="name"/>
    </li>
  </xsl:template>

</xsl:stylesheet>s XML vstupným súborom ukazuje horné výsledky v nasledujúcom  XHTML (pre zrejmosť, whitespace znak tu bol upravený):<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head> <title>Testing XML Example</title> </head>
  <body>
    <h1>Persons</h1>
      <ul>
        <li>Ismincius, Morka</li>
        <li>Smith, John</li>
      </ul>
  </body>
</html>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:"XSL Transformations (XSLT) Version 1.0: W3C Recommendation – Embedding Stylesheets". <?xml-stylesheet href="example2.xsl" type="text/xsl" ?>V tomto príklade text/xsl je technicky nesprávne podľa W3C špecifikácií, ale je to iba media typ ktorý je široko podporovaný naprieč prehliadačmi.

 Pozri aj 
 XSLT elementy – zoznam niektorých všeobecne používaných XSLT štruktúr.
 Muenchian grouping – diferenciálny dialekt medzi XSLT1 a XSLT2+.
 Extensible Stylesheet Language (XSL) – rodina jazykov, ktorých členom je aj XSLT
 XQuery a XSLT porovnanie
 XSL formatting objects alebo XSL-FO – jazyk pre dokumenty založený na XML, zvyčajne generovaný transformáciou zdrojového dokumentu s XSLT, pozostáva z objektov použitých na vytvorenie formátovaného výstupu.
 Identity transform
 Apache Cocoon
 Omnimark
 Xs3p

 Referencie 

 Ďalšie čítanie 
 XSLT by Doug Tidwell, published by O’Reilly (ISBN 0-596-00053-7)
 XSLT Cookbook by Sal Mangano, published by O’Reilly (ISBN 0-596-00974-7)
 XSLT 2.0 Programmer's Reference by Michael Kay (ISBN 0-764-56909-0)
 XSLT 2.0 and XPath 2.0 Programmer's Reference by Michael Kay (ISBN 978-0-470-19274-0)
 XSLT 2.0 Web Development by Dmitry Kirsanov (ISBN 0-13-140635-3)
 XSL Companion, 2nd Edition by Neil Bradley, published by Addison-Wesley (ISBN 0-201-77083-0)
 XSLT and XPath on the Edge (Unlimited Edition) by Jeni Tennison, published by Hungry Minds Inc, U.S. (ISBN 0-7645-4776-3)
 XSLT & XPath, A Guide to XML Transformations by John Robert Gardner and Zarella Rendon, published by Prentice-Hall (ISBN 0-13-040446-2)
 XSL-FO by Dave Pawson, published by O'Reilly (ISBN 978-0-596-00355-5)

 Externé odkazy 
 Dokumentácie
 XSLT 1.0 W3C Recommendation
 XSLT 2.0 W3C Recommendation
 XSLT 3.0 W3C Working Draft
 XSLT - MDC Docs  by Mozilla Developer Network
 XSLT Reference (MSDN)
 XSLT Elements (Saxon)
 XSLT introduction and reference
 XSLT code libraries
 EXSLT 
 FXSL 
 The XSLT Standard Library 
 Kernow 
 xslt.js – Transform XML with XSLT

Kategória:Deklaratívne programovacie jazyky
Kategória:Funkcionálne jazyky
Kategória:Značkovacie jazyky
Kategória:W3C štandardy
Kategória:Štandardy založené na XML