XPath - Asce

Poiché il percorso di posizione definisce la posizione di un nodo utilizzando il percorso assoluto o relativo, gli assi vengono utilizzati per identificare gli elementi in base alla loro relazione parent, child, sibling, ecc. Gli assi sono chiamati così perché si riferiscono all'asse su cui giacciono gli elementi rispetto a un elemento.

Di seguito è riportato l'elenco dei vari valori Axis.

S.No. Asse e descrizione
1

ancestor

Rappresenta gli antenati del nodo corrente che includono i padri fino al nodo radice.

2

ancestor-or-self

Rappresenta il nodo corrente e i suoi antenati.

3

attribute

Rappresenta gli attributi del nodo corrente.

4

child

Rappresenta gli elementi figlio del nodo corrente.

5

descendant

Rappresenta i discendenti del nodo corrente. I discendenti includono i figli del nodo fino al nodo foglia (non più figli).

6

descendant-or-self

Rappresenta il nodo corrente e i suoi discendenti.

7

following

Rappresenta tutti i nodi che vengono dopo il nodo corrente.

8

following-sibling

Rappresenta i seguenti fratelli del nodo di contesto. I fratelli sono allo stesso livello del nodo corrente e condividono il suo genitore.

9

namespace

Rappresenta lo spazio dei nomi del nodo corrente.

10

parent

Rappresenta il genitore del nodo corrente.

11

preceding

Rappresenta tutti i nodi che vengono prima del nodo corrente (cioè prima del suo tag di apertura).

12

self

Rappresenta il nodo corrente.

Di seguito sono riportati alcuni esempi sugli usi degli assi.

firstname - seleziona il nome relativo ai nodi studente.

<p><xsl:value-of select = "firstname"/></p>
<xsl:value-of select = "/class/student/preceding-sibling::comment()"/>

Esempio

In questo esempio, abbiamo creato un documento XML di esempio students.xml e il suo foglio di stile students.xsl che utilizza le espressioni XPath.

Di seguito è riportato l'XML di esempio utilizzato.

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>

Verifica l'output