XPath - Espressione
Un'espressione XPath generalmente definisce un modello per selezionare un insieme di nodi. Questi modelli vengono utilizzati da XSLT per eseguire trasformazioni o da XPointer per scopi di indirizzamento.
La specifica XPath specifica sette tipi di nodi che possono essere l'output dell'esecuzione dell'espressione XPath.
- Root
- Element
- Text
- Attribute
- Comment
- Istruzioni di elaborazione
- Namespace
XPath utilizza un'espressione di percorso per selezionare il nodo o un elenco di nodi da un documento XML.
Di seguito è riportato l'elenco di percorsi ed espressioni utili per selezionare qualsiasi nodo / elenco di nodi da un documento XML.
S.No. | Espressione e descrizione |
---|---|
1 | node-name Seleziona tutti i nodi con il nome specificato "nome nodo" |
2 | / La selezione inizia dal nodo radice |
3 | // La selezione inizia dal nodo corrente che corrisponde alla selezione |
4 | . Seleziona il nodo corrente |
5 | .. Seleziona il genitore del nodo corrente |
6 | @ Seleziona gli attributi |
7 | student Esempio: seleziona tutti i nodi con il nome "studente" |
8 | class/student Esempio: seleziona tutti gli elementi degli studenti che sono figli della classe |
9 | //student Seleziona tutti gli elementi degli studenti indipendentemente da dove si trovano nel documento |
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 sotto select attributo di vari tag XSL per ottenere i valori di roll no, firstname, lastname, nickname e mark di ogni nodo studente.
students.xml
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
<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>
<h2>Students</h2>
<table border = "1">
<tr bgcolor = "#9acd32">
<th>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
<th>Nick Name</th>
<th>Marks</th>
</tr>
<xsl:for-each select = "class/student">
<tr>
<td> <xsl:value-of select = "@rollno"/></td>
<td><xsl:value-of select = "firstname"/></td>
<td><xsl:value-of select = "lastname"/></td>
<td><xsl:value-of select = "nickname"/></td>
<td><xsl:value-of select = "marks"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>