|
XML, XSL, CSS, HTML ...
Az XML-t önállóan megtanulni
egy kicsit olyan lehet, mint latinul
tanulni. Bemagoljuk a
szótárt és néhány nyelvtani
szabályt, de addig nem sok értelme
van, amíg hiányoznak az
összefüggések és a tényleges
alkalmazás (mint például az orvosi
iskolákban). Tudjuk, hogy
az XHTML az XML, de a legtöbb
webtervezô nem használja naponta.
Sôt a legtöbb fejlesztô
nem is ismeri teljesen a lényegét
és a hasznosságát. Aki nem
ismer egy XML-alapú szervertechnológiát,
annak az XML
célja kissé homályos lehet.
Az XML-struktúra
manipulációja XSLT-vel
És mi a helyzet az XML ügyféloldali
használatával? Leszokunk
a régi keresôkrôl, amelyek CSSés
XHTML-támogatása szegényes,
de van egy másik, az elmúlt
években figyelmen kívül
hagyott technológia, amit érdemes
megvizsgálni: az XSLT.
Az XSLT képviseli az XSL átalakításokat
és ugyanúgy, mint
az XML, az XSLT is a W3C-ben
dolgozó barátainktól származik.
Az XSLT és az unokatestvére, az
XSL Formatting Objects (XSLFO)
is az XML és más típusú
dokumentumok (például HTML,
PDF és RTF) struktúrájának
megváltoztatására szolgálnak.
Egy dokumentum átalakításának
folyamata XSLT-ben magában
foglalja az egyik formátumból,
vagy struktúrából származó
adatok átalakítását egy
másikba. Habár az XSLT nagyon
hatékony, de a nyelv elsajátítása
egy lassú folyamat.
A jó hír az az, hogy a legtöbb
modern keresô támogatja
az XSLT-t és habár a nyelv új
gondolkodásmódot igényel az
adatfeldolgozást és az alapproblémák
megoldását illetôen,
azért elég könnyű elsajátítani.
Az XSLT-n kívül, az XPath támogatja
az átalakítási folyamatot.
Mivel az XPath amolyan integrált
része az XSLT-nek, általában
egyetlen egységként kezelik
ôket. Aki jártas az adatbázisokban,
annak érthetô,
hogy az XPath az XML-t támogatja,
az SQL pedig a kapcsolódó
adatbázist.
Egy másik nyelv
elsajátítása
A tartalom elkülönítésének elônyeit
a designtól, XHTML és CSS
segítségével már megismertük.
Mit gondolnak akkor, ha én azt
mondom, hogy ez még nem
minden?
Ugyan a design zöme tárolható
a CSS fájlokban, a legtöbb
dokumentum még tartalmaz
a tartalomhoz tartozó
strukturális kódot. A design
legfontosabb részének CSS-be
történô áthelyezése bizonyára
fejleszti a designt, de ez nem
az a tartalom-szétválasztás,
amit mi szeretnénk.
Az XSLT használata lehetôvé
teszi a tartalom teljes elválasztását
a designtól. Ahelyett,
hogy összekevernénk a strukturális
jeleket az adatokkal, mi
kettéválasztjuk a kettôt. A tartalom
XML-ben található, a dokumentum
struktúrája XSL-ben, a
design CSS-ben, a jellemzôk pedig
JavaScript/ECMAScript-ben.
Az elkülönítés fejleszti a
munkafolyamatokat
Ez a modell nem csak a kezelhetôséget,
de a nagyon összetett
weboldalakat is fejleszti.

