XPATH & XSLT Đặng Bác Văn Ngô Bá Nam Phương Công nghệ XML và Ứng dụng:

Slides:



Advertisements
Similar presentations
Môn: NGỮ VĂN Năm học: PHÒNG GD&ĐT NAM TR À MY TRƯỜNG PTDTBT THCS TRÀ DON Trà Don, ngày 26 tháng 10 năm 2015.
Advertisements

Giáo viên thực hiện: Lò Thị Nhung Đơn vị công tác: Trường THCS Búng Lao, huyện Mường Ảng, tỉnh Điện Biên. GIÁO ÁN ĐỊA LÍ 7 Chương II: Môi trường đới ôn.
HÀNH CHÍNH NHÀ NƯỚC TỪ CÁCH MẠNG THÁNG TÁM ĐẾN NAY
Quản trị Rủi ro thiên tai và Biến đổi khí hậu
BỘ Y TẾ VỤ TRANG THIẾT BỊ VÀ CÔNG TRÌNH Y TẾ
Báo cáo Cấu trúc đề thi PISA và Các dạng câu hỏi thi PISA
MỘT SỐ TÁC GIẢ TIÊU BIỂU ( ) Nhóm tự lực văn đoàn và phong trào thơ mới. Ngoài ra còn có các nhóm: Phong hóa, Ngày nay, Hà Nội báo (Huy Thông,
Rainforest Alliance đào tạo cho các nông trại trà ở Việt Nam
Kiểm thử và đảm bảo chất lượng phần mềm
PHẦN 1. HỆ ĐIỀU HÀNH WINDOWS. 2 Nội dung trình bày  1.1. Thao tác cơ bản sử dụng máy tính  1.2. Màn hình nền desktop  1.3. Quản lý tệp tin và thư mục.
Qua hàng ngàn năm dựng nước và giữ nước, dân tộc ta đã để lại nhiều bài học vô giá. Nổi bật trong đó là tinh thần đoàn kết, ý thức cộng đồng. Hai truyền.
1 ĐỒNG NAI ĐÁNH GIÁ TÌNH HÌNH VÀ ĐỀ XUẤT ÁP DỤNG HIỆU QUẢ MÔ HÌNH KINH TẾ DƯỢC TẠI BỆNH VIỆN ĐA KHOA ĐỒNG NAI NĂM 2017 Học viên: Nhóm 5 _ PP111.
CHÍNH SÁCH VÀ TRIỂN KHAI CHÍNH SÁCH BẢO MẬT
Thực hiện các cuộc họp quan trọng
MÔN NGHỀ TIN HỌC VĂN PHÒNG LỚP 11
ViÖn ChiÕn l­îc ph¸t triÓn
QUẢN TRỊ THÀNH TÍCH Performance Management
TÌM HIỂU VỀ WEB SERVICES VÀ XÂY DỰNG MỘT WEB SERVICE
Ủy ban Tài chính và Ngân sách của Quốc hội
VÀ PHẦN MỀM ỨNG DỤNG – ECUS5VNACCS
PGS.TS. Nguyễn Văn Hợp, Khoa Hoá
Tham gia Intel ISEF 2013 và một số kinh nghiệm chia sẻ
KHAI PHÁ DỮ LIỆU (DATA MINING)
THÔNG TIN MÔN HỌC Quản trị chuỗi cung ứng (Supply Chain Management): 45 tiết Tài liệu nghiên cứu Quản lý chuỗi cung ứng –Th.S. Nguyễn Kim Anh, Đại học.
THAM VẤN TÂM LÝ Bài Giới Thiệu.
Software testing Kiểm thử phần mềm
Ngôn ngữ lập trình C/C++
KHÓA TẬP HUẤN CÔNG BẰNG GIỚI VÀ CÁC DỰ ÁN PHÁT TRIỂN
Đức Hồng Y Nguyễn Văn Thuận cầu bầu
WELCOME TO MY PRESENTATION
Module 6 – Managing for Sustainability
Khởi động SXSH với công cụ quản lý nội vi 5S
Nguyễn Văn Tuấn, Nguyễn Đình Nguyên
BỆNH HỌC: VIÊM GAN SIÊU VI CẤP
CHẾ ĐỘ PHÁP LÝ VỀ CÔNG TY CỔ PHẦN
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
TRUYỀN THÔNG VỀ PHÒNG CHỐNG BỆNH DO VI RÚT ZIKA 1
CHAPTER 7: TREES (Cấu trúc cây)
Theo mặc định toàn bộ dung lượng dùng lưu trữ, các thư mục hiện có trong các Partition , các dịch vụ hệ thống đã được chia sẽ cho mọi người được phép sử.
Thương mại điện tử HÀ VĂN SANG.
MKTNH Version 3 Giảng viên: ThS. Thái Thị Kim Oanh
Chương 6 Thiết kế hướng đối tượng
DI SẢN THẾ GIỚI WORLD HERITAGE CỔ THÀNH HUẾ VIỆT NAM
Ngôn ngữ học khối liệu - khoa học liên ngành về ngôn ngữ ứng dụng
Chương 4 Phân tích kiến trúc (Architecture)
PHÁT TRIỂN CHƯƠNG TRÌNH ĐÀO TẠO DỰA TRÊN CHUẨN ĐẦU RA
Giữa bối cảnh cạnh tranh ngày càng khốc liệt, Khởi Nghiệp đang trở thành một làn sóng mới trong thị trường kinh doanh ở Việt Nam bởi mô hình giàu sức.
UBND TỈNH ĐIỆN BIÊN SỞ GIÁO DỤC VÀ ĐÀO TẠO
Quản lý con người Quản lý người làm việc như những cá nhân và theo nhóm.
BÀI GIẢNG QUẢN LÝ DỰ ÁN HỆ THỐNG THÔNG TIN CHƯƠNG 1
Giới Thiệu Tiêu Đề I.
Operators and Expression
… nghe kể rằng ... Click.
Trách nhiệm giải trình của doanh nghiệp ở diện rộng
QUYỀN LỰC VÀ MÂU THUẪN TRONG NHÓM
MODULE 5: CÔNG CỤ 5S - QUẢN LÝ VẬN HÀNH CƠ BẢN
Chương 2 Căn bản về Cung và Cầu 1.
CUỘC THI THIẾT KẾ BÀI GIẢNG ĐIỆN TỬ ELEARNING
PHÒNG GIÁO DỤC VÀ ĐÀO TẠO
QUẢN TRỊ TÍNH ĐA DẠNG THÔNG QUA NHIỀU HOẠT ĐỘNG KINH DOANH
GIỚI THIỆU CHUNG VỀ THIẾT KẾ DỮ LIỆU
HƯỚNG DẪN MÃ HÓA BỆNH TẬT, TỬ VONG THEO ICD - 10
Giảng viên: TS. Phan Bách Thắng
Trường CĐ CNTT HN Việt Hàn
Chương 8 NHỮNG VẤN ĐỀ QUẢN TRỊ CƠ BẢN TRONG THỰC THI CHIẾN LƯỢC
KHAI THÁC THỦY SẢN ĐẠI CƯƠNG
So sánh marketing online & marketing truyền thống
Chương 4: Tập gõ 10 ngón Chương 2: Học cùng máy tính
Chµo mõng c¸c thÇy c« gi¸o ®Õn dù héi thi gi¸o viªn giái
Presentation transcript:

XPATH & XSLT Đặng Bác Văn Ngô Bá Nam Phương Công nghệ XML và Ứng dụng: Đại học Khoa học Tự Nhiên Khoa Công nghệ Thông tin Công nghệ XML và Ứng dụng: XPATH & XSLT Đặng Bác Văn Ngô Bá Nam Phương 05/2006

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/> <CCC/> <DDD> </DDD> </AAA> - /AAA/BBB: nút B là con của A - /AAA/DDD/CCC: C – con D – con A (gốc) //: Nút ở độ sâu bất kì //CCC: nút CCC ở độ sâu bất kì

*: Chọn tất cả các node với tên bất kỳ XPATH XPATH: Cú pháp cơ bản *: Chọn tất cả các node với tên bất kỳ <AAA> <BBB> <CCC/> </BBB> </AAA> - /AAA/*: Tất cả các nút con trực tiếp của AAA - /*/BBB: Tất cả các nút B ở cấp thứ 2 //*: TẤT CẢ CÁC NODE

XPATH XPATH: Cú pháp cơ bản [ ]: 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/> <BBB> <CCC> content </CCC> </BBB> </AAA> - /AAA/BBB[1]: Nút BBB thứ 1 (con của AAA) - /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 @: Truy xuất đến thuộc tính XPATH: Cú pháp cơ bản <AAA> <BBB id=“b1”/> <BBB id=“b2”/> <CCC name=“ccc”/> <CCC/> </AAA> - /AAA/BBB[@id]: Những node BBB có thuộc tính id - /AAA/CCC[@name=“ccc”]: Những node CCC có giá trị thuộc tính name = ccc - /AAA/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: hàm đếm <AAA> <BBB> <DDD/> <BBB/> <CCC> <CCC/> </AAA> - //*[count(DDD)=2]: Tất cả các node có đúng 2 thẻ con DDD - //*[count(*)=1]: 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(): Lấy tên thẻ, starts-with(), contains(): xử lý chuỗi <AAA> <BBB> <DDD/> <BBB/> <ECC> <EEE/> <ECC/> <CFB/> </AAA> string-length(): chiều dài chuỗi - //*[name()=‘DDD’]: Những node có tên là DDD - //*[starts-with(name(), ‘E’)]: Những node có tên bắt đầu bằng ‘E’ - //*[contains(name(), ‘B’)] Những node mà tên có chứa ‘B’ - //*[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 ? <AAA> <BBB> <DDD/> <DDD> </EEE> </DDD> </BBB> </AAA> Chọn ra tất cả thẻ “con cháu” của BBB ?

XPATH XPATH: Axis – dùng để chọn các node trong mối quan hệ với node hiện thời child:: : Chọn tất cả node con của node hiện thời <AAA> <BBB> <DDD/> <BBB/> <ECC> <EEE/> <ECC/> <CFB/> </AAA> - /AAA/child::ECC /AAA/ECC - //BBB/child::* /AAA/BBB/DDD

XPATH XPATH: Axis descendant:: : Tất cả các thẻ “con cháu” <AAA> <BBB> <DDD> <EEE/> </DDD> </BBB> </AAA> /AAA/child::* <AAA> <BBB> <DDD> <EEE/> </DDD> </BBB> </AAA> /AAA/descendant::* descendant-or-self:: = descendant:: + context node

XPATH XPATH: Axis parent:: : Thẻ cha Thẻ cha của BBB Thẻ cha của ECC <AAA> <BBB> <DDD/> <BBB/> <ECC> <EEE/> <ECC/> <CFB/> </AAA> - //BBB/parent::* Thẻ cha của BBB - //EEE/parent::ECC Thẻ cha của ECC

/AAA/BBB/DDD/EEE/parent::* /AAA/BBB/DDD/EEE/ancestor::* XPATH XPATH: Axis ancestor:: : Tất cả các thẻ “cha ông” <AAA> <BBB> <DDD> <EEE/> </DDD> </BBB> </AAA> /AAA/BBB/DDD/EEE/parent::* <AAA> <BBB> <DDD> <EEE/> </DDD> </BBB> </AAA> /AAA/BBB/DDD/EEE/ancestor::* ancestor-or-self:: = ancestor:: + context node

//EEE/following-sibling::* //EEE/preceding-sibling::* XPATH XPATH: Axis following-sibling:: : Tất cả các thẻ “em” preceding-sibling:: : Tất cả các thẻ “anh” <AAA> <BBB> <DDD/> <EEE/> <FFF/> <GGG/> </BBB> </AAA> <AAA> <BBB> <DDD/> <EEE/> <FFF/> <GGG/> </BBB> </AAA> //EEE/following-sibling::* //EEE/preceding-sibling::* <AAA> <BBB> <DDD/> <EEE/> <FFF/> <GGG/> </BBB> </AAA>

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 thh //BBB/following::* <AAA> <BBB> <DDD/> </BBB> <CCC> <EEE/> </CCC> </AAA> <AAA> <BBB> <DDD/> </BBB> <CCC> <EEE/> </CCC> </AAA> //EEE/preceding::*

XPATH XPATH: Axis <AAA> - //EEE/ancestor::* <BBB> <DDD/> </BBB> <CCC> <EEE> <FFF/> </EEE> <GGG/> </CCC> </AAA> - //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: Chuyển đổi cấu trúc của tài liệu xml (thành 1 tài liệu xml khác, html…) Là một tập cáck khuôn mẫu (template) và xử lý tương ứng Khác ngôn ngữ lập trình - XSLT chỉ định nghĩa các qui tắc chuyển đổi, việc thực hiện chuyển đổi phải nhờ một chương trình khác XML Chương trình (C#, VB.NET…) XSLT XML HTML 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 <xsl:template>: dùng để định nghĩa các template <xsl:stylesheet version = '1.0‘ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:template match=“…"> <h1> <xsl:value-of select="//title"/> </h1> <h2> <xsl:value-of select="//author"/> </h2> </xsl:template> ….. </xsl:stylesheet> 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 <xsl:value-of> Rút trích nội dung nằm trong các thẻ XML và kết xuất ra file kết quả Các thẻ được rút trích nội dung đượ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ả <hocsinh> <hoten>Nguyen Van A</hoten> <mssv>0412341</mssv> </hocsinh> <xsl:stylesheet….> <xsl:template match=“/”> <h1><xsl:value-of select=“//hoten”/></h1> <h2><xsl:value-of select=“//mssv”/></h2> </xsl:template> </xsl:stylesheet> </h1> <h1> Nguyen Van A <h2> 0412341 </h2> Nếu bỏ dấu “//” ??

XSLT a1 a2 <xsl:stylesheet…………> </xsl:stylesheet> <xsl:template> <source> <a1>a1</a1> <a2>a2</a2> </source> -Không có template Áp dụng xử lý mặc định: tiếp tục so khớp cho tất cả thẻ con của thẻ hiện hành -Không có template Mặc định: trả ra nội dung của thẻ a1 a2 <xsl:stylesheet…………> </xsl:stylesheet> <xsl:template match=“/”> </xsl:template> <xsl:apply-templates/>

XSLT <xsl:for-each> 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 <root> <hoten id=“1”>Nguyen Van A</hoten> <hoten id=“2”>Nguyen Thi B</hoten> </root> id=1hoten=Nguyen Van A Id=2hoten=Nguyen Thi B <xsl:stylesheet….> <xsl:template match=“/”> <xsl:for-each select = “//hoten”> <xsl:text>id=</xsl:text> <xsl:value-of select=“@id”/> <xsl:text>hoten=</xsl:text> <xsl:value-of select=“.”/> </xsl:for-each> </xsl:template> </xsl:stylesheet>

XSLT <xsl:sort>: Thực hiện sắp xếp trên file output <root> <hoten>Tran Van A</hoten> <hoten>Nguyen Thi B</hoten> </root> Nguyen Thi B Tran Van A <xsl:stylesheet….> <xsl:template match=“/”> <xsl:for-each select = “//hoten”> <xsl:sort order=“ascending” select=“.”/> <xsl:value-of select=“.”/> </xsl:for-each> </xsl:template> </xsl:stylesheet> <root> <value>1</value> <value>9</value> <value>20</value> </root> ?????

XSLT <xsl:sort data-type> <root> <value>1</value> <value>20</value> <value>9</value> </root> Kết quả: 1 9 20 <xsl:stylesheet….> <xsl:template match=“/”> <xsl:for-each select = “//value”> <xsl:sort data-type=“number” select=“.”/> <xsl:value-of select=“.”/> </xsl:for-each> </xsl:template> </xsl:stylesheet> Nếu không xác lập thì data-type = “text”

XSLT <xsl:if test> <root> <value>1</value> Kết quả: 1,9,20 <xsl:stylesheet….> <xsl:template match=“/”> <xsl:for-each select = “//value”> <xsl:sort data-type=“number” select=“.”/> <xsl:value-of select=“.”/> <xsl:if test=“not (position()=last())”> <xsl:text>,</xsl:text> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet>

XSLT <xsl:choose> <root> <value>A</value> <value>B</value> </root> Kết quả: 30 <xsl:stylesheet….> <xsl:template match=“/”> <xsl:for-each select = “//hoten”> <xsl:choose> <xsl:when test = “A”/> <xsl:text>30</xsl:text> </xsl:when> …… </xsl:choose> </xsl:for-each> </xsl:template> </xsl:stylesheet>

XSLT <xsl:element>, <xsl:attribute> <root> <sinhvien id=“1”>Nguyen Van A</sinhvien > <sinhvien id=“2”>Tran Thi B</sinhvien > </root> Kết quả: <StudentList> <Student StudentId=“1” /> <Student StudentId=“2” /> </StudentList> <xsl:stylesheet….> <xsl:template match=“/root”> <xsl:element name=“StudentList”> <xsl:for-each select = “sinhvien”> <xsl:element name=“Student”> <xsl:attribute name=“StudentId” > <xsl:value-of select=“@id” /> </xsl:attribute> </xsl:element> </xsl:for-each> </xsl:element > </xsl:template> </xsl:stylesheet>

XSLT XSLT: Tạo các node (thẻ) và tạo thuộc tính Các hàm tính toán và format số Tạo các node (thẻ) và tạo thuộc tính Khai báo và sử dụng biến Các hàm boolean Các hàm xử lý chuỗi Các hàm copy node http://www.zvon.org/

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 Trong ASP.NET, dùng xml control XmlDocument xdoc = new XmlDocument(); xdoc.Load (xml_file ); XslTransform xsl = new XslTransform(); XmlTextWriter wt = new XmlTextWriter( out_htm_file , System.Text. UTF8Encoding.UTF8 ); try { xsl.Load( xslt_file ); xsl.Transform(xdoc,null,wt); } catch (Exception ex) MessageBox.Show(ex.Message); finally wt.Close(); Trong ASP.NET, dùng xml control