Extensible Stylesheet Language Transformations
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
[szerkesztés]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
[szerkeszté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
[szerkesztés]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
[szerkesztés]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
[szerkesztés]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
[szerkesztés]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ó)
[szerkesztés]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ó)
[szerkesztés]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
[szerkesztés]- ↑ XSL Transformations (XSLT)
- ↑ specifying alternate output methods
- ↑ Kepser, Stephan: A Simple Proof for the Turing-Completeness of XSLT and XQuery. International Digital Enterprise Alliance, 2004. [2007. szeptember 27-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. május 8.)
- 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
- 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