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>
<BBB/>
<CCC/>
<DDD>
<CCC/>
</DDD>
</AAA>
- /AAA: nút gốc
- /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
<AAA>
<BBB>
<CCC/>
<BBB>
<CCC/>
</BBB>
</BBB>
</AAA>
- /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 B ở cấp thứ 2
//*: TẤT CẢ CÁC NODE
6. XPATH
XPATH: Cú pháp cơ bản
<AAA>
<BBB/>
<BBB/>
<BBB>
<CCC>
content
</CCC>
</BBB>
<BBB/>
- /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 )
7. XPATH
XPATH: Cú pháp cơ bản
<AAA>
<BBB id=“b1”/>
<BBB id=“b2”/>
<CCC name=“ccc”/>
<CCC/>
</AAA>
- /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
8. XPATH
XPATH: Cú pháp cơ bản
<AAA>
<BBB>
<DDD/>
<DDD/>
<BBB/>
<CCC>
<DDD/>
<CCC/>
</AAA>
- //*[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)
9. XPATH
XPATH: Cú pháp cơ bản
<AAA>
<BBB>
<DDD/>
<BBB/>
<ECC>
<EEE/>
<ECC/>
<CFB/>
</AAA>
- //*[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
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. 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>
<BBB>
<DDD/>
<BBB/>
<ECC>
<EEE/>
<ECC/>
<CFB/>
</AAA>
- /AAA/child::ECC
/AAA/ECC
- //BBB/child::*
/AAA/BBB/DDD
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>
19. 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…)
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
Chương trình (C#, VB.NET…)XML XSLTXMLHTML
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
Là một tập cáck khuôn mẫu (template) và xử lý tương ứng
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:template match=“…">
<h1>
<xsl:value-of select="//title"/>
</h1>
<h2>
<xsl:value-of select="//author"/>
</h2>
</xsl:template>
<xsl:template match=“…">
…..
</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ả
<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>
<h2> </h2>
Nguyen Van A
0412341
Nếu bỏ dấu “//” ??
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ả
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>
<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>
id=1hoten=Nguyen Van A
Id=2hoten=Nguyen Thi B
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>
<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>
Nguyen Thi B
Tran Van A
<root>
<value>1</value>
<value>9</value>
<value>20</value>
</root>
?????
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/