Extensible Stylesheet Language Transformations
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/XSLT_en.svg/220px-XSLT_en.svg.png)
Az Extensible Stylesheet Language Transformations (röviden XSLT) XML-alapú fájlformátum illetve a hozzá tartozó feldolgozó rendszer. Az XSLT feldolgozót XML dokumentumok más, ember által könnyebben értelmezhető formátumra alakításához használják. A konverzió során az eredeti file megmarad, s annak tartalma alapján létrejön a célformátumban egy új fájl.[1]
A keletkező dokumentum formátuma lehet többek között XML, HTML, XHTML, PDF vagy normál szöveg.[2] Az XSLT-t gyakran használják különböző sémájú XML dokumentumok közötti konverzióra, dinamikus weboldalak létrehozására és PDF dokumentumok generálására.
Az XSLT közvetlen elődje a DSSSL, amely azt a funkciót látta el az SGML esetében, amit XSLT lát el az XML esetében.
Az XSLT nyelv Turing-teljes.[3]
Történet
Az XSLT-t a World Wide Web Consortium (W3C) fejleszti. Az XSLT 2.0 verzió 2007. január 23-án lépett W3C ajánlás státuszba.
Eredetileg az XSLT a W3C Extensible Stylesheet Language (XSL) projektjének a része volt 1998 és 1999 között. Az XSL projektből született még az XSL-FO és az XPath.
James Clark alkotta meg az XSLT 1.0 verziót, ami 1999. november 16-án lépett W3C ajánlás státuszba.
Az XSL munkacsoport megpróbálta 2001-ben kifejleszteni az 1.1 verziót, de nem sikerült nekik, majd összefogtak az XQuery munkacsoporttal, akikkel megalkották az XPath 2.0-t gazdagított adatmodellel és XML sémára alapú típusrendszerrel. A Michael Kay-féle XSLT 2.0 verzió 2002 és 2006 között fejlődött ki.
Áttekintés
Az XSLT feldolgozási modell részei a következők:
- egy vagy több XML forrásdokumentum
- egy vagy több XSLT stíluslap modul
- az XSLT sablonfeldolgozó szoftver
- egy vagy több céldokumentum
Az XSLT feldolgozó tipikus esetben két inputfájlt olvas be, nevezetesen egy forrásfájlt és egy XSLT stíluslapot, majd egy outputfájlt hoz létre. Az XSLT stíluslap tartalmazza a konverziós szabályokat a feldolgozó számára. A forrásfájl jellemzően XML formátumú, de a specifikáció nem zár ki más formátumokat sem, például a RAM-ban tárolt DOM modellt sem. Az XSLT stíluslap formátuma XML-alapú.
A konverziós szabályok feldolgozása
Az XSLT nyelv deklaratív, ilyen tekintetben hasonlít a funkcionális programnyelvekre. A konverziós szabályok azt írják le, hogy a feldolgozónak hogyan kell kezelnie az XML-fa adott XPath kifejezésre illeszkedő csomópontjait.
A feldolgozó a következő algoritmus szerint működik: Beolvassa a stíluslap szabályait és létrehoz a forrásdokumentumból egy fa adatszerkezetet, egy úgynevezett forrásfát. A forrásfát a gyökerénél kezdi el feldolgozni, s minden csomópontra végrehajtja a rá illeszkedő XPath kifejezésekhez tartozó utasításokat. Az utasítások jellemzően vagy csomópontokat hoznak létre a célfában, vagy tovább olvasnak a forrásfában. A feldolgozó végül a célfából előállítja a kimenetet.
Implementációk
XSLT feldolgozó jellemzően szerveroldalon fut. Az XSLT feldolgozó lehet különálló alkalmazás is, de szoftverkomponens is alkalmazásszervereken vagy operációs rendszerekben vagy akár kliensoldalon a böngészőben is. Javás XSLT implementáció a FOP. A Windows XP operációs rendszerhez létezik egy MSXML3 nevű programkönyvtár, amely tartalmaz XSLT feldolgozót is.
Az XSLT és az XPath
XSLT támaszkodik a szintén W3C által kiadott XPath nyelvre a forrás(dokumentum)fa csúcsainak azonosításánál.
Az XSLT 2.0 specifikáció támaszkodik az XPath 2.0 specifikációra, azonos dátummal publikálták őket. Hasonlóképpen, az XSLT 1.0 specifikáció az XPath 1.0 specifikációra támaszkodik.
Példák
Legyen az XML forrásfájl például a következő:
<?xml version="1.0" ?> <persons> <person username="EN"> <name>Ernő</name> <family-name>Nemecsek</family-name> </person> <person username="BNy"> <name>Bobó</name> <family-name>Nyomasek</family-name> </person> </persons>
1. példa (XML-XML transzformáció)
A következő XSLT stíluslap hatására a feldolgozó kigyűjti a <name>…</name>
tagpárok közötti értékeket:
<?xml version="1.0" ?> <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>
A keletkező output XML a következő:
<?xml version="1.0" encoding="UTF-8"?> <root> <name username="EN">Ernő</name> <name username="BNy">Bobó</name> </root>
2. példa (XML-XHTML transzformáció)
Ebben az esetben a következőképpen néz ki az XSLT stíluslap:
<?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="html"/> <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>
ami a következő XHTML kimenetet generálja:
<?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>Nemecsek, Ernő</li> <li>Nyomasek, Bobó</li> </ul> </body> </html> |
Hivatkozások
- Dokumentáció
- XSLT 1.0 W3C ajánlás
- XSLT 2.0 W3C ajánlás
- XSLT Gyakran Ismételt Kérdések az XSLT-ről angolul
- XSLT bemutató (a német)
- XSLT 2.0 referencia (a német)
- XSLT és XPath hivatkozás (a német)
- Levelezési listák
- Mulberrytech-féle XSLT levelezési lista
- Könyvek
- Doug Tidwell: XSLT (ISBN 0-596-00053-7) kiadó: O’Reilly
- Sal Mangano: XSLT Cookbook (ISBN 0-596-00974-7) kiadó: O’Reilly
- Michael Kay: XSLT 2.0 Programmer's Reference (ISBN 0-7645-6909-0)
- Dmitry Kirsanov: XSLT 2.0 Web Development (ISBN 0-13-140635-3)
- Neil Bradley: XSL Companion, 2nd Edition (ISBN 0-201-77083-0) kiadó: Addison-Wesley
- Jeni Tennison: XSLT and XPath on the Edge (Unlimited Edition) (ISBN 0-7645-4776-3) kiadó: Hungry Minds Inc, U.S.
- John Robert Gardner és Zarella Rendon: XSLT & XPath, A Guide to XML Transformations (ISBN 0-13-040446-2) kiadó: Prentice Hall
- XSLT programkönyvtárak
- EXSLT Archiválva 2006. július 19-i dátummal a Wayback Machine-ben XSLT kiterjesztéseket készítő közösség
- A szabványos XSLT programkkönyvtár, az xsltsl tartalmaz XSLT sablonokat is a tipikusabb funkciókhoz. Ezek tiszta XSLT-t használnak, nem használnak kiterjesztéseket.
- Kernow Archiválva 2008. július 4-i dátummal a Wayback Machine-ben Egy GUI-vezérelt transzformáló eszköz.
- xslt.js – Transform XML with XSLT Archiválva 2013. január 5-i dátummal az Archive.is-en JavaScript programkönyvtár, amely a XML-t transzformál XSLT-vel a böngészőben.
- További példák
- XSLT példák JavaScripttel
- XSLT a kliensoldalon (w3schools)
Informatikai portál • összefoglaló, színes tartalomajánló lap