1 / 31

XPATH & XSLT

XPATH & XSLT. Công nghệ XML và Ứng dụng:. 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.

peers
Download Presentation

XPATH & XSLT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XPATH & XSLT Công nghệ XML và Ứng dụng:

  2. Nội dung XPATH - Các biểu thức XPATH thông dụng - Axes XSLT Lập trình (C#)

  3. 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

  4. 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> <CCC/> </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ì

  5. 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> <CCC/> </BBB> </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

  6. 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/> <BBB> <CCC> content </CCC> </BBB> <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 )

  7. XPATH XPATH: Cú pháp cơ bản @: Truy xuất đến thuộc tính <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

  8. XPATH XPATH: Cú pháp cơ bản count: hàm đếm <AAA> <BBB> <DDD/> <DDD/> <BBB/> <CCC> <DDD/> <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)

  9. 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

  10. XPATH XPATH: Cú pháp cơ bản <AAA> <BBB> <DDD/> <DDD> </EEE> </DDD> </BBB> </AAA> Chọn ra tất cả thẻ “con cháu” của BBB ?

  11. 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

  12. 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

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

  14. 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

  15. 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> //EEE/following-sibling::* <AAA> <BBB> <DDD/> <EEE/> <FFF/> <GGG/> </BBB> </AAA> <AAA> <BBB> <DDD/> <EEE/> <FFF/> <GGG/> </BBB> </AAA> //EEE/preceding-sibling::*

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

  17. XPATH XPATH: Axis <AAA> <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

  18. Nội dung XPATH - Các biểu thức XPATH thông dụng - Axes XSLT Lập trình (C#)

  19. 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 Cách thức hoạt động XSLT XSLT: - 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 Chương trình (C#, VB.NET…) XML XSLT XML HTML - 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

  20. 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:templatematch=“…"> <h1> <xsl:value-of select="//title"/> </h1> <h2> <xsl:value-of select="//author"/> </h2> </xsl:template> <xsl:templatematch=“…"> ….. </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

  21. 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:templatematch=“/”> <h1><xsl:value-of select=“//hoten”/></h1> <h2><xsl:value-ofselect=“//mssv”/></h2> </xsl:template> </xsl:stylesheet> </h1> <h1> Nguyen Van A <h2> 0412341 </h2> Nếu bỏ dấu “//” ??

  22. Mặc định: trả ra nội dung của thẻ <xsl:templatematch=“/”> </xsl:template> <xsl:apply-templates/> XSLT <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 a1 a2 <xsl:stylesheet…………> </xsl:stylesheet>

  23. 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:templatematch=“/”> <xsl:for-eachselect = “//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>

  24. 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:sortorder=“ascending” select=“.”/> <xsl:value-of select=“.”/> </xsl:for-each> </xsl:template> </xsl:stylesheet> <root> <value>1</value> <value>9</value> <value>20</value> </root> ?????

  25. 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:sortdata-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”

  26. XSLT <xsl:if test> <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:if test=“not (position()=last())”> <xsl:text>,</xsl:text> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet>

  27. 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:whentest = “A”/> <xsl:text>30</xsl:text> </xsl:when> …… </xsl:choose> </xsl:for-each> </xsl:template> </xsl:stylesheet>

  28. 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>

  29. XSLT XSLT: 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/

  30. Nội dung XPATH - Các biểu thức XPATH thông dụng - Axes XSLT Lập trình (C#)

  31. Lập trình 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

More Related