sábado, 17 de enero de 2015

Xpath¿Qué es?

(XML Path Language) es un lenguaje que permite construir expresiones que recorren y procesan un documento XML. La idea es parecida a las expresiones regulares para seleccionar partes de un texto sin atributos (plain text). XPath permite buscar y seleccionar teniendo en cuenta la estructura jerárquica del XML. XPath fue creado para su uso en el estándar XSLT, en el que se usa para seleccionar y examinar la estructura del documento de entrada de la transformación.
Es muy importante que un documento este bien formado y validado si no..la mitad de las etiquetas no estarán correctas.

Nosotros utilizamos el editor Oxygen,si lo quieres descargar aquí te dejamos en link http://www.oxygenxml.com/download_oxygenxml_editor.html

Y aquí te ponemos un ejemplo.





Sobre el documento “ ” realizad las siguientes equipos.xml cuestiones:
1. Construir una expresión XPATH que nos permita extraer todos los elementos nombre
de todos los futbolistas (nodos completos).
2. Construir una expresión XPATH que permita recuperar todos los nodos elemento del
documento XML
3. Construir una expresión XPATH que permita recuperar todos los nodos atributo que
contienen la marca del patrocinador de cada futbolista
4. Construir una expresión XPATH que nos permita extraer todos los elementos nombre
de todos los futbolistas del “Real Madrid”
5. Construir una expresión XPATH que nos permita seleccionar los nodos de texto con los
nombres de los distintos futbolistas.
6. Construir una expresión XPATH que nos permita seleccionar todos los elementos (de
cualquier tipo) descendientes del elemento equipo
7. Construir una expresión XPATH que nos permita extraer todos los nodos elementos
nombre de todos los futbolistas con menos de 25 años.
8. Construir una expresión XPATH que nos permita extraer todos los nodos elementos
nombre de todos los futbolistas que contienen el atributo extranjero,
independientemente del valor para dicho atributo.
9. Construir una expresión XPATH que nos permita extraer todos los nodos elementos
nombre de todos los futbolistas que NO contienen el atributo extranjero,
independientemente del valor para dicho atributo.
10. Construir una expresión XPATH que nos permita extraer todos los nodos atributo
patrocinador de todos los futbolistas que son extranjeros, y que además su edad sea
superior a 23 años
11. Construir una expresión XPATH que nos permita seleccionar el nodo elemento que se
corresponde con el último de los equipos que aparecen en el documento XML
12. Construir una expresión XPATH que nos permita seleccionar el nodo elemento que se
corresponde con el segundo jugador de los equipos que aparecen en el documento
XML
13. Seleccionar todos los elementos (de cualquier tipo, incluido texto) que sean
descendientes de jugador
14. Seleccionar sólo los elementos que sean descendientes de jugador
15. Seleccionar sólo los elementos de texto que se corresponden con la edad de los
jugadores.
16. Para cada jugador, mostrar el nombre del jugador seguido de dos guiones y su
posición.
17. Construir una expresión XPATH que nos permita seleccionar el nodo elemento que se
corresponde con el segundo jugador de los equipos que aparecen en el documento
XML
18. Selecciona los nodos comentario que hay en el documento XML

Aquí os dejamos la solución:
/liga/equipo/jugador/nombre -- //nombre/string() -- //nombre/text() -- /descendant::nombre/text()
//* -- //node()
/liga/equipo/jugador/patrocinador/@marca/string()  --  //patrocinador[@marca="nike"] --  //patrocinador[@marca]
//equipo[@nombre="Real Madrid"]/jugador/nombre  --  //nombre[ancestor::equipo[@nombre="Real Madrid"]]  --  //nombre[../../@nombre="Real Madrid"  --  //nombre[parent::jugador/parent::equipo/@nombre="Real Madrid"]
//nombre/text() -- //nombre/string()
/liga/equipo/descendant::node() -- //equipo//node()
//jugador[edad<"25"]/nombre  --  //nombre[parent::jugador/edad<"25"]  --  //edad[text()<25]/../nombre
//jugador[@extranjero]/descendant::nombre  --  //nombre[../@extranjero]  --  //@extranjero/../nombre
//jugador[not(@extranjero)]/descendant::nombre  --  //nombre[../not(@extranjero)]
//jugador[(@extranjero="si") and (edad >23)]//@marca  --  //@marca[(../../edad>23)and(../../@extranjero="si")
//equipo[position()=last()]  --  //equipo[last()
//jugador[position()=2]/nombre
//jugador/descendant::node()
//jugador/descendant::*
//jugador/edad
//jugador/concat(nombre/string(),"--",posicion/string())
/liga/equipo[1]/jugador[2]  --  (/liga/equipo/jugador)[position()=2]
/descendant::comment() -- //comment()


No hay comentarios:

Publicar un comentario

¡Danos tu opinión!