Főmenü megnyitása

Extensible Stylesheet Language Transformations

(XSLT szócikkből átirányítva)
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énetSzerkeszté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ésSzerkeszté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ásaSzerkeszté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ókSzerkeszté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 XPathSzerkeszté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ákSzerkeszté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ásokSzerkesztés

Dokumentáció
Levelezési listák
Könyvek
XSLT programkönyvtárak
További példák