Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Definición de esquemas y vocabulario en XML. Parte2 - 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:
Definición de esquemas y vocabulario en XML. Parte2
Y luego, como código postal y ciudad puede aparecer cero o más veces, estaría bien aunque no aparezca, ¿vale?
00:00:04
Y por último tenemos la barra, la barra, pues, vertical, en el que, pues, es como una enumeración y entonces nos permite dentro de todos los elementos que aparezcan, pues, elegir uno de ellos.
00:00:13
Por ejemplo, aquí he puesto que provincia tiene un sub-elemento nombre y que luego dentro, pues, tendrá un sub-elemento o bien código postal o bien ciudad.
00:00:24
Entonces veis que aquí ha añadido código postal y no ciudad. Ha elegido entre uno de los dos. Este es un ejemplo básico de DTD, que tiene tres elementos, alumno, nombre y dirección, y que el alumno tiene dos superelementos, nombre y dirección.
00:00:34
¿Veis? Este fichero XML es correcto y cumple este DTD. ¿Por qué? Porque tiene un elemento raíz alumno, tiene dos sub-elementos nombre y dirección,
00:00:55
y además, como lo ha puesto que tiene que tener en su contenido cadenas de texto, las tiene. Entonces, estaría correcto. No lo daría como válido.
00:01:01
Aquí tenemos uno más avanzado en el que ya tenemos el que, en el que le metí cardinalidad. Si veis, ahora tenemos.
00:01:11
Primero, el primer elemento, veis que los elementos siempre van de arriba a abajo en el árbol.
00:01:17
Con lo cual, el primer elemento que aparezca va a ser siempre el raíz. Entonces, biblioteca va a ser elemento raíz. ¿Veis? Biblioteca, elemento raíz. Luego dice que tiene un supelemento biblioteca que es libro. Y además, libro, según la cardinalidad, hemos visto que podía aparecer una o más veces.
00:01:21
Entonces, a continuación, el libro tiene tres sub-elementos, que son título, autor y género,
00:01:41
y nos dice que autor también tiene dos sub-elementos, que son nombre y apellido,
00:01:46
y que todos son de tipo, van a tener un contenido de tipo cadena de carácteres.
00:01:50
Entonces, vamos a repasar este XML a ver si cumple este DTD.
00:01:55
Vemos que la raíz es biblioteca. A continuación, puede tener uno o más libros.
00:01:58
Tiene un libro y tiene dos libros, con lo cual lo cumple. Hay uno o más libros.
00:02:05
Dentro del libro tiene que haber un título en ese orden, luego un autor y luego un género. Y los hay. Y además esos tres tienen contenido de texto. Y lo tienen. No, es contenido de texto tanto título como género.
00:02:10
Y luego nos dice que dentro de autor hay dos sub-elementos, nombre y apellido, y que tienen que tener texto. Y los dos tienen. Repasamos el otro y también. Con lo cual, este fichero XML cumple con este DTD y sería válido.
00:02:26
Hemos visto hasta ahora elementos, pero ¿qué sucede con los atributos? Vamos a definir los atributos que pueden aparecer perfectamente en un fichero XML. Para definir los atributos se hace a través de este enunciado que aparece aquí, que sería una exclamación y luego adlis.
00:02:41
El at least estaría formado por nombre de elemento primero, que va a tener ese atributo, después el nombre del atributo en sí, luego el tipo de atributo y por último un modificador que veremos qué es.
00:03:01
Tenemos aquí el ejemplo. Antes de nada, decir que como tipo de atributos en DTD vamos a tener enumeración de tipo CDATA, de tipo ID y de tipo IDREF y también NMTOKEN.
00:03:14
Empezamos con la enumeración
00:03:31
Nosotros podemos generar un atributo
00:03:34
Veis aquí, at least
00:03:37
Y le llama fecha, día, semana
00:03:38
Y le pone entre paréntesis
00:03:41
Todos los posibles valores que puede tener el atributo
00:03:42
Eso es como si fuera una enumeración
00:03:45
Pero en cualquier lenguaje de programación
00:03:47
A continuación aquí le he puesto require
00:03:48
Que veremos que significa esto
00:03:51
Require es que
00:03:53
Este atributo va a ser
00:03:54
Requerido, o sea, es estrictamente necesario
00:03:57
Que cuando tú definas el elemento
00:03:59
del que tiene este atributo, siempre aparezca el atributo.
00:04:01
Implied significa que no es necesario, puede aparecer el atributo o no puede aparecer.
00:04:06
Y eso es lo que se aparecería en el llamado modificador que aparece aquí al final.
00:04:11
Aquí era el tipo y aquí el modificador.
00:04:16
¿Veis? Entonces, si repasamos, aquí tenemos elemento, el ejemplo,
00:04:17
elemento, tenemos evento con un título y ponente.
00:04:22
Y luego, un atributo que pertenece al elemento evento.
00:04:26
y que define dos atributos en el elemento evento.
00:04:30
Uno es tipo, que es como una enumeración y tendrá uno de estos tres valores
00:04:34
y el otro es día de la semana y tendrá uno de estos valores también.
00:04:39
Y nos dice que los dos tienen que ser requeridos.
00:04:42
O sea, que es indispensable que cuando yo genero un elemento evento en el XML
00:04:44
siempre tiene que tener el atributo tipo y el atributo día de semana.
00:04:50
Vamos a verlo si lo cumplen.
00:04:54
Bueno, termino diciendo que Twitter y Ponente, que eran los dos sub-elementos de evento,
00:04:55
son de tipo de cadena de caracteres.
00:04:59
Vamos al ejemplo a ver si lo cumple o no.
00:05:03
El evento raíz es evento y evento tiene que tener dentro un título imponente.
00:05:05
Lo tiene, título imponente.
00:05:09
Los títulos imponentes, los dos son de cadena de caracteres, las tiene.
00:05:10
Y luego nos dice que evento sí o sí tiene que tener estos dos tipos de atributos,
00:05:13
tipo y día de semana.
00:05:19
Y tienen que aparecer.
00:05:20
Entonces, ¿qué tipo?
00:05:21
Puede tener tres valores, conferencia, seminario o taller.
00:05:22
Puedes poner cualquiera de los tres, pero tiene que ser uno de ellos.
00:05:25
Y le ha puesto conferencia.
00:05:28
Y que el otro tipo de atributo, día-semana, puede tener cualquiera de estos siete, que son los siete días de la semana. Y le pone martes. ¿Correcto? En cuanto a CDATA, ya lo hemos visto anteriormente, es el tipo de dato, en vez de una numeración, pues el CDATA ahora la pone sin el... lo veis aquí, lo pone a TTList, el tipo de elemento, el nombre del atributo y luego el tipo de dato, que es CDATA.
00:05:29
Y Cdata nos está indicando que va a ser cualquier tipo de texto, un atributo que es una cadena de texto. Si veis aquí el otro ejemplo, lo veis, ha definido aquí elemento alumno y dentro del elemento alumno tiene un atributo llamado nombre que admite cualquier cadena de texto dentro de él.
00:05:54
Y además, esta, al poner inplay, está diciendo que puede estar o no. No es necesario, no es requerido ese atributo, pero si lo pone, pues tiene que ser una cadena de texto. Si veis aquí, en el puesto alumno, le ha puesto el atributo, nombre, podría no haberlo puesto porque no es requerido y le pone una cadena de texto Juan Pérez.
00:06:16
En cuanto a los atributos ID y IDREF, ID es, no sé, ¿acordáis? En HTML un ID era para dar un identificador a una etiqueta. Entonces, aquí exactamente igual. Vamos a darle un identificador a un elemento y eso se hace a través del ID.
00:06:34
¿Cómo lo creamos? A través de ATT-List, luego el elemento, luego el nombre del atributo y luego qué tipo de atributo es, ID, en mayúscula.
00:06:52
Y aquí nos dice, pues, que es requerido.
00:07:04
Entonces, tenemos aquí el ejemplo de aquí que nos aparece en el que tenemos un curso con dos sub-elementos que son título y profesor.
00:07:07
¿Qué curso va a tener un atributo, ATT-List, que va a ser de tipo ID y que va a ser requerido?
00:07:14
Si nos fijamos arriba, vemos que en curso ha puesto el ID. Además, se cumple que siempre en el tipo de atributo ID no admite valores numéricos. Entonces, siempre hay que ponerle un prefijo.
00:07:20
Entonces, aquí he puesto el prefijo de texto para el número para que no sea un número, ¿vale? En cuanto a IDREF, el IDREF se define como aparece. Primero, pues, el ateteriz, el elemento, luego, después del elemento, el propio nombre del atributo y luego el tipo de atributo, que es IDREF.
00:07:34
A continuación nos dice que tiene que ser requerido. ¿Este IDRED para qué sirve? Sirve para hacer referencias internas en el propio documento. Aquí tenemos un ejemplo y cuando se hace una referencia interna la hace a otro elemento que tenga el ID.
00:08:00
Si veis aquí, está generando el elemento primero root, que sería el elemento raíz, le está generado dentro el elemento persona, que va a ser de tipo texto, lo que contiene datos de tipo texto.
00:08:16
A continuación, dice que dentro de persona va a haber un atributo de tipo ID y que va a ser requerido. A continuación, tenemos un elemento referencia que va a ser de tipo texto y él tiene referencia también un tipo de, va a tener un tipo de atributo que va a ser de tipo ID ref.
00:08:34
Si veis aquí, en el root ha generado una persona primero con un ID igual a P1, ¿vale? Correcto. Y una persona con un ID igual a P2. Si veis referencia que tiene un ID ref, tiene que referenciarse a uno de los IDs que tenga del documento de manera interna. Tenemos que referenciar pues a P1.
00:08:58
Otro tipo de atributos son los NM token, que es para indicar o asegurar que los valores de los atributos sean simples y cumplan siempre con las reglas de los nombres válidos en XML.
00:09:17
Acordaos, los nombres válidos de XML que dimos en el primer capítulo.
00:09:30
Cuando ponemos NM token, estamos indicando que el propio atributo, fijaos, aquí tenemos elemento producto que tiene dos sus elementos que son nombre y precio.
00:09:33
Y luego el atributo, o sea, el elemento producto, quiero que tenga un atributo que se llama categoría y que además sea de tipo NM token. O sea, que puedes meterle ahí cualquier cosa que cumpla con las reglas de los nombres válidos de XML. Y además nos está diciendo que puede aparecer o no. Luego nos dice que nombre y precio son de tipo texto. ¿Veis? ¿Lo cumple o no lo cumple? Pues lo cumple.
00:09:42
Tenemos el elemento producto con su atributo categoría y ha puesto electrónica y eso está dentro de cualquier regla de nombre válido en XML y por tanto es correcto. Dentro tendrá los dos sub-elementos nombre y precio.
00:10:06
En cuanto a modificadores de atributos, ya los hemos visto. Modificador de atributos, Implied y Required, este es opcional, este es obligatorio. Si lo pones aquí, el atributo edad del elemento alumno, está diciendo que puede ser opcional.
00:10:22
Entonces, cuando genera el alumno, veis, no ha utilizado el atributo edad. O tal vez lo pueda utilizar. Puede utilizar, puede hacer las dos versiones. En cambio, en el caso de poner require, el elemento alumno tendrá, aquí tenemos un ejemplo require en cuanto a edad y alumno, pues siempre, veis, solo funciona esta, puesto que es obligatorio que pongas el atributo edad.
00:10:45
Otros modificadores de atributos son fixed y literal. Fixed es como generar una constante o un valor fijo que no puede cambiar.
00:11:10
¿Vale? Este sería, pues, cuando pones fix, pues, por ejemplo, estudiante. ¿Vale? Aquí estás indicando, pues, que el elemento nombre, o sea, alumno que tiene un sub-elemento nombre, tiene un atributo y se llama tipo, que es de tipo texto y que además es fix, que es fijado, pues, con este valor constante que sería estudiante. ¿Vale?
00:11:26
En cuanto al literal, así no un valor literal, atributo dentro de comillas. Es como un valor por defecto que le ponemos. Si tú pones aquí, lo puedes poner directamente. Entonces, pones ejemplo, atributo, cdata, un valor predeterminado y ese es el valor que siempre va a tener predeterminado.
00:11:47
determinado. Toma por defecto siempre ese valor. Si no se especifica en el XML, lo va a tomar como valores. Si unimos varios de ellos en un ejemplo, lo tenemos aquí.
00:12:07
Vamos a definir todo el texto. Tendríamos un elemento curso. A su vez, el curso tiene cuatro sub-elementos, que son nombre, profesor, fecha y contenido. Después, curso va a tener un atributo,
00:12:20
que va a ser id, en minúsculas, y que es de tipo id, y que además es requerido.
00:12:35
Y también tiene un atributo tipo, de tipo texto, y que está fijado al valor teórico.
00:12:41
En cambio, pues como curso, habíamos dicho que tenía cuatro sub-elementos,
00:12:47
uno de ellos era nombre, que va a ser de tipo texto, otro era profesor, que también va a ser de tipo texto,
00:12:52
pero profesor también va a tener dos atributos, con la t de list, que son id, igual que teníamos en el caso anterior,
00:12:56
e IDREF, que son de tipo ID e IDREF cada uno de ellos. El primero es requerido, es indispensable que aparezca el ID, pero el IDREF no es necesario.
00:13:02
Después tenemos el elemento fecha, que será de tipo texto también y tiene un atributo que va a ser fecha, o sea, del elemento fecha va a ser día-semana,
00:13:12
con cómo se llama y que tiene una enumeración de valores y que requerido uno de estos va a ser los que va a poder añadir. Por último, tenemos el elemento contenido, que era un sub-elemento de curso y que tiene el atributo categoría y nos indica que además le pone un valor por defecto literal y además nos indica que si no pones ese valor por defecto y pones otro, pues que se cumplan las reglas de XML en cuanto a literales.
00:13:25
Entonces, aquí tendríamos el ejemplo y vamos a ver si cumple todo este DTD. En principio, curso tiene dos atributos tipo e id y además los dos eran dos atributos de curso, está bien, uno era requerido y el otro no.
00:13:51
En cuanto a sub-elementos de curso, era nombre, profesor, fecha y contenido. Contenido tenía un atributo que era categoría y, si fijáis, no ha utilizado el valor por defecto, pero ha utilizado avanzado y avanzado como cumple las normas de XML en cuanto a definición de nombres, pues lo daría por bueno.
00:14:08
Y luego tendríamos el caso de fecha, que teníamos un atributo que era día de semana y le ha añadido uno de los valores de la numeración, como el lunes, y el profesor que tenía dos atributos, que era id e idref, en el que a cada uno de ellos le ha metido un valor, siempre haciendo referencia a otro id del propio archivo xml.
00:14:29
Si veis, casi todo es lo mismo dentro de los DTDs. Luego tenemos también declaraciones de entidades. Las declaraciones de entidades van a permitir definir valores constantes dentro del documento de XML.
00:14:51
Si veis, el formato va a ser este, el ampersand y luego el nombre de la entidad. Aquí, mejor verlo con un ejemplo, se va como su entidad, pues exclamación y entity. Así se va a definir el nombre de la entidad y luego el valor que va a tener esa entidad.
00:15:05
De tal manera que nosotros, una vez definidas las entidades, fijaos aquí, ha generado un DTD interno llamado mensaje, que es el elemento raíz, y dentro no ha metido nada más que dos entidades, una entidad llamada saludo y una entidad llamada autor.
00:15:19
Esto lo podríamos equiparar, por ejemplo, al hashtag define de C, donde teníamos que se creaba un valor constante y que luego en el propio programa cuando compilaba lo que hacía es que sustituía directamente el valor de la constante en cada una de las apariciones de la misma en el programa.
00:15:35
Pues esto es lo mismo. En todos los lugares del propio fichero XML donde pongas el ampersand y saludo o autor, pues va a sustituir ese valor por el valor que tenga definido.
00:15:54
Entonces, fijaos, aquí ha puesto mensaje y al poner el ampersand saludo y ampersand autor, lo que va a tener es que nos va a aparecer, pues, hola, bienvenido, este mensaje fue escrito por Juan Pérez.
00:16:09
Por tanto, entidades constantes dentro de documentos XML. Tipos de entidades ya predefinidas, pues tendríamos estas que serían la de signo menor, mayor, etc. Y luego la definición personalizada, la que hemos visto actualmente. Aquí nos viene otro ejemplo exactamente igual que el que hemos visto anteriormente.
00:16:24
También podemos tener entidades externas que vinculan el documento de XML con otro archivo mediante su URL y se denota así, el entity, el nombre de la entidad, pero ahora ya, si os fijáis, sería el nombre de la entidad, system y luego ya la URL.
00:16:48
imaginaos aquí tenemos el que tenemos el documento de td interno de este xml en el
00:17:12
que fichero xml en el que tiene dentro una entidad pero de tipo externo donde él ha
00:17:19
llamado contenido externo para resisten nos va a hacer referencia a esta url esta url es
00:17:23
una url de un fichero xml ese fichero xml es este de aquí contenido para el contenido de
00:17:30
manera que cuando después tiene que llamar a esa entidad, ¿cómo? A través de ampersand
00:17:37
contenido externo. ¿Y qué está haciendo? Está metiendo dentro de aquí todo este fichero
00:17:41
XML, que es este de aquí, y nos daría como resultado este otro. Y también tenemos las
00:17:48
entidades de parámetro en el que, bueno, pues es cuando queremos, permite en gran parte
00:17:57
de referenciarlas. Es cuando queremos utilizar, imaginaos, una entidad en el que tiene varios
00:18:02
sub-elementos y utilizarlo en varios de los elementos posteriores. Entonces, aquí tenemos
00:18:11
que la definición es ahora, se denota con el símbolo de porcentaje y el nombre de la
00:18:16
entidad. Aquí tenemos un ejemplo en el que nos está diciendo entidad, porcentaje, dirección.
00:18:20
dice que está formado por tanto calle, por número o cero o una vez, por ciudad y por código postal, ¿vale?
00:18:24
Luego define aquí abajo calle, número, ciudad y código postal, ¿vale?
00:18:33
Y nos indica que alumno también va a tener dirección y luego porcentaje dirección.
00:18:38
O sea que si nos vemos aquí, cuando nosotros definimos el fichero XML,
00:18:45
Vemos que ahora dirección va a tener tanto calle, número ciudad y código postal. Y si lo veis, lo tiene aquí. Como alumno estaba compuesto de qué? De DNI y de dirección. Es como si fuera una plantilla en el que puedes utilizar. También aquí esta plantilla la puedes utilizar en diferentes elementos solo llamando a porcentaje y el nombre de la plantilla.
00:18:49
Y si veis aquí, alumno va a tener DNI más la plantilla que le ha añadido. Y profesor, ¿qué tiene? Profesor tiene nombre más la plantilla. ¿Veis? Y se puede utilizar en distintos elementos. Eso sirve para generar este tipo de entidades.
00:19:12
También entidades de parámetros externos en el que, bueno, puedes llamar a otros DTDs.
00:19:29
Veis aquí, lo hace igual, un sistema, pero ahora llama a persona DTD, de tal manera que puedes configurar un DTD más completo a través de otros DTDs.
00:19:34
Veis aquí que ha utilizado dos entidades de parámetros externos para llamar aquí a dos DTDs, al DTD dirección y al DTD persona.
00:19:45
Estos dos DTDs, dirección y persona, van a ir insertados dentro de este DTD. Si veis aquí, al final, se va a transformar en este DotoDTD. ¿Por qué? Porque estamos definiendo estas dos entidades que van a ir dentro del DTD padre.
00:19:53
¿Vale? Declaraciones de notación. También tenemos las notaciones. Es cuando queremos incluir ficheros binarios en un fichero. ¿Vale? Entonces, ¿cómo se lo vamos a decir a la aplicación? Pues, lo va a hacer a través ahora, pues, de esta sintaxis, donde se declara a través del símbolo de exclamación y notation. Luego el nombre, system y la aplicación.
00:20:08
Aquí tenemos un ejemplo bastante claro en el que nos indica una anotación en la que nos va a decir que una anotación llamada GIF, este sería el nombre, System, y luego indica que se hace referencia a un editor de formatos GIF, que es ese .exe.
00:20:37
Entonces, después, cuando generamos una entidad, imagen, y llamamos a esta imagen .gif, pues la asociará a esa entidad externa y podrá ejecutarlo.
00:20:55
Secciones condicionales. Esta sección, ¿para qué se va a utilizar? Se define a través de esta frase que aparece aquí.
00:21:14
Van a permitir incluir o ignorar partes de la declaración de un DTD. Aquí tenemos tanto «Include» como «Ignore». Entonces, «Include» va a permitir que se vea esa parte de la declaración del DTD.
00:21:26
- 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:
- 73
- Fecha:
- 30 de enero de 2025 - 12:14
- Visibilidad:
- Público
- Centro:
- IES CIFP a Distancia Ignacio Ellacuría
- Duración:
- 21′ 41″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 424.17 MBytes