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>

Проверьте вывод