Está en la página 1de 45

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

XPath
Jose Emilio Labra Gayo

Noviembre 2006

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predenidas en XPath Conversin de tipos o Booleanas Matemticas a Cadenas Conjuntos de nodos XPath 2.0
Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Evolucin de XPath o
Desarrollado en 1999 como parte de XSL (eXtensible Stylesheet Language) La especicacin de XSL se dividi en: o o
XPath: Lenguaje para identicar nodos del rbol a XSLT: Lenguaje para transformar documentos XML XSL-FO: Lenguaje para denir objetos de formateo, pginas y a contenidos de pginas. a

XPath se independiz como una notacin para navegar por el o o rbol de un documento XML. a 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 predenidas en XPath

XPath 2.0

Lenguaje XPath

No tiene sintaxis XML Trabaja sobre el rbol del documento a La versin XPath 1.0 tiene 4 tipos de datos: o Booleanos Cadenas Nmeros u Conjuntos de nodos

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Arbol 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

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

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

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Expresiones XPath
Las expresiones XPath suelen utilizarse en valores de atributos XML
Se aplican las normas para codicar cadenas en XML
// t i t u l o | // v e r s o

Se pueden alternar comillas simples/dobles o codicarlas mediante &quot; &apos; o


// t i t u l o | // v e r s o

Se usan diversas abreviaciones para facilitar la escritura


Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Expresiones XPath (1/2)


Tipos de expresiones: Unin de 2 conjuntos de nodos mediante |. o
// t i t u l o | // v e r s o

Llamada a una variable.


$ pepe

Valor literal: una cadena o un nmero. u


Hola 23.45 Adios

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Expresiones XPath (2/2)


