0% encontró este documento útil (0 votos)
228 vistas41 páginas

Practica2 - Xpath - Solucion

Este documento presenta varias consultas XPath sobre dos documentos XML llamados departamentos.xml y empleados.xml. Explica cómo seleccionar nodos, atributos y texto mediante diferentes expresiones XPath y proporciona ejemplos de salidas. También introduce conceptos como nodos, atributos, funciones de agregación y operadores lógicos en XPath.

Cargado por

Alberto Tarifa
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
228 vistas41 páginas

Practica2 - Xpath - Solucion

Este documento presenta varias consultas XPath sobre dos documentos XML llamados departamentos.xml y empleados.xml. Explica cómo seleccionar nodos, atributos y texto mediante diferentes expresiones XPath y proporciona ejemplos de salidas. También introduce conceptos como nodos, atributos, funciones de agregación y operadores lógicos en XPath.

Cargado por

Alberto Tarifa
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 41

PRÁCTICA 2.

XPATH
Crea una colección llamada prueba y sube los ficheros
departamentos.xml y empleados.xml

Consultas da un pantallazo de la salida

1. //DEPT_NO
Devuelve todos los números de departamento, 18 filas,
porque recoge todos los departamentos de la coleccion
2. /*/DEPT_NO
Selecciona las etiquetas dept_no que están a un nivel de
profundidad en este caso ninguna

3. /*/*/DEPT_NO
Selecciona las etiquetas dept_no que están a dos niveles
profundidad desde la raiz

