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>