No tiene sintaxis XML
Trabaja sobre el árbol del documento
La versión XPath 1.0 tiene 4 tipos de datos:
<poema fecha="Abril 1915" lugar="Granada">
<titulo>Alba</titulo>
<verso>Mi corazon oprimido</verso>
<verso>siente junto a la alborada</verso>
<verso>el dolor de sus amores...</verso>
</poema>
Existen 7 tipos de nodos
"count(/alumno/nota < 5"
"
ó '
"count(/alumno/nombre = 'Jose'"
Tipos de expresiones:
|
.
//titulo | //verso
$pepe
'Hola' 23.45 "Adios"
Tipos de expresiones:
count(//verso)
/poemas/poema/verso
El valor de una expresión puede ser:
En XPath 2.0 se substituyen conjuntos de nodos por secuencias en general
/
/poema/verso
/
eje :: pruebaNodo [pred1][pred2]...
/descendant::verso[contains(.,'anochecer')]
child::
Hijos directos del nodo actualparent::
Padre del nodo actualdescendant::
Descendientesancestor::
Antecesoresdescendant-or-self::
Descendientes incluido el nodo
actualascestor-or-self::
Antecesores incluido el nodo
actualfollowing::
Los nodos siguientes (incluidos los descencientes)preceding::
Los precedentes (excluyendo los antecesores)following-sibling::
Hermanos siguientespreceding-sibling::
Hermanos precedentesattribute::
Atributos del nodo actualnamespace::
Nodos de espacio de nombresself::
Localiza el nodo actualnombre
se verifica para todos los
nodos que tienen ese nombre*
todos los nodos
del tipo del eje node()
cualquier nodo (sea
del tipo que sea)text()
nodos de
tipo textocomment()
nodos de tipo comentarioprocessing-instruction()
instrucciones de
procesamientoUn predicado es una función booleana que actúa como un filtro
Ejemplo: /descendant::verso[position()=2]
Puede haber más de un predicado y el orden es significativo. Ejemplo:
/descendant::verso[position()=2][contains(.,'de')]
/descendant::verso[contains(.,'de')][position()=2]
child::
es el eje por defectoattribute::
equivale a @
.
equivale a self::node()
..
equivale a parent::node()
//
es /descendant-or-self::node()/
[position()=nº]
equivale a [nº]
En este fichero se muestra información sobre países de Europa en formato XML
Construir expresiones XPath para realizar las siguientes consultas
Puede utilizarse el programa XPath Explorer
Convierte a cadena de texto
format-number
true
ó false
Convierte a un número
1
si es true
y 0
si es
false
string()
Convierte a un valor booleano
true
si es distinto de cerotrue
si contiene algún
nodo.true
si no es la cadena vacíaXPath incluye los operadores and
y or
También incluye la función not()
XPath contiene los operadores matemáticos habituales:
+
, -
(debe estar precedido de un espacio),
*
, div
(la división no es con / ) y
mod
También incluye los operadores de comparación:
=
, !=
, <
, >
,
<=
, >=
Otras funciones matemáticas: sum()
,
floor()
, ceiling()
, round()
concat(cad1,cad2,cad*)
devuelve el resultado de concatenar sus argumentosconcat('uno','dos') = 'unodos'
substring(cad,pos,long?)
devuelve la subcadena de cad
a partir
de la posición pos
y de longitud long
substring('camina',3) = 'mina'
substring('camina',3,2) = 'mi'
contains(cad1,cad2)
devuelve true
si cad1
contiene
la cadena cad2
contains('camina','ca') = true
starts-with(cad1,cad2)
devuelve true
si cad1
comienza
con la cadena cad2
starts-with('camina','ca') = true
ends-with
substring-before(cad1,cad2)
devuelve el trozo de cadena de cad1
anterior a
cad2
substring-before('camina','mi') = 'ca'
substring-after(cad1,cad2)
devuelve el trozo de cadena de cad1
posterior a
cad2
substring-after('camina','mi') = 'na'
string-length(cad)
devuelve la longitud de cad
string-length('camina') = 6
normalize-space(cad)
devuelve el resultado de normalizar cad
eliminando espacios en blanco
redundantes
normalize-space('un espacio largo') = 'un espacio largo'
translate(cad1,cad2,cad3)
devuelve el resultado de traducir todos los caracteres
de cad1
que aparecen en cad2
por sus correspondientes en cad3
translate('camina','aeiou','AEIOU') = 'cAmInA'
position()
: posición del nodo actuallast()
devuelve el tamaño del contexto actualcount(nodos)
devuelve el número de nodosid(objeto)
selecciona elementos por su ID único (declarado en la DTD)name(nodo?)
devuelve el nombre del nodolocal-name(nodo?)
devuelve el nombre localnamespace-uri(nodo?)
devuelve la URI del espacio de nombres lang(cad)
devuelve true
si el idioma del nodo actual es cad
A partir de este fichero
Realizar las siguientes consultas
E
e
e
(mayúscula o minúscula)e
document(URI)
permite cargar un fichero en tiempo
de ejecuciónXPath 2.0 fue propuesto en 2005. Novedades:
if
y for
Fin de la presentación