XPath - топоры
Поскольку путь местоположения определяет местоположение узла с использованием абсолютного или относительного пути, оси используются для идентификации элементов по их взаимосвязи, например parent, child, sibling, и т. д. Оси названы так, потому что они относятся к оси, на которой элементы лежат относительно элемента.
Ниже приведен список различных значений оси.
S.No. | Ось и описание |
---|---|
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 Представляет текущий узел. |
Ниже приведены несколько примеров использования топоров.
firstname - выберите имя, относящееся к студенческим узлам.
<p><xsl:value-of select = "firstname"/></p>
<xsl:value-of select = "/class/student/preceding-sibling::comment()"/>
пример
В этом примере мы создали образец XML-документа. students.xml и его документ таблицы стилей students.xsl который использует выражения XPath.
Ниже приводится образец используемого XML.
student.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<!-- Comment: This is a list of student -->
<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>
student.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/student/preceding-sibling::comment()"/>
<br/>
<xsl:text>First Student: </xsl:text>
<xsl:value-of select = "/class/student/child::firstname" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>