You are on page 1of 11

XSLT gi$ng nh m t trnh so n th o ngn ng

Page 1 of 11

XSLT gi ng nh m t trnh so n th o ngn ng


M c : Trung bnh Jake Miles, Tc gi t do, 17 07 2009 Tm hi u khi ni m XSLT nh l m t trnh so n th o ngn ng l p trnh, c bi t khi b n t o m t m ngoi XML pha tr c PostScript, t o ra cc t p PostScript t cc v n b n XML. Bi vi t ny gi i thi u khi ni m m t bi u m u nh l m t khi ni m ngn ng ng m nh, n n t ng c a PostScript, v cc l p c a s tr u t ng tham gia trong khi t o ra m t trnh so n th o XML-to-PostScript.

XSLT gi ng nh

XSLT cho php b n chuy n i d li u XML sang b t k nh d ng d li u khc. Thng th ng XSLT c hi u nh m t ngn ng chuy n i XML-t i-XML, l y m t ti li u XML nh m t u vo v chuy n i n sang c u trc XML khc (bao g m XHTML), nh ng th c s n c th c s d ng t o ra c cc u ra, ch khng ch XML. Khi c hi u theo cch ny, m t bi u m u XSLT th c s l m t cng c xc nh cc ngn ng m i, v c th hi u nh m t trnh so n th o ngn ng . Cch s d ng t trnh so n th o c v nh kh k l . Thng th ng, b n ngh v m t trnh so n th o nh l m t ngn ng chuy n cc m m con ng i c th ! c c sang ngn ng my mc ho c m d li u c" s# b my o. Ngn ng ch th ng, nh ng khng ph i lun lun, l m t nh d ng nh phn gi$ng nh m my. Theo ngh a ny, XSLT l m t cng ngh trnh so n th o. M t bi u m u XSLT xc nh ng m hi u m t ngn ng m i, m t ph "ng th c ngn ng XML, m n so n th o m t s$ m u khc, c th l m t ph "ng th c XML khc ho c m t s$ ngn ng khc.

M t v d khi ni m c a XSLT nh l m t trnh so n th o, n u b n mu$n t o ra m Java t XML, c th t o ra Java beans (m t m hnh thnh ph n) nh l m t ph n c a h th$ng nh x quan h $i t ng (object-relational), b n c%ng c th lm nh v y khi s d ng. M t Java bean l m t l p Java v i m t c u trc xy d ng nh s&n (ci m khng c nh ng ph n $i), m bi u hi n ph "ng php getter v setter ng i yu c u ! v thi t l p cc c tnh c a $i t ng. V d 1 a ra m t v d c a ti li u XML c nh ngh a m t l p Java bean trong m t ngn ng d a trn XML. V d 1. Ti li u XML xc nh m t l p Java bean

Ti li u XML ny t o m t thnh ph n <bean-class>, ch nh nhi u c tnh, v i tn v lo i Java km theo. 'y l m t ngn ng kh chnh xc (nh XML) xc nh m t l p Java bean trn kha c nh cc c tnh c a n. V d 2 th hi n XSLT, t o ra m Java t XML ny.

   
m t trnh so n th o
Cc t vi t t t c s d ng th ng xuyn CSS: Cascading Stylesheet (Bi u m u nhi u t ng) JVM: Java Virtual Machine (B my o Java) PDF: Portable Document Format (' nh d ng ti li u d( di chuy n) RTF: Rich Text Format (' nh d ng Rich Text) XHTML: Extensible Hypertext Markup Language (Ngn ng nh d u siu v n b n m# r ng) XML: Extensible Markup Language (Ngn ng nh d u m# r ng) XSLT: Extensible Stylesheet Language Transformation (Chuy n i ngn ng bi u m u m# r ng)

XSLT gi$ng nh m t trnh so n th o ngn ng

Page 2 of 11

V d 2. XSLT t o ra m t l p Java bean t XML


! """ "# ) ) ( * $$$ % & ' + (

) .

,- + .

) ) ( *

( /

) 0 ) . ) (

( * ) (

* ,- + * /

) * .

0 ) - + ) (

( *

, ) /

M u u tin ph h p v i cc thnh ph n <bean-class>, xu t ra m Java $i v i l p bean nh l v n b n, b $i ngh ch v i vi c xu t ra cc thnh ph n XML gi$ng nh cc v n b n XSLT th ng lm. Tr c tin, sinh ra cc bi n ring c a l p, m u chuy n cc ti u thnh ph n <property> sang m u instancevariable (bi n - tr ng h p) (m u ph h p v i cc thnh ph n "property" trong ph "ng th c instance-variable. Sau n sinh ra m t c u trc xy d ng m c nh, v chuy n cc thnh ph n <property> t i m u getter-and-setter sinh ra cc ph "ng php getter v setter c a property. V d 3 th hi n k t qu vi c chuy n m u XML thng qua bi u m u ny. V d 3.
) / / / ) ) ) . ) . ) ) . ) . ) ) 0 / ,- + 0 ) / , ) - + 0 / ,- + 0 , ) / ) - + 0 ,- + . ,- + /

u ra c a bi u m u XSLT
+

sinh ra cc l p Java bean

XSLT gi$ng nh m t trnh so n th o ngn ng

Page 3 of 11

. ) ) . . 0 ) / , ) - +

L p trn ch ng minh vi c s d ng XSLT xc nh m t ngn ng m i. T i y, bi u m u XSLT ng m xc nh m t ngn ng m i cho vi c xc nh cc khi ni m l p Java. B n c th s d ng m t bi u m u, nh l m t v d , trong m t h th$ng b n v) quan h $i t ng, sinh ra cc $i t ng Java ph h p v i cc b ng c" s# d li u, khi XML c sinh ra t cc c t c" s# d li u, ho c ph h p v i cc c u hnh XML cung c p t i ng i dng n"i XML c cung c p tr c ti p b#i chuyn vin pht tri n. N u b n b sung ngn ng ring XML v bi u m u XSLT t "ng ng, sau b n c th thm s h* tr t i vi c xc nh chnh xc cc l p quan h nh y u t$ m t-t i-m t (one-to-one), m t-t i-nhi u (one-to-many) v nhi u-t inhi u (many-to-many), trong tr ng h p bi u m u sinh ra m t "ng $i ph c t p duy tr danh sch cc $i t ng con, v m cy $i t ng ! v l u tr t v t i c" s# d li u SQL. M t khi b n xc c nh c ngn ng ngu n (ngn ng ring XML c s d ng xc nh cc $i t ng Java), b n c th d ch ngn ng XML sang m ph c t p nh b n mu$n, trong khi gi s th c thi logic , ci m c gi u t chuyn vin pht tri n cu$i cng, ng i ch ph i xc nh $i t ng h th$ng trn ph "ng di n ngn ng XML c p cao.

XSLT xc

nh cc ngn ng

m i

Khi c xem trong ng c nh ny, bi u m u XSLT ng m xc nh nh m t ngn ng , v m t bi u m u l y XML v d ch n sang m t d ng khc, cch t "ng t nh ng i so n th o Java l y m ngu n Java v d ch n sang m t lo t h ng d n my o. H n ch duy nh t l XSLT c thi t k x l u vo XML, do m ngu n ph i c xc nh nh m t ngn ng ring XML. Nhn d i m t cch khc, XSLT c th c s d ng xc nh cc trnh bao b c XML xung quanh cc ngn ng khc v cc nh d ng u ra, cc t "ng t m ngn ng Java c th c xem nh m t trnh bao b!c xung quanh gi h ng d n c a JVM. Do XML r t ph bi n v chu+n m c, v r t nhi u s h* tr cho n, xc nh m t ngn ng nh ngn ng ring XML c ngh a r,ng n s&n sng c hi u v c th d( dng c tch h p vo cc h th$ng khc (v d , cc h th$ng c thi t k s&n sng sinh ra u ra XML). N c%ng c th h p nh t v d nh m t ngn ng vo m t ng ng $ng d n, d ch d li u XML ngu n sang ngn ng m i, b!c nh d ng u ra mong mu$n. Do c m t kh-p n"i c a XML khi n n l m t ng vin xu t s-c b!c m t nh d ng u ra nh PDF hay PostScrip, lm n c th l p trnh sinh ra cc ti li u nh v y m khng c n cc ki n th c c n thi t v chi ti t c a c php ngn ng PDF hay PostScript.

T o ra Adobe PDF t

XML

Adobe t o ra s k t n$i h p l ny v i d n Adobe Mars, trong Adobe xc nh PDFXML, m t ngn ng ring XML m c th s d ng t o ra cc ti li u PDF (xem Ti nguyn). D n Mars v n ang c pht tri n, v s h* tr t$i thi u v i cc cng c v ti li u h ng d n. Cc ti li u Mars c%ng yu c u m t trnh b sung c bi t xem, tri ng c v i cc ti li u ang c xem b#i cc ch "ng trnh xem PDF hi n t i. N gi i thi u m t n n t ng hon ton m i t o ra cc ti li u di ng, v, nh v y, khng t "ng thch v i cc trnh xem PDF hi n t i. M t cch ti p c n khc t i m t nh d ng ti li u d a trn XML l xc nh m t ngn ng ring XML m c th c d ch sang m t nh d ng ang t n t i nh PDF s d ng m t bi u m u XSLT ho c m t lo t cc bi u m u th c thi vi c d ch ny. Ng i ta c th xc nh m t bi u m u XSLT m d ch tr c ti p cc c u trc XML sang m PDF, c th s

XSLT gi$ng nh m t trnh so n th o ngn ng

Page 4 of 11

d ng m c a d n Java iText nh m t h

ng d n $i v i bi u m u h p l.

Nh m t v d "n gi n h"n, m t cch ti p c n trung gian d ch t XML sang PostScript, v sau s d ng m t ch "ng trnh chuy n i PostScript-to-PDF m m# ti n hnh b c cu$i cng vi c so n th o sang nh d ng PDF (xemTi nguyn c ng d n t i cc cng c c a m m# PostScript-to-PDF). K t qu cu$i cng l b n c th t o ra cc ti li u PDF s d ng XML m t cch l p trnh.

M t v d

n gi n h n: t o ra PostScript t

XML

'$i v i v d "n gi n h"n ny t o ra PostScript, n"i b n c th t o ra nh d ng PDF s d ng m t cng c theo yu c u s d ng m m#, cu h.i u tin l c n bao nhiu XSLT s d ng. PostScript l m t ngn ng l p trnh m b n t cc ton h ng vo m t ng n x p, sau ng d ng m t ch c n ng t i chng m t quy c g!i l c php postfix, trong tn ch c n ng c xc nh sau s l p lu n. Do cu l nh PostScript nhn 3 v 7 l 3 7 mul. C ngh a r,ng " t 3 ln ng n x p, sau t 7 ln ng n c yu c u, b t ra hai kho n m c trong ng n x p v x p, sau g!i tnh n ng mul". Tnh n ng mul, khi nhn chng, sau a k t qu ln ng n x p. Do l nh PostScript 3 7 mul 2 add t "ng "ng v i bi u th c ton h!c (3 * 7) + 2. Ch c n ng mul nhn 3 v 7, t 21 ln ng n x p, sau s$ 2 c +y ln ng n x p, sau ch c n ng c ng c yu c u, a hai s$ ln ng n x p v c ng chng, t 23 ln ng n x p. PostScript sinh ra cc trang v n b n v ho c th in c v hon tr . B n t cc $i t ng v n b n v ho vo trang v i ng c nh h u t$ t "ng t v i v d v php tnh nhn v c ng pha trn. H th$ng k t h p c a PostScript t s$ g$c (0,0) t i gc pha d i bn tri c a trang, v ch a 72 i m m*i inch. Do , s k t h p (72,72) i di n s$ i m trn m*i inch c a gc bn tri, pha d i c a trang. V d , V d 4 di(n t PostScript trong vi c th hi n m t hnh trn. V d 4. PostScript th hi n m t hnh trn
1! 1! ! ! #2!

N v) m t cung trn t i i m (150, 150) trn b n v) (t "ng ng v i gc d i bn tri), bn knh 10, t gc 0 t i gc 360, ho c c m t vng trn. Gi$ng nh php nhn, cc ton h ng c +y l n l t ln ng n x p, sau ch c n ng arc (hnh cung) c yu c u, a 5 php tnh ln ng n x p v s d ng chng di(n t m t vng trn. V i s h ng d n PostScript ny, b n c th t o ra m t trang i m d li u trong m t vng phn tn. V d 5 th hi n m t bi u m u XSLT lm vi c ny. V d 5. Bi u m u XSLT t o ra m t vng phn tn PostScript
! """ "# $$$ % & ' (

"

) (

) (

( 1 ! #2!

Bi u m u ny a m t ti li u XML ch a cc thnh ph n <point> c a bi u m u <point x="30" y="50"/> v t o m t ti li u PostScript, phn b$ chng trn trang theo cc i m c bn knh 5, ph n h i m t t p h p cc i m d li u XML vo m t vng phn b$ tr c quan. L u yu c u t i showpage t i cu$i c a bi u

XSLT gi$ng nh m t trnh so n th o ngn ng

Page 5 of 11

m u m c cao nh t, th hi n showpage nh l m t trang c th in nay.

c nh ng g

c v) t tr

Thm l p lu n hon tr

ho

Vng phn b$ gi i thch ng d ng "n gi n nh t c a khi ni m ny s d ng XSLT t o ra PostScript v n l y cc thnh ph n XML v d ch chng tr c ti p sang m t cu l nh PostScript. Trong tr ng h p ny, thnh ph n XML ch a thng tin k t h p trong n. M!i th tr# nn ph c t p do cc thng tin k t h p bi n m t trong d li u (v nh khi d li u XML c t m$i quan h v i ho y PostScript). V d , chuy n m t b c pha trn vng phn b , hon tr m t ng ho t t p h p gi tr d li u XML i di n cho gi tr c t y yu c u r,ng XSLT tnh ton gi tr c t x nh trong V d 6. V d 6. XSLT d ch m t t p h p cc thnh ph n <temperature> sang dng
! """ "# ) ) 3 % 4 5 6 8 7 !! !! !!! !!! 4 9!! ) : " ) ) 7 5 ( ( ( ( ) -( ( ,,- = ,7 ,7 7 % 3 ; ,* ; , ,- < 7 6 7 8 < ) , ) $$$ % & ' (

ho PostScript

Bi u m u ny l y m t ti li u ch a cc thnh ph n <temperature> c a bi u m u <temperature temp="30"/>, v d ch chng m t ng n x p PostScript, hon tr m t ng ho c a cc m c nhi t ny. Bi u m u s d ng hm ton h!c XPath count() v position() tnh gi tr c t x c a cc i m trn ng ho . Do cc i m ph i c phn b u d!c theo trang, bi u m u tr c h t tnh ton cc i m s) xa bao nhiu b,ng cch chia gi tr pageWidth cho s$ cc thnh ph n <temperature> trong ti li u. Bi n xDelta l u tr k t qu , i di n cho s$ ph n t nh gi a m*i i m nhi t .
m c g c (root-level) ho t ng t "ng t nh trong v d phn b$ cc i m, hon tr Nhi t h ng d n $i v i cc thnh ph n <temperature> v sau yu c u showpage hon tr n i dung c a ) tnh gi tr to b nh ho trung gian. Bi u m u temperature (nhi t x b,ng cch nhn gi tr xDelta v i gi tr c ph n h i b#i hm ton h!c XPath position() (n"i ph n h i ch s$ c a n$t hi n t i trong t p h p cc n$t c l a ch!n c chuy n n bi u m u). N c%ng thm gi tr c a originX, ci m ch nh gi tr to x (x-coordinate) c a i m l ch v bn tri trong ho . N xu t ra gi tr ny ( +y n ln ng n x p PostScript trong ch "ng trnh u ra), v sau xu t ra gi tr y, n"i l cc thnh ph n nhi t nh chi u cao c a th , $originY + (@temp / $tempRange * $graphHeight). $originY ch-c ch-n i m th p nh t khng th p h"n y c a th , v @temp / $tempRange * $graphHeight th y r,ng t/ l c a nhi t so v i d i nhi t , v nhn v i chi u cao

XSLT gi$ng nh m t trnh so n th o ngn ng

Page 6 of 11

c a

th , t o ra gi tr y t "ng ng c a nhi t

c ch a trong chi u cao c a

th .

Hon tr m t trang cc s d ng XSLT

ng th ng trong PostScript

' th ng th0ng gi i thi u m t s$ l p lu n hon tr t i XSLT, v ngu n ti li u XML khng bao g m t t c thng tin k t h p trong cc th c hon tr ; bi u m u ph i tnh ton gi tr x v y c a m*i ng trong th t gi tr nhi t c cung c p. V n t "ng t x y ra khi hon tr m t trang v n b n sau. V d , n u b n c m t ti li u XML c a cc thnh ph n <line> c a m u <line height="15">hello there</line>, b n c th hon tr chng vo trang trong bi u m u trong V d 7. V d 7. XSLT d ch cc thnh ph n <line> sang PostScript
! """ "# ) ) 5 ? @ ! >9! $$$ % & ' (

" "

5 ! , " ) )

( ( (

( 7

) 5 ,- (

( 7 " " 7 ; *

? @

Bi u m u ny th hi n r t nhi u i u. K t qu cu$i cng l l y m t t p h p c a cc thnh ph n <line>, c a m u <line height="20">some text</line>, v t o ra cc cu l nh PostScript m hon tr cc dng sau khi cc dng khc r"i xu$ng trang, cho php cc dng thay i c1 ch v i cc bi n height, xc nh chi u cao c a v n b n. Bi u m u ny gi i quy t v n l n nh t lm sao duy tr gi tr to y cho dng v n b n ti p theo, gi tr m t ng b#i m t gi tr khc ti m n ng $i v i m*i dng c thm vo trang. 'y l m t v n khc gi i quy t h"n l dng th , n"i t t c cc i m gi tr b,ng nhau v kho ng cch v do c th d( dng nh v s d ng m t cng th c khai bo. Trong tr ng h p ny, kho ng cch gi a cc thnh ph n li n k c th khc ph thu c vo d li u trong m*i thnh ph n, v m t gi tr y c ng d n ph i c duy tr nh cc bi u m u d ch chuy n qua cc dng c a d li u trong ti li u ngu n. M t bi u m u quy (recursive) l y m t tham s$ gi i quy t v n ny. M t thnh ph n <xsl:param> xc nh m t l p lu n b n c th chuy n t i m t bi u m u khi b n yu c u n, thm nhi u s c m nh cho XSLT. Trong tr ng h p ny, n cho b n duy tr gi tr to y, chuy n gi tr y c c p nh t t i yu c u quy k ti p c a bi u m u dng. Bi u m u dng ch p nh n m t tham s$ y, c ngh a r,ng khi b n yu c u bi u m u dng b n chuy n m t gi tr cho tham s$ ny t i n, t "ng t nh chuy n m t l p lu n t i m t yu c u ch c n ng (function call). Nhi t t p h p cc c1 ch cho dng v n b n (v, do , chi u cao c a dng) s d ng c tnh chi u cao c a thnh ph n <line>. Dng ti p theo c a bi u m u di chuy n cc con tr. ho PostScript t i m t x

XSLT gi$ng nh m t trnh so n th o ngn ng

Page 7 of 11

c a 0 (l bn tri c a trang), v m t gi tr y c a $pageHeight - $y, v m t gi tr y PostScript l t "ng ng v i m t gi tr g$c t i gc d i bn tri c a trang, trong khi cc thnh ph n <line> trong d li u c s-p x p t cao t i th p. Gi tr $y # y l tham s$ y c a nhi t . Sau nhi t hi n th v n b n c a c ch a trong thnh ph n <line> s d ng PostScript th hi n cu l nh; m t chu*i v n b n PostScript d u ngo c "n. M nh cu$i cng c a bi u m u ki m sot s quy, yu c u bi u m u t "ng t v i d li u k ti p sinh ra ng th i c a thnh ph n <line> hi n t i, chuy n vo m t gi tr y c c p nh t v i chi u cao c a dng ny, nh v dng ti p theo c a th m c v n b n d i n. L u r,ng bi u m u # m c g$c c%ng yu c u bi u m u ny v i m t gi tr tham s$ y c a 0 b-t u dng quay l i c a trang.

D ch chuy n l p lu n hon tr t

XSLT sang PostScript

Bi u m u th bao g m m t s$ h p l cc tnh ton, v bi u m u hon l i cc dng v n b n c%ng bao g m m t s$ h p l cc l p lu n tnh ton to y. Do cc bi u m u ny l cc trnh so n th o th c s , vi c d ch d li u XML sang m t ngn ng l p trnh c quy trnh (l PostScript), l m t cch khc a t t c l p lu n hon tr vo XSLT, hon tr l p lu n trong PostScript c t o ra, v PostScript th c hi n cc tnh ton hon tr t i th i gian ch y ch khng ph i th c thi t i th i gian so n th o. 'y l m t s l a ch!n m lun lun hi n ra khi b n so n th o t m t ngn ng l p trnh sang ngn ng khc: cng vi c ph i lm trong trnh so n th o nhi u th no, v ph i l i cho ngn ng c t o ra t i th i gian ch y bao nhiu. Thng th ng b n mu$n lm nhi u nh t cng vi c c th t i th i gian so n th o s ho t ng. Do PostScript c thi t k lm n d( dng hon tr cc trang th v v n b n h"n, v XSLT c thi t k th c thi d ch d li u XML sang nh d ng khc, n "n gi n ho m!i th t o m*i ngn ng lm nh ng g t$t nh t, v d ch chuy n l p lu n hon tr ra kh.i v t i PostScript c t o ra. V d , m t cch khc c a bi u m u hon tr v n b n c a V d 7 , ci m duy tr gi tr to XSLT, l V d 8, th c hi n i u trong PostScript c t o ra. y trong

V d 8. Bi u m u XSLT khc hon tr cc dng v n b n c a trang, d ch chuy n cc tnh ton hon tr sang th i gian ch y PostScript
! """ "# ) ) $$$ % & ' (

>9 0 +

( ( ( 5 ! " . ( " ( ) ( ( ( (

, *

( 0

,-

Bi u m u m c g c (root-level) xc nh m t bi n PostScript g!i l /y, t p h p chi u cao c a trang trong cc i m (72 m*i inch), v xc nh m t hm ch c n ng g!i l text_line. /text_line c p t i

XSLT gi$ng nh m t trnh so n th o ngn ng

Page 8 of 11

m t m c vo (entry) trong t i n tra c u PostScript, cc n i dung trong d u ngo c mc ({}) ch a nh nh ngh a (def) t i k t n$i cu$i cng ngh a hm ch c n ng k t n$i t i m c vo , v k t n i tn m c vo text_line t i nh ngh a hm ch c n ng .
text-line t p h p cc bi n c c b t i cc bi n trn ng n x p gi tr v n b n v chi u cao c ngh a r,ng b n yu c u text_line trong nh d ng text height text_line (chi u cao v n b n, dng v n b n) (v d , (hello there) 20 text_line nh v dng "hello there" v i chi u cao 20 t i gi tr hi n t i c a y). text_line t p h p phng ch , s d ng gi tr chi u cao c cung c p nh

kho ng gi tr $i v i phng ch . Sau n di chuy n cc con tr. th t i to x 0 (c nh bn tri) v to y, v th hi n chu*i v n b n cho. Sau n thm chi u cao cho v gi tr y c v t p h p ton b bi n /y tnh t ng, ch y lin t c b m ng c y t i trang nh text_line.

' k t thc, bi u m u # m c g$c (root-level template) +y 0 ln ng n x p nh kh#i u gi tr y, yu c u m u dng v i t t c thnh ph n <line> trong ti li u ngu n. Do t t c l p lu n hi n t i ang trong hm PostScript text_line, b n thn m u dng l khng quan tr!ng m*i thnh ph n <line> d ch tr c ti p sang m t yu c u t i hm ch c n ng PostScript text_line. V i vi c PostScript qu n l t t c l p lu n hon tr , bi u m u d( dng xc nh m t ngn ng phong ph h"n, v d ton XHTML, cho php b n xc nh cc ti li u cc ti li u nh XHTML v so n th o chng vo ti li u PostScript (ci m s&n sng c chuy n sang PDF).

Cc l p tr u t

ng

Khi pht tri n m t bi u m u dnh cho m t ngn ng gi$ng nh XHTML, b n l i c m t c" h i v vi c m*i m u bi u c a b n hi u th no v PostScript, c ngh a r,ng m*i l p lu n PostScript g m c s hon tr chnh n. M t gi i php l t o cc m u cho cc th XHTML gi$ng nh <h1_>, <h2>, <h3> v <div>, m*i u ra cu l nh PostScript, gi$ng cc yu c u t i text_line, hon tr chnh n. Gi i php ny k t h p ch t ch) ngn ng c xc nh trong bi u m u (XHTML) v i ngn ng c a PostScript. Nh m t s l a ch!n khc, b n c th xc nh cc hm ch c n ng nh /h1, /h2/, /h3 v /div trong PostScript c hon tr , d ch m*i th XHTML vo m t yu c u t i hm ch c n ng t "ng ng c a n, cch t "ng t m trong V d 8 d ch cc th <line> tr c ti p sang cc yu c u t i hm ch c n ng PostScript text_line. Trong tr ng h p ny, m u bi u XSLT th c s xc nh m t ngn ng bao b!c XML xung quanh ngn ng b n v a xc nh trong PostScript trn ph "ng di n cc hm ch c n ng hi n c, v PostScript c t o ra c k t h p ch t ch) v i khi ni m c a XHTML. Trong c hai tr ng h p a nhi u ki n th c PostScript vo cc th XHTML, ho c nhi u ki n th c XHTML trong cc hm ch c n ng PostScript (b,ng cch t o ra m t hm ch c n ng PostScript cho t t c th XHTML) gi i php bao g m hai s l u m nn c tch ring bi t. L u th nh t l v n c a s hon tr m t trang v n b n, v n ny c ki m sot t$t h"n b#i ngn ng trang hon tr PostScript, v l u th hai l v n vi c xc nh ngn ng XHTML, m t v n c ki m sot t$t h"n b#i XSLT, ci m xc nh ngn ng ring XML. Tm l i, b n c ch* cho m t l p tr u t ng khc t i y, c th c thi nh hai bi u m u XSLT p d ng theo trnh t . Bi u m u u tin xc nh cc m u cho ngn ng XHTML, nh ng thay v d ch chng sang cc cu l nh PostScript ho c cc yu c u hm ch c n ng PostScript, n d ch chng sang m t ngn ng ring XML trung gian b#i bi u m u th hai. Bi u m u th hai xc nh m t ngn ng trung gian gi a XHTML v PostScript, t o ra cc th c n thi t xc nh m t trang cc thnh ph n sau. Bi u m u th hai d ch cc th ny sang m t t p h p tr!ng tm c a cc hm ch c n ng PostScript c n thi t hon tr m t trang v n b n sau. T p h p tr!ng tm cc hm ch c n ng bao g m cc hnh vi gi$ng nh qu n l cc gi tr con tr. x v y, gi bao b!c t ng , nh s$ trang, v hon tr cc thnh ph n v n b n. V d 8, d ch cc thnh ph n <line> sang cc yu c u t i cc hm ch c n ng PostScript text_line, l m t v d c a bi u m u trung gian th hai trn; n xc nh m t thnh ph n bao b!c, <line>, xung quanh m t hm ch c n ng PostScript text_line. Bi u m u u tin xc nh cc m u cho t t c cc th XHTML, m*i m u xu t ra cc th c xc nh trong bi u m u th hai, gi$ng nh <line>. V d , V d 9 th hi n m t t p h p con c a bi u m u XHTML. V d 9. Bi u m u XSLT d ch m t t p h p con c a XHTML sang m t ngn ng ring XML trung gian

XSLT gi$ng nh m t trnh so n th o ngn ng

Page 9 of 11

! """ "# ) ) 0 90 $$$ % & ' (

0 9

,-

7 90

,-

Bi u m u ny xc nh m t t p h p con nh. c a XHTML, d ch n sang ngn ng ring XML hon tr trang trung gian c a bi u m u th hai, m t ngn ng "flowing text" (dn v n b n). Bi u m u trong V d 9 l y hai tham s$, h1_height v h2_height, trnh yu c u xc nh c1 ch c a th <h1> v <h2>. V d , trnh yu c u c th phn tch m t bi u m u CSS v chuy n cc gi tr nh h1_height v h2_height d a trn cc ki u dng c xc nh. Bi u m u //h1//h2 d ch cc th ch nh XHTML <h1> v <h2> sang th lo i <line>, ci m ch xc nh m t dng v n b n v i m t chi u cao c th . Nguyn t-c chia tch ny, khuy n khch vi c s d ng b-t u b,ng hai bi u m u, cho php ti s d ng c a m t trong hai bi u m u, v d d ch XHTML sang m t vi nh d ng khc nh RTF, ho c d ch m t vi nh d ng khc nh RTF sang ngn ng ring "flowing page" (dn trang) trung gian c xc nh trong bi u m u th hai, c l) hon tr cc ti li u RTF nh PostScript. Khi b n gi l p lu n hon tr trong chnh PostScript, bi u m u XSLT c th t do xc nh ngu n ngn ng ring XML, v chia tch cc vai tr c a ch c n ng ch (l p lu n hon tr PostScript), v khi ni m ngn ng (bi u m u XSLT).

K t lu n
XSLT t khi c th y nh l m t trnh so n th o ngn ng , nh ng trong vi c xc nh d ch m t c u trc d li u sang m t c u trc khc, chnh l nh ng g c a XSLT. Nh m t trnh so n th o, m t bi u m u XSLT ng m xc nh ngn ng c a ti li u g$c. Do , b n c th s d ng n k t n$i cc ngn ng nh XHTML v i cc ngn ng khng lin quan gi$ng nh PostScript, ho c XML v Java, hon tr cc ngn ng sang cc nh d ng khc b,ng cch d ch l n l t sang ngn ng ch.

Ti nguyn
H ct p PostScript trn Wikipedia: N-m c ngu n g$c pha sau ngn ng m t ny th trong ch b n i n t v ch b n v n phng. Adobe PostScript 3: Xem trang ch c a cng ngh hnh nh v in n ny. PostScript Language Reference: '!c v ngn ng l p trnh trnh di(n c s d ng miu t s xu t hi n c a v n b n, hnh dng th , v cc hnh nh m u trn cc trang c in ra v hi n th . Adobe Mars Project: Tm hi u v s PDFXML. i di n thn thi n c a XML $i v i cc ti li u PDF g!i l ng c s d ng

XSLT gi$ng nh m t trnh so n th o ngn ng

Page 10 of 11

XSLT 2.0 recommendation, do World Wide Web (W3C) Consortium duy tr: '!c thm v c php v ng ngh a c a XSLT 2.0, m t ngn ng bi n i cc ti li u XML sang cc ti li u XML khc. What kind of language is XSLT? (Michael Kay, developerWorks, February 2001, updated April 2005): Th lo i ngn ng no l XSLT, n lm g, v t i sao n c thi t k theo cch ? Tm cc cu tr l i cho cc cu h.i ny. An XSLT style sheet and an XML dictionary approach to internationalization (Laura Menke, developerWorks, April 2001): M t v d v vi c XSLT c th h u ch nh th no trong cc v n c a th gi i th c t i. How an XSLT processor works (Benoit Marchal, developerWorks, March 2004): H!c thm v l thuy t ,ng sau XSLT v b n ch t quy c a m ho cho vi c l p trnh nhanh h"n trong XSLT. Create multiple files in XSLT 2.0 (Jack Herrington, developerWorks, March 2005): Khm ph cc v d c a ti li u k t qu XSLT khi th c hi n cc l i khuyn trong developerWorks ny. XSLT: Working with XML and HTML (Khun Yee Fung, Addison-Wesley, December 2000): Khm ph m t tham kh o ton di n v bi vi t t i XSLT. XSLT Functions: '!c thm tham kh o r ng h"n t trang web w3school.com. IBM XML certification: Tm hi u xem lm nh th no b n c th tr# thnh Chuyn vin ch ng nh n c a IBM v XML v cc cng ngh lin quan. XML technical library: Xem developerWorks XML Zone khuyn, cc bi h ng d n, v sch . c a IBM. c

c r t nhi u bi vi t v k2 thu t v l i

developerWorks technical events and webcasts: '!c ti p v cng ngh trong cc ph n ny. The technology bookstore: Tm ki m cc sch t i y v cc ch k2 thu t khc.

developerWorks podcasts: Nghe cc bi ph.ng v n th v v cc cu c th o lu n v cc chuyn vin pht tri n ph n m m. L y s n ph m v cng ngh ps2pdf: Xem cng c chuy n Preview: Th

i PostScript-to-PDF ho t

ng th no.

ng d ng Mac OS X ny

hi n th cc hnh nh v cc ti li u PDF.

IBM trial software for product evaluation: Xy d ng d n ti p theo c a b n v i ph n m m dng th c th t i tr c ti p t developerWorks, bao g m cc cng c pht tri n ng d ng v s n ph+m ph n m m trung gian t DB2, Lotus, Rational, Tivoli, v WebSphere. Th o lu n XML zone discussion forums: Tham gia v b t c di(n n tr!ng tm XML no t i y. XML zone discussion forums: Tham gia vo b t c cu c th o lu n lin quan developerWorks blogs: Ki m tra cc blogs ny v tham gia vo c ng n XML t i y.

ng developerWorks.

i nt v tc gi

XSLT gi$ng nh m t trnh so n th o ngn ng

Page 11 of 11

Jake Miles l m t nh pht tri n c thm nin cao t i Conde Nast, hi n ang lm vi c v i cc ng d ng Facebook, Myspace v OpenSocial, s d ng Java, PHP, Adobe Flex v Javascript. ng lm vi c nh m t nh pht tri n chuyn nghi p su$t 10 n m qua v t ng l m t h!c sinh khao kht v ham my m t khi ln 10. ng c%ng d y trn tinh th n tnh nguy n v tin r,ng b t c ai c%ng c th h!c b t c i u g n u cd y r rng

IBM, bi u t ng IBM, ibm.com, DB2, developerWorks, Lotus, Rational, Tivoli, v WebSphere l cc nhn hi u th "ng m i ho c nhn hi u th "ng m i c ng k c a T p on International Business Machines t i M2, cc n c khc, ho c c hai. Cc nhn hi u ny v cc thu t ng nhn hi u th "ng m i khc c nh d u trn s ki n u tin v nh ng thng tin ny v i bi u t ng thch h p ( ho c ), ch ra r,ng cc nhn hi u th "ng m i thng lu t ho c c ng k t i Hoa K c s# h u b#i IBM t i th i i m thng tin ny c cng b$. Nh ng nhn hi u th "ng m i nh v y c%ng l nh ng nhn hi u th "ng m i thng lu t ho c c ng k t i cc n c khc. Xem danh sch hi n t i c a cc nhn hi u th "ng m i IBM. Adobe, bi u t ng Adobe, PostScript, v bi u t ng PostScript ho c l cc nhn hi u th "ng m i c ng k ho c cc nhn hi u th "ng m i c a T p on Adobe Systems Incorporated t i Hoa K , v/ho c cc n c khc. Java v t t c cc nhn hi u th "ng m i d a trn Java l cc nhn hi u th "ng m i c a T p on Sun Microsystems t i Hoa K , cc n c khc ho c c hai. Tn cc d ch v , s n ph+m ho c cng ty khc c th l cc nhn hi u th "ng m i ho c cc nhn hi u d ch v c a cng ty khc. Tn c a cng ty, s n ph+m hay d ch v c th l nhn hi u ng k ho c nhn hi u d ch v c a ng i khc.