Extensible Stylesheet Language Transformations – Wikipédia

Az XSLT folyamat diagramja

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]

  1. XSL Transformations (XSLT)
  2. specifying alternate output methods
  3. 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ó
Levelezési listák
Könyvek
XSLT programkönyvtárak
További példák