Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Conversión y Adaptación de Documentos XML. Parte 2 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 25 de febrero de 2025 por Francisco J. G.

91 visualizaciones

Conversión y Adaptación de Documentos XML

Descargar la transcripción

la universidad estudiante número uno y dentro nombre está indicando este aquí tenemos la 00:00:04
diferencia entre nodo actual no lo contestó y tamaño del contexto que el primero es el 00:00:12
nodo en el que se encuentra el procesador que el segundo es el conjunto de nodos sobre los 00:00:17
que se va a evaluar la expresión y que el tercero es el número total de nodos del contexto bien 00:00:21
ruta locales de localización en x para la protección indica el camino para localizar 00:00:28
un nodo en XML, ya lo hemos visto. Es posible que te devuelva un conjunto, porque no siempre 00:00:33
va a tener un contenido, puede estar vacío. La creación de rutas de localización se crean 00:00:40
uniendo varios pasos de localización y se pueden usar, lo hemos visto, rutas absolutas 00:00:46
y rutas relativas. Aquí tenemos rutas de localización básica, sería rutas absolutas 00:00:51
a través del nodo RAID, que lo hemos visto antes, localización del elemento, que sería 00:00:56
más repetido del anterior, ruta relativa, lo veis, no ha añadido aquí nada, y luego localización de atributos, que sería a través del arroba 00:01:00
para indicar un determinado atributo. Luego, rutas de localización básicas en cuanto a localización de comentarios, de nodos de texto 00:01:07
y de instrucciones de procesamiento. Aquí tenemos este ejemplo, en el que veis ha metido un comentario en el XML para que sea localizado 00:01:14
a través de comment. Comment, lo que nos va a indicar, búscame, mira lo que me comentabas, búscame dentro del fichero XML, búscame todos 00:01:20
los comentarios 00:01:28
que hay ahí, te sacará este, ¿vale? 00:01:30
También text, que sería pues 00:01:32
el de texto, que también 00:01:34
lo hemos visto anteriormente, o sea, quiero que me saques 00:01:36
pues al poner barra barra text 00:01:38
me está indicando, sácame todos los textos 00:01:40
que estén 00:01:42
flanqueados por etiqueta 00:01:42
y entonces aquí le saca a todos ellos 00:01:46
y por último tenemos localización de instrucciones de 00:01:48
procesamiento, bueno, esto es 00:01:50
tampoco lo he puesto, pero tampoco tiene una 00:01:51
gran, que es este tipo 00:01:54
de instrucciones que aparecen aquí, que serían 00:01:56
localizadas a través del proceso de instrucción. 00:01:58
Pero bueno, esto no le daría 00:02:00
yo mucha importancia, ¿vale? 00:02:02
Perdona, Francisco, otra preguntilla. 00:02:04
la ruta relativa que pones 00:02:07
es nodo barra hijo, delante 00:02:10
de nodo no irían dos barras, 00:02:12
o sea, quiero decir, porque nodo raíz 00:02:14
es con una barra y 00:02:15
No, porque al poner el 00:02:17
nodo barra hijo, está diciendo que 00:02:20
desde el 00:02:22
lugar actual, ya no es una 00:02:24
ruta absoluta. Ya no estoy empezando 00:02:26
desde aquí. Estoy diciendo 00:02:28
desde el nodo actual 00:02:30
donde está 00:02:32
el procesador, 00:02:33
desde ahí recórreme 00:02:36
esto. Por eso es más relativa. 00:02:38
¿No ves que aquí no he puesto barra? 00:02:40
Sí, pero quiere decir, por ejemplo, 00:02:42
imaginemos que quiero sacar 00:02:44
párrafos. Entonces, 00:02:45
sería párrafo, 00:02:49
barra, o sea, contenido 00:02:50
barra, párrafo, entiendo, ¿no? 00:02:52
A ver, si tú, por ejemplo, 00:02:54
le pones, tú quieres coger 00:02:56
párrafos, pero quieres que te saque 00:02:58
todos, sería el barra, barra 00:03:00
p, que es lo que hemos visto antes, entre llaves, 00:03:02
¿vale? O sea, el 00:03:04
ese te va a recorrer todo, desde 00:03:05
el elemento raíz te va a recorrer todo el documento, 00:03:07
¿vale? Esa sería 00:03:10
la diferencia, o sea, podemos tener tres vías, 00:03:12
bueno, cuatro. Tendríamos 00:03:14
el elemento raíz, que te va a empezar desde el raíz, 00:03:16
yo, la ruta absoluta, ¿vale? 00:03:18
Le pongo documentos, título, 00:03:20
lo que quiera, ¿vale? Luego, el 00:03:21
elemento que 00:03:23
es igual que 00:03:25
cuando tú estás manejando 00:03:27
un OMS2 o Linux o igual 00:03:29
desde el directorio actual 00:03:32
si tú no le pones una barra, desde ese directorio 00:03:34
actual, desde donde estás 00:03:36
le está pidiendo que 00:03:38
se recorra nodo e hijo 00:03:40
¿vale? 00:03:41
y la tercera vía sería 00:03:44
ponme dos barras delante 00:03:46
y te va a recorrer todo ello pero no sólo 00:03:47
te va a 00:03:50
parar en la primera que encuentres, sino que va a 00:03:51
recorrer y te va a localizar todos los que haya no sé si me explico las vías y luego la cuarta 00:03:53
que sería pues para atributos nada más vale que sería con el arroba vale vale como tienes en x 00:04:02
para tenemos el comité como dyn de asterisco que selecciona cualquier nodo en cualquier nodo de 00:04:11
elemento el no de que selecciona cualquier tipo de nodo y luego el seleccionar cualquier nodo de 00:04:16
atributo que ya hemos visto antes en un ejemplo vale aquí tenemos los tres ejemplos este es el 00:04:22
fichero xml y lo que hace es que ruta absoluta desde empresa y en nodo vale pues que lo que va 00:04:28
a hacer el primer nodo que encuentra dentro de empresa que es empleado y cogerá y se sacará 00:04:37
los dos empleados en la otra vía sería ponme desde valor absoluto esa dirección absoluta 00:04:42
desde empresa y me sacas todos. De hecho, todo lo que esté contenido dentro de empresa 00:04:51
te lo sacará. Y la otra vía sería a través de los atributos. Cógeme desde dirección 00:04:56
absoluta, desde empresa, pasas a empleado y dentro de empleado me coges todos los atributos 00:05:03
que haya. Como solo tiene uno, bueno, tiene dos, perdón. Te coge este y te coge este. 00:05:07
Y ya estaría. Funciones. También XPath proporciona funciones. Ya hemos visto algunas. 00:05:13
estas funciones para operar sobre los conjuntos de nodos seleccionados 00:05:20
y las funciones pueden combinarse con rutas de localización para obtener 00:05:24
información específica. Tenemos boolean 00:05:27
not, true, false 00:05:30
count, position, last 00:05:32
aquí he metido tres de las funciones 00:05:35
que serían count, que ya lo hemos visto anteriormente 00:05:39
que lo único que te hace count es que de esta ruta 00:05:42
empresa empleado 00:05:45
cuéntame cuántos 00:05:47
cuántos hay, ¿vale? Y te los cuenta, serían los cuatro que hay, ¿vale? Aquí esta otra nos está indicando, pues, que dentro, pues, de empresa, coja al empleado que está en la posición 2 y saque su nombre, 00:05:49
y saca, pues, lógicamente, Ana. Y el tercero, con la función last, hemos utilizado la función count, hemos utilizado la función position, y ahora vamos a utilizar la función last, que es que te dé el último nodo, ¿vale? 00:06:03
Entonces se está cogiendo empresa, dentro de empresa el elemento empleado, cuyo valor sea el último, que será el 4, y es el que te va a sacar. 00:06:15
También tenemos funciones como name, que devuelve el nombre de un nodo, local name, que devuelve el nombre local de un nodo, 00:06:28
y namespace urri, que devuelve el urri del espacio de nombre del nodo. 00:06:34
Aquí no he puesto ejemplos, pero bueno. 00:06:38
se haría eterno, normalize space 00:06:40
que elimina espacios necesarios en una cadena, string que devuelve un objeto 00:06:43
como una cadena, concat ya lo hemos visto y aquí hay un ejemplo de concat 00:06:47
string length que nos va a devolver el número de caracteres de una cadena, bueno como veis hay 00:06:51
muchas funciones, aquí tengo un ejemplo de suma en el que bueno en este fichero 00:06:55
de XML lo que ha hecho es que sumame 00:06:59
todos los elementos pues que salario hace 00:07:02
la ruta absoluta desde empresa, empleado hasta salario y que coge todo si quiero que me lo sumes 00:07:06
y me obtengas el resultado, con lo cual suma no va a tener un número. 00:07:12
Y ya pasamos a predicados. ¿Qué es un predicado? Es una expresión booleana dentro de una ruta 00:07:17
de localización y esta incluye unos corchetes. ¿Para qué va a servir? Para filtrar nodos 00:07:25
en función de ciertas características. Permite seleccionar nodos específicos dentro de una 00:07:30
ruta de localización y puede incorporar esas funciones que hemos visto para mayor 00:07:36
petición. Aquí tendríamos un ejemplo, pero bueno, ya hemos visto algunos anteriormente. 00:07:40
Aquí tenemos una ruta absoluta que va desde receta, ingredientes y luego ingrediente y 00:07:47
le ha metido aquí el predicado. Está diciendo, oye, cógeme aquel atributo código en el 00:07:54
que su valor sea igual a 1, y aquel que sea atributo código de valor 1, me coges el valor de su nombre, que sería concretamente este de aquí, ¿vale? 00:08:00
Tenemos los ejes en predicado, los ejes serían, pues, todos estos que aparecen aquí, child, attribute, descendant, self, parent y ancestor. 00:08:12
Child nos va a indicar, si veis aquí la ruta absoluta, nos va a indicar que cojamos el elemento hijo. 00:08:25
Aquí está diciendo que pasemos desde receta a ingredientes y dentro de ingredientes cojamos el hijo y dentro del hijo el valor de nombre. 00:08:37
Aquí estaría que cogería todos los elementos en nombre que serían harina, azúcar y manzana. Esto también no hace falta ponerlos así, también se podría obtener, ya lo hemos visto de la otra manera anteriormente. 00:08:51
Entonces, serían las dos posibles vías que se pueda coger. En cuanto a atributo, esto ya lo hemos visto anteriormente. En cuanto a self, sería, pues, para indicar el nodo actual. En cuanto a padre, pues, sería para coger el padre y luego tenemos ancestor y descendent, que sería, pues, para el ancestor, sería, pues, el ancestor superior, pues, de toda la, de toda la, de, ah, el ancestor, el máximo superior, 00:09:05
o padre superior al que esté marcado. 00:09:34
Aquí te está diciendo que dentro de receta pasas ingredientes y dentro de ingrediente y luego nombre. 00:09:38
Y dentro te está diciendo que como ancestro receta, te daría toda ella. 00:09:43
Estas vías de poder llegar a cada una de estas líneas se pueden hacer tanto con estos ejes como como lo hemos visto anteriormente. 00:09:50
Te va a salir al final el mismo resultado. 00:10:01
Aquí tenemos las distintas expresiones de XPath, en la que tenemos la que selecciona hijos directos, la que selecciona un atributo, la que selecciona todos los descendientes, la que selecciona el nodo actual, el nodo padre o el nodo antecesor 00:10:02
Si veis, yo puedo lograr lo mismo que he hecho aquí, veis el hijo, nada más que poniendo nombre, no habría falta ponerlo de esta manera 00:10:18
La otra manera era, acordaos, para seleccionar el atributo era a través del arroba 00:10:27
y seleccionar todos los descendientes como lo hemos dicho anteriormente, 00:10:32
pues a través de las dos barras recorría y buscaba a todos en profundidad 00:10:36
a través de todo el fichero XML. 00:10:40
Para seleccionar el nodo actual o el padre, pues sería como pasa en Linux, 00:10:42
pues a través de un punto o a través de dos puntos. 00:10:48
Luego tenemos, bueno, esto ya lo hemos visto anteriormente, el nuevo repaso. 00:10:53
Tenemos los operadores lógicos, que no hemos visto ningún ejemplo, 00:10:58
pero básicamente si lo veis aquí lo que está poniendo es que entre corchetes le está poniendo pues el operador AN, el OR, etc. 00:11:00
Solo voy a ver este, por ejemplo, que sería pues dentro pues de la dirección absoluta de empresa, empresa empleado, 00:11:07
cógeme aquellos cuyo departamento sea igual a ventas, el valor de departamento sea igual a ventas y salario sea mayor de 3.000. 00:11:15
Entonces recorrerá todos ellos y te dará pues concretamente el que suceda eso. 00:11:24
El único que cumple es este que tiene un salario de 3.500 y es el que te va a sacar. Aquí tenemos un ejemplo que es el ejemplo que aparece en el texto de la aula virtual. A ver, es más de lo que hemos visto. 00:11:28
Si veis aquí lo he puesto todos los ejemplos, pero lo he puesto un poquito más explicado para que lo entendáis el que no lo entienda. Os cuento el primer punto y el resto me lo voy a saltar porque ya vamos mal de tiempo. 00:11:48
Pero nos dice en el aula virtual construir las sentencias XPath que permitan obtener los siguientes datos. Por ejemplo, vamos a coger el segundo. Teléfono de casa del propietario. Lógicamente tenemos que ir en la ruta absoluta o tenemos que ir de agenda, propietario, teléfonos y luego casa, porque lo que realmente queremos es esto. Este sería el resultado de la misma. 00:12:03
es bastante facilito 00:12:28
lo repasáis, viene aquí un poquito 00:12:31
más explicado que lo que viene 00:12:33
en el aula, lo voy a poner por pasos 00:12:35
para que lo veáis y con la explicación aquí abajo 00:12:37
acceso a datos 00:12:39
de otro documento XML 00:12:43
con la función document 00:12:45
aquí XPath permite acceder a datos 00:12:47
del XML con el que 00:12:49
se trabaja directamente, que es el que hemos visto 00:12:51
pero sin embargo, que sucede si queremos acceder 00:12:53
a otros archivos de XML, pues hay que utilizar 00:12:55
la función document 00:12:57
Hay que decir que el documento no pertenece a XPath, sino a XSLT. Va a permitir obtener datos de otro archivo XML externo, al que ya tenemos. Aquí tenemos un ejemplo en el que tenemos el XML base y luego tenemos otro archivo externo, que sería este. 00:12:58
Bien, ¿cómo lo introduce? Lo introduce a través de document y una referencia a ese archivo externo. La sentencia XSL que se le añade al documento XSLT sería esta de aquí, a través del value of select, en el que indica document y el archivo que quiere optar. 00:13:20
Aquí lo he puesto mejor explicado, que sería toda esta línea, en el que lo que hace es cargar, este sería el original, este sería el externo, entonces lo que hace es que carga el archivo XML externo y ya nos permite acceder también a como si un fichero XML estuviera integrado dentro del otro. 00:13:41
Y a continuación le añades esta otra línea aquí, en la que nos va a indicar que, oye, búscame dentro del mismo entre salarios empleado y me está diciendo, y ahora dime, cógeme, está poniendo una expresión en la que nos está diciendo, filtra los empleados cuyo ID coincida con el ID del nodo actual en el XML principal, con lo cual está comparando este que ha introducido con el principal anterior. 00:14:07
Veis la utilidad de documento. Plantillas, lo que hemos visto anteriormente, que era el XSL template, que os prometí al principio que hablaríamos de ello y que es bastante útil. De hecho, la práctica es hacer básicamente un fichero XSLT y se puede hacer de dos modos. 00:14:35
Lo puedes hacer o bien a través de un bucle con un for each o lo puedes hacer a través de un template. 00:14:57
Un template permite definir el formato de salida para ciertos datos XML. 00:15:05
Usa el atributo match para seleccionar nodos según XPAT y su contenido debe estar bien estructurado en XHT. 00:15:10
Aquí tenemos las tres sentencias que vamos a utilizar en un template, que serían estas tres etiquetas. 00:15:18
sería template con match, que define la plantilla para la raíz del documento. 00:15:22
Luego tendríamos el apply templates, que nos va a decir dónde va a aplicar la plantilla a los nodos. 00:15:28
Y por último, define la plantilla para cada uno de los elementos en el template. 00:15:35
Ahora lo veremos. 00:15:43
Aquí tenemos los pasos. 00:15:44
Primero este es el XML que tenemos, y vemos su jerarquía. 00:15:46
A continuación, nosotros lo que queremos llegar es a esta salida. Entonces, lo primero que hace, si veis en el fichero XSLT, aparte de la primera línea que siempre es la misma, también la segunda, que es el output, para decir que va a ser un documento HTML, entramos en lo que es la plantilla y va a ser una plantilla además que se va a aplicar a la raíz del documento XML. 00:15:50
Por eso ha puesto la barra. A continuación, está metiendo los LREs, las etiquetas HTML que van a salir tal y como están metidas. No hay transformación. Y aquí, lista de empleados, tal. Si veis, eso va a ser exactamente igual aquí. 00:16:16
¿Vale? Llega hasta aquí y ahora va a aplicar la plantilla. La plantilla es a través de la Apply Templates, en el que primero selecciona dónde va a aplicar la plantilla y va a ser justamente dónde. 00:16:31
Donde Empresa, en la dirección absoluta Empresa barra Empleado. Si veis aquí, aquí hay una tabla. Aquí está haciendo la aplicación de la misma. 00:16:44
Y aquí hay una tabla. Después necesita la plantilla para cada empleado, porque lo que va a querer meter dentro de cada celda de los TDs va a ser el nombre y el puesto de cada uno de los empleados. 00:16:55
Y eso se va a aplicar, si veis esto realmente no lo he hecho, podía haberlo hecho en una diapositiva en el que podía haber hecho con un for each lo mismo y realmente lo único que está haciendo es le está aplicando a cada empleado para generar una fila en la tabla con el nombre y el puesto. 00:17:09
¿vale? realmente lo que va a hacer 00:17:28
esto al final es una tabla con una fila 00:17:31
en la que va a tener 00:17:32
cada fila, con respecto a aquí 00:17:34
como va a tener dos filas porque no tiene más que un 00:17:37
nombre y puesto, pues era lo que va a generar 00:17:38
y si veis, lo que está haciendo 00:17:41
es como una especie de bucle, es un 00:17:42
for each, entonces esto se puede 00:17:44
haber hecho con un for each o bien lo puedes hacer a través 00:17:46
de un template, que sería 00:17:48
pues este que he aplicado aquí, ¿vale? 00:17:51
Francisco, perdón 00:17:54
una preguntilla, el template del 00:17:55
el match, el primero, el de la plantilla 00:17:57
raíz, o sea, ¿ese es 00:17:58
necesario o 00:18:01
no? 00:18:02
Sí, porque tú le estás diciendo, oye, aplícame el template 00:18:04
para 00:18:07
dentro de este, imagínate 00:18:07
este fichero de XML muy pequeñito, pero tú 00:18:11
imagínate que quieres aplicarle 00:18:12
aquel 00:18:14
el template, lo quieres aplicar a una parte del 00:18:15
XML, pues 00:18:18
no vas a poner la barra, la barra te está indicando 00:18:20
que lo va a aplicar a todo, ¿vale? 00:18:22
Va a empezar aquí. 00:18:25
Para eso tienes que aplicar desde dónde va a generarse esa estructura. ¿Cómo lo hace? Lo hace a través del match, del template. El template te va a indicar que se va a aplicar a la raíz del XML, a partir de ahí. 00:18:27
O sea, que normalmente se suele poner siempre el match por abajo, normalmente. 00:18:48
Sí, pero imagínate que a lo mejor quieras poner, quieres hacer el template, que realmente esto es una plantilla, una plantilla que le vas a aplicar a una zona de tu XML. Aquí se le está aplicando a todo el XML, ¿vale? Pero tú imagínate que quieres aplicar esa plantilla a una parte del XML. 00:18:52
Porque imagínate un XML de esos brutales que tiene, no sé, 200 líneas y tú le quieres 300, 1000 líneas, le quieres aplicar solo a una parte de ese XML, pues le aplicarías el template a esa parte, ¿vale? Entonces, lógicamente, no habría que poner barra, habría que poner otra cosa, ¿vale? Pero esto indica que se lo va a aplicar a todo, ¿vale? 00:19:09
Pero fijaos qué fácil es hacer una plantilla para hacer una operación recursiva, por eso no es más que una operación recursiva, en la que está recorriendo de manera recursiva todo el XML y metiendo lo que yo quiero en una tabla a través de filas. 00:19:27
¿Cómo lo puedo hacer también? 00:19:43
Que es lo que os he dicho de la tarea 00:19:45
La tarea la puedo hacer o así 00:19:47
Con esto 00:19:48
O la puedo hacer con 00:19:50
Con un for each 00:19:52
Ya digo, el que 00:19:54
Me sepa hacer 00:19:56
Bueno, no es necesario, pero el que me sepa hacer 00:19:58
De las dos vías 00:20:01
Le pongo un 10, si me lo sabe explicar 00:20:01
¿Y qué me queda? 00:20:04
Son menos 20 ya 00:20:08
A ver, me queda 00:20:09
esto es un ejemplo también como el que hemos visto 00:20:10
DotaTemplate, nada, lo leéis 00:20:14
esto también se indica 00:20:16
cuál sería el resultado de aplicar la transformación 00:20:18
bueno, este es un ejercicio que ahí viene en la 00:20:20
y os lo quería poner aquí 00:20:22
para que estuviera visualmente 00:20:24
un poquito mejor, no lo explico, viene explicado 00:20:26
en el aula virtual 00:20:28
ya nos quedan los procesadores XSLT 00:20:29
esto es un poco de teoría 00:20:32
en el que, bueno, es un software que transforma 00:20:34
el documento XML aplicando reglas XSLT 00:20:36
Es el que realmente va a ejecutar esta transformación. 00:20:38
Genera un documento de salida, ya lo hemos visto, que realmente lo que va a generar es una información formateada 00:20:42
y que puede ejecutarse tanto en navegadores como en servidores web como en línea por línea de comandos. 00:20:47
Existen varios métodos para aplicar XSLT, aquí tenemos todos, por ejemplo, de Microsoft XML, hay muchos. 00:20:52
Los navegadores modernos permiten aplicar XSLT. 00:21:00
Ya os he dicho Edge y... no me acuerdo cuál era el otro, los dos. Firefox, pero también Chrome me imagino, ¿no? Sí, Chrome también. Permiten ya, viene introducido para que se pueda aplicar XSLT, ¿vale? 00:21:03
para enlazarlo a acordador de esta línea, que ya la hemos visto tres veces, con el href a la hoja xslt y ya está. 00:21:18
La transformación queda ligada a la vista del navegador y no se puede reutilizar fácilmente en otro sistema, dependencia del soporte xslt del navegador. 00:21:28
Edición y procesamiento, la mayoría de editores xml permiten escoger el procesador xslt y se pueden configurar para usar diferentes motores de transformación. 00:21:39
Bueno, esto no nos queda más que los depuradores XSLT, que es un software que va a permitir analizar la transformación paso a paso. 00:21:46
En cuanto, claro, esto no va a permitir, como todo depurador, ver o localizar dónde está el error. 00:21:56
¿Qué se puede hacer en funcionalidad de un depurador? Pues como todos los depuradores, ejecutar paso a paso, hasta el cursor, hasta el final, pausar y detener la ejecución, pues como todos. 00:22:02
que permite visualizar simultáneamente la plantilla que es SLT, los datos XML y la salida generada. 00:22:11
Fijaos, está bastante bien porque todo a la vez en tiempo real y que nos permite recorrer cada uno por pasos 00:22:19
viendo dónde puede estar el error. 00:22:25
¿Qué facilita la corrección de errores? 00:22:28
Ayuda a detectar qué plantillas generan la salida incorrecta, facilita el ajuste del formato y la lógica de transformación 00:22:31
y permite probar distintas modificaciones sin afectar al XML original. 00:22:37
Algunos ejemplos de herramientas están aquí, Oxygen, Altova y Stylus Studio y poco más. 00:22:41
Idioma/s:
es
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
Autor/es:
Francisco J. González Constanza
Subido por:
Francisco J. G.
Licencia:
Todos los derechos reservados
Visualizaciones:
91
Fecha:
25 de febrero de 2025 - 10:59
Visibilidad:
Público
Centro:
IES CIFP a Distancia Ignacio Ellacuría
Duración:
22′ 50″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
430.66 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid