Gi ng viên: Nguy n
c C ng
Website:
Email:
0
I. GI I THI U V XSL
II. T O TÀI LI U XSLT
III. XSL nâng cao
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
/
2 (
3
4
XSL -> Extension Style Language
XSL
chuy n d li u c a xml ra d ng html.
XSL chia làm hai lo i:
XSLT (XSL Transformation):ngôn ng XSL chuyên v
chuy n d ch - th c hi n vi c rút trích d li u XML
a
vào khuôn d ng HTML
XSLFO (XSL Formating Object):ngôn ng XSL
chuyên v
nh d ng- cung c p các thu c tính nh
d ng tài li u cho phong phú và a d ng h n nh font
ch , màu s c, hình nh
Ghi chú: XSLFO có ch c n ng t ng t CSS nh ng ch a
c linh ng và uy n chuy n nên ta ch s d ng XSLT
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
1
(56(7
1.
2.
3.
4.
5.
6.
7.
3
(
S
chuy n i d li u
Các lo i nút (node) mà XSLT x lý
C u trúc t ng quát file XSL
M t s ph n t XSL
Các l nh xsl
M t s hàm thông d ng
Thao tác trên file xsl
! "# $ %&'
(( $ ! &
c
) * !+ ,'-.!&,
9
:
; <
C U TRÚC CÂY
D li u u
vào(tài li u
XML c n
chuy n i)
C U TRÚC CÂY
B x lý XSL
T P H!P CÁC
NODE
3
D li u u ra(
tài li u k t qu
c hi n th )
XSL stylesheet
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
8
> <5
?( @ 6
Có 7 lo i nút mà b x lý XSL nh n d ng và x lý
c là:
1. Document root (Nút g c)
n i kh"i
2. Attribute (Thu c tính)
giá tr thu c tính c a tag.
3. Comment (Chú thích)
d li u chu#i v$n b n ghi chú
4. Element (Ph n t )
tên c a ph n t th% và t&p các ph n t con
gi a th% óng và th% m" n u có.
5. Namespace (không gian tên)
gi chu#i
6. Pocessing instructor (Ch th x
7. Text (v n b n)
lý)
! "# $ %&'
u tài li u chuy n d ch.
nh danh URI c a không gian tên
gi n i dung chu#i ch' th x lý ã lo i b( hai ký
t
nh d ng là <? và ?>.
d li u text n)m gi a th% óng và th% m"
(( $ ! &
) * !+ ,'-.!&,
=
D EFG! EH
I JE K
-.
)
<?xml version=“1.0”?>
xmlns:xsl=“http://www. w3. org/TR/WD-xsl”|
xmlns:xsl=“ /><xsl:template ../>
- ->
</xsl:stylesheet>
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
C
D EFG! EH
I JE K
-.
)
NHÚNG TÀI LI U XSLT VÀO TÀI LI U XML
<?xml version="1.0" encoding="UTF-8"?>
d n n file xsl"?>
<!--C u trúc tài li u XML-->
! "# $ %&'
(( $ ! &
ng
) * !+ ,'-.!&,
L
( N O P (Q
(
Template
Apply-templates
value-of
sort
copy-of
copy
…
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
M
TU
V.E),W.
'E)X
Cú pháp:
<xsl:template match=“Xpath”>
<!- - Các ph n t XSLT - ->
<!- - Các ph n t HTML - ->
</xsl:template>
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
RS
TU
V.E),W.
'E)X @
EEB
Ý ngh*a:
Template là n n t ng c a ki n trúc lu&t c b n mà XSLT
s d ng
S d ng template
n i dung trong ó xu t hi n nh m t
ngõ xu t
Các thu c tính c a template:
Thu c tính match
Thu c tính name
Thu c tính mode, s d ng khi mu n x lý cùng m t
ph n nh ng trong các template khác nhau.
Chú ý: c n ph i có ít nh t m t template trong toàn b tài
li u c a chúng ta.
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
RR
TU
V.'WW.0E),W.
'E)VX
Cú pháp:
<xsl:apply-templates select = “Xpath”/>
Ví d :
<xsl:template match="/">
<xsl:apply-templates select="person/name"/>
</xsl:template>
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
R/
TU
V.'WW.0E),W.
'E)VX @
EEB
Ý ngh*a:
c dùng bên trong m t template.
nh ngh*a m t t&p các node
c x lý.
X lý b t k+ template ‘con’ (ph n t con c a ph n t
xét).
K t h p thu c tính select
x lý node c th
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
ang
R1
TU
V.'WW.0E),W.
'E)VX
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="composition">
<xsl:value-of select="title"/>
</xsl:template>
</xsl:stylesheet>
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
R
Y *Z TU
V.'WW.0E),W.
'E)VX
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsl=" />xmlns:fo=" /><xsl:template match="/">
<html> <xsl:apply-templates /> </html>
</xsl:template>
<xsl:template match="Tour/TourOperator/OperatorName">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="Tour/TourOperator/Type">
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
R8
TU
V.[
'.)0&K
X
Cú pháp:
<xsl:value-of select = “Xpath”/>
Ví d :
(bài t&p s 1)
L y giá tr t i nút OperatorName
<xsl:value-of select=“Tour/TourOperator/Name”/>
T
ng t t i nút th 2
<xsl:value-of select=“Tour/TourOperator[2]/Name”/>
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
R=
Y *Z [
'.)0&K
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsl=" />xmlns:fo=" /><xsl:template match="/Tours/TourOperator">
<xsl:value-of select="Type"/>
Lien lac:
<xsl:value-of select=“@contact"/>
</xsl:template>
</xsl:stylesheet>
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
RC
<Magazines>
<Magazine Price="5.95">
<Title>SQL Server magazine</Title>
<Publisher>Penton</Publisher>
</Magazine>
<Magazine Price="4.95">
<Title>Web Techniques</Title>
<Publisher>CMP</Publisher>
</Magazine>
<Magazine Price="4.99">
<Title>Wireless Business and Technology</Title>
<Publisher>Sys-con media</Publisher>
</Magazine>
<Magazine Price="5.95">
<Title>MSDN</Title>
<Publisher>CMP</Publisher>
</Magazine>
</Magazines>
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
RL
>
3
<xsl:if>
<xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:for-each>
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
RM
TU
V.-K
X
Cú pháp:
<xsl:if test=“bi u th c”>
Kh i l nh
</xsl:if>
Ý ngh*a:
Ví d :
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
/S
Y *Z TU
V.-KX
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsl=" >
<xsl:template match="/">
<xsl:for-each select="Magazines/Magazine">
<xsl:if test="@Price>5">
chu de: <xsl:value-of select="Title"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
/R
TU
V.\%) X
Cú pháp:
<xsl:when test=“bi u th c”>
Kh i l nh th c hi n
</xsl:when>
Ý ngh*a
Ví d :
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
//
TU
V.!%&&V)X]
TU
V.\%) X
Cú pháp:
<xsl:choose>
<xsl:when test=“bi u th c”>….</xsl:when>
<xsl:when test=“bi u th c”>….</xsl:when>
…….
<xsl:otherwise>…</otherwise>
</xsl:choose>
Ý ngh*a
Ví d
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
/1
^ %_'
Giá tr c a thu c tính test là m t bi u th c so
sánh ho,c m t Xpath.
K t qu c a bi u th c là true khi nó tr v m t
trong các giá tr sau:
M t con s khác zero
M t b node có ít nh t m t node
M t m nh (fragment) Tree
M t text string không ph i là tr ng r#ng (nonempty
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
/
Y *Z TU
V.!%&&V)X]
TU
V.\%) X
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet .. >
<xsl:template match="/">
<xsl:for-each select="Magazines/Magazine">
<xsl:value-of select="Title"/><xsl:choose>
<xsl:when test="@Price < 5">Catagory A</xsl:when>
<xsl:when test=“@Price < 5.5">Catagory B</xsl:when>
<xsl:when test="@Price > 5.5">Catagory </xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
! "# $ %&'
(( $ ! &
) * !+ ,'-.!&,
/8