4. /departatamentos/*
Selecciona las etiquetas que van dentro de la etiqueta
departamentos y sus subetiquetas
5. /*
6. /empleados/emp_row[dept_no=10]
Selecciona todos los elementos o nodos dentro de
emp_row de los empleados del departamento 10
7. /
empleados/emp_row/apellido|/empleados/emp_row/d
ept_no
Selecciona los nodos apellido y dept_no de los
empleados

8. /empleados/emp_row[dept_no=10]/apellido/text()
Selecciona los apellidos de los empleados del
departamento 10
9. /empleados/emp_row[not(dept_no=10)]
Selecciona los empleados que no son del departamento
10

10. /
empleados/emp_row[not(oficio=’ANALISTA’)]/apellido/
text()
Selecciona los apellidos de los empleados que no son
analistas
11.
/EMPLEADOS/EMP_ROW[DEPT_NO=10]/APELLIDO|/EM
PLEADOS/EMP_ROW[DEPT_NO=10] /OFICIO
Selecciona el apellido y el oficio de los empleados del
dept_no 10
12. //*[DEPT_NO=10]/DNOMBRE/text()
Las dos devuelven el nombre del departamento 10

/departamentos/DEP_ROW[DEPT_NO=10]/DNOMBRE/text()
13. //*[OFICIO='EMPLEADO' ]//EMP_ROW

/EMPLEADOS/EMP_ROW[ OFICIO='EMPLEADO' ] //EMP_ROW

Devuelve los empleados con oficio empleado, por cada


empleado devuelve todos sus elementos, busca en cualquier
parte de la colección.

Ambas devuelven lo mismo


14. /EMPLEADOS/EMP_ROW[SALARIO>1300 and
DEPT_NO=10]
Devuelve los datos de los empleados con salario mayor
de 1300 y del departamento
15. /EMPLEADOS/EMP_ROW[SALARIO>1300 and
DEPT_NO=20]/APELLIDO |
/EMPLEADOS/EMP_ROW[SALARIO>1300 and
DEPT_NO=20]/OFICIO

Devuelve el lapellido y el oficio de los empleados con


salario mayor de 1300 y del departamento 20, se usa el
separador | para unir las rutas
Las siguientes consultas pon enunciado y da un pantallazo de la
salida.

16. /EMPLEADOS/EMP_ROW[1]
Todos los datos del primer empleado

17. / EMPLEADOS/EMP_ROW[5]/APELLIDO/text()
Apellido del quinto empleado

18. /EMPLEADOS/EMP_ROW[last()]
Todos los datos del último empleado
19. /EMPLEADOS/EMP_ROW[last()-1] /APELLIDO/text()
Datos del penúltimo empleado

20. /EMPLEADOS/EMP_ROW[position()=3]
Obtiene los elementos del empleado que ocupa la posición 3
21. /EMPLEADOS/EMP_ROW[position()<3]/APELLIDO
Selecciona el apellido de los elementos cuya posición sea menor
que 3, es decir devuelve los apellidos del primer y segundo
elemento.

22. /EMPLEADOS/count(EMP_ROW) número de empleados

23. /EMPLEADOS /count(EMP_ROW[DEPT_NO=10])


Cuenta el número de empleados del departamento 10
24.
/EMPLEADOS/count(EMP_ROW[DEPT_NO=10 and
OFICIO='EMPLEADO'])

25. /*[count(DEP_ROW)=4] elementos que tienen 4 hijos


DEP_ROW, devolverá la etiqueta departamento y todas sus sub
etiquetas
26. sum(/EMPLEADOS/EMP_ROW/SALARIO)
dev la suma del salario, si la etiqueta a sumar la considera string
hay que convertirla a número usando la función number

27. sum(/EMPLEADOS/EMP_ROW[DEPT_NO=20]/SALARIO)
suma de los salarios de los empleados del dpt 20

28. max(/EMPLEADOS/ EMP_ROW/SALARIO) dev salario máximo


29. min(/EMPLEADOS/ EMP_ROW/SALARIO) dev salario mínimo
30. min(/EMPLEADOS/
EMP_ROW[OFICIO=”ANALISTA”]/SALARIO) sal mínimo de los
empleados de oficio analista
31. avg(/EMPLEADOS/ EMP_ROW/SALARIO) salario medio
32. avg(/EMPLEADOS/ EMP_ROW[DEPT_NO=20]/SALARIO)
salario medio de los empl del dpto. 20
33. //*[name()='APELLIDO'] dev todos los apellidos entre sus
etiquetas
34. count(//*[name()='APELLIDO'])cuenta las etiquetas con
nombre apellido

35. /
EMPLEADOS/EMP_ROW[DEPT_NO=10]/concat(APELLIDO,"-",OF
ICIO) dev el apellido y el oficio concatenado del departamento
10
36. /
EMPLEADOS/EMP_ROW/concat(APELLIDO,"-",OFICIO,"-",SALAR
IO) concatena apellido oficio y salario de todos los empleados
37. /EMPLEADOS/EMP_ROW[starts-with(APELLIDO,'A')]
Obtiene los elementos de los empleados cuyo apellido empieza
por A

38. /EMPLEADOS/EMP_ROW[starts-
with(OFICIO,'A')]/concat(APELLIDO,"-",OFICIO)
Obtiene el apellido y nombre concatenado de los empleados cuyo
oficio empieza por A
39. /EMPLEADOS/EMP_ROW[contains(OFICIO,'OR')]/OFICIO
Obtiene los oficios que contienen la silaba OR

40. /EMPLEADOS/EMP_ROW[contains(APELLIDO,'A')]/APELLIDO
Apellidos que contienen una A

41. /EMPLEADOS/EMP_ROW/concat(APELLIDO,'=',string-
length(APELLIDO))
Dev concatendados el apellido con su numero de caracteres
42. /EMPLEADOS/EMP_ROW[string-length(APELLIDO)<4]
Los datos de los empleados cuyo apellido tiene menos de 4
caracteres

43. /
EMPLEADOS/EMP_ROW/concat(APELLIDO,',',SALARIO,'-',SALARI
O div 12) dev los datos concatenados de apellido, salario y el
salario dividido por 12

44. sum(/EMPLEADOS/EMP_ROW/SALARIO) div


count(/EMPLEADOS/EMP_ROW)
dev la suma de los salarios dividido por el contador de
empleados
45. /
EMPLEADOS/EMP_ROW/concat(APELLIDO,',',SALARIO,'-',SALARI
O mod 12) dev los datos concatenados de apellido y salario y el
resto de dividir salario entre 12

46. /EMPLEADOS/EMP_ROW[(SALARIO mod 12 )=4]

Dev los datos de los empleados cuyo resto de dividor el salario


entre 12 sea igual a 4
Nodos atributos

Un nodo atributo no se considera un nodo hijo, sino como etiquetas


añadidas al nodo elemento.

El elemento departamento tiene dos atributos teléfono y tipo y el


elemento empleado tiene el atributo salario, para referirnos a los
atributos se usa el @ antes del nombre.

Sube el fichero universidad.xml dentro de la colección prueba


Las siguientes consultas pon enunciado y da un pantallazo de la
salida.

47. /universidad/departamento[@tipo]

Obtener los datos de los departamentos que tengan el atributo tipo,


si ponemos entre paréntesis de data nos devulve los datos sin las
etiquetas

data(/universidad/departamento[@tipo])
48. /universidad/departamento/empleado[@salario]
Obtener los datos de los departamentos que tengan el
atributo salario, si ponemos entre paréntesis de data nos
devuelve los datos sin las etiquetas

49. /universidad/departamento[@telefono=”990033"]

data(/universidad/departamento[@telefono=990033"])

Obtener los datos de los departamentos que tengan el teléfono


50. /
universidad/departamento[@telefono=”990033"]/nombre/te
xt()
Obtner el nombre del departamento cuyo teléfono es 990033

51.//departamento[@tipo='B']

Los datos de los departamentos cuyo tipo es b


52./universidad/departamento[@tipo='A']/empleado

Los datos de los empleados del departamento tipo A

53./universidad/departamento/empleado[@salario>"2100"]

Datos de los empleados cuyo salario >2100


54./universidad/departamento/empleado[@salario>"2100"]/nomb
re/text()

Nombre de los empleados cuyo salario >2100

55./universidad/departamento/empleado[@salario>"2100"]/conca
t(nombre,' ',@salario)
Datos concatenados del empleado y su salario de los empleados
cuyo salario es >2100
56./universidad/departamento[@tipo="A"]/count(empleado)

Número de empleados que hay en los departamentos tipo A

57./universidad/departamento[@tipo="A"]/concat(nombre,'
',count(empleado))

Devuelve por cada departamento tipo A, la concatenación de su


nombre y número de empleados

58. /universidad/departamento/concat(nombre,'
',count(empleado))

Devuelve el numero de empleados por cada depart


59. sum(/universidad/departamento/empleado/@salario)

Es lo mismo que sum(//empleado/salario)

Devuelve la suma total del salario de todos los empleados

60. /universidad/departamento/concat(nombre,' total=',


sum(empleado/@salario))

Por cada dept la concatenación de su nombre y el total del salario


61. min(//empleado/@salario) salario minimo de todos lo
empleados

62./universidad/departamento/concat(nombre,'Minimo=',
min(empleado/@salario))

Por cada departamento obtiene la concatenación de su nombre y el


mínimo salario
63./universidad/departamento/concat(nombre,'Maximo=',
max(empleado/@salario))

Por cada departamento obtiene la concatenación de su nombre y el


máximo salario
64. /universidad/departamento/concat(nombre,' Media=',
avg(empleado/@salario))

Por cada departamento obtiene la concatenación de su nombre y la


media de su salario

65. /universidad/departamento[count(empleado)>3] datos de los


departamentos con mas de 3 empleados

/universidad/departamento[count(empleado)>3]/nombre/text()

Nombre de los departamentos de más de 3 empleados


66. /universidad/departamento[@tipo="A" and
count(empleado)>2]/nombre/text()

Nombre de los departamentos tipo a y con mas de dos empleados

También podría gustarte