Activa JavaScript para disfrutar de los vídeos de la Mediateca.
LMGSI-Almacenamiento de la informacion. Parte3 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
LMGSI-Almacenamiento de la informacion. Parte3
Un nodo y por otro lado nos va a dar un valor atómico. Si veis, coge la edad y le suma un valor, una unidad. Al final, lo que nos está obteniendo, pues, ¿qué es? Nos está teniendo, pues, valores, ¿veis? Una secuencia heterogénea como resultado. La secuencia nos está dando, por un lado, que sería la primera línea, nos está dando, pues, un nodo y por la segunda línea nos está dando, pues, un valor atómico, como es un valor entero, ¿vale?
00:00:07
Esto sería la definición de los comentarios dentro de XQuery
00:00:33
Si veis, le antepone o flanquea el comentario
00:00:38
con un paréntesis de apertura con dos puntos
00:00:42
y lo cierra con dos puntos y un paréntesis de cierre
00:00:45
Aquí nos está indicando con estos dos comentarios
00:00:48
que aquí va a sacar por pantalla
00:00:51
cada nodo y aquí un valor atómico
00:00:54
En relación con XPath, lo he estado diciendo a lo largo
00:00:59
desde que he empezado con XQuery
00:01:02
XQuery se construye sobre XPath. Toda expresión XPath válida es también válida en XQuery. Aprovecha ese poder para localizar nodos y traer sobre estructuras jerárquicas. Aquí tenemos ahora otro fichero XML como sería empresa que contiene nodos empleado y cada nodo empleado tiene dos subnodos nombre y departamento.
00:01:06
Entonces, el hecho de poner aquí doc empleados.xml, doble slash y nombre, pues aquí está utilizando XPath puro en el XQuery y nos está indicando que se sitúe aquí en nombre.
00:01:29
Después, posteriormente, este es otro ejemplo en el que nos está indicando que se sitúe en empleado.
00:01:46
¿Vale? Bueno, comentarios y expresiones en XQuery, ya he hablado de los comentarios, que serían de esta forma, y en cuanto a las expresiones no he hablado, pero siempre que pongas dos llaves, una llave de apertura y una llave de cierre con algo en el centro, pues aquí esto sería una expresión y como tal la va a ejecutar.
00:01:55
Aquí tenemos un ejemplo, este sería un ficherito XML sencillito de empleado con dos subcampos, nombre y salario, y lo que va a recorrer aquí se sitúa en empleado y va a meter cada uno del contenido del orden de empleado en la variable E.
00:02:17
Una vez que lo ha metido ahí, a continuación nos hace un retrum para devolvernos un resultado que va a ser la etiqueta resultado, la etiqueta, este nodo resultado que va a flanquear, el que va a flanquear a nombre y a salario incrementado.
00:02:36
Pero dentro, como valores, ha metido dos expresiones. Veis aquí que tiene dos llaves. Aquí está metiendo la expresión que nos está diciendo en esta expresión. Nos está diciendo, oye, méteme aquí dentro el valor dentro de lo que ha recogido en E, que sería el nombre, dentro de nombre, recógeme o sácame cada uno de los valores.
00:02:52
El salario incrementado lo está haciendo, pero ahora nos está indicando que cogemos el salario,
00:03:13
le multiplicamos por 1,10 y lo ponemos en decimal.
00:03:18
Y eso es lo que ha realizado en el propio resultado.
00:03:22
Si veis, esa llave lo que está haciendo es una operación aquí en el centro del propio resultado.
00:03:24
Dos operaciones concretamente, esta y esta otra.
00:03:32
Las ejecuta esas dos operaciones y las inserta dentro de toda esta estructura que nos ha puesto como resultado.
00:03:34
Condicionales en XQuery.
00:03:41
XQuery permite también expresiones condicionales y si veis la estructura de la expresión condicional en XQuery, bueno, es muy parecida a lo que hemos visto en varios lenguajes, habréis visto en algún lenguaje de programación.
00:03:42
Aquí hay que decir que utiliza el S y también utiliza el DEN. Si condición se cumple, pues entonces resultado 1, si no, pues resultado 2.
00:03:54
si veis la semántica es la misma
00:04:03
a muchos lenguajes de programación
00:04:07
hay que decir que aquí tenemos un ejemplo en el que
00:04:09
lo que hace es que a través de este fichero personas.xml
00:04:12
pues bueno, esto no lo he dicho
00:04:16
pero el let lo utiliza para declarar una variable
00:04:18
al declarar aquí una variable lo veis con el
00:04:21
nos está diciendo pues que introduzca dentro de la misma
00:04:23
pues todo dentro del fichero personas.xml
00:04:27
todas las personas que tenga, como aquí solo tiene una
00:04:30
e insertará todo esto dentro de esta variable, y luego en el resultado lo que hará es utilizar el condicional.
00:04:32
En el RETRUN utiliza el condicional y nos dice que si este compendio que ha metido en P,
00:04:38
concretamente en su subnodo edad, es mayor o igual que 18, pues entonces que saque estas dos etiquetas mensaje,
00:04:44
estas flancadas con una expresión en su interior.
00:04:52
La expresión es que saque el nombre de la variable que conlleva todo esto.
00:04:56
Entonces, fijaos, si como tiene que ser mayor o igual que 18 y este es 16, lógicamente no nos va a sacar, no sacará pues el mismo nombre, porque lo ha puesto en los dos, tanto en el den como en el ese, no sacará el nombre pues que tiene este subnodo persona, que será Ana, pero nos va a sacar el segundo mensaje, que es menor de edad, ¿vale? Porque no cumple, esta condición no la cumple este nodo persona.
00:05:02
expresiones FLWR
00:05:31
que es FOR, LET, WHERE, ORDER BY
00:05:35
y RETRUN, si veis son las primeras
00:05:37
líneas de, y bueno
00:05:39
pues lo que va a hacer es que a lo largo de
00:05:41
toda la misma, lo que va a hacer es iterar
00:05:43
sobre elementos con el FOR, va a
00:05:45
declarar variables con el LET, lo hemos visto antes
00:05:47
va a filtrar con una condición
00:05:49
que sería el WHERE, va a ordenar
00:05:51
los resultados con el ORDER BY
00:05:53
y va a construir un resultado
00:05:55
final con el RETRUN, que es lo que nos va a devolver
00:05:57
vale, aquí tenemos un ejemplo
00:05:59
en el que, bueno, pues con este otro fichero pues XML que se llama libros, que es con una red catálogo y que está formando por varios nodos libro,
00:06:01
lo que nos hace aquí, si lo veis en recorrido, pues es que se sitúe el libro y una vez situado ahí, pues vaya cogiendo todos los que tengan el precio menor de 20.
00:06:13
Si nos fijamos aquí, los libros que tienen un precio, un subcampo precio menor de 20 sería el primero y el último.
00:06:22
Entonces, esos son los que va a coger. Una vez que los ha cogido, dice, oye, ordénamelos por el título. Como el order by, por defecto, ordena de la A a la Z. Si no, habría que poner la palabra descending que lo que hace es que la clasificaría desde la Z a la A. Aquí clasifica de la A a la Z.
00:06:28
y luego nos dice que en el return nos saque nada más que el título de esos.
00:06:49
Entonces, ha cogido este, ha cogido este de abajo y luego dentro de los dos los ha ordenado por el título alfabéticamente.
00:06:53
Pondría primero aprende XML y luego fundamentos, que es lo que aparece aquí.
00:07:01
Estructurado una consulta XQuery, es decir, que tiene un prólogo, que nosotros podemos declarar espacio de nombres, funciones,
00:07:07
podemos poner variables y luego la expresión, la expresión que es lo que estamos viendo hasta ahora,
00:07:14
que es el cuerpo de la consulta, utilizar expresiones XPath, condicionales, etc. Esto que aparece aquí, que sería la expresión, es lo que hemos hecho hasta ahora.
00:07:19
Pero que sepáis que también hay una parte de prólogo en la que podemos crear todas estas cosas.
00:07:27
Las cláusulas no las voy a repetir, es lo mismo que he dicho antes. Aquí tenemos que, os he puesto, para el que se le haga un poquito difícil la compresión,
00:07:34
He puesto el recorrido, como también hacen en el Aura Virtual, de cada una de las partes, primero con el for, en el que cómo utiliza el for. He añadido aquí lo que llama producto cartesiano, hay veces cuando en el for se añade dos variables, lo veis, las podéis separar con una coma.
00:07:43
Aquí nos está diciendo que, oye, dentro de este fichero datos que está formado por elementos autores y libros, pues está cogiendo, si lo veis, dentro de autor y dentro de libro y nos está dando una salida en el que cuando tenga dos variables lo que hace es que hace un producto cartesiano en el que permite recorrer XML y acceder a nodos repetidos.
00:08:02
Entonces, ¿qué está cogiendo aquí? Me está diciendo, oye, métete en autor y métete en libro. Y lo que saques, lo que tenga ahí, se lo metes en la variable autor y en la variable libro.
00:08:28
Después, ¿qué me vas a retornar? Me retornas en franqueado por las etiquetas asignación. Me vas a ir añadiendo el nombre de autores y el título de libros.
00:08:42
Y veis, lo va sacando aquí. Asignación es lo que hemos visto antes en cuanto a la creación de variables. Utiliza estos dos puntos igual para la asignación y utiliza la parábola let delante de la variable. Y aquí realiza una asignación. ¿Qué está haciendo aquí? Está diciendo, oye, cógeme de precio, me lo metes valor de x y me lo multiplicas por 1,21.
00:08:55
Luego teníamos la parte del WHERE, que no es más que una condición. Veis, aquí está estableciendo una condición. Está diciendo, oye, fíltrame o solo deja pasar aquellos cuya etiqueta precio tenga valor menor que 20.
00:09:17
Y tenemos el ordenamiento. He dicho anteriormente que podemos ordenarlo sin esta palabra, sin descending. Si no pones descending, te lo va a ordenar, aquí lo está, va a ordenarlo por título, por el título de la A a la Z e irá de arriba a abajo en función de la A a la Z.
00:09:32
Si nosotros ponemos descending, te está diciendo que lo va a ordenar por el título, pero desde la Z a la A. Con lo cual, el que tenga el sistema cerca de la Z aparecerá arriba y el que esté más cerca de la A aparecerá abajo.
00:09:50
Y por último el retrum, que es el que nos va a construir el resultado. Y bueno, en el que le podemos incluso, como hace aquí, meter una expresión. Ha metido aquí una expresión sacando todos los valores título. Aquí hay un ejemplo completo que no voy a... lo dejo que aparezca en la grabación, pero que no lo voy a explicar porque es más de lo mismo. El ejemplo hace exactamente lo mismo que hemos visto hasta ahora.
00:10:02
Sobre las cláusulas, iterar, calcular, filtrar, ordenar y generar el resultado. En eso se basa el FLWR.
00:10:34
Y aquí tenemos los ejemplos que os he puesto, que son los ejemplos que aparecen en el aula virtual.
00:10:42
Ejemplos del aula virtual, no voy a recorrer los ejemplos, los tenéis allí en el aula y tan solo, pues, no sé, aparte no vamos muy bien de tiempo.
00:10:47
que sepáis que lo tenéis aquí en la presentación
00:10:57
aquí he metido el ejercicio 1, el 2 y el 3 resueltos
00:11:01
que es lo mismo que aparece en el mismo
00:11:04
aquí si veis en este está utilizando una función
00:11:06
ahora veremos lo que son las funciones
00:11:09
si veis aquí está sacando el número de libros
00:11:10
veis que la estructura de todos los ejemplos
00:11:12
es una biblioteca y luego dentro de la biblioteca
00:11:15
está formada por etiquetas
00:11:17
está la etiqueta libros
00:11:19
y dentro de libros hay etiquetas libro
00:11:21
esos libros individuales
00:11:23
Están formados por un título, por un autor, y luego dentro del autor hay un nombre y un apellido, hay una editorial, páginas, versión electrónica, etc.
00:11:26
Entonces, aquí, por ejemplo, por solo hablar de un ejemplo, sería este, pues, obtener el número de libros de menos de 100 páginas.
00:11:33
Pues aquí, claro, tendremos que saber cuántas páginas tiene cada libro, tendremos que utilizar una función count.
00:11:40
¿Quién nos las va a contar?
00:11:48
Si veis aquí lo que está haciendo es, me vas a recorrer en el doc libros.xml desde el punto libros, me vas a recorrer y me lo vas a meter en la variable x.
00:11:49
Una vez que tenemos la variable x me vas a contar, si veis aquí está metiéndose en libro y aquí está metiendo en number.
00:12:03
Si nosotros nos fijamos en el libro, nos está diciendo el número de páginas que va a tener. Si este es menor que 100, pues retórname el contaje de las mismas. Lo cuenta, lo metería aquí en esta variable y te da el resultado con la función count.
00:12:14
Veremos ahora al final las funciones que podemos generar con XQuery, que pueden ser de texto, que pueden ser numéricas, etc.
00:12:31
Voy a pasar los ejemplos porque los tenéis en el libro, no los voy a detallar porque si no ya se nos ha pasado una hora, entonces voy a ir un poquito más deprisa.
00:12:39
Estas serían las funciones que va a tener XQuery, que serían funciones numéricas, funciones de cadenas, de manipulación de secuencias, de fechas y expresiones regulares, lógica ovuleana, definición de funciones propias.
00:12:48
Y aquí tenemos todas ellas.
00:12:59
Aquí tenemos las funciones numéricas, que serían funciones muy parecidas a las que aparecen en cualquier lenguaje de programación. En cuanto a las funciones de texto, también serían con qué termina la palabra, con qué comienza, pásamela toda la palabra o la extrema a mayúsculas, a minúsculas, concatename dos cadenas, esta con esta.
00:13:01
En cuanto a estas funciones, las típicas de sacarme la media, suma total, etc. Tenemos también funciones de uso general como pueden ser empty, exits, estas serían true si la sentencia está vacía, true si contiene al menos un elemento.
00:13:21
importante los cuantificadores existenciales que lo vimos anteriormente
00:13:38
que os dije que son para generar expresiones lógicas
00:13:42
esto sería matemática lógica o proposicional como aparece
00:13:46
en el comprolog en el que utiliza el sum y el every
00:13:49
en el que el sum nos está diciendo que cógeme realmente
00:13:53
una expresión lógica que nos va a devolver, nos va a devolver siempre un valor
00:13:58
binario que será o true o false, un 0 o un 1
00:14:02
Aquí, en este caso, nos va a devolver true o false. Y some y every se utilizan como expresiones lógicas que nos van a devolver ese resultado. Some es cuando al menos un elemento cumple la condición, mientras que every nos está diciendo que todos los elementos deben cumplir la condición.
00:14:05
Aquí tenemos el libros, en el que está formado a su vez por un libro con páginas, etc. Entonces, nos está diciendo aquí, oye, seleccioname aquello que satisface, dime si satisface que precio sea menor de 20.
00:14:22
Si está dentro de ello y hay alguno de ellos, entonces devuelve un verdadero. De hecho, pues como aquí, menor de 20, hay uno que es 15, pues nos devuelve true. El every nos está diciendo que todos deben satisfacer que las páginas sean mayor de 50, todas las elementos que tenga de libros.
00:14:38
Como vemos que no todas son mayores de 50, pues lógicamente no va a devolver un false. Esos son los cuantificadores esenciales.
00:14:58
Ejemplo con data, pues, y esto se lo resumo porque no es fácil, se usa para obtener solo el texto que haya dentro de la etiqueta, para eso se usa data, y en eso se basa.
00:15:05
No sé si aquí hay un ejemplo, pero data lo que busca cuando yo pongo la función data es esto que hay aquí en el interior de cada una de las etiquetas. Si veis aquí se ha introducido dentro de la etiqueta título y nos ha dicho, oye, recórremelo, me lo metes en la variable x y me obtienes de los datos de x. De hecho, obtiene el R en xml y obtiene cada uno de ellos.
00:15:22
Esto sería un ejemplo de definición y llamada a una función.
00:15:47
Las dos funciones se declaran, ahora lo veremos a continuación, con el declare, luego function y el nombre de la función.
00:15:51
Y dentro aparecen cada uno de los parámetros que ya les mete un tipo de valor a través del x, s, dos puntos, decimal o enteger o lo que sea.
00:15:56
¿Veis? Declara la función y le añade el contenido de la función siempre con un retro.
00:16:05
Una función, acordaros, es una estructura donde tiene cero o más parámetros en su interior y devuelve siempre un valor, ¿vale? Aquí nos está indicando, pues, que el tipo de valor para devolver, ¿veis? Aquí ha puesto como que tiene que ser decimal. Esta es la estructura.
00:16:09
Para llamar a la función una vez que ha sido declarada, además aquí en xQuery bastante claro porque ya te está poniendo la palabra declara, vemos que esta sería la declaración para llamarla o lo que se llama la invocación a la función sería esta de aquí que lo hace a través de una expresión.
00:16:28
Si lo veis, llama minPrice y le pasa una serie de parámetros que con ellos va a interactuar para devolver un resultado que es lo que aparecerá aquí como resultado de esta expresión.
00:16:48
Comparación de varios escalares. No me voy a meter en esto. Igual, no igual, como todos los lenguajes de programación.
00:17:01
Comparación general de secuencias. Tampoco me voy a meter con los operadores de comparación porque ya sabemos también cómo son. El mayor igual, el menor igual.
00:17:07
Tenemos también comparación de nodos con el is y el is not. Aquí tenemos, estos sí son un poco más elises, verdaderos y apuntan al mismo nodo. Fijaos aquí, tenemos el catálogo con varios libros y luego tenemos que dentro de cada libro tenemos un título de etiqueta.
00:17:16
Y nos está indicando aquí que, oye, méteme dentro de la variable, asígname a la variable A, me asigna dentro del documento libros.xml, que es este, y dentro de catálogo libro 1, que sería este de aquí, y le está diciendo, y luego está definiendo otra variable, B, que le asigna también el mismo contenido y nos está diciendo,
00:17:33
retro, A es B, A apunta al mismo nodo los dos, por eso nos sale un true.
00:17:56
En cambio, si nos llama al primer libro y al segundo libro,
00:18:05
nos meten los dos variables y las compara con el disnode,
00:18:08
nos está diciendo también que es verdad, ¿por qué?
00:18:10
Porque es verdad que este libro y este libro, estos dos nodos,
00:18:13
las dos variables no están apuntando al mismo nodo,
00:18:17
sino que están apuntando a distintos nodos.
00:18:20
Orden entre nodos también, pues que lo utiliza con este operador. Este nos indica que el nodo izquierdo aparece antes que el derecho y este nos indica que el izquierdo aparece después que el derecho. Operadores lógicos, ANPOR, en esto no me voy a parar. Operadores sobre secuencias de nodos, UNION, INTERSET, STET, nos está diciendo, esto pues como pasaba en cualquier lenguaje declarativo SQL, pues tenemos la operación UNION en el que todos los nodos
00:18:21
nos va a devolver todos los nodos únicos de ambos operandos comparados.
00:18:53
Comparado a ambos operandos y nos va a dar todo.
00:18:57
En cambio, la intersección solo nos va a dar aquellos nodos que coincidan en ambos dos.
00:19:00
Y excepto, nos está diciendo, oye, dame todos los nodos que sean diferentes a los que yo tengo.
00:19:04
Operadores aritméticos, tampoco me voy a meter porque esto es como cualquier otro lenguaje de programación.
00:19:12
Y aquí acabaría lo que es la sesión.
00:19:17
Sé que ha sido un poquito larga, pero es que el tema es verdad que aunque en el aula virtual es corto, quería que os quedara más claro porque nos metemos aquí con programación, nos metemos con un tema un poquito más, entonces quería que estuviera un poquito más claro.
00:19:20
- Idioma/s:
- Materias:
- Informática
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado básico
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado medio
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado superior
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado básico
- Autor/es:
- Francisco J. González Constanza
- Subido por:
- Francisco J. G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 47
- Fecha:
- 1 de abril de 2025 - 10:42
- Visibilidad:
- Público
- Centro:
- IES CIFP a Distancia Ignacio Ellacuría
- Duración:
- 19′ 37″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 356.87 MBytes