Assi a più livelli con XPath
Ogni asse a più livelli restituisce un insieme di nodi che contiene tutti gli elementi all´interno di quell´asse. Vediamo un esempio:
<xsl:template match="/menu/aperitivi">
<xsl:value-of select="piatto[1]/ancestor::*[1]/@titolo" />
<xsl:value-of select="piatto[1]/ancestor::menu/primipiatti/@titolo" />
</xsl:template>
<xsl:template match="/menu/primipiatti" />
<xsl:template match="/menu/dolci" />
</xsl:stylesheet >
Sono facilmente individuabili le due righe che compiono tutta l´azione. Entrambe selezionano prima il nodo figlio dell´elemento "aperitivi" chiamato "piatto". A questo punto l´elemento diventa il nodo contesto. L´asse del progenitore indica al processore che vuole operare sui nodi progenitori del nodo contesto. I nodi progenitori sono "aperitici" e "menu". Il test di nodo consiste in un carattere jolly e un predicato. In questo caso punta al primo nodo progenitore dell´asse, che è il nodo genitore "aperitivi". Adesso vediamo il file di esempio che abbiamo ottenuto come output. La pagina mostra quanto scritto poco fa e cioè che seleziona l´attributo "titolo" dell´elemento "aperitivi" e poi l´attributo titolo dell´elemento "primipiatti".
Assi disponibili in XPath
La tabella di seguito riportata mostra la maggior parte degli assi disponibili con i quali selezionare un elemento in un albemro XML.
| Asse | Descrizione |
|---|---|
| ancestor | Tutti i nodi progenitore del nodo contesto. |
| ancestor-or-self | Come ancestor, comprendendo il nodo di contesto come primo nodo nell´insieme di nodi. |
| attribute | Seleziona tutti gli attributi del nodo corrente. |
| child | Tutti i nodi figlio del nodo di contesto. |
| descendant | Seleziona tutti i discendenti (figli, progenitori ecc...) del nodo corrente. |
| descendant-or-self | Come descendant, compreso il nodo di contesto come primo nodo nell´insieme di nodi. |
| following | Come following-sibling, ma includendo i loro discendenti, in ordine di profondità. |
| following-sibling | Tutti i nodi parenti che vengono in successione del nodo di contesto nell´albero del documento. |
| namespace | Seleziona tutti i nodi namespace del nodo corrente. |
| parent | Il nodo genitore del nodo di contesto. |
| preceding | Come preceding-sibling, ma includendo i loro discendenti, in ordine di profondità. |
| preceding-sibling | Tutti i nodi parenti che precedono il nodo di contesto nell´albero del documento. |
| self | Il nodo di contesto in sé. |
| < Prec. | Succ. > |
|---|

