XPath - eixos
Como o caminho de localização define a localização de um nó usando caminho absoluto ou relativo, os eixos são usados para identificar os elementos por sua relação, como parent, child, sibling, etc. Os eixos são nomeados assim porque se referem aos eixos nos quais os elementos estão localizados em relação a um elemento.
A seguir está a lista de vários valores do eixo.
S.No. | Eixo e descrição |
---|---|
1 | ancestor Representa os ancestrais do nó atual, que incluem os pais até o nó raiz. |
2 | ancestor-or-self Representa o nó atual e seus ancestrais. |
3 | attribute Representa os atributos do nó atual. |
4 | child Representa os filhos do nó atual. |
5 | descendant Representa os descendentes do nó atual. Os descendentes incluem os filhos do nó até o nó folha (não há mais filhos). |
6 | descendant-or-self Representa o nó atual e seus descendentes. |
7 | following Representa todos os nós que vêm depois do nó atual. |
8 | following-sibling Representa os seguintes irmãos do nó de contexto. Os irmãos estão no mesmo nível que o nó atual e compartilham seu pai. |
9 | namespace Representa o namespace do nó atual. |
10 | parent Representa o pai do nó atual. |
11 | preceding Representa todos os nós que vêm antes do nó atual (ou seja, antes de sua tag de abertura). |
12 | self Representa o nó atual. |
A seguir estão alguns exemplos sobre o uso de eixos.
firstname - selecione o primeiro nome relacionado aos nós de alunos.
<p><xsl:value-of select = "firstname"/></p>
<xsl:value-of select = "/class/student/preceding-sibling::comment()"/>
Exemplo
Neste exemplo, criamos um documento XML de amostra students.xml e seu documento de folha de estilo students.xsl que usa as expressões XPath.
A seguir está o XML de amostra usado.
students.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>
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>
<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>