La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · www.captiva.es XPath.

Presentaciones similares


Presentación del tema: "Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · www.captiva.es XPath."— Transcripción de la presentación:

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) ]


Descargar ppt "Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · www.captiva.es XPath."

Presentaciones similares


Anuncios Google