XPath
-
Upload
jescobar010 -
Category
Documents
-
view
68 -
download
2
Transcript of XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas 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 predefinidas en XPath XPath 2.0
Contenidos
Antecedentes
Sintaxis XPath
Localizaciones en XPath
Funciones predefinidas en XPathConversion de tiposBooleanasMatematicasCadenasConjuntos de nodos
XPath 2.0
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Evolucion de XPath
I Desarrollado en 1999 como parte de XSL (eXtensibleStylesheet Language)
I La especificacion de XSL se dividio en:I XPath: Lenguaje para identificar nodos del arbolI XSLT: Lenguaje para transformar documentos XMLI XSL-FO: Lenguaje para definir objetos de formateo, paginas y
contenidos de paginas.
I XPath se independizo como una notacion para navegar por elarbol de un documento XML.
I Se utiliza en: XQuery, XPointer, XML Schema, Schematron,etc.
I XPath 2.0 propuesto en 2005
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Lenguaje XPath
No tiene sintaxis XMLTrabaja sobre el arbol del documentoLa version XPath 1.0 tiene 4 tipos de datos:
I Booleanos
I Cadenas
I Numeros
I Conjuntos de nodos
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Arbol del documento
< t i t u l o>Alba</ t i t u l o><ve r so>Mi corazon op r im ido</ ve r so><ve r so>s i e n t e j un t o a l a a l bo r ada</ ve r so><ve r so>e l d o l o r de su s amores . . .</ ve r so></poema>
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas 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 predefinidas en XPath XPath 2.0
Expresiones XPath
I Las expresiones XPath suelen utilizarse en valores de atributosXML
I Se aplican las normas para codificar cadenas en XML
// t i t u l o | // v e r s o
I Se pueden alternar comillas simples/dobles o codificarlasmediante " o '
// t i t u l o | // v e r s o
I Se usan diversas abreviaciones para facilitar la escritura
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Expresiones XPath (1/2)
Tipos de expresiones:
I Union de 2 conjuntos de nodos mediante |.
// t i t u l o | // v e r s o
I Llamada a una variable.
$pepe
I Valor literal: una cadena o un numero.
’ Hola ’ 23 .45 ”Adios ”
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Expresiones XPath (2/2)
Tipos de expresiones:
I Llamada a una funcion u operador.
count (// v e r s o )
I Ruta de localizacion.
/poemas/poema/ v e r s o
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Valor de una expresion
El valor de una expresion puede ser:
I Una cadena
I Un numero
I Un valor booleano
I Un conjunto de nodos
En XPath 2.0 se substituyen conjuntos de nodos por secuencias engeneral
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Contexto de evaluacion
I Las expresiones se evaluan en funcion de un contextoI El contexto contiene la siguiente informacion:
I Nodo actual del contextoI Posicion (entero)I Tamano (entero)
I Otra informacion del contextoI Valores de variables (no hay asignacion destructiva)I Biblioteca de funcionesI Declaraciones de espacios de nombres
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Ruta de localizacion
I Una ruta se compone de varios pasos separados por /
/poema/ v e r s o
I La ruta puede ser:I Relativa: se evalua desde el nodo de contextoI Absoluta: se evalua desde en nodo raız. Comienza por /
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Pasos de localizacion
I Cada paso se compone de:I Un ejeI Una prueba de nodoI Opcionalmente, varios predicados
I Sintaxis: eje :: pruebaNodo [pred1][pred2]...
I Ejemplo:/descendant::verso[contains(.,’anochecer’)]
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Ejes
I child:: Hijos directos del nodo actualI parent:: Padre del nodo actualI descendant:: DescendientesI ancestor:: AntecesoresI descendant-or-self:: Descendientes incluido el nodo
actualI ascestor-or-self:: Antecesores incluido el nodo actualI following:: Los nodos siguientes (incluidos los
descencientes)I preceding:: Los precedentes (excluyendo los antecesores)I following-sibling:: Hermanos siguientesI preceding-sibling:: Hermanos precedentes
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Eje child
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Eje parent
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Eje ancestor
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Eje descendant
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Eje following-sibling
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Eje preceding-sibling
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Eje following
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Eje preceding
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
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
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 XPath 2.0
Predicados
Un predicado es una funcion booleana que actua como un filtroEjemplo: /descendant::verso[position()=2]Puede haber mas 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
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
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
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Ejercicio
Paıses Europeos
En este fichero se muestra informacion sobre paıses de Europa enformato XMLConstruir expresiones XPath para realizar las siguientes consultas
I Obtener el nombre del continente
I Obtener informacion sobre Espana
I Obtener PIB de Espana
I Obtener paıses con mas de 40 millones de habitantes
I Obtener nombres de paıses con PIB mayor que Espana
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
Conversion de tipos
string()
Convierte a cadena de texto
I Si es un numero, se devuelve su representacion como cadena(para controlar el formato, es preferible, format-number
I Si es booleano, devuelve true o 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
Conversion de tipos
number()
Convierte a un numero
I Si es una cadena, trata de analizarla para convertirla a numero
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 cadenamediante string()
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Conversion de tipos
boolean()
Convierte a un valor booleano
I Si es un numero, es true si es distinto de cero
I Si es un conjunto de nodos, es true si contiene algun nodo.
I 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 predefinidas en XPath XPath 2.0
Booleanas
Funciones booleanas
XPath incluye los operadores and y orTambien incluye la funcion not()
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Matematicas
Funciones matematicas
XPath contiene los operadores matematicos habituales: +, - (debeestar precedido de un espacio), *, div (la division no es con / ) ymodTambien incluye los operadores de comparacion: =, !=, <, >, <=, >=Otras funciones matematicas: sum(), floor(), ceiling(),round()
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Cadenas
Funciones de cadenas: concat
I concat(cad1,cad2,cad*) devuelve el resultado deconcatenar sus argumentos
I Ejemplo: concat(’uno’,’dos’) = ’unodos’
Jose Emilio Labra Gayo
XPath
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 cada partir de la posicion 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 XPath 2.0
Cadenas
Funciones de cadenas: contains
I contains(cad1,cad2) devuelve true si cad1 contiene lacadena cad2
I Ejemplo: contains(’camina’,’ca’) = true
Jose Emilio Labra Gayo
XPath
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 comienzacon 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 cadenade cad1 anterior a cad2
I Ejemplo: substring-before(’camina’,’mi’) = ’ca’
I substring-after(cad1,cad2) devuelve el trozo de cadenade 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 XPath 2.0
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
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 normalizarcad eliminando espacios en blanco redundantes
I Ejemplo:
no rma l i z e−space ( ’ un e s p a c i o 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 predefinidas en XPath XPath 2.0
Cadenas
Funciones de cadenas: translate
I translate(cad1,cad2,cad3) devuelve el resultado detraducir todos los caracteres de cad1 que aparecen en cad2por sus correspondientes en cad3
I Ejemplo:
t r a n s l a t e ( ’ camina ’ , ’ a e i ou ’ , ’AEIOU ’ ) = ’ cAmInA ’
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Conjuntos de nodos
Funciones de conjuntos de nodos
I position(): posicion del nodo actual
I last() devuelve el tamano del contexto actual
I count(nodos) devuelve el numero de nodos
I id(objeto) selecciona elementos por su ID unico (declaradoen 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 denombres
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 XPath 2.0
Conjuntos de nodos
Ejercicio
Paıses Europeos
A partir de este ficheroRealizar 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 (mayuscula o minuscula)
I Paıses que acaben por la letra e
I PIB medio de paıses europeos
I Paıses cuyo PIB esta por encima de la media
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Conjuntos de nodos
Carga de documentos externos
I document(URI) permite cargar un fichero en tiempo deejecucion
I Permite extraer y combinar informacion de varios ficheros
Jose Emilio Labra Gayo
XPath
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
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
Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0
Fin
Fin de la presentacion
Jose Emilio Labra Gayo
XPath