Tipos de expresiones: Llamada a una funcin u operador. o
count (// v e r s o )

Ruta de localizacin. o
/ poemas /poema / v e r s o

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Valor de una expresin o

El valor de una expresin puede ser: o Una cadena Un nmero u Un valor booleano 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 predenidas en XPath

XPath 2.0

Contexto de evaluacin o
Las expresiones se evalan en funcin de un contexto u o El contexto contiene la siguiente informacin: o
Nodo actual del contexto Posicin (entero) o Tamao (entero) n

Otra informacin del contexto o


Valores de variables (no hay asignacin destructiva) o Biblioteca de funciones Declaraciones de espacios de nombres

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Ruta de localizacin o

Una ruta se compone de varios pasos separados por /


/poema/ v e r s o

La ruta puede ser:


Relativa: se evala desde el nodo de contexto u Absoluta: se evala desde en nodo ra Comienza por / u z.

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Pasos de localizacin o

Cada paso se compone de:


Un eje Una prueba de nodo Opcionalmente, varios predicados

Sintaxis: eje :: pruebaNodo [pred1][pred2]... Ejemplo: /descendant::verso[contains(.,anochecer)]

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Ejes
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

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Eje child

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Eje parent

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Eje ancestor

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Eje descendant

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Eje following-sibling

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Eje preceding-sibling

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Eje following

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Eje preceding

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Ejes (II)

attribute:: Atributos del nodo actual namespace:: Nodos de espacio de nombres self:: Localiza el nodo actual

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Prueba de nodo

nombre se verica 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 texto comment() nodos de tipo comentario processing-instruction() instrucciones de procesamiento

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Predicados

Un predicado es una funcin booleana que acta como un ltro o u Ejemplo: /descendant::verso[position()=2] Puede haber ms de un predicado y el orden es signicativo. a Ejemplo: /descendant::verso[position()=2][contains(.,de)] /descendant::verso[contains(.,de)][position()=2]

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Abreviaturas

child:: es el eje por defecto attribute:: equivale a @ . equivale a self::node() .. equivale a parent::node() // es /descendant-or-self::node()/ [position()=no ] equivale a [no ]

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Ejercicio
Pa Europeos ses En este chero se muestra informacin sobre pa de Europa en o ses formato XML Construir expresiones XPath para realizar las siguientes consultas Obtener el nombre del continente Obtener informacin sobre Espaa o n Obtener PIB de Espaa n Obtener pa con ms de 40 millones de habitantes ses a Obtener nombres de pa con PIB mayor que Espaa ses n Puede utilizarse el programa XPath Explorer
Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Conversin de tipos o

string()

Convierte a cadena de texto Si es un nmero, se devuelve su representacin como cadena u o (para controlar el formato, es preferible, format-number Si es booleano, devuelve true false o Si es un conjunto de nodos, se aplica al primer nodo 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 predenidas en XPath

XPath 2.0

Conversin de tipos o

number()

Convierte a un nmero u Si es una cadena, trata de analizarla para convertirla a nmero u Si es un booleano, devuelve 1 si es true y 0 si es false 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 predenidas en XPath

XPath 2.0

Conversin de tipos o

boolean()

Convierte a un valor booleano Si es un nmero, es true si es distinto de cero u Si es un conjunto de nodos, es true si contiene algn nodo. u Si es una cadena, es true si no es la cadena vac a

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Booleanas

Funciones booleanas

XPath incluye los operadores and y or Tambin incluye la funcin not() e o

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Matemticas a

Funciones matemticas a

XPath contiene los operadores matemticos habituales: +, - (debe a estar precedido de un espacio), *, div (la divisin no es con / ) y o mod Tambin incluye los operadores de comparacin: =, !=, <, >, <=, >= e o Otras funciones matemticas: sum(), floor(), ceiling(), a round()

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Cadenas

Funciones de cadenas: concat

concat(cad1,cad2,cad*) devuelve el resultado de concatenar sus argumentos Ejemplo: concat(uno,dos) = unodos

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Cadenas

Funciones de cadenas: substring

substring(cad,pos,long?) devuelve la subcadena de cad a partir de la posicin pos y de longitud long o Ejemplo: substring(camina,3) = mina Ejemplo: substring(camina,3,2) = mi

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Cadenas

Funciones de cadenas: contains

contains(cad1,cad2) devuelve true si cad1 contiene la cadena cad2 Ejemplo: contains(camina,ca) = true

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Cadenas

Funciones de cadenas: starts-with

starts-with(cad1,cad2) devuelve true si cad1 comienza con la cadena cad2 Ejemplo: starts-with(camina,ca) = true NOTA: En XPath 1.0 no existe ends-with

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Cadenas

Funciones de cadenas: substring-before/after

substring-before(cad1,cad2) devuelve el trozo de cadena de cad1 anterior a cad2 Ejemplo: substring-before(camina,mi) = ca substring-after(cad1,cad2) devuelve el trozo de cadena de cad1 posterior a cad2 Ejemplo: substring-after(camina,mi) = na

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Cadenas

Funciones de cadenas: string-length

string-length(cad) devuelve la longitud de cad Ejemplo: string-length(camina) = 6

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Cadenas

Funciones de cadenas: normalize

normalize-space(cad) devuelve el resultado de normalizar cad eliminando espacios en blanco redundantes Ejemplo:
n o r m a l i z e s p a c e ( un espacio l a r g o ) = un e s p a c i o l a r g o

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Cadenas

Funciones de cadenas: translate

translate(cad1,cad2,cad3) devuelve el resultado de traducir todos los caracteres de cad1 que aparecen en cad2 por sus correspondientes en cad3 Ejemplo:
t r a n s l a t e ( camina , a e i o u , AEIOU ) = cAmInA

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Conjuntos de nodos

Funciones de conjuntos de nodos


position(): posicin del nodo actual o last() devuelve el tamao del contexto actual n count(nodos) devuelve el nmero de nodos u id(objeto) selecciona elementos por su ID unico (declarado en la DTD) name(nodo?) devuelve el nombre del nodo local-name(nodo?) devuelve el nombre local namespace-uri(nodo?) devuelve la URI del espacio de nombres 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 predenidas en XPath

XPath 2.0

Conjuntos de nodos

Ejercicio
Pa Europeos ses A partir de este chero Realizar las siguientes consultas Pa que empiezan por E ses Pa que contienen la letra e ses Pa que contienen la letra e (mayscula o minscula) ses u u Pa que acaben por la letra e ses PIB medio de pa europeos ses Pa cuyo PIB est por encima de la media ses a
Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Conjuntos de nodos

Carga de documentos externos

document(URI) permite cargar un chero en tiempo de ejecucin o Permite extraer y combinar informacin de varios cheros o

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

XPath 2.0

XPath 2.0 fue propuesto en 2005. Novedades: Concepto de secuencias Sentencias if y for Cuanticadores Soporte para tipos primitivos de XML Schema Encaje de cadenas mediante expresiones regulares

Jose Emilio Labra Gayo XPath

Contenidos

Antecedentes

Sintaxis XPath

Localizaciones en XPath

Funciones predenidas en XPath

XPath 2.0

Fin

Fin de la presentacin o

Jose Emilio Labra Gayo XPath