Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porIvette Panza Modificado hace 9 años
1
Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · www.captiva.es XPath
2
¿Qué es Xpath? Lenguaje para identificar partes de documento XML No es XML Es parte de XSL (XSLT, XSL-FO) Utilizado fuera de XSL: XPointer, XForms
3
Estructura en árbol (II) Todo documento XML es un árbol de nodos Cada nodo contiene otros nodos Nodo raíz Nodo imaginario del que cuelgan los demás. No es el elemento raíz Nodo hoja Si no tiene descendientes (p.e. texto, comentario, elemento sin atributos ni contenido) Resto de nodos: Nodo elemento Nodo de texto Nodo de atributo Nodo de comentario Nodo de PI Nodo de namespace
4
Estructura en árbol (III) Veamos un fichero XML y su representación en árbol:
5
Estructura en árbol (IV) Algunas consideraciones Los elementos, no se incluyen en el árbol No direccionables por Xpath Las entidades se resuelven previamente Es posible que haya atributos tipo #FIXED añadidos por DTD que no estén físicamente en XML Los atributos xmlns y xmlns:prefijo no se tienen en cuenta
6
Location Paths ¿Qué es un location path? Una expresión que localiza uno o varios nodos dentro de un documento Compuesta por location steps que se evalúan relativamente al nodo “actual” denominado context node Location path raíz Sintaxis: / Sitúa el context node en el nodo raíz Localización de elementos hijos Sintaxis: nombre-hijo Ejemplo. Si el nodo contexto es DDD y evaluamos la expresión Xpath: BBB, seleccionaría:
7
Location Paths (II) Localización de atributos Sintaxis: @nombre-atributo Ejemplo. Selección de todos los atributos “id”. Se introduce localización desde nodo raíz “/” Doble barra implica todo el documento “//” XPath: // @id
8
Location Paths (III) Localización de comentarios, PI, texto Sintaxis respect.: comment() text() processing- instruction() Ejemplo. Selección de comentarios del texto. Nodo contexto Nodo raíz. XPath:comment()
9
Location Paths (IV) Comodines Ejemplo. Supongamos que nodo contexto es el nodo raíz. XPath: node() ComodínSignificado * Todos los nodos elemento node() Todos los nodos @* Todos los atributos
10
Location Paths (V) Grupos de Location Paths Sintaxis: path1 | path2 | path3 Ejemplo Path de contexto AAA Xpath: CCC | EEE
11
Paths compuestos Los location Paths pueden concatenarse con “/” Ejemplos Xpath: /AAA/DDD/BBB Xpath: /AAA/*/*
12
Paths compuestos (II) Selección de todos los descendientes Sintaxis: // Si se expresa en primer lugar indica todos los descendientes desde el raíz Ejemplos Xpath: //BBB Xpath: /AAA/DDD//*
13
Paths compuestos (III) Selección del nodo padre Sintaxis:.. Ejemplos Xpath: //BBB/.. Xpath: /AAA/DDD/CCC/..
14
Paths compuestos (IV) Selección del nodo contexto Sintaxis:. Ejemplos Xpath: //BBB/. Xpath: /AAA/DDD/.
15
Predicados Filtros para refinar más un location path Consisten en expresiones booleanas Se aplican a cada Location path por separado Sintaxis: path[expresion-booleana] Ejemplos: Primer nodo AAA en todo el documento //AAA[1] Evaluación del contenido del nodo elemento //AAA[.=“contenido”] Evaluación de nodos con atributo dado o atributo con valor dado //AAA[@id] //AAA[@id=‘1234’] Nodos con nombre de elemento dado //*[name()=‘AAA’] //AAA Comparación de valores: = = != //AAA[@id >= 12] Ojo: Si Xpath detro de XML: ‘<‘ ‘<’ Concatenaciones booleanas: and, or //AAA[@id >= 12 and @id < 20]
16
Location Paths sin abreviar Hasta ahora hemos visto forma abreviada (/,.., //,.) La más utilizada Location path completo compuesto por: eje::test-nodos[predicado] Partes eje: Indica la dirección en la que viajar test-nodos: Condición que han de cumplir los nodos predicado: Expresiones booleanas adicionales. Opcional Ejemplo Versión abreviada: AAA/BBB/CCC/@id Versión sin abreviar: child::AAA/child::BBB/child::CCC/attribute::id
17
Location Paths sin abreviar (II) Tipos de ejes Equivalentes a forma abreviada: child (nombre), self (self::* .), parent (parent::* ..) Nuevos. Siempre con referencia del nodo de contexto ancestor nodo padre y ascendencia hasta raíz ancestor-or-self incluye el nodo contexto descendant nodos hijos y descendencia descendant-or-self incluye el nodo contexto following-sibling siguientes nodos al mismo nivel que el de contexto hijos del mismo padre preceding-sibling como el anterior pero anteriores al nodo contexto preceding anteriores nodos hasta ppio del doc a cualquier nivel following siguientes nodos hasta fin del doc a cualquier nivel namespace todos los nodos de un namespace
18
Location Paths sin abreviar (III) Ejemplos forma completa Xpath: /AAA/BBB/descendant::* Xpath:/AAA/BBB/DDD/CC C/ancestor::* Xpath://CCC/preceding- sibling::*
19
Expresiones generales Otras expresiones aparte de Location Paths Numéricas Cadenas Booleanas Números Expresión Xpath válida: 3.141529 Todos los números Xpath se consideran 8-byte, IEEE 754 (doubles de Java). ±4.94065645841246544e-324 ~ ±1.79769313486231570e+308 Operaciones permitidas: + - * div mod Ejemplo expresión XPath: (8.5E45 * 2) mod @id
20
Expresiones generales (II) Cadenas Cualquier cadena unicode es una expresión Xpath válida Únicamente no puede contener el carácter que la delimite (‘ ó “). Ejemplos: “hola” “τσπξχ” “ضغلمنسش” Las cadenas se pueden comparar “hola” != “Hola” Booleanos Valores: true() false() Las comparaciones devuelven booleanos: “1.5” >= “- 1.2” Los operadores lógicos agrupan booleanos: not( (1.5 < 5) and true() ) or false()
21
Funciones Xpath dispone de varias funciones. Las funciones pueden devolver: booleanos, números, grupos de nodos, cadenas Las conversiones automáticas son posibles excepto desde y hacia grupos de nodos Funciones de nodos position() Devuelve número de nodo dentro de la lista de nodos de contexto (XSLT) Person, last() Devuelve el último nodo de la lista de contexto count(nodeset) Cuenta el nº de nodos del conjunto pasado como argumento Ej. count(//BBB) 2
22
Funciones (II) Funciones de nodos (II) id(nodeset) Devuelve nodo con atributo definido como ID en DTD igual a argumento Ej. id(“a1234”) local-name(nodeset) Nombre de primer nodo en nodeset sin prefijo name(nodeset) Nombre de primer nodo completo Ejemplo: name(//aa:AAA) = “aa:AAA”, local- name(//aa:AAA) = “AAA” namespace-uri(nodeset) Devuelve uri de namespace de primer nodo en nodeset
23
Funciones (III) Ejemplos funciones de nodo XPath: //BBB[position() mod 2 = 0] XPath: //BBB[last()]
24
Funciones (IV) Funciones de cadena string(cualquier-cosa) Convierte a cadena Ej. string(true()) “true” Con nodesets saca texto de primer nodo aa bb string(//*) = “aa” starts-with(cadena-completa,subcadena) Ej. starts-with(“Pepelui”, “Pe”) true() contains(cadena-completa,subcadena) Ej: contains(“aeIou”, “eI”) true() substring-before(cadena, subcadena) Ej: substring-before(“DD/MM/AAAA”, “/”) “DD” substring-after(cadena, subcadena) Ej: substring-after(“DD/MM/AAAA”, “/”) “MM/AAAA” substring (cadena, inicio [,longitud]) Ej: substring(“DD/MM/AAAA”, 3) “/MM/AAAA” string-length(cadena) Ej: substring(“DD/MM/AAAA”, 3) “/MM/AAAA” normalize-space(cadena) Elimina espacios extra
25
Funciones (V) Ejemplos funciones cadenas XPath: //*[string- length(name()) > 3] XPath: //@*[substring(.,2) > 2]
26
Funciones (VI) Funciones booleanas true() false() not(expr) Funciones numéricas number() convierte a número number(nodeset) = number(string(nodeset)) Ej.: number(“7.5”) = 7.5 number(“Pedro”) = NaN Extracción de parte entera round(4.6) = 5 floor(4.6) = 4 ceiling(4.2) = 5 sum(nodeset) Convierte cada nodo en número y lo suma
27
Funciones (VII) Ejemplo funciones numéricas XPath: //BBB[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.