众所周知, 路径使用绝对或相对路径定义节点的位置。以相同的方式, XPath轴用于通过元素之间的关系(如父, 子, 同级等)来标识元素。轴是指元素相对于元素所在的轴。
各种Axis值的列表:
Index | Axis | Description |
---|---|---|
1) | ancestor | 它指定当前节点的祖先, 包括父节点直到根节点。 |
2) | ancestor-or-self | 它指定当前节点及其祖先。 |
3) | attribute | 它指定当前节点的属性。 |
4) | child | 它指定当前节点的子代。 |
5) | descendant | 它指定当前节点的后代, 即该节点的子节点直到叶节点(没有更多的子节点)。 |
6) | descendant-or-self | 它指定当前节点及其后代。 |
7) | following | 它指定了当前节点之后的所有节点。 |
8) | following-sibling | 它指定了上下文节点的以下同级。兄弟姐妹与当前节点处于同一级别, 并共享其父节点。 |
9) | namespace | 它指定当前节点的名称空间。 |
10) | parent | 它指定当前节点的父节点。 |
11) | preceding | 它指定了当前节点之前(即开始标记之前)的所有节点。 |
12) | self | 它指定当前节点。 |
XPath轴示例
<p><xsl:value-of select = "firstname"/></p>
<xsl:value-of select = "/class/student/preceding-sibling::comment()"/>
这里的名字与名为employee.xml的XML文档的employee节点有关。
让我们创建一个使用XPath表达式的XML文档” employee.xml”及其样式表文档” employee.xsl”。
employee.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "employee.xsl"?>
<class>
<employee id = "001">
<firstname>Abhiram</firstname>
<lastname>Kushwaha</lastname>
<nickname>Manoj</nickname>
<salary>15000</salary>
</employee>
<employee id = "002">
<firstname>Akash</firstname>
<lastname>Singh</lastname>
<nickname>Bunty</nickname>
<salary>25000</salary>
</employee>
<employee id = "003">
<firstname>Brijesh</firstname>
<lastname>Kaushik</lastname>
<nickname>Ballu</nickname>
<salary>20000</salary>
</employee>
<employee id = "004">
<firstname>Zoya</firstname>
<lastname>Mansoori</lastname>
<nickname>Sonam</nickname>
<salary>30000</salary>
</employee>
</class>
员工.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>
<xsl:value-of select = "/class/employee/preceding-sibling::comment()"/>
<br/>
<xsl:text>First Employee: </xsl:text>
<xsl:value-of select = "/class/employee/child::firstname" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>
输出