CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 190

190
Chương 5: XML

<td>ID</td><td>Name</td><td>Price</td>

<xsl:apply-templates select="Items/Item"/>

</table></body></html>

</xsl:template>

<xsl:template match="Items/Item">

<tr>

<td><xsl:value-of select="@id"/></td>

<td><xsl:value-of select="Name"/></td>

<td><xsl:value-of select="Price"/></td>

</tr>

</xsl:template>

</xsl:stylesheet>

Về cơ bản, mọi XSL stylesheet gồm một tập các template. Mỗi template so trùng với các phần
tử trong tài liệu nguồn và rồi mô tả các phần tử được so trùng để tạo nên tài liệu kết quả. Để
so trùng template, tài liệu XSLT sử dụng biểu thức XPath, như được mô tả trong mục 5.6.
Stylesheet vừa trình bày ở trên (orders.xslt) gồm hai template (là các con của phần tử
stylesheet gốc). Template đầu tiên trùng khớp với phần tử

Order

gốc. Khi bộ xử lý XSLT tìm

thấy một phần tử

Order

, nó sẽ ghi ra các thẻ cần thiết để bắt đầu một bảng HTML với các tiêu

đề cột thích hợp và chèn dữ liệu về khách hàng bằng lệnh

value-of

(ghi ra kết quả dạng text

của một biểu thức XPath). Trong trường hợp này, các biểu thức XPath (

Client/@id

Client/Name

) trùng với đặc tính

id

và phần tử

Name

.

Kế tiếp, lệnh

apply-templates

được sử dụng để phân nhánh và xử lý các phần tử

Item

nằm

trong. Điều này là cần thiết vì có thể có nhiều phần tử

Item

. Mỗi phần tử

Item

được so trùng

bằng biểu thức

Items/Item

(nút gốc

Order

không được chỉ định vì

Order

chính là nút hiện tại).

Cuối cùng, các thẻ cần thiết sẽ được ghi ra để kết thúc tài liệu HTML.
Nếu thực thi phép biến đổi này trên file orders.xml (đã trình bày trong mục 5.6), bạn sẽ nhận
được kết quả (tài liệu HTML) như sau:

<html>

<body>

<p>

Order <b>ROS-930252034</b>

for Remarkable Office Supplies</p>

<table border="1">

<td>ID</td>

<td>Name</td>

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.