Jose Emilio Labra Gayo Noviembre 2006

Anuncio
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath
Jose Emilio Labra Gayo
Noviembre 2006
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Conversión de tipos
Booleanas
Matemáticas
Cadenas
Conjuntos de nodos
XPath 2.0
Jose Emilio Labra Gayo
XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Evolución de XPath
I
I
Desarrollado en 1999 como parte de XSL (eXtensible
Stylesheet Language)
La especificación de XSL se dividió en:
I
I
I
I
I
I
XPath: Lenguaje para identificar nodos del árbol
XSLT: Lenguaje para transformar documentos XML
XSL-FO: Lenguaje para definir objetos de formateo, páginas y
contenidos de páginas.
XPath se independizó como una notación para navegar por el
árbol de un documento XML.
Se utiliza en: XQuery, XPointer, XML Schema, Schematron,
etc.
XPath 2.0 propuesto en 2005
Jose Emilio Labra Gayo
XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Lenguaje XPath
No tiene sintaxis XML
Trabaja sobre el árbol del documento
La versión XPath 1.0 tiene 4 tipos de datos:
I
Booleanos
I
Cadenas
I
Números
I
Conjuntos de nodos
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Árbol del documento
< t i t u l o>A l b a</ t i t u l o>
<v e r s o>Mi c o r a z o n o p r i m i d o</ v e r s o>
<v e r s o> s i e n t e j u n t o a l a a l b o r a d a</ v e r s o>
<v e r s o> e l d o l o r de s u s amores . . . </ v e r s o>
</poema>
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Tipos de nodos
Existen 7 tipos de nodos
1. Nodo raı́z
2. Elementos
3. Atributos
4. Comentarios
5. Instrucciones de procesamiento
6. Texto
7. Espacios de nombres
Jose Emilio Labra Gayo
XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Expresiones XPath
I
Las expresiones XPath suelen utilizarse en valores de atributos
XML
I
Se aplican las normas para codificar cadenas en XML
| // v e r s o
// t i t u l o
I
Se pueden alternar comillas simples/dobles o codificarlas
mediante " ó '
// t i t u l o
I
Se usan diversas abreviaciones para facilitar la escritura
Jose Emilio Labra Gayo
XPath
| // v e r s o
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Expresiones XPath (1/2)
Tipos de expresiones:
I Unión de 2 conjuntos de nodos mediante |.
// t i t u l o
I
| // v e r s o
Llamada a una variable.
$ pepe
I
Valor literal: una cadena o un número.
’ Hola ’
Jose Emilio Labra Gayo
XPath
23.45
” Adios ”
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Expresiones XPath (2/2)
Tipos de expresiones:
I
Llamada a una función u operador.
count (// v e r s o )
I
Ruta de localización.
/ poemas /poema / v e r s o
Jose Emilio Labra Gayo
XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Valor de una expresión
El valor de una expresión puede ser:
I
Una cadena
I
Un número
I
Un valor booleano
I
Un conjunto de nodos
En XPath 2.0 se substituyen conjuntos de nodos por secuencias en
general
Jose Emilio Labra Gayo
XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Contexto de evaluación
I
I
Las expresiones se evalúan en función de un contexto
El contexto contiene la siguiente información:
I
I
I
I
Nodo actual del contexto
Posición (entero)
Tamaño (entero)
Otra información del contexto
I
I
I
Valores de variables (no hay asignación destructiva)
Biblioteca de funciones
Declaraciones de espacios de nombres
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Ruta de localización
I
Una ruta se compone de varios pasos separados por /
/poema/ v e r s o
I
La ruta puede ser:
I
I
Relativa: se evalúa desde el nodo de contexto
Absoluta: se evalúa desde en nodo raı́z. Comienza por /
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Pasos de localización
I
Cada paso se compone de:
I
I
I
Un eje
Una prueba de nodo
Opcionalmente, varios predicados
I
Sintaxis: eje :: pruebaNodo [pred1][pred2]...
I
Ejemplo:
/descendant::verso[contains(.,’anochecer’)]
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Ejes
I
I
I
I
I
I
I
I
I
I
child:: Hijos directos del nodo actual
parent:: Padre del nodo actual
descendant:: Descendientes
ancestor:: Antecesores
descendant-or-self:: Descendientes incluido el nodo
actual
ascestor-or-self:: Antecesores incluido el nodo actual
following:: Los nodos siguientes (incluidos los
descencientes)
preceding:: Los precedentes (excluyendo los antecesores)
following-sibling:: Hermanos siguientes
preceding-sibling:: Hermanos precedentes
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Eje child
Jose Emilio Labra Gayo
XPath
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Eje parent
Jose Emilio Labra Gayo
XPath
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Eje ancestor
Jose Emilio Labra Gayo
XPath
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Eje descendant
Jose Emilio Labra Gayo
XPath
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Eje following-sibling
Jose Emilio Labra Gayo
XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Eje preceding-sibling
Jose Emilio Labra Gayo
XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Eje following
Jose Emilio Labra Gayo
XPath
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Eje preceding
Jose Emilio Labra Gayo
XPath
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Ejes (II)
I
attribute:: Atributos del nodo actual
I
namespace:: Nodos de espacio de nombres
I
self:: Localiza el nodo actual
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Prueba de nodo
I
nombre se verifica para todos los nodos que tienen ese nombre
I
* todos los nodos del tipo del eje
I
node() cualquier nodo (sea del tipo que sea)
I
text() nodos de tipo texto
I
comment() nodos de tipo comentario
I
processing-instruction() instrucciones de procesamiento
Jose Emilio Labra Gayo
XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Predicados
Un 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]
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Abreviaturas
I
child:: es el eje por defecto
I
attribute:: equivale a @
I
. equivale a self::node()
I
.. equivale a parent::node()
I
// es /descendant-or-self::node()/
I
[position()=no ] equivale a [no ]
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Ejercicio
Paı́ses Europeos
En este fichero se muestra información sobre paı́ses de Europa en
formato XML
Construir expresiones XPath para realizar las siguientes consultas
I
Obtener el nombre del continente
I
Obtener información sobre España
I
Obtener PIB de España
I
Obtener paı́ses con más de 40 millones de habitantes
I
Obtener nombres de paı́ses con PIB mayor que España
Puede utilizarse el programa XPath Explorer
Jose Emilio Labra Gayo
XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Conversión de tipos
string()
Convierte a cadena de texto
I
Si es un número, se devuelve su representación como cadena
(para controlar el formato, es preferible, format-number
I
Si es booleano, devuelve true ó false
I
Si es un conjunto de nodos, se aplica al primer nodo
I
Si es un nodo, devuelve el valor de cadena de dicho nodo
Jose Emilio Labra Gayo
XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Conversión de tipos
number()
Convierte a un número
I
Si es una cadena, trata de analizarla para convertirla a número
I
Si es un booleano, devuelve 1 si es true y 0 si es false
I
Si es un conjunto de nodos, se convierte primero a cadena
mediante string()
Jose Emilio Labra Gayo
XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Conversión de tipos
boolean()
Convierte a un valor booleano
I
Si es un número, es true si es distinto de cero
I
Si es un conjunto de nodos, es true si contiene algún nodo.
I
Si es una cadena, es true si no es la cadena vacı́a
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Booleanas
Funciones booleanas
XPath incluye los operadores and y or
También incluye la función not()
Jose Emilio Labra Gayo
XPath
Funciones predefinidas en XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Matemáticas
Funciones matemáticas
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()
Jose Emilio Labra Gayo
XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Cadenas
Funciones de cadenas: concat
I
concat(cad1,cad2,cad*) devuelve el resultado de
concatenar sus argumentos
I
Ejemplo: concat(’uno’,’dos’) = ’unodos’
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Cadenas
Funciones de cadenas: substring
I
substring(cad,pos,long?) devuelve la subcadena de cad
a partir de la posición pos y de longitud long
I
Ejemplo: substring(’camina’,3) = ’mina’
I
Ejemplo: substring(’camina’,3,2) = ’mi’
Jose Emilio Labra Gayo
XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Cadenas
Funciones de cadenas: contains
I
contains(cad1,cad2) devuelve true si cad1 contiene la
cadena cad2
I
Ejemplo: contains(’camina’,’ca’) = true
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Cadenas
Funciones de cadenas: starts-with
I
starts-with(cad1,cad2) devuelve true si cad1 comienza
con la cadena cad2
I
Ejemplo: starts-with(’camina’,’ca’) = true
I
NOTA: En XPath 1.0 no existe ends-with
Jose Emilio Labra Gayo
XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Cadenas
Funciones de cadenas: substring-before/after
I
substring-before(cad1,cad2) devuelve el trozo de cadena
de cad1 anterior a cad2
I
Ejemplo: substring-before(’camina’,’mi’) = ’ca’
I
substring-after(cad1,cad2) devuelve el trozo de cadena
de cad1 posterior a cad2
I
Ejemplo: substring-after(’camina’,’mi’) = ’na’
Jose Emilio Labra Gayo
XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Cadenas
Funciones de cadenas: string-length
I
string-length(cad) devuelve la longitud de cad
I
Ejemplo: string-length(’camina’) = 6
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Cadenas
Funciones de cadenas: normalize
I
normalize-space(cad) devuelve el resultado de normalizar
cad eliminando espacios en blanco redundantes
I
Ejemplo:
n o r m a l i z e −s p a c e ( ’ un
Jose Emilio Labra Gayo
XPath
espacio
l a r g o ’ ) = ’ un e s p a c i o l a r g o ’
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Cadenas
Funciones de cadenas: translate
I
translate(cad1,cad2,cad3) devuelve el resultado de
traducir todos los caracteres de cad1 que aparecen en cad2
por sus correspondientes en cad3
I
Ejemplo:
t r a n s l a t e ( ’ camina ’ , ’ a e i o u ’ , ’ AEIOU ’ ) = ’ cAmInA ’
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Conjuntos de nodos
Funciones de conjuntos de nodos
I
position(): posición del nodo actual
I
last() devuelve el tamaño del contexto actual
I
count(nodos) devuelve el número de nodos
I
id(objeto) selecciona elementos por su ID único (declarado
en la DTD)
I
name(nodo?) devuelve el nombre del nodo
I
local-name(nodo?) devuelve el nombre local
I
namespace-uri(nodo?) devuelve la URI del espacio de
nombres
I
lang(cad) devuelve true si el idioma del nodo actual es cad
Jose Emilio Labra Gayo
XPath
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Conjuntos de nodos
Ejercicio
Paı́ses Europeos
A partir de este fichero
Realizar las siguientes consultas
I
Paı́ses que empiezan por E
I
Paı́ses que contienen la letra e
I
Paı́ses que contienen la letra e (mayúscula o minúscula)
I
Paı́ses que acaben por la letra e
I
PIB medio de paı́ses europeos
I
Paı́ses cuyo PIB está por encima de la media
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
Conjuntos de nodos
Carga de documentos externos
I
document(URI) permite cargar un fichero en tiempo de
ejecución
I
Permite extraer y combinar información de varios ficheros
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
XPath 2.0 fue propuesto en 2005. Novedades:
I
Concepto de secuencias
I
Sentencias if y for
I
Cuantificadores
I
Soporte para tipos primitivos de XML Schema
I
Encaje de cadenas mediante expresiones regulares
Jose Emilio Labra Gayo
XPath
XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Fin
Fin de la presentación
Jose Emilio Labra Gayo
XPath
Localizaciones en XPath
Funciones predefinidas en XPath
XPath 2.0
Descargar