Tài liệu Công nghệ XML và ứng dụng: Xpath và xslt: XPATH & XSLT 
Công nghệ XML và Ứng dụng: 
/ 
Đại học Khoa học Tự Nhiên 
Khoa Công nghệ Thông tin 
Nội dung 
XPATH 
- Các biểu thức XPATH thông dụng 
- Axes 
XSLT 
Lập trình (C#) 
Nội dung 
XPATH 
- Là các biểu thức dùng để truy xuất đến một hoặc 
nhiều thẻ trong tài liệu XML 
- Được sử dụng trong XSLT để chuyển đổi cấu trúc 
nội dung tài liệu XML 
XPATH 
XPATH: Cú pháp cơ bản 
/: Đường dẫn tuyệt đối bắt đầu từ node gốc của tài liệu 
đến 1 node cụ thể 
- /AAA: nút gốc 
- /AAA/BBB: nút BBB là con của AAA 
- /AAA/DDD/CCC: CCC – con DDD – con 
AAA (gốc) 
//: Nút ở độ sâu bất kì //CCC: nút CCC ở độ sâu bất kì 
XPATH 
XPATH: Cú pháp cơ bản 
- /AAA/*: Tất cả các nút con trực tiếp của AAA 
*: Chọn tất cả các node với tên bất kỳ 
-/*/BBB: Tất cả các nút BBB ở cấp thứ 2 
( node con trực tiếp của node gốc ) 
//*: TẤT CẢ CÁC NODE 
XPATH 
XPATH: Cú pháp cơ bản 
 content 
- /AAA/BBB[1]: Nút BBB thứ 1 (con của AAA) 
[ ]: Truy xuất đến các node theo thứ tự nào đó h...
                
              
                                            
                                
            
 
            
                 33 trang
33 trang | 
Chia sẻ: Khủng Long | Lượt xem: 1587 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang mẫu tài liệu Công nghệ XML và ứng dụng: Xpath và xslt, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
XPATH & XSLT 
Công nghệ XML và Ứng dụng: 
/ 
Đại học Khoa học Tự Nhiên 
Khoa Công nghệ Thông tin 
Nội dung 
XPATH 
- Các biểu thức XPATH thông dụng 
- Axes 
XSLT 
Lập trình (C#) 
Nội dung 
XPATH 
- Là các biểu thức dùng để truy xuất đến một hoặc 
nhiều thẻ trong tài liệu XML 
- Được sử dụng trong XSLT để chuyển đổi cấu trúc 
nội dung tài liệu XML 
XPATH 
XPATH: Cú pháp cơ bản 
/: Đường dẫn tuyệt đối bắt đầu từ node gốc của tài liệu 
đến 1 node cụ thể 
- /AAA: nút gốc 
- /AAA/BBB: nút BBB là con của AAA 
- /AAA/DDD/CCC: CCC – con DDD – con 
AAA (gốc) 
//: Nút ở độ sâu bất kì //CCC: nút CCC ở độ sâu bất kì 
XPATH 
XPATH: Cú pháp cơ bản 
- /AAA/*: Tất cả các nút con trực tiếp của AAA 
*: Chọn tất cả các node với tên bất kỳ 
-/*/BBB: Tất cả các nút BBB ở cấp thứ 2 
( node con trực tiếp của node gốc ) 
//*: TẤT CẢ CÁC NODE 
XPATH 
XPATH: Cú pháp cơ bản 
 content 
- /AAA/BBB[1]: Nút BBB thứ 1 (con của AAA) 
[ ]: Truy xuất đến các node theo thứ tự nào đó hoặc theo chỉ mục. 
Ngoài ra, có thể dùng để chỉ định biểu thức điều kiện chọn lựa node 
- /AAA/BBB[2]: Nút BBB thứ 2 (con của AAA) 
- /AAA/BBB[last()]: Nút BBB cuối cùng 
- /AAA/BBB[CCC=“content”]: Nút BBB thứ 
3 (có nút con CCC với nội dung là content ) 
XPATH 
XPATH: Cú pháp cơ bản 
- /AAA/BBB[@id]: 
@: Truy xuất đến thuộc tính 
- /AAA/CCC[@name=“ccc”]: 
- /AAA/CCC[@*]: 
Những node BBB có thuộc tính id 
Những node CCC có giá trị thuộc tính 
name = ccc 
Những node CCC có thuộc tính 
- /AAA/CCC[not(@*)]: Những node CCC KHÔNG có thuộc tính 
XPATH 
XPATH: Cú pháp cơ bản 
- //*[count(DDD)=2]: 
count: hàm đếm 
- //*[count(*)=1]: 
Tất cả các node có đúng 2 thẻ con DDD 
Tất cả các node có đúng 1 thẻ con (tên 
thẻ con là gì cũng được) 
XPATH 
XPATH: Cú pháp cơ bản 
- //*[name()=„DDD‟]: 
name(): Lấy tên thẻ, starts-with(), contains(): xử lý chuỗi 
- //*[starts-with(name(), „E‟)]: 
- //*[contains(name(), „B‟)] 
Những node có tên là DDD 
Những node có tên bắt đầu bằng „E‟ 
Những node mà tên có chứa „B‟ 
string-length(): chiều dài chuỗi 
- //*[string-length(name())=3] 
Những node có chiều dài tên thẻ là 3 
XPATH 
XPATH: Cú pháp cơ bản 
Chọn ra tất cả thẻ “con cháu” của 
BBB ? 
child:: : Chọn tất cả node con của node hiện thời 
XPATH 
XPATH: Axis – dùng để chọn các node trong mối quan hệ 
với node hiện thời 
- /AAA/child::ECC 
/AAA/ECC 
- //BBB/child::* 
/AAA/BBB/DDD 
XPATH 
XPATH: Axis 
descendant:: : Tất cả các thẻ “con cháu” 
/AAA/child::* /AAA/descendant::* 
descendant-or-self:: = descendant:: + context node 
XPATH 
XPATH: Axis 
parent:: : Thẻ cha 
- //BBB/parent::* 
Thẻ cha của BBB 
- //EEE/parent::ECC 
Thẻ cha của EEE, tên node cha là ECC 
XPATH 
XPATH: Axis 
ancestor:: : Tất cả các thẻ “cha ông” 
/AAA/BBB/DDD/EEE/parent::* /AAA/BBB/DDD/EEE/ancestor::* 
ancestor-or-self:: = ancestor:: + context node 
following-sibling:: : Tất cả các thẻ “em” cùng cấp với node hiện hành 
XPATH 
XPATH: Axis 
preceding-sibling:: : Tất cả các thẻ “anh” cùng cấp với node hiện hành 
//EEE/following-sibling::* 
//EEE/preceding-sibling::* 
XPATH 
XPATH: Axis 
following:: : Tất cả các thẻ có thẻ mở xuất hiện sau thẻ đóng của 
thẻ hiện hành 
preceding::: Tất cả các thẻ có thẻ đóng xuất hiện trước thẻ mở của thẻ 
hiện hành 
//BBB/following::* 
//EEE/preceding::* 
XPATH 
XPATH: Axis 
- //EEE/ancestor::* 
- //EEE/descendant::* 
- //EEE/following::* 
- //EEE/preceding::* 
- //EEE/self::* 
5 axis trên tạo thành 5 phân 
hoạch của tài liệu xml 
Không overlap nhau 
“Or” ( | ) lại sẽ cho kết quả là 
tất cả các node của tài liệu 
Nội dung 
XPATH 
- Các biểu thức XPATH thông dụng 
- Axes 
XSLT 
Lập trình (C#) 
XSLT 
XSLT: 
• eXtensible Stylesheet Language Transformation 
• Sử dụng các khuôn mẫu (template) để biến đổi cây 
nguồn (source tree) thành cây đích (result tree) 
• XSLT chuyển đổi XML thành HTML, PDF, ASCII text, 
RTF, XML 
• XSLT sử dụng cú pháp XML 
• Cách thức hoạt động 
• Chương trình sẽ duyệt tài liệu xml (duyệt cây) 
• - Với mỗi node khớp với khuôn mẫu định nghĩa trong file 
XSLT, sẽ được xử lý như định nghĩa trong file XSLT 
XSLT 
XSLT 
Transformation 
Engine 
XSLT 
Document 
XML 
Document 
Result 
Document 
XSLT 
<xsl:stylesheet version = '1.0„ 
xmlns:xsl='> 
.. 
XSLT 
• Các thẻ XSLT cơ bản: 
• 
• 
• 
• 
• 
• 
• 
XSLT 
: dùng để định nghĩa các khuôn mẫu – tập 
các luật 
.. 
Khi gặp những thẻ thỏa đk “” thì 
thực hiện những chỉ thị sau 
Biểu thức XPATH 
XSLT 
 Rút trích nội dung nằm trong các thẻ XML ( 
inner text hay thuộc tính của node ) và kết xuất ra file kết quả 
 Nguyen Van A 
 0412341 
Nguyen Van A 
0412341 
Nếu bỏ dấu “//” ?? 
Nội dung rút trích được xác định thông qua thuộc tính select 
Nếu select trả về một tập các thẻ thì nội dung tất cả các thẻ này 
đều được kết xuất ra file kết quả 
XSLT 
 Duyệt và xử lý thông tin từng thẻ trong tập thẻ kết 
quả được chọn ra từ thuộc tính select 
 Nguyen Van A 
 Nguyen Thi B 
 id= 
 hoten= 
id=1hoten=Nguyen Van A 
Id=2hoten=Nguyen Thi B 
XSLT 
: Thực hiện sắp xếp trên file output 
 Tran Van A 
 Nguyen Thi B 
Nguyen Thi B 
Tran Van A 
XSLT 
 1 
 20 
 9 
Kết quả: 
1 
9 
20 
Nếu không xác lập 
thì data-type = “text” 
XSLT 
 1 
 20 
 9 
 , 
Kết quả: 
1,9,20 
XSLT 
 A 
 B 
 30 
 20 
Kết quả: 
30 
20 
XSLT 
 Áp dụng template cho node hiện tại hoặc 
các node con của nó 
 Nguyen Van A 
 Nguyen Thi B 
 id= 
 hoten= 
id=1hoten=Nguyen Van A 
Id=2hoten=Nguyen Thi B 
XSLT 
, 
 Nguyen Van A 
 Tran Thi B 
Kết quả: 
Nội dung 
XPATH 
- Các biểu thức XPATH thông dụng 
- Axes 
XSLT 
Lập trình (C#) 
Lập trình 
XmlDocument xdoc = new XmlDocument(); 
xdoc.Load (xml_file ); 
XslTransform xsl = new XslTransform(); 
XmlTextWriter wt = new XmlTextWriter( out_htm_file , Encoding.UTF8); 
try 
{ 
 xsl.Load( xslt_file ); 
 xsl.Transform(xdoc,null,wt); 
} 
catch (Exception ex) 
{ 
 MessageBox.Show(ex.Message); 
} 
finally 
{ 
 wt.Close(); 
} 
            Các file đính kèm theo tài liệu này:
 tailieu.pdf tailieu.pdf