Tải bản đầy đủ (.pdf) (52 trang)

Bài giảng Chương 4: XSL ngôn ngữ định kiểu mở rộng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (200 KB, 52 trang )

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 &lt; 5">Catagory A</xsl:when>
<xsl:when test=“@Price &lt; 5.5">Catagory B</xsl:when>
<xsl:when test="@Price &gt; 5.5">Catagory </xsl:when>
</xsl:choose>


</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
! "# $ %&'

(( $ ! &

) * !+ ,'-.!&,

/8


×