Hướng dẫn nhanh về XSLT
XSL
Trước khi tìm hiểu XSLT, trước tiên chúng ta nên hiểu XSL là viết tắt của EXcăng thẳng Sbảng đánh máy Lđau khổ. Nó tương tự như XML cũng giống như CSS đối với HTML.
Cần cho XSL
Trong trường hợp tài liệu HTML, các thẻ được xác định trước như table, div và span; và trình duyệt biết cách thêm kiểu cho chúng và hiển thị những kiểu bằng CSS. Nhưng trong trường hợp tài liệu XML, các thẻ không được xác định trước. Để hiểu và tạo kiểu một tài liệu XML, World Wide Web Consortium (W3C) đã phát triển XSL có thể hoạt động như Ngôn ngữ biểu định kiểu dựa trên XML. Tài liệu XSL chỉ định cách trình duyệt sẽ hiển thị tài liệu XML.
Sau đây là các phần chính của XSL -
XSLT - được sử dụng để chuyển đổi tài liệu XML thành nhiều loại tài liệu khác.
XPath - được sử dụng để điều hướng tài liệu XML.
XSL-FO - được sử dụng để định dạng tài liệu XML.
XSLT là gì
XSLT, Chuyển đổi ngôn ngữ biểu định kiểu có thể mở rộng, cung cấp khả năng tự động chuyển đổi dữ liệu XML từ định dạng này sang định dạng khác.
Cách XSLT hoạt động
Biểu định kiểu XSLT được sử dụng để xác định các quy tắc chuyển đổi được áp dụng trên tài liệu XML đích. Biểu định kiểu XSLT được viết ở định dạng XML. Bộ xử lý XSLT nhận biểu định kiểu XSLT và áp dụng các quy tắc chuyển đổi trên tài liệu XML đích và sau đó nó tạo tài liệu được định dạng ở dạng XML, HTML hoặc định dạng văn bản. Tài liệu được định dạng này sau đó được sử dụng bởi bộ định dạng XSLT để tạo ra đầu ra thực tế sẽ được hiển thị cho người dùng cuối.
Ưu điểm
Dưới đây là những lợi thế của việc sử dụng XSLT -
Độc lập với lập trình. Các phép biến đổi được viết trong một tệp xsl riêng biệt mà lại là một tài liệu XML.
Đầu ra có thể được thay đổi bằng cách chỉ cần sửa đổi các phép biến đổi trong tệp xsl. Không cần phải thay đổi bất kỳ mã nào. Vì vậy, các nhà thiết kế web có thể chỉnh sửa biểu định kiểu và có thể thấy sự thay đổi trong đầu ra một cách nhanh chóng.
Giả sử chúng ta có tệp XML mẫu sau đây, student.xml, được yêu cầu chuyển đổi thành tài liệu HTML được định dạng tốt.
students.xml
<?xml version = "1.0"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
Chúng tôi cần xác định tài liệu biểu định kiểu XSLT cho tài liệu XML ở trên để đáp ứng các tiêu chí sau:
Trang phải có tiêu đề Students.
Trang phải có một bảng chi tiết học sinh.
Các cột phải có các tiêu đề sau: Số cuộn, Tên, Họ, Biệt hiệu, Dấu hiệu
Bảng phải có thông tin chi tiết của học sinh phù hợp.
Bước 1: Tạo tài liệu XSLT
Tạo một tài liệu XSLT để đáp ứng các yêu cầu trên, đặt tên là student.xsl và lưu nó vào cùng một vị trí mà student.xml nằm.
students.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<!-- xsl stylesheet declaration with xsl namespace:
Namespace tells the xlst processor about which
element is to be processed and which is used for output purpose only
-->
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<!-- xsl template declaration:
template tells the xlst processor about the section of xml
document which is to be formatted. It takes an XPath expression.
In our case, it is matching document root element and will
tell processor to process the entire document with this template.
-->
<xsl:template match = "/">
<!-- HTML tags
Used for formatting purpose. Processor will skip them and browser
will simply render them.
-->
<html>
<body>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
</tr>
<!-- for-each processing instruction
Looks for each element matching the XPath expression
-->
<xsl:for-each select="class/student">
<tr>
<td>
<!-- value-of processing instruction
process the value of the element matching the XPath expression
-->
<xsl:value-of select = "@rollno"/>
</td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Bước 2: Liên kết Tài liệu XSLT với Tài liệu XML
Cập nhật tài liệu student.xml bằng thẻ xml-stylesheet sau. Đặt giá trị href thành student.xsl
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
...
</class>
Bước 3: Xem tài liệu XML trong Internet Explorer
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
Đầu ra
<xsl: template> xác định cách sử dụng lại các mẫu để tạo đầu ra mong muốn cho các nút của một loại / ngữ cảnh cụ thể.
Tờ khai
Sau đây là khai báo cú pháp của <xsl:template> thành phần.
<xsl:template
name = Qname
match = Pattern
priority = number
mode = QName >
</xsl:template>
Thuộc tính
Sr.No | Tên & Mô tả |
---|---|
1 | name Tên của phần tử mà mẫu sẽ được áp dụng. |
2 | match Mẫu biểu thị (các) phần tử mà mẫu sẽ được áp dụng. |
3 | priority Số ưu tiên của một mẫu. Mẫu đối sánh có mức độ ưu tiên thấp không được xem xét từ phía trước mẫu có mức độ ưu tiên cao. |
4 | mode Cho phép phần tử được xử lý nhiều lần để tạo ra một kết quả khác nhau mỗi lần. |
Thành phần
Số lần xuất hiện | Vô hạn |
---|---|
Parent elements |
xsl: bảng định kiểu, xsl: biến đổi |
Child elements |
xsl: áp dụng-nhập khẩu, xsl: áp dụng-mẫu, xsl: thuộc tính, xsl: cuộc gọi-mẫu, xsl: chọn, xsl: nhận xét, xsl: sao chép, xsl: sao chép, xsl: phần tử, xsl: dự phòng, xsl: for-each, xsl: if, xsl: message, xsl: number, xsl: param, xsl: processing-tutorial, xsl: text, xsl: value-of, xsl: variable, output element |
Ví dụ demo
Quy tắc mẫu này có một mẫu xác định các phần tử <student> và tạo đầu ra ở định dạng bảng.
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
students_imports.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match = "/">
<html>
<body>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
</tr>
<xsl:for-each select = "class/student">
<tr>
<td><xsl:value-of select = "@rollno"/></td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Đầu ra
Thẻ <xsl: value-of> đặt giá trị của nút đã chọn theo biểu thức XPath, dưới dạng văn bản.
Tờ khai
Sau đây là khai báo cú pháp của <xsl:value-of> thành phần.
<xsl:value-of
select = Expression
disable-output-escaping = "yes" | "no" >
</xsl:value-of>
Thuộc tính
Sr.No | Tên & Mô tả |
---|---|
1 | Select Biểu thức XPath sẽ được đánh giá trong ngữ cảnh hiện tại. |
2 | disable-outputescaping Mặc định- "không". Nếu "có", văn bản đầu ra sẽ không thoát các ký tự xml khỏi văn bản. |
Thành phần
Số lần xuất hiện | Vô hạn |
---|---|
Parent elements |
xsl: thuộc tính, xsl: bình luận, xsl: sao chép, xsl: phần tử, xsl: dự phòng, xsl: cho-mỗi, xsl: nếu, xsl: thông báo, xsl: ngược lại, xsl: param, xsl: hướng dẫn xử lý, xsl: mẫu , xsl: biến, xsl: khi, xsl: với-param, các phần tử đầu ra |
Child elements |
không ai |
Ví dụ demo
Ví dụ này tạo một bảng gồm phần tử <student> với thuộc tính của nó rollno và con của nó <firstname>, <lastname>, <nickname> và <marks>.
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
students.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match = "/">
<html>
<body>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
</tr>
<xsl:for-each select = "class/student">
<tr>
<td><xsl:value-of select = "@rollno"/></td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Xác minh đầu ra
Thẻ <xsl: for-each> áp dụng một mẫu lặp đi lặp lại cho mỗi nút.
Tờ khai
Sau đây là khai báo cú pháp của <xsl:for-each> thành phần
<xsl:for-each
select = Expression >
</xsl:for-each>
Thuộc tính
Sr.No | Tên & Mô tả |
---|---|
1 | Select Biểu thức XPath sẽ được đánh giá trong ngữ cảnh hiện tại để xác định tập hợp các nút sẽ được lặp lại. |
Thành phần
Số lần xuất hiện | Vô hạn |
---|---|
Parent elements |
xsl: thuộc tính, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: else, xsl: param, xsl: processinginstruction, xsl: template, xsl: biến, xsl: when, xsl: with-param, các phần tử đầu ra. |
Child elements |
xsl: áp dụng-nhập khẩu, xsl: áp dụng-mẫu, xsl: thuộc tính, xsl: cuộc gọi-mẫu, xsl: chọn, xsl: nhận xét, xsl: sao chép, xsl: sao chép, xsl: phần tử, xsl: dự phòng, xsl: for-each, xsl: if, xsl: message, xsl: number, xsl: processing-command, xsl: sort, xsl: text, xsl: value-of, xsl: variable. |
Ví dụ demo
Ví dụ này tạo một bảng gồm phần tử <student> với thuộc tính rollno và con của nó là <firstname>,<lastname> <nickname> và <marks> bằng cách lặp qua từng học sinh.
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
students.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match = "/">
<html>
<body>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
</tr>
<xsl:for-each select = "class/student">
<tr>
<td><xsl:value-of select = "@rollno"/></td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Đầu ra
Thẻ <xsl: sort> chỉ định tiêu chí sắp xếp trên các nút.
Tờ khai
Sau đây là khai báo cú pháp của <xsl:sort> thành phần.
<xsl:sort
select = string-expression
lang = { nmtoken }
data-type = { "text" | "number" | QName }
order = { "ascending" | "descending" }
case-order = { "upper-first" | "lower-first" } >
</xsl:sort>
Thuộc tính
Sr.No | Tên & Mô tả |
---|---|
1 | select Khóa sắp xếp của nút. |
2 | lang Bảng chữ cái ngôn ngữ dùng để xác định thứ tự sắp xếp. |
3 | data-type Kiểu dữ liệu của văn bản. |
4 | order Thứ tự sắp xếp. Mặc định là "tăng dần". |
5 | case-order Sắp xếp thứ tự của chuỗi theo cách viết hoa. Mặc định là "trên trước". |
Thành phần
Number of occurrences | Vô hạn |
Parent elements | xsl: áp dụng-mẫu, xsl: cho-mỗi |
Child elements | không ai |
Ví dụ demo
Ví dụ này tạo một bảng gồm phần tử <student> với thuộc tính của nó rollno và con của nó là <firstname>, <lastname>, <nickname> và <marks> bằng cách lặp lại từng học sinh sắp xếp chúng theo tên.
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
students.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match = "/">
<html>
<body>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
</tr>
<xsl:for-each select = "class/student">
<xsl:sort select = "firstname"/>
<tr>
<td><xsl:value-of select = "@rollno"/></td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Đầu ra
Thẻ <xsl: if> chỉ định kiểm tra có điều kiện đối với nội dung của các nút.
Tờ khai
Sau đây là khai báo cú pháp của <xsl:if> thành phần.
<xsl:if
test = boolean-expression >
</xsl:if>
Thuộc tính
Sr.No | Tên & Mô tả |
---|---|
1 | test Điều kiện trong dữ liệu xml để kiểm tra. |
Thành phần
Số lần xuất hiện | Vô hạn |
---|---|
Parent elements |
xsl: thuộc tính, xsl: bình luận, xsl: sao chép, xsl: phần tử, xsl: dự phòng, xsl: cho-mỗi, xsl: nếu, xsl: thông báo, xsl: nếu không, xsl: param, xsl: xử lý-hướng dẫn, xsl: template, xsl: variable, xsl: when, xsl: with-param, output element |
Child elements |
xsl: apply-template, xsl: property, xsl: call-template, xsl: select, xsl: comment, xsl: copy, xsl: copy-of, xsl: element, xsl: for-each, xsl: if, xsl: xử lý-hướng dẫn, xsl: text, xsl: value-of, xsl: biến, các phần tử đầu ra |
Ví dụ demo
Ví dụ này tạo một bảng gồm phần tử <student> với thuộc tính của nó rollnovà con của nó <firstname>, <lastname>, <nickname> và <marks> bằng cách lặp qua từng học sinh. Nó kiểm tra các điểm phải lớn hơn 90 và sau đó in (các) học sinh.
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
students.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match = "/">
<html>
<body>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
</tr>
<xsl:for-each select = "class/student">
<xsl:if test = "marks > 90">
<tr>
<td><xsl:value-of select = "@rollno"/></td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Đầu ra
Thẻ <xsl: select> chỉ định nhiều thử nghiệm có điều kiện dựa trên nội dung của các nút cùng với các phần tử <xsl: else> và <xsl: when>.
Tờ khai
Sau đây là khai báo cú pháp của <xsl:choose> thành phần.
<xsl:choose >
</xsl:choose>
Thành phần
Số lần xuất hiện | Vô hạn |
---|---|
Parent elements |
xsl: thuộc tính, xsl: bình luận, xsl: sao chép, xsl: phần tử, xsl: dự phòng, xsl: cho-mỗi, xsl: nếu, xsl: thông báo, xsl: nếu không, xsl: param, xsl: xử lý-hướng dẫn, xsl: template, xsl: variable, xsl: when, xsl: with-param, output element |
Child elements |
xsl: ngược lại, xsl: khi nào |
Ví dụ demo
Ví dụ này tạo một bảng gồm phần tử <student> với thuộc tính của nó rollnovà con của nó <firstname>, <lastname>, <nickname> và <marks> bằng cách lặp qua từng học sinh. Nó kiểm tra và sau đó in chi tiết điểm.
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
students.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match = "/">
<html>
<body>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
<th>Grade</th>
</tr>
<xsl:for-each select = "class/student">
<tr>
<td><xsl:value-of select = "@rollno"/></td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
<td>
<xsl:choose>
<xsl:when test = "marks > 90">
High
</xsl:when>
<xsl:when test = "marks > 85">
Medium
</xsl:when>
<xsl:otherwise>
Low
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Đầu ra
Phần tử thẻ <xsl: key> chỉ định một cặp tên-giá trị đã đặt tên được gán cho một phần tử cụ thể trong tài liệu XML. Khóa này được sử dụng với hàm key () trong biểu thức XPath để truy cập các phần tử được gán trong tài liệu XML.
Tờ khai
Sau đây là khai báo cú pháp của <xsl:key> thành phần.
<xsl:key
name = QName
match = Pattern
use = Expression >
</xsl:key>
Thuộc tính
S.Không | Tên & Mô tả |
---|---|
1 | Name Tên của khóa sẽ được sử dụng. |
2 | Match Các mẫu được sử dụng để xác định một nút giữ khóa này. |
3 | Use Biểu thức XPath để xác định giá trị của các nút của tài liệu xml. |
Thành phần
Number of Occurrences | Vô hạn |
Parent elements | xsl: biểu định kiểu |
Child elements | không ai |
Ví dụ demo
Ví dụ này tạo một bảng gồm phần tử <student> với thuộc tính của nó rollnovà con của nó <firstname>, <lastname>, <nickname> và <marks> bằng cách lặp qua từng học sinh. Nó kiểm tra key as firstname để là một trong các tên của học sinh và sau đó in thông tin chi tiết của học sinh.
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
students.xsl
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:key name = "firstname-search" match = "student" use = "firstname"/>
<xsl:template match = "/">
<html>
<body>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
</tr>
<xsl:for-each select = "key('firstname-search', 'Dinkar')">
<tr>
<td><xsl:value-of select = "@rollno"/></td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Đầu ra
Phần tử thẻ <message> giúp gỡ lỗi xử lý XSLT. Nó tương tự như cảnh báo javascript. Thẻ <xsl:> đệm một thông báo đến bộ xử lý XSLT, việc này sẽ kết thúc quá trình xử lý và gửi thông báo đến ứng dụng người gọi để hiển thị thông báo lỗi.
Tờ khai
Sau đây là khai báo cú pháp của <xsl:message> thành phần.
<xsl:message
terminate = "yes" | "no" >
</xsl:message>
Thuộc tính
Sr.No | Tên & Mô tả |
---|---|
1 | terminate Nó chỉ định việc chuyển đổi có nên kết thúc khi thực hiện lệnh này hay không. Mặc định là "có". |
Thành phần
Số lần xuất hiện | Vô hạn |
---|---|
Parent elements | xsl: thuộc tính, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: else, xsl: param, xsl: processinginstruction, xsl: template, xsl: biến, xsl: when, xsl: with-param, các phần tử đầu ra |
Child elements |
xsl: apply-template, xsl: property, xsl: call-template, xsl: select, xsl: comment, xsl: copy, xsl: copy-of, xsl: element, xsl: for-each, xsl: if, xsl: xử lý-hướng dẫn, xsl: text, xsl: value-of, xsl: biến, các phần tử đầu ra |
Ví dụ demo
Ví dụ này tạo một bảng gồm phần tử <student> với thuộc tính của nó rollnovà con của nó <firstname>, <lastname>, <nickname> và <marks> bằng cách lặp qua từng học sinh. Nó kiểm tra key as firstname để có mặt và sau đó in thông tin chi tiết về học sinh, nếu không sẽ hiển thị thông báo lỗi.
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname></firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
students.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match = "/">
<html>
<body>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
</tr>
<xsl:for-each select = "class/student">
<xsl:if test = "firstname = ''">
<xsl:message terminate = "yes">A first name field is empty.
</xsl:message>
</xsl:if>
<tr>
<td><xsl:value-of select = "@rollno"/></td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Đầu ra
Thẻ <xsl: apply-template> báo hiệu cho bộ xử lý XSLT tìm mẫu thích hợp để áp dụng, dựa trên loại và ngữ cảnh của từng nút đã chọn.
Tờ khai
Sau đây là khai báo cú pháp của <xsl:apply-template> thành phần.
<xsl:apply-template
select = Expression
mode = QName >
</xsl:apply-template>
Thuộc tính
Sr.No | Tên & Mô tả |
---|---|
1 | select Được sử dụng để xử lý các nút được chọn bởi một biểu thức XPath, thay vì xử lý tất cả các nút con. |
2 | mode Cho phép một phần tử như được chỉ định bởi Tên Đủ điều kiện của nó được xử lý nhiều lần, mỗi lần tạo ra một kết quả khác nhau. |
Thành phần
Số lần xuất hiện | Vô hạn |
---|---|
Parent elements |
xsl: thuộc tính, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: else, xsl: param, xsl: processinginstruction, xsl: template, xsl: biến, xsl: when, xsl: with-param, các phần tử đầu ra |
Child elements |
xsl: sắp xếp, xsl: với-param |
Ví dụ demo
Ví dụ này tạo danh sách phần tử <student> với thuộc tính của nó rollno và con của nó <firstname>, <lastname>, <nickname> và <marks> bằng cách lặp qua từng học sinh.
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
students.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match = "/">
<html>
<body>
<h2>Students</h2>
<xsl:apply-templates select = "class/student" />
</body>
</html>
</xsl:template>
<xsl:template match = "class/student">
<xsl:apply-templates select = "@rollno" />
<xsl:apply-templates select = "firstname" />
<xsl:apply-templates select = "lastname" />
<xsl:apply-templates select = "nickname" />
<xsl:apply-templates select = "marks" />
<br />
</xsl:template>
<xsl:template match = "@rollno">
<span style = "font-size = 22px;">
<xsl:value-of select = "." />
</span>
<br />
</xsl:template>
<xsl:template match = "firstname">
First Name:<span style = "color:blue;">
<xsl:value-of select = "." />
</span>
<br />
</xsl:template>
<xsl:template match = "lastname">
Last Name:<span style = "color:green;">
<xsl:value-of select = "." />
</span>
<br />
</xsl:template>
<xsl:template match = "nickname">
Nick Name:<span style = "color:red;">
<xsl:value-of select = "." />
</span>
<br />
</xsl:template>
<xsl:template match = "marks">
Marks:<span style = "color:gray;">
<xsl:value-of select = "." />
</span>
<br />
</xsl:template>
</xsl:stylesheet>
Đầu ra
Thẻ <xsl: import> nhập nội dung của một biểu định kiểu vào một biểu định kiểu khác. Nhập biểu định kiểu có mức độ ưu tiên cao hơn biểu định kiểu đã nhập.
Tờ khai
Sau đây là khai báo cú pháp của <xsl:import> thành phần.
<xsl:import href = "uri">
</xsl:import>
Thuộc tính
Sr.No | Tên & Mô tả |
---|---|
1. | href được sử dụng để chuyển đường dẫn của biểu định kiểu xslt sẽ được nhập . |
Thành phần
Number of occurrences | Vô hạn |
Parent elements | xsl: bảng định kiểu, xsl: biến đổi |
Child elements | không ai |
Ví dụ demo
Ví dụ này tạo danh sách phần tử <student> với thuộc tính của nó rollnovà con của nó <firstname>, <lastname>, <nickname> và <marks> bằng cách lặp qua từng học sinh. Ở đây chúng tôi đã tạo hai biểu định kiểu xsl trong đó biểu định kiểu student_imports.xsl nhập tệp sinh.xsl và sinh viên.xml được liên kết với sinh viên_imports.xsl.
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students_imports.xsl"?>
<class>
<student rollno = "393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
students.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match = "/">
<html>
<body>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
</tr>
<xsl:for-each select = "class/student">
<tr>
<td><xsl:value-of select = "@rollno"/></td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
students_imports.xsl
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:import href = "students.xsl"/>
<xsl:template match = "/">
<xsl:apply-imports/>
</xsl:template>
</xsl:stylesheet>