XPath Ing. Hernández López Augusto. Introducción Es un lenguaje para encontrar información en...

25
XPath Ing. Hernández López Augusto

Transcript of XPath Ing. Hernández López Augusto. Introducción Es un lenguaje para encontrar información en...

Page 1: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

XPath

Ing. Hernández López Augusto

Page 2: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Introducción Es un lenguaje para encontrar información en

un documento XML. Es utilizado para navegar a través de elementos y atributos.

Es el mayor componente en el estándar XSLT – XQuery y XPointer utilizan las expresiones XPath.

Se convirtió en un estándar recomendado por la W3C en 1999

Page 3: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

¿Qué es XPath? Es una sintaxis para definir partes de un

documento XML Utiliza expresiones de trayectorias para

navegar en documentos XML Contiene una biblioteca de funciones estándar Es el mayor componente en XSLT Es un estándar de la W3C

Page 4: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Uso de XPath Con DOM/SAX es posible navegar sobre el

documento conociendo su estructura exacta, se debe especificar si busca en el padre, hermanos, hijos, etc.

Mediante XPath es posible localizar nodos en el documento XML.

Esta diseñado para procesa árboles y facilitar la referencia de los datos en la jerarquía.

Se basa en expresiones similares a las expresiones regulares, diseñadas para la estructura jerárquica de XML.

Page 5: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Expresiones XPath Se utilizan expresiones para seleccionar nodos

o conjuntos de nodos. Son expresiones similares a las utilizadas en

el sistema de archivos tradicional.

Page 6: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Funciones Estándar XPath Incluye cerca de 100 funciones. Existen funciones para valores de cadenas,

numéricas, fechas, comparación de hora, nodos, manipulación del QName, secuencias, valores booleanos, etc.

Page 7: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Terminología Nodos: Existen diferentes tipos: elemento,

atributo, texto, instrucción de procesamiento, comentario y documento (raíz). Se maneja como un árbol de nodos

<libreria> (nodo documento) <autor>J K. Rowling</autor> (nodo elemento)

lenguaje="es" (nodo atributo)

Page 8: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Terminología Valores Atómicos: Son aquellos nodos que

no tienen hijos (hojas) o padres (atributos). Artículo: Son valores atómicos o nodos.

Page 9: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Relaciones entre Nodos Padre: Cada elemento y atributo tiene un

padre. Hijo: Los nodos elemento pueden tener

cero, uno o más hijos. Hermanos, Vecinos: Nodos que tienen el

mismo padre. Ancestros: Un nodo padre, su padre, el

padre de su padre, etc. Descendientes: Un nodo hijo, los hijos de

sus hijos, etc.

Page 10: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Sintaxis XPath XPath utiliza expresiones de trayectorias para

seleccionado nodos o conjuntos de nodos en un documento XML. EL nodo es seleccionado mediante una trayectoria o pasos.

Una trayectoria esta compuesta de uno o más pasos

Cada paso esta compuesto de un eje, un nodo y opcionalmente predicados. Una pareja de dos puntos (::) separa el eje del nodo y cada predicado se pone entre paréntesis cuadrados []

Se pueden especificar trayectorias: Absolutas, si parte de la raíz del documento. / Relativas, si parte del nodo donde se encuentra.

Page 11: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Selección de Nodos

Los nodos se seleccionan con las siguientes trayectorias o pasos, estas son las expresiones más usuales:

nombrenodo Selecciona todos los nodos hijos del nodo nombrado

/ Selecciona desde el nodo raíz

// Selecciona nodos en el documento desde el nodo actual que corresponda a la selección no importando donde esten

. Selecciona el nodo actual

.. Selecciona el padre del nodo actual

@ Selecciona los atributos

Page 12: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Selección de Nodos: Ejemplo

La tabla siguiente muestra algunas expresiones y los resultados de las mismas:bookstore Selecciona todos los nodos hijos del elemento

nodo bookstore

/bookstore Selecciona el elemento raíz bookstore

bookstore/book Selecciona todos los elementos book que son hijos de bookstore

//book Selecciona todos los elementos book no importando donde estén.

bookstore//book Selecciona todos los elementos book descendientes de bookstore no importando donde estén debajo de este.

//@lang Selecciona todos los atributos llamados lang

Page 13: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Predicados

Predicados son utilizados para encontrar nodos específicos o un nodo que contiene un valor especifico. Están embebidos en paréntesis cuadrados [].

bookstore/book[1] Selecciona el primer elemento book

bookstore/book[last()] Selecciona el ultimo elemento book

bookstore/book[position()<3] Selecciona dos elementos

bookstore/book[price>35.00] Selecciona todos los libros con precio mayor a 35.0

//title[@lang=‘eng’] Selecciona todos los elementos que tienen atributo lang con valor ‘eng’

Page 14: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Nodos desconocidos

* Cualquier nodo elemento

@* Cualquier nodo atributo

node() Cualquier nodo