A tartalom és megjelenés szétválása – a szerzô illusztrációjában.
Baloldalon a HTML 1997 körüli állapota, középen a web-szabványok létrejötte
körüli helyzet, amíg a jobb oldalon a következô generációs rendszer látható.
Lehetôvé teszi a programozók
és/vagy az adatbázis-kezelôk
részére, hogy az adatokra koncentráljanak
és létrehozzák az
XML-t és nem kényszeríti ôket
arra, hogy UI és használhatósági
döntéseket hozzanak.
Az információszerkesztô foglalkozik
az oldalszerkesztéssel
XSLT használatával és ô csoportosítja,
rendszerezi és jeleníti
meg a tartalmat.
A design-készítô együtt dolgozik
az információszerkesztôvel
és CSS használatával alkotja
meg a színsémákat, a felületet
és a tipográfiát, valamint Java-
Scriptet használ a funkcionalitás
létrehozására.
Amíg a struktúra nem változik
meg, az összes szint önhatalmúlag
működik. Az XML adat
frissíthetô anélkül, hogy azt jelezni
kellene az információszerkesztônek;
vagy az XSLT változtatható,
vagy másolható más
célokra is, továbbá a látvány is
megváltoztatható CSS-sel. Nagy
elônye a modellnek, hogy az
XSLT szinte bármilyen dokumentumformátum
(például SVG,
XForms, XHTML 2.0) elôállítására
alkalmas.
Egy könyves példa
Egy egyszerű példát mutatok be
Önöknek, amely a legtöbb modern
keresôvel működik. (Javaslom,
hogy használják a
Firefox, az Internet Explorer,
vagy a Safari legutolsó verzióját).
Példánkban létrehozunk
egy könyvlistát. Elôször elkészítjük
az XML fájlt, ami semmi
mást nem tartalmaz, csak adatokat
– könyvcímeket és a szerzôk
neveit.
Mentsék el ezt a fájlt az asztalra,
majd nyissák meg: (a
nyitó és záró kisebb-nagyobb jelek
közti rész egy sorba kell,
hogy kerüljön – szerk.)
books.xml
<?xml version="1.0" encoding="UFT-8" ?>
<books>
<book>
<author>Roth, Philip </author>
<title>American Pastoral</title>
</book>
<book>
<author>Hesse, Hermann</author>
<title>The Glass Bead Game</title>
</book>
...
</book>
</books>
Egyszerűen lefordítva, az elsô
sor azt mondja: ”Ez egy XML dokumentum,
az 1.0 verzióját
használom UTF-8-cas kódolással”.
A <books> … </books> sorok között számos <books>
… </book> sort találunk, amelyek
tartalmaznak <author> …
</author> és <title> … </title>
sorokat. Ez egy egyszerű XML
fájl, amely minden formázástól
mentes – csak az alapvetô tartalmat
szolgáltatja.
Most készítsük el
az XSLT fájlt!
Mentsék el ezt a fájlt az asztalra
majd nyissák meg:
books.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
</xsl:stylesheet>
Ezek a sorok kicsit ijesztôbbnek
tűnnek, mint amilyenek valójában.
A második sor a dokumentum
alap eleme. Elengedhetetlenül
szükséges. Szintén elengedhetetlenül
szükséges a verzió és
a használt verzió érvényes
namespace megadása. A namespace
meghatározás ”xmlns:xsl="http://www.w3.org/1999/XSL/Transform"” egyszerűen
egy egységes azonosító annak
igazolására, hogy a keresô,
vagy az eszköz, amely elôadja
az XSLT-t, az ugyanarról a verzióról
beszél. Az természetes, ha
valaki most még nem érti meg a
namespace lényegét, de azt
meg kell érteni, hogy ezekre a
meghatározásokra szükség van.
Az elsô transzformáció
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>My Book Club</title>
</head>
<body>
<h2>Some Good Books </h2>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Valószínűleg a HTML mindenki
számára ismerôs. Az egyetlen
újdonság a HTML-tartalmat körülölelô
szöveg. Az XSLT egyik
lényege a minta-koncepció:
”Halló, XSL processzor! Ha talál
egy eredeti csomópontot, készítse
el a tartalmat abban a formátumban,
amit meghatároztam”.
Szóval hogyan egyesítsük a tartalmat
(books.xml) a struktúránkkal
(books.xsl)? Az egyszerűség
kedvéért csak annyit teszünk,
hogy az XSLT processzort
megadjuk a keresônek.
Adjuk a vastagon írt sort a
books.xml-hez:
<?xml version="1.0" encoding="UFT-8" ?>
<?xml-stylesheet type="text/xsl" href="books.xsl"?>
<books>
<book>
<author>Roth, Philip </author>
<title>American Pastoral</title>
</book>
<book>
<author>Hesse, Hermann</author>
<title>The Glass Bead Game</title>
</book>
...
</book>
</books>
Ez a sor megadja a keresônek,
hogy melyik XSLT fájlt használja
az átalakítás során. Mentsük
el a books.xml-t és nyissuk azt
ki a keresôben. A következôt
kell látnunk:
Some Good Books
Ha ezt a sort látják, akkor
gratulálok! Ezzel létrejött az elsô
átalakítás. Ez azt jelenti,
hogy az XSL megtalálta a megfelelô
elemet és az elvárásoknak
megfelelôen kezelte a HTML-t.
Az adatok kinyerése
Most nyerjük ki ténylegesen az
adatokat a fájlból. Ehhez néhány
utasítást kell adnunk az
XSL-hez. Adjuk a vastagon írt
sorokat a books.xml-hez:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>My Book Club</title>
</head>
<body>
<h2>Some Good Books </h2>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="books">
<ul id="booklist">
<xsl:apply-templates />
</ul>
</xsl:template>
<xsl:template match="book">
<li><em><xsl:value-of select="title" /></em> by <xsl:value-of select="author" /></li>
</xsl:template>
</xsl:stylesheet>
Bizonyára észrevették, hogy a
példában egyszerű HTML-k szerepelnek.
Csak annyit teszünk,
hogy elkészítjük az XML fájlból
a könyvek rendezetlen listáját.
Az XSLT nagyon hatékonyan
alkalmazza a mintákat, amelyek
végrehajtják a megadott instrukciókat.
A példában megkerestük
az eredeti csomópontot,
majd amikor a processzor megtalálta,
hozzáadtuk a HTML tartalmat.
Közvetlenül a <h2>Some Good Books</h2>
alatt a következôt látjuk:
<xsl:apply-templates />.
Ez magával vonja a következô
utasítást (ami a jelenlegi
példánkban a <xsl:template match="books">).
Amennyiben a <books> nodet
megtalálja, az <ul> és az illeszkedô
tag létrejön. Az
<xsl:apply-templates />
utasítás megismétlôdik, amely
a processzort a következô
<book> elemhez illeszkedô
mintára irányítja.
És ekkor van az, hogy a tartalmat
ténylegesen kinyerjük az
XML fájlból. Az <xsl:template match="book"> soron
belül található az <xsl:value-of select="title" />. Ez
arra utasítja a processzort, hogy
vegye ki a szöveget, amit a <title> tag-ok között talál a
xml fájlban. Ezután egy
következô utasítás kinyeri a
szerzô nevét: <xsl:value-of select="author" />. Bezárjuk
a mintát és mivel már mindent
feldolgoztunk, így az átalakítás
elkészült, a processzor kiadja
az eredményfát.
Az adatok rendezése
Az adatokat kinyertük és azok
ugyanolyan sorrendben vannak,
mint az XML fájlban voltak. Elôfordulhat,
hogy a könyvek listája
száz könyvet is tartalmaz
és szeretnénk azt a szerzô vezetékneve
szerinti alfabetikus
sorrendben látni. És jól jönne a
lapszámozás is…Szerencsére
csak egy rövid utasítást kell adnunk.
Adjuk a vastagon írt sort
a books.xsl-hez:
<xsl:template match="books">
<ul>
<xsl:apply-templates>
<xsl:sort select="author" />
</xsl:apply-templates>
</ul>
</xsl:template>
Néhány további apró utasítással
véglegesíthetjük munkánkat.
Ez az ismertetô csupán körvonalazza
az XSLT képességeit.
Számos egyéb módszerrel és
technikával rendelkezik, és néhányukat
sajnos csak egy keresô
támogat, vagy máshogyan
kell azokat telepíteni - ismerôsen
hangzik?. Egy stylesheet
kapcsolása az XML fájlban a
legtöbb keresôvel működik, így
ez egy jó módja az XSLT tanulásának
elkezdéséhez. Ha régebbi
keresôkkel szeretnék használni,
olyan nyelveket kell alkalmazni,
mint a JSP, a PHP, az
ASP.NET vagy a ColdFusion MX.
Ken Westin Ken Westin jelenleg a Tektronix fejlesztôje.
Korábban három évig Web
Managerként dolgozott a Pacific
Universitynél, valamint webes és interaktív
projekteken a Fordnál, a
Dodge-nál és a Subarunál.
|