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

pdf49 trang | Chia sẻ: lylyngoc | Lượt xem: 2903 | Lượt tải: 1download
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
Tài liệu liên quan