/bookstore/* Todos los nodos hijos de bookstore

//* Todos los nodos del documento

//title[@*] Todos los atributos del nodo title

Page 15: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Ejes Un eje define un conjunto de nodos relativos

al nodo actual Ancestro, ancestro o el mismo, hijo ,

descendiente, descendiente o el mismo, siguientes, hermanos siguientes, padre, precedentes, hermanos precedentes, el mismo, atributos, espacio de nombres

Se antecede el eje con :: P.ej attribute::lang, child::*

Page 16: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

OperadoresOperador Descripción Ejemplo Valor de Retorno

| Calcula dos conjuntos de nodos //book | //cd Regresa un conjunto de nodos con book y cd

+ Suma 6 + 4 10- Resta 6 - 4 2* Multiplicación 6 * 4 24div División 8 div 4 2= Igualdad price=9.80 true si price es 9.80

!= Desigualdad price!=9.80 false si price es 9.80

< Menor que price<9.80 true si price es menor 9.80

<= Menor o igual que price<=9.80 true si price es menor o igual que 9.80

> Mayor que price>9.80 true si price es mayor 9.80

>= Mayor o igual que price>=9.80 true si price es mayor o igual que 9.80

or O price=9.80 or price=9.70 true si price es igual que 9.80 o igual que 9.70

and Y price>9.00 and price<9.90 true si price es mayor que 9.00 y menor que 9.90

mod Modulo (residuo división) 5 mod 2 1

Una expresion XPath regresa un conjunto de nodos, una cadena, un booleano o un número.

Page 17: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Ejes en una trayectoría

Page 18: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Ejesancestor Selecciona todos los ancestros del nodo actual (padre, abuelo, etc.)

ancestor-or-self Selecciona todos los ancestros del nodo actual (padre, abuelo, etc.) y el nodo actual

attribute Selecciona todos los atributos del nodo actual

child Selecciona todos los hijos del nodo actual

descendant Selecciona todos los descendientes del nodo actual (hijo, nieto, etc.)

descendant-or-self Selecciona todos los descendientes del nodo actual (hijo, nieto, etc.) y el nodo actual

following Selecciona todo en el documento que esta a partir del nodo actual

following-sibling Selecciona todos los hermanos posteriores del nodo actual

namespace Selecciona todos los nodos con el namespace del nodo actual

parent Selecciona el padre del nodo actual

preceding Selecciona todo en el documento que esta antes del nodo actual

preceding-sibling Selecciona todos los hermanos anteriores al nodo actual

self Selecciona el nodo actual

Page 19: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Prueba de nodos Los ejes eligen la dirección que se va a dirigir,

la prueba de nodos determina qué tipo de nodos seleccionar a los largo de los ejes:

nombre, cualquier elemento o atributo especificado

*, todos los nodos del tipo atributo prefijo:*, cualquier elemento o atributo con el

espacio de nombres mapeado por el prefijo comment(), cualquier comentario text(), cualquier nodo de texto node(), cualquier nodo processing-instruction(), cualquier instrucción

de proceso

Page 20: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Ejemplo books.xml Con el archivo de ejemplo y ubicados en el

nodo //book[3], ejecutar las siguientes expresiones: self::* child::* child::price following::* attribute::category preceding-sibling::node() preceding::comment() descendant::author

Page 21: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Trayectorias compuestas Para combinar los pasos en una trayectoria se

utiliza diagonal (/), por lo tanto el conjunto de nodos seleccionados en el primer paso se convierte en el nodo contexto del segundo paso y así sucesivamente:

//book[3]/following-sibling::node()/author //book[3]/preceding-sibling::node()/year /bookstore/child::book[child::year = 2003][2]

Page 22: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Trayectorias Abreviadas

Las trayectorias son equivalentes a lo siguiente:

child::nombre nombre

/ancestor::node()/parent::node() /

/descendant-or-self::node()/ //

self::node() .

parent::node() ..

attribute::nombre @nombre

Page 23: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Funciones XPath Devuelven algún tipo siguiente:

node-set, una colección de nodos desordenada sin duplicados

string, una secuencia de caracteres boolean, verdadero o falso number, un numero real

Algunas funciones number last() number position() number count(node-set) string substring(str, str) string concat(str, str, str*) boolean starts-with(str, str) boolean contains(str, str) number string-lenght(str) boolean not(boolean) boolean true() boolean false()

http://www.w3schools.com/XPath/xpath_functions.asphttp://www.w3.org/TR/xquery-operators/

Page 24: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Ejemplo XML<?xml version="1.0" encoding="ISO-8859-

1"?>

<!-- Augusto Dobeslao -->

<bookstore>

 

<book category="COOKING">

<title lang="en">Everyday Italian</title>

<author>Giada De Laurentiis</author>

<year>2005</year>

<price>30.00</price>

</book>

 

<book category="CHILDREN">

<title lang="en">Harry Potter</title>

<author>J K. Rowling</author>

<year>2005</year>

<price>29.99</price>

</book>

<book category="WEB"> <title lang="en">XQuery Kick

Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan

Nagarajan</author> <year>2003</year> <price>49.99</price></book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price></book> </bookstore>

Page 25: XPath Ing. Hernández López Augusto. Introducción  Es un lenguaje para encontrar información en un documento XML. Es utilizado para navegar a través de.

Referencias http://www.w3schools.com/XPath XML in a Nutshell, A Desktop Quick

Reference, Elliotte Rusty Harold & W. Scott Means, O’Reilly 2001