¿Qué es la sintaxis? Parte de la gramática que estudia el modo en que se combinan las palabras y los grupos que estas forman para expresar significados, así como las relaciones que se establecen entre todas esas unidades.
Vamos a crear un ejemplo simple de un documento XML que se alinea con los ejemplos de XPath que mencionamos anteriormente. Imagina una librería que cataloga libros por género, título, y autor, y que cada libro tiene un atributo id único. El documento XML podría verse así:
<libreria>
<libro id="1" genero="fantasia">
<titulo>El Señor de los Anillos</titulo>
<autor>J.R.R. Tolkien</autor>
</libro>
<libro id="2" genero="ciencia ficcion">
<titulo>Dune</titulo>
<autor>Frank Herbert</autor>
</libro>
<libro id="3" genero="fantasia">
<titulo>Harry Potter y la piedra filosofal</titulo>
<autor>J.K. Rowling</autor>
</libro>
<libro id="4" genero="fantasia">
<titulo>La Historia Interminable</titulo>
<autor>Michael Ende</autor>
</libro>
<libro id="5" genero="novela histórica">
<titulo>Los pilares de la Tierra</titulo>
<autor>Ken Follett</autor>
</libro>
</libreria>
Google:
Para seleccionar todos los nodos (elementos) de un tipo específico en el documento, utilizas el nombre del nodo. Por ejemplo:
/libreria/libro
Resultado: Esto seleccionaría todos los nodos <libro> que son hijos directos de <libreria>.
El Señor de los Anillos J.R.R. Tolkien
Dune Frank Herbert
Harry Potter y la piedra filosofal J.K. Rowling
La Historia Interminable Michael Ende
Los pilares de la Tierra Ken Follett
Si quieres seleccionar nodos sin importar dónde estén ubicados en el documento, puedes usar //. Por ejemplo:
//libro
Resultado: Esto seleccionar todos los elementos <libro> independientemente de su ubicación
El Señor de los Anillos J.R.R. Tolkien
Dune Frank Herbert
Harry Potter y la piedra filosofal J.K. Rowling
La Historia Interminable Michael Ende
Los pilares de la Tierra Ken Follett
Para seleccionar un atributo, usas el símbolo @. Por ejemplo:
//libro/@id
Resultado: Esto seleccionar el atributo id de todos los elementos <libro>.
1
2
3
4
5
Los predicados se utilizan para filtrar nodos basándose en condiciones específicas y se escriben entre corchetes [].
Para seleccionar el primer elemento <libro> dentro de <libreria> .
/libreria/libro[1]
Resultado:
1.El Señor de los Anillos J.R.R. Tolkien
Para seleccionar todos los elementos <libro> que tienen un atributo genero.
//libro[@genero]
Resultado:
El Señor de los Anillos J.R.R. Tolkien
Dune Frank Herbert
Harry Potter y la piedra filosofal J.K. Rowling
La Historia Interminable Michael Ende
Los pilares de la Tierra Ken Follett
Para seleccionar todos los elementos <libro> cuyo atributo genero es igual a fantasia.
//libro[@genero='fantasia']
Resultado:
El Señor de los Anillos J.R.R. Tolkien
Harry Potter y la piedra filosofal J.K. Rowling
La Historia Interminable Michael Ende
XPath incluye funciones que pueden ser usadas para realizar operaciones sobre los nodos seleccionados.
Para contar el número de elementos <libro>, usarías:
count(//libro)
Resultado:
5