Xpath đưa ra một tập các hàm thao tác với nhiều dữ liệu khác nhau. Trong đó có thể phân chia theo kiểu hàm logic, hàm thao tác với dữ liệu dạng text và dữ liệu dạng số
- Các hàm thao tác với các node: Cho phép thao tác tới các node tong tài liệu XML hiện tại
Bảng: Hàm thao tác node
Hàm Trả về
Count(Node-set) Số node trong tập các node Generate-id(Node-set) ID của các node
Last() Phần tử cuối cùng
Local-name(Node-set) Tên của node đầu tiên Name(Node-set) Tên của node đầu tiên Namespace-uri(Node-set) URI
Position() Vị trí của node
Các hàm thao tác dữ liệu dạng logic: tính toán và đưa ra kết quả logic
Bảng: Hàm thao tác kết quả là kiểu logic
Hàm Giá trị trả về
Expr and expr True khi cả hai là true
Expr or expr True khi một trong 2 là true
True() True
False() False
- Hàm thao tác dạng số: tính toán trên các con số
Bảng: Hàm thao tác với dữ liệu số
Toán tử Kiểu trả về
div Chia lấy nguyên hai giá trị số Mod Chia lấy dư hai giá trị số round Làm tròn hai giá trị số Sum() Tổng giá trị của các node
- Hàm thao tác dạng chỗi (text): Thao tác với chỗi dữ liệu
Bảng: Hàm thao tác với dữ liệu text
Hàm Giá trị trả về
Concat(string, string, ….) Nối các string lại với nhau thành một chuỗi Format-number(number, patten,
decimal format) Định dạng số theo mẫu và phần thập phân Normailze-space(string) Chuẩn hóa xâu. Thay thế các space gần liền
nhau về môt space Substring(string, offset,range) Lấy ra xâu con Substring-after(string, to-match) xâu con sau Substring-befor(string, to-match) xâu con trước Translate(string, charater to-match
characters-replate-with) Thay thế các xâu theo mẫu
Contain(string, sub) Kiểm tra tồn tại trong string hay không. True có tồn tại, ngược lại bằng false
Starts-with(string, sub) True nếu bắt đầu chuỗi sub String-length(string) Độ dài chuỗi
Ví dụ sau đây mô tả cách sử dụng hàm trong XSL sử dụng Xpath File data.Xml <?xml version="1.0" encoding="utf-8"?> <data> <number>1</number> <number>3</number> <number>4</number> <number>17</number> <number>8</number> <number>11</number> </data>
File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:for-each select="//number"> <xsl:value-of select="."/> <xsl:choose>
<xsl:when test="position()=last()"> <xsl:text> = </xsl:text> </xsl:when>
<xsl:otherwise> <xsl:text> + </xsl:text> </xsl:otherwise> </xsl:choose>
</xsl:for-each>
<xsl:value-of select="sum(//number)"/> </xsl:template>