XPath 表达式
XPath表达式
XPath定义模式或路径表达式,以选择XML文档中的节点或节点集。 XSLT使用这些模式来执行转换。路径表达式看起来与我们在传统文件系统中使用的通用表达式非常相似。
XPath指定可以输出执行XPath表达式的七种节点
根
元素
文字
属性
内容
处理指令
命名空间
我们知道XPath使用路径表达式从XML文档中选择节点或节点列表。
有用的路径和表达式列表来选择任何节点/节点列表来自XML文档:
表达 |
说明 |
节点名称 |
它用于选择所有具有给定名称" nodename"的节点 |
/ |
它指定选择从根节点开始。 |
// |
它指定选择从与选择匹配的当前节点开始。 |
。 |
选择当前节点。 |
.. |
选择当前节点的父级。 |
@ |
选择属性。 |
学生 |
示例-选择所有名称为" student"的节点。 |
班级/学生 |
示例-选择所有属于班级子级的学生元素 |
//学生 |
选择所有学生元素,无论它们在文档中的位置 |
XPath表达式示例
我们来看一个XPath表达式的用法示例。在这里,我们使用xml文件" employee.xml"和该xml文件的样式表" employee.xsl"。 XSL文件使用各种XSL标记的 select 属性下的XPath表达式来获取每个员工节点的ID,名字,姓氏,昵称和工资的值。
Employee.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "employee.xsl"?>
<class>
<employee id = "001">
<firstname>Aryan</firstname>
<lastname>Gupta</lastname>
<nickname>Raju</nickname>
<salary>30000</salary>
</employee>
<employee id = "024">
<firstname>Sara</firstname>
<lastname>Khan</lastname>
<nickname>Zoya</nickname>
<salary>25000</salary>
</employee>
<employee id = "056">
<firstname>Peter</firstname>
<lastname>Symon</lastname>
<nickname>John</nickname>
<salary>10000</salary>
</employee>
</class>
Employee.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> Employees</h2>
<table border = "1>
<tr bgcolor = "pink">
<th> ID</th>
<th> First Name</th>
<th> Last Name</th>
<th> Nick Name</th>
<th> Salary</th>
</tr>
<xsl:for-each select = "class/employee">
<tr>
<td> <xsl:value-of select = "@id"/> </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 = "salary"/> </td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>