X Path

XPath es un lenguaje para la búsqueda de información en un documento XML, usado para navegar por sus elementos y atributos. Con más de 100 funciones de comparación y manipulación de cadenas de carácteres ( strings ), números… constituye uno de los pilares de XSLT.

Selección de elementos
Imaginemos que queremos acceder a determinada información del siguiente ejemplo de XML:
 

  Pantalla Completa  Colorear
 000 
 001 
 002 
 003 
 004 
 005 
 006 
 007 
 008 
 009 
 010 
<?xml version="1.0" ?>
<contactos>
  <persona>
    <name>Eloi</name>
    <phone pais="es">555 676767</phone>
  </persona>
  <persona>
    <name>Pepe</name>
    <phone pais="uk">555 888888</phone>
  </persona>
</contactos> 

 

 
XPath nos ofrece las expresiones:

nombreNodo Selecciona todos los nodos de nombre nombreNodo.
/ Selecciona el nodo raiz o nodos hijo del nodo actual.
// Selecciona todos nodos hijo, nieto… del nodo actual.
. Selecciona el nodo actual.
.. Selecciona el nodo padre del nodo actual.
@ Selecciona atributos del nodo actual
[ ] Selecciona nodos que cumplen una propiedad
* Selecciona cualquier nodo o atributo
| Selecciona múltiples expresiones de forma simultánea

Operadores
Para comparar y modificar valores, disponemos de los operadores normales de cualquier lenguaje:

+ Suma
- Resta
* Multiplicación
div División
= Igual
!= Diferente
< Menor
<= Menor o igual
> Mayor
>= Mayor o igual
or O
and Y
mod Módulo, resto de la división

Ejemplos
Veamos algunos ejemplos a partir del XML anterior:

/contactos/persona
Selecciona todos los nodos de nombre persona que son hijos del nodo / nodos contactos

/contactos/persona/phone@pais
Selecciona todos los atributos pais de elementos phone hijos de persona y nietos de contactos

/contactos/persona[name = 'Eloi']
Selecciona todos los nodos persona hijos de contactos cuyo hijo name tenga valor Eloi

/contactos/persona/phone[@pais = 'uk'] | /contactos/persona/phone[@pais = 'es']
Selecciona todos los nodos phone hijos de persona y nietos de contactos cuyo atributo pais tenga valor uk y lo mismo con uk

Escribe un comentario