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

XSLT pot

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 (456.59 KB, 49 trang )

XSLT
XSLT
Phạm Hồng Phong - SoICT – HUST
XSLT
Biến ñổi tài liệu XML với XSLT
Chương trình XSLT
 Là một tài liệu XML
 Chỉ bao gồm các Thẻ: chuyển tài liệu XML
sang
các
dạng
khác
: HTML, XML, PDF …
sang
các
dạng
khác
: HTML, XML, PDF …
Ví dụ:
 Tài liệu XML
<San_pham Ten=“Xa phong” Gia=“15.000”>
 Tài liệu HTML trên trang Web
Mặ hàng Xà phòng có giá là 15.000 d
2
Xử lý XSLT
Input XML
document
XSLT
Processor
Output
XML


document
XSLT
Template
XSLT
Stylesheet
XSLT
 Cấu trúc tổng quát chương trình XSLT
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl= /><xsl:template match="/" >
/* Thân chương trình – tập các lệnh hay các thẻ
xử lý ñể biến ñổi tài liệu XML */
</xsl:template>
</xsl:stylesheet>
4
Ví dụ
 Ví dụ biến ñổi XML sang dạng văn bản
<Person Name=“Phạm Hồng Phong" />
=> “Hi các bạn, tên tôi là Phạm Hồng Phong”
<?xml version="1.0" encoding="UTF-8" ?>
<
xsl:stylesheet
version="1.0"
<
xsl:stylesheet
version="1.0"
xmlns:xsl=" /><xsl:output method="text"/>
<xsl:template match="/" >
Hi các bạn, tên tôi là
<xsl:value-of select="/Person/@Name"/>

</xsl:template>
</xsl:stylesheet>
5
Ví dụ
 Ví dụ với tài liệu XML
<Items>
<Item Name=“Xa_phong” Cost=“15.000”
Quantity=“2”>
<Item Name=“
Khan_mat
” Cost=“20.000”
<Item Name=“
Khan_mat
” Cost=“20.000”
Quantity=“3”>
</Items>
=> tập tin văn bản có nội dung:
Tổng số tiền mua hàng là 90.000
6
Ví dụ
<?xmlversion="1.0"encoding="UTF-8" ?>
<xsl:stylesheetversion="1.0"xmlns:xsl="http://ww
w.w3.org/1999/XSL/Transform">
<xsl:outputmethod ="text"/>
<xsl:template match="/" >
Tổng
số
tiền
mua
hàng


Tổng
số
tiền
mua
hàng

<xsl:value-of select="//Item[1]/@Cost *
//Item[1]/@Quantity + //Item[2]/@Cost”*
//Item[2]/@Quantity”/>
</xsl:template>
</xsl:stylesheet>
7
Thực hiện chương trình
Thực hiện chương trình XSLT:
 Soạn thảo các tệp tài liệu XML và chương
trình XSLT bằng một trình Editor bất kì

Chạy
chương
trình
:

Chạy
chương
trình
:
• Trên các ứng dụng viết bằng các ngôn ngữ
khác nhau - nhúng vào ứng dụng
• Trên trình duyệt Web để kết xuất thông tin

– Tập tin XML nguồn:
<?xml-stylesheet type="text/xsl" href= đường dẫn tới
tệp XSLT ?>
– Gõ URL tới tệp XML trên trình duyệt
8
So khớp
Mẫu so khớp:
<xsl:template match=“Chuỗi so khớp" >
Các thẻ xử lý
</xsl:template>
Thực hiện so khớp:
<xsl:apply-templates />
 Thuộc tính chọn các nút con select có thể
được bỏ qua <=> select =”*”
9
So khớp
<?xmlversion="1.0"encoding="utf-8" ?>
<Order OrderID=“Or003">
<OrderDetail ID=“Od001" >
<Item Name=“Xa phong" />
<Item Name=“Bot giat" />
<Item Name=“Khan mat" />
<Item Name=“
Nuoc
khoang
" />
<Item Name=“
Nuoc
khoang
" />

< /OrderDetail>
….
<OrderDetail ID=“Od001" >
<Item Name=“Xa phong" />
<Item Name=“Bot giat" />
<Item Name=“Khan mat" />
<Item Name=“Nuoc khoang" />
< /OrderDetail>
</Order>
10
So khớp
Kết xuất thông tin về các mặt hàng
<?xmlversion="1.0"encoding="UTF-8" ?>
<xsl:stylesheetversion="1.0"xmlns:xsl="
g/1999/XSL/Transform">
<
xsl:outputmethod
="html" />
<
xsl:outputmethod
="html" />
<xsl:template match="/" >
<xsl:apply-templates select=“Order" />
</xsl:template>
<xsl:template match=“Order”>
<xsl:value-of select=“OrderID”
Các chi tiết các ñơn hàng: <br />
11
So khớp
<xsl:apply-templates select=“OrderDetail" />

</xsl:template>
<xsl:template match=“OrderDetail">
<xsl:value-of select="@ID"/>
<br />
<
xsl:apply
-
templates select=“Item" />
<
xsl:apply
-
templates select=“Item" />
</xsl:template>
<xsl:template match=“Item">
<xsl:value-of select="@Name"/>
<br />
</xsl:template>
</xsl:stylesheet>
12
Trích rút thông tin
 Thẻ trích xuất xsl:value-of
 Lấy thông tin từ trực tiếp nút : thẻ select
 Lấy thông tin từ một nút vào biến qua thẻ
xsl:variable, sau đó mới đưa vào thẻ value-of
 Cú pháp lấy thông tin
 Từ nút:
<xsl:value-of select=“Đường dẫn Xpath” />
 Từ biến:
<xsl:value-of select=“@Biến” />
 Tạo một biến

<xsl:variable name=“Tên_biến”
select=“Đường dẫn Xpath” />
13
Trích rút thông tin
Ví dụ tệp XML, tính tiền phải trả
<Items>
<Item Name=“Xa_phong”
Cost=“15.000” Quantity=“2”>
Cost=“15.000” Quantity=“2”>
<Item Name=“Khan_mat”
Cost=“20.000” Quantity=“3”>
</Items>
14
Trích rút thông tin
<?xmlversion="1.0"encoding="UTF-8" ?>
<xsl:stylesheetversion="1.0"xmlns:xsl="
g/1999/XSL/Transform">
<xsl:outputmethod ="text"/>
<xsl:templatematch="/" >
<
xsl:variable
name=“Money1“
<
xsl:variable
name=“Money1“
select="//Item[1]/@Cost" />
<xsl:variable name=“Money2“
select="//Item[2]/@Cost" />
Số tiền phải trả là:
<xsl:value-of select="$Money1 + $Money2"/>

</xsl:template>
</xsl:stylesheet>
15
Biểu thức ñiều kiện
Khi tính toán dữ liệu từ tệp XML nguồn,
các xử lý có thể rẽ nhánh, 2 cách
 Thẻ xsl:if: xử lý một điều kiện

Thẻ
xsl:choose
:
xử

nhiều
điều
kiện

Thẻ
xsl:choose
:
xử

nhiều
điều
kiện
 Chỉ một điều kiện được thỏa
16
Biểu thức ñiều kiện
Cú pháp thẻ xs:if
<xsl:if test=“Logic Operation" >

/* Các lệnh xử lý*/
</xsl:if>
Biểu thức logic
 Toán hạng: các biến, các biểu thức Xpath
 Toán tử: các phép tính toán +-*/, phép so
sánh (>,>=,!=, …), phép and, or, not …
17
Biểu thức ñiều kiện
 Ví dụ
<?xmlversion="1.0"encoding="UTF-8" ?>
<xsl:stylesheetversion="1.0"xmlns:xsl=" />L/Transform">
<xsl:outputmethod ="text" />
<xsl:template match="/" >
<xsl:variable name=“Cost1" select="/Items/Item[1]/@Cost" />
<
xsl:variable
name=“Cost2" select="/Items/Item[2]/@Cost" />
<
xsl:variable
name=“Cost2" select="/Items/Item[2]/@Cost" />
Mặt hàng giá trị hơn là:
<xsl:if test="$Cost1> $Cost2" >
<xsl:value-of select =" /Items/Item[1]/@Name "/>
</xsl:if>
<xsl:if test="$Cost1 &lt;=$Cost2" >
<xsl:value-of select =" /Items/Item[2]/@Name "/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
18

Biểu thức ñiều kiện
 Cú pháp thẻ xs:choose
<xsl:choose>
<xsl:when test=“Logic Operation1 " >
/* Các lệnh xử lý 1*/
</xsl:when>
<xsl:when test=" Logic Operation2 " >
/* Các lệnh xử lý 2*/
/* Các lệnh xử lý 2*/
</xsl:when>
<xsl:otherwise >
/* Các lệnh xử lý khác*/
</xsl:when>
</xsl:choose>
19
Biểu thức ñiều kiện
Tìm mặt hàng có giá trị hơn bằng cách sử
dụng thẻ xsl:choose ?
20
Cấu trúc lặp
Cần lặp lại các lệnh xử lý trên nhiều thẻ
của tệp XML nguồn
Thẻ lặp xsl:for-each
 Cú pháp
<xsl:for-each select=“Đường dẫn Xpath ">
/* Các lệnh xử lý mỗi vòng lặp*/
</xsl:for-each>
 Các lệnh xử lý có thể sử dụng đường dẫn
tương đối từ nút hiện tại
21

Cấu trúc lặp
 Ví dụ ñọc ra thông tin từ tệp XML
<?xml version="1.0" encoding="utf-8" ?>
<KHOA_VIEN Ten=“Viện CNTT&TT">
<Bo_Mon Ten=“Hệ thống thông tin" />
<Bo_Mon Ten=“Công nghệ phần mềm" />
<Bo_Mon Ten=“Truyền thông & Mạng" />
<Bo_Mon Ten=“Khoa học máy tính" />
<Bo_Mon Ten=“Kĩ thuật máy tính" />
</KHOA_VIEN>
22
Cấu trúc lặp
<?xmlversion="1.0"encoding="UTF-8" ?>
<xsl:stylesheetversion="1.0"xmlns:xsl=" />1999/XSL/Transform">
<xsl:outputmethod ="html" />
<xsl:template match="/" >
<xsl:value-of select="/KHOA_VIEN/@Ten"/>
<
br
/>
<
br
/>
Danh sách các Bộ môn: <br />
<xsl:for-each select="//Bo_Mon" >
<xsl:value-of select="@Ten"/>
<br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

23
Hàm
Viết chương trình XSLT với tất cả các thẻ
xử lý ñược ñặt trong một bộ thẻ
<xsl:template>
 Chương trình khó đọc, viết, bảo trì
 Không tái sử dụng được
Giải pháp: ñóng gói các xử lý nhỏ trong
một ñơn vị - “Hàm” – một bộ thẻ
<xsl:template>
24
Hàm
Khai báo hàm
<xsl:template match=“Đường dẫn Xpath">
/* Các lệnh của Hàm*/
</xsl:template>
Gọi hàm – so khớp nhiều lần(nhiều thẻ)
<xsl:apply-templates select=“Đường dẫn
Xpath" />
25

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×