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 dungXPATH - Các biểu thức XPATH thông dụng - Axes XSLT Lập trình C#... child:: : Ch
Trang 1XPATH & 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
Trang 2Nội dung
XPATH
- Các biểu thức XPATH thông dụng
- Axes XSLT Lập trình (C#)
Trang 4- /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ì
Trang 5- /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
Trang 6- /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 )
Trang 9name() : 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
Trang 11child:: : Chọn tất cả node con của node hiện thời
Trang 15following-sibling:: : Tất cả các thẻ “em” cùng cấp với node hiện hành
Trang 17Không overlap nhau
“Or” ( | ) lại sẽ cho kết quả là tất cả các node của tài liệu
Trang 19XSLT:
• e X tensible S tylesheet L anguage T ransformation
• 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
Trang 20XSLT Transformation
Engine XSLT
Document
XML Document
Result Document
Trang 22• Các thẻ XSLT cơ bản:
• <xsl:stylesheet>
• <xsl:template name = “name” match = “xpath”>
• <xsl:value-of select = “xpath”>
• <xsl:attribute>
• <xsl:text>
• <xsl:for-each select = “xpath”>
• <xsl:if test = “condition”>
http://www.w3schools.com/xsl/
Trang 23Biểu thức XPATH
Trang 24<xsl:value-of> 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ả
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ả
Trang 25<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>
Trang 26<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>
<xsl:stylesheet….>
<xsl:template match=“/”>
<xsl:for-each select = “//hoten”>
<xsl:sort order=“ascending” select=“.”/>
Trang 27<xsl:for-each select = “//value”>
<xsl:sort data-type=“number” select=“.”/>
Trang 28<xsl:for-each select = “//value”>
<xsl:sort data-type=“number” select=“.”/>
Trang 30<xsl:apply-templates> Áp dụng template cho node hiện tại hoặc các node con của nó
<root>
<hoten id=“1”>Nguyen Van A</hoten>
<hoten id=“2”>Nguyen Thi B</hoten>
Trang 31<xsl:element>, <xsl:attribute>
<root>
<sinhvien id=“1”>Nguyen Van A</sinhvien >
<sinhvien id=“2”>Tran Thi B</sinhvien >
Trang 32Nội dung
XPATH
- Các biểu thức XPATH thông dụng
- Axes XSLT
Lập trình (C#)
Trang 33Lậ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