XSLT - Phạm Hồng Phong
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
Bạn đang xem trước 20 trang tài liệu XSLT - Phạm Hồng Phong, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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 …
Ví dụ:
Tài liệu XML
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
<xsl:stylesheet version="1.0"
xmlns:xsl=>
/* 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 */
4
Ví dụ
Ví dụ biến ñổi XML sang dạng văn bản
=> “Hi các bạn, tên tôi là Phạm Hồng Phong”
<xsl:stylesheet version="1.0"
xmlns:xsl="">
Hi các bạn, tên tôi là
5
Ví dụ
Ví dụ với tài liệu XML
<Item Name=“Xa_phong” Cost=“15.000”
Quantity=“2”>
<Item Name=“Khan_mat” Cost=“20.000”
Quantity=“3”>
=> 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ụ
<xsl:stylesheetversion="1.0"xmlns:xsl="
w.w3.org/1999/XSL/Transform">
Tổng số tiền mua hàng là
<xsl:value-of select="//Item[1]/@Cost *
//Item[1]/@Quantity + //Item[2]/@Cost”*
//Item[2]/@Quantity”/>
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:
• 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:
Các thẻ xử lý
Thực hiện so khớp:
Thuộc tính chọn các nút con select có thể
được bỏ qua select =”*”
9
So khớp
….
10
So khớp
Kết xuất thông tin về các mặt hàng
<xsl:stylesheetversion="1.0"xmlns:xsl="
g/1999/XSL/Transform">
<xsl:value-of select=“OrderID”
Các chi tiết các ñơn hàng:
11
So khớp
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:
Từ 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ả
<Item Name=“Xa_phong”
Cost=“15.000” Quantity=“2”>
<Item Name=“Khan_mat”
Cost=“20.000” Quantity=“3”>
14
Trích rút thông tin
<xsl:stylesheetversion="1.0"xmlns:xsl="
g/1999/XSL/Transform">
<xsl:variable name=“Money1“
select="//Item[1]/@Cost" />
<xsl:variable name=“Money2“
select="//Item[2]/@Cost" />
Số tiền phải trả là:
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ử lý 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
/* Các lệnh xử lý*/
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ụ
<xsl:stylesheetversion="1.0"xmlns:xsl="
L/Transform">
Mặt hàng giá trị hơn là:
$Cost2" >
18
Biểu thức ñiều kiện
Cú pháp thẻ xs:choose
/* Các lệnh xử lý 1*/
/* Các lệnh xử lý 2*/
/* Các lệnh xử lý khác*/
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
/* Các lệnh xử lý mỗi vòng lặp*/
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
22
Cấu trúc lặp
<xsl:stylesheetversion="1.0"xmlns:xsl="
1999/XSL/Transform">
Danh sách các Bộ môn:
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ẻ
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ẻ
24
Hàm
Khai báo hàm
/* Các lệnh của Hàm*/
Gọi hàm – so khớp nhiều lần(nhiều thẻ)
<xsl:apply-templates select=“Đường dẫn
Xpath" />
25
Hàm
Ví dụ kết xuất tên của các Bộ môn
<xsl:stylesheetversion="1.0"xmlns:xsl="
9/XSL/Transform">
Danh sách các Bộ môn:
26
Biến ñổi tệp XML thành HTML
XSLT
processor
hello.xml
hello.html
27
hello.xsl
Biến ñổi tệp XML thành HTML
Mục ñích: ñưa nội dung của tệp XML lên trang
Web. Ví dụ:
<xsl:stylesheetversion="1.0"xmlns:xsl="http
://www.w3.org/1999/XSL/Transform">
28
Biến ñổi tệp XML thành HTML
<xsl:template match=“Ho_ten“
Họ và tên ñầy ñủ là:
29
Biến ñổi tệp XML thành HTML
Tệp XML
<Ho_ten Ho=“Phạm Hồng”
Ten=“Phong”>
=>Kết quả trên trang Web:
Họ và tên ñầy ñủ là: Phạm Hồng Phong
30
Biến ñổi tệp XML thành HTML
Tạo một danh sách chọn trên trang HTML từ
tệp XML
Sử dụng thẻ select và option trong HTML
Cú pháp
....
<xsl:apply-templates select=“Đường dẫn
Xpath tới danh sách" />
....
31
Biến ñổi tệp XML thành HTML
<xsl:template match=“Đường dẫn Xpath tới
một phần tử trong danh sách" >
/* Lệnh ñưa giá trị ra */
32
Biến ñổi tệp XML thành HTML
Ví dụ ñưa ra danh sách các Bộ môn của Viện
CNTT&TT
<xsl:stylesheetversion="1.0"xmlns:xsl="
w.w3.org/1999/XSL/Transform">
33
Biến ñổi tệp XML thành HTML
Danh sách các
Bộ môn:
34
Biến ñổi tệp XML thành HTML
Đưa nội dung trang XML vào trang web
theo cấu trúc cây: sử dụng thẻ ul, ol
Đưa nội dung vào bảng (table): sử dụng
thẻ table, tr và td
35
Biến ñổi tệp XML thành XML
Tạo một tài liệu XML mới từ nội dung một
tài liệu XML ñã có
Trích rút thông tin cần
Tái cấu trúc lại tệp XML
Tạo thẻ mới từ giá trị nút và thuộc tính
của một thẻ cũ trong tài liệu XML ban ñầu
Dùng các lệnh xử lý xsl:element và
xsl:attribute
36
Biến ñổi tệp XML thành XML
Tạo thẻ mới trong tệp XML ñích, lệnh
xsl:element . Cú pháp lệnh:
/* Thẻ xử lý thuộc tính
Thẻ khác*/
37
Biến ñổi tệp XML thành XML
Tạo thuộc tính mới cho một thẻ mới, lệnh
xsl:attribue. Cú pháp lệnh:
<xsl:attribute name=“Tên thuộc tính của
thẻ mới" >
/* Các lệnh lấy giá trị của thuộc tính*/
/* Các lệnh khác */
38
Biến ñổi tệp XML thành XML
Ví dụ chương trình XSLT tạo tệp XML mới
có nút con tạo thành từ các thuộc tính
trong tệp XML ban ñầu như sau:
<Order Customer=“Phạm Hồng Phong"
Date=“07/04/2013" Money=“200.000" >
39
Biến ñổi tệp XML thành XML
<xsl:stylesheet version="1.0“
xmlns:xsl="
Transform">
<xsl:output method ="xml“ indent="yes"
/>
40
Biến ñổi tệp XML thành XML
<xsl:variable name =“Name_buy“ select ="@Customer"
/>
xsl:element name=“
<xsl:element name=“Money” value="{$Money_buy}“
/>
< xsl:element name=“Customer”
value="{$Name_buy}" />
41
Biến ñổi tệp XML thành XML
Sao chép thẻ: sử dụng các thẻ xsl:copy và
xsl:attribute
Tạo một thẻ mới với nội dung và thuộc tính
giống như thẻ cũ trong XML ban đầu
Cú pháp
<xsl:for-each select=“Xpath tới danh sách các
thuộc tính" >
42
Biến ñổi tệp XML thành XML
Ví dụ chương trình XSLT biến ñổi mọi
thuộc tính trở thành các nút con trong tài
liệu XML mới
<xsl:stylesheet version="1.0“
xmlns:xsl="
nsform">
43
Biến ñổi tệp XML thành XML
44
Biến ñổi tệp XML thành XML
Sao chép toàn bộ một thẻ bằng 2 cách
Sử dụng kết hợp các lệnh xsl:copy và
xsl:attribute
Sử dụng lện xsl:copy-of (đệ quy cho tất cả
các nút con và thuộc tính bên trong của thẻ)
45
Sắp xếp các thẻ
Mục ñích: sắp xếp các thẻ mới trong tệp
tin XML mới theo thứ tự nào ñó
Sử dụng kết hợp thẻ xsl:sort và thẻ xsl:apply-
templates.
Cú pháp
<xsl:sort order="accending|descending"
select=“Attribute" />
Đưa sắp xếp vào hàm so khớp
......
46
Sắp xếp các thẻ
Ví dụ tệp XML
XML Tutorial
HTML Tutorial
47
Sắp xếp các thẻ
<xsl:stylesheet version="1.0"
xmlns:xsl="">
48
49