Saltar navegación

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

Unidad 4 - LMM: DTD - 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 22 de enero de 2026 por Alberto S.

2 visualizaciones

Descargar la transcripción

Buenas, pues estamos otra vez aquí con Lenguaje de Marcas que vamos a hacer el vídeo introducción de la unidad 4, ¿verdad? Esta que hemos llamado definición de esquemas y vocabulario en XML. 00:00:01
Entonces, bueno, si vamos a la unidad de reciente apertura, vemos que en contenido tenemos el contenido de siempre 00:00:14
y os he subido dos ejemplos, uno de un XML con DTD y otro con XSD. 00:00:25
Si nos metemos en el contenido, vemos que precisamente va a hablar de ello, ¿verdad? 00:00:34
Entonces, ¿qué es esto de DTD y XML SEMA? 00:00:40
Lo que tenemos aquí son validadores de XML. Entonces, podemos poner un símil con un formulario de internet, cualquiera, donde tenéis que rellenar los campos. 00:00:45
Esos campos, el 100% de las veces tienen una validación, o deberían tenerla. 00:00:58
Porque a la hora de poner un país tiene que ser, por ejemplo, un país que exista, ¿verdad? 00:01:04
no os inventáis vosotros el país, lo elegís de un combo box o similar. Cuando metéis un email, 00:01:08
una dirección de correo email, tiene que seguir cierto patrón con un arroba. Si metéis un código 00:01:17
postal, cualquier vez que tenga cinco dígitos, hay campos que son numéricos, otros que son de texto, 00:01:24
campos que son obligatorios, otros que son opcionales... Pues todo esto igual se puede 00:01:29
hacer en el XML con el DTD o el esquema, el SEMA. El caso es que el DTD sí que es verdad 00:01:35
que está muy limitado y por eso es una tecnología antigua y realmente obsoleta. Vosotros en 00:01:45
la vida real nunca vais a programar un DTD, siempre lo vais a hacer con esquemas, pero 00:01:52
bueno, está bien que lo conozcáis porque quizás os tengáis que enfrentar a XMLs antiguos 00:01:57
que tengan validación por DTD, entonces tenéis que saber lo que es y a leerlo. Y bueno, tengo 00:02:04
que pediros perdón porque tengo un poco de trancazo y bueno, a ver qué tal sale el vídeo 00:02:13
porque me está molestando bastante. En estos tiempos así de lluvia y humedad, con frío 00:02:19
nos ponemos malos todos 00:02:28
pero bueno, seguimos 00:02:29
entonces 00:02:31
voy a haceros un vídeo que es este 00:02:32
del DTD y otro 00:02:35
separado del 00:02:37
XML SEMA, ya que tengo 00:02:39
programado dos ejemplillos 00:02:41
y los vemos cada uno en un vídeo aparte 00:02:43
y luego la tarea 00:02:46
será algo parecido, de un 00:02:47
XML que os damos 00:02:49
hacer el DTD y el 00:02:51
esquema, así que 00:02:54
vamos por ello 00:02:56
Si os descargáis el ejemplo del DTD, obtendréis un archivo comprimido, que si lo descomprimís tendréis algo parecido a esto. 00:02:56
Entonces, si lo abrís con nuestro querido Visual Studio Code, tenemos esto. El Visual Studio Code reconoce que es código XML porque ya le instalamos las extensiones, ¿verdad? 00:03:13
Y veis que los campos te los pone en azul fuerte, los atributos un poco en azul cielo, los valores... 00:03:28
Pero ¿qué es lo que pasa? Que si vamos por ejemplo al DTD, que luce tal que así, vamos a ponerlo en paralelo. 00:03:44
veis que es texto plano 00:03:58
aquí el Visual Studio Code no está entendiendo ni papa 00:04:00
vale, dice que es esto 00:04:03
es como si yo le escribiera una carta a Santa Claus 00:04:06
y es que esto pasa porque tenemos que instalarle una extensión 00:04:09
para que pueda validar el DTD 00:04:15
porque el DTD lo vamos a validar a través del Visual Studio Code 00:04:18
vale, realmente vamos a coger toda esta estructura 00:04:21
Y el XML la va a leer y va a ver si hay problemas o no. 00:04:27
Entonces, así a bote pronto, tenemos tres ítems importantes. 00:04:34
Element, que sería un campo, como agenda, contacto, nombre, bla, bla, bla. 00:04:44
Lista de atributos, at list, que sería dentro del teléfono. 00:04:51
el atributo país y aquí decimos que es obligatorio. 00:04:57
Entonces, luego tendríamos entity, que es como la declaración de variables, de entidades. 00:05:04
Entonces aquí estamos diciendo que la entity empresa tiene valor onda. 00:05:12
Según esto, como tenemos un atributo llamado país en teléfono que es obligatorio, 00:05:19
Si yo cojo y le borro aquí el país 00:05:24
Tendría que darme error, pero no me da 00:05:28
Y no me da porque no tenemos la extensión 00:05:31
Así que lo que vamos a hacer va a ser instalarla 00:05:34
¿Y cómo se instalan extensiones? 00:05:36
Pues ya lo vimos en el vídeo de la primera unidad, ¿verdad? 00:05:40
Que simplemente le damos aquí a los cubos estos 00:05:44
Y aquí lo que vamos a hacer va a ser buscar xml 00:05:47
Rehat 00:05:51
Perdón 00:05:53
Aquí vemos que 00:05:59
La primera tiene 9,3 millones de descargas 00:06:01
Entonces tiene que ser buena, ¿verdad? 00:06:04
Vamos a 00:06:08
A instalarla 00:06:09
A ver qué pasa 00:06:10
Anda 00:06:12
La instalamos y 00:06:14
Inmediatamente vemos que ya 00:06:15
Reconoce los elementos 00:06:18
Reconoce que es un 00:06:19
DTD 00:06:22
Con el que podemos trabajar 00:06:23
Y justo me dice que aquí pasan cosas 00:06:27
Entonces, ¿qué es lo que pasa aquí? 00:06:31
Attribute, país, isRequired 00:06:35
Anda, isRequired 00:06:36
¿Vale? Como le hemos quitado el atributo 00:06:39
Ahora se queja 00:06:42
Porque le hemos instalado la extensión 00:06:43
Y ya lo puede verificar 00:06:46
Se queja de que el país tiene que estar 00:06:47
Y que es obligatorio y que tiene que estar especificado en el tipo teléfono, porque lo tenemos aquí. 00:06:51
Entonces vamos a volvérselo a poner para que no se queje. 00:07:02
Perfecto. 00:07:08
Vale. 00:07:10
Perdón. 00:07:12
Vamos con ello. 00:07:15
Para utilizar un DTD en un XML lo que tenemos es que decirle al XML que este archivo lo vamos a utilizar para verificarlo 00:07:16
Para ello utilizamos dot type 00:07:29
A continuación ponemos el campo raíz del XML que corresponde al primer campo, en este caso agenda 00:07:32
Y tiene que ser idéntico 00:07:41
si esto por ejemplo lo cambio 00:07:43
se va a quejar también 00:07:45
y nos va a decir 00:07:47
document root element agenda2 00:07:48
más match dot type root 00:07:51
o sea que 00:07:53
la raíz de dot type tiene que 00:07:54
que ser igual a la raíz 00:07:57
del documento xml 00:07:59
vale, aquí no es 00:08:01
no es igual, por eso se queja 00:08:03
la volvemos a poner igual 00:08:05
y dos contentos 00:08:07
y ponemos system 00:08:08
Y luego el nombre del archivo, que obviamente lo ponemos así a pelo porque está dentro del mismo directorio. Si yo ahora cojo esto y lo saco, pues ya no lo reconocería, pero lo reconoce, además que lo subraya, como que está validado. 00:08:13
Entonces, vamos con ello 00:08:29
El DTD, ya hemos dicho que hay tres ítems importantes, ¿verdad? 00:08:33
Tres palabras reservadas que representan los elementos como los campos 00:08:38
Los add lists como las listas de atributos 00:08:42
Y las entity como declaración de variables 00:08:46
Entonces, vamos a empezar 00:08:49
Agenda, declaramos el elemento agenda que es el campo raíz 00:08:53
como hemos dicho, que contiene contacto. Y tenemos aquí el asterisco. Este asterisco 00:08:58
representa que puede haber de 0 a infinitos contactos. Si vamos al tema, nos metemos en 00:09:03
el DTD, nos metemos en declaraciones de tipo y lo vemos aquí. Operador de 0 a más, el 00:09:14
asterisco. Operador de uno a más, el plus, la suma. Son iguales, lo único que con el 00:09:21
asterisco te permite no tener ningún contacto y si le pusiéramos una suma por lo menos 00:09:30
tendríamos que tener un contacto. Luego tenemos la interrogación que lo que te hace es decirte 00:09:36
que ese campo es opcional. Como veis, volvemos a esto, todo lo que estoy explicando lo podéis 00:09:41
ver aquí detalladamente, así que yo creo que estaría guay que vierais este vídeo 00:09:49
y luego os leyerais los apuntes, o al revés también sirve, ¿vale? Pero no dejéis de 00:09:56
echar un vistazo al contenido, porque también explicará en más detalle algunos de los 00:10:04
elementos que estoy explicando yo aquí. Entonces, hemos dicho eso. ¿Qué contactos puede tener 00:10:13
de cero a varios? Luego, seguimos. Declaramos contactos. ¿Y contactos qué tiene? Tiene 00:10:20
una lista de elementos, de campos, ¿verdad? Que son estos que detallo aquí. Y aquí el 00:10:32
orden es importante esto qué quiere decir que si pongo nombre no le pongo ningún operador esto 00:10:40
quiere decir que tiene que haber un nombre vale no ningún nombre no cinco nombres tiene que haber 00:10:50
uno exactamente uno si yo cojo y le pongo otro nombre me va a decir que no hay ves me dice que 00:10:57
el contenido tiene que emparejar esta lista. Nombre, apellidos. No, nombre, nombre, apellidos. 00:11:09
Y por eso se queja. Por lo tanto, tenemos que contactos tiene nombre, tiene apellidos, 00:11:17
tiene teléfono, tiene dirección con el más. Eso quiere decir que tiene que tener una dirección, 00:11:26
pero también puede tener 00:11:33
dos direcciones 00:11:36
o 50 direcciones 00:11:38
¿vale? el caso es que tenga por lo menos 00:11:46
una 00:11:48
por eso tenemos el más 00:11:49
y luego tenemos el correo 00:11:52
que es opcional 00:11:55
que sea opcional quiere decir que yo lo puedo quitar 00:11:55
y no se va a quejar 00:11:58
¿vale? por eso es opcional 00:12:00
La vivienda también es opcional 00:12:01
El comentario, la empresa 00:12:08
El orden, por supuesto 00:12:10
Tiene que ser este que pongo 00:12:15
Porque si yo ahora cojo apellidos 00:12:18
Y lo pongo delante de nombre 00:12:19
También se va a quejar 00:12:22
Y me va a decir el mismo error 00:12:24
Que tiene que seguir este orden 00:12:26
Nombre, apellidos 00:12:29
Y aquí he puesto apellidos y nombre 00:12:31
Perfecto 00:12:32
Entonces 00:12:40
Ya vamos a 00:12:42
Declarar los elementos 00:12:44
Los cuales ya no contienen más 00:12:46
Dentro 00:12:49
Por ejemplo el nombre 00:12:49
Que es el primero 00:12:52
Perdón 00:12:53
El nombre que es el primero 00:12:56
Entonces el nombre es de tipo 00:13:00
PCData 00:13:02
Esto es fácil porque solo hay dos tipos 00:13:03
Y es la principal limitación que tiene el DTD 00:13:06
Que es el PCData 00:13:11
Que lo utilizamos en los campos 00:13:12
Y el CData 00:13:15
Que lo utilizamos para los atributos 00:13:20
PCData para los campos 00:13:22
Con el element 00:13:28
Y CData para los atributos 00:13:30
En este caso es país 00:13:32
Con atlist 00:13:33
Entonces, nombre es un campo, lo declaramos como PCData. 00:13:36
Apello es un campo, como PCData. 00:13:40
Teléfono es un campo, como PCData. 00:13:43
Ahora decimos que teléfono tiene un atributo, que se llama país. 00:13:45
Por lo tanto, si es un atributo es CData. 00:13:49
Y el país es required, que quiere decir que es obligatorio. 00:13:51
Si nos vamos aquí al contenido, vemos los tipos de restricciones que podamos tener en este sentido. 00:13:57
Entonces vemos que required es obligatorio y que si le ponemos implied es opcional. 00:14:10
Por lo tanto, si en vez de required le ponemos implied, vamos a cogerlo. Es que ¿sabéis 00:14:18
lo que pasa? Que si le doy a alt para la grabación, entonces es un rayón. Vamos a cogerlo así 00:14:34
directamente aquí estamos 00:14:43
y luego lo guardamos 00:14:53
ahora le hemos puesto implied esto quiere decir que es opcional entonces yo 00:14:56
puedo venirme aquí lo quito y ya no me da error porque no es required es 00:15:00
implied lo vamos a dejar como estaba 00:15:05
vale 00:15:11
sin embargo ahora como es required 00:15:13
pues si lo quito 00:15:15
se va a quejar como hemos visto antes 00:15:16
no se queja 00:15:18
¿por qué? porque no hemos grabado 00:15:22
ahora sí 00:15:24
genial 00:15:25
muy bien 00:15:27
vale, seguimos 00:15:32
tenemos dirección 00:15:34
que lo declaramos aquí 00:15:36
y dirección sí que tiene elementos 00:15:39
Entonces le ponemos los elementos que tiene, los campos que tiene dentro de dirección y el orden del mismo. 00:15:41
Por lo tanto ya hemos visto que si cambiamos el orden se va a quejar. 00:15:49
Y seguimos. Como dirección tiene un más, puede tener otra dirección. 00:15:56
Tenemos calle, número y código postal. 00:16:02
Y luego tenemos correo. 00:16:05
Tenemos vivienda que es empty. 00:16:09
Es un valor vacío. 00:16:12
Eso también se explica más detenidamente. 00:16:14
¿Dónde estaba? 00:16:19
A ver... 00:16:20
Está en el... 00:16:23
Aquí. 00:16:27
Indica que el elemento no es contenedor. 00:16:28
Por ejemplo, la siguiente definición muestra un elemento A que no contiene nada. 00:16:32
No es contenedor, o sea, no hace falta que le metas datos dentro. 00:16:38
entonces luego tenemos 00:16:42
el comentario 00:16:46
que es de tipo any 00:16:48
o sea aquí puede meterse todo lo que quieras 00:16:51
que también está 00:16:53
aquí 00:16:55
permite que el contenedor del elemento 00:16:57
sea cualquier cosa 00:16:59
y luego tenemos un campo que es 00:17:00
empresa al que leemos 00:17:05
bueno 00:17:07
Es un campo que yo llamo empresa y lo he utilizado como ejemplo para la entity, que hemos hecho una variable que es empresa, o le puedes llamar trabajo. 00:17:11
Entonces, trabajo es igual a onda. 00:17:28
Entonces se utiliza así, con el ampersand, trabajo. 00:17:35
Es como declarar variables, entonces esta variable tiene un valor y lo puedes utilizar en el XML. Igual así es. Es más instructivo. Luego lo subo. 00:17:41
Y ya está 00:17:54
Es así de sencillito 00:17:59
¿Qué es lo que pasa con esto? 00:18:01
Que como solo hay dos tipos 00:18:03
El PCData y el CData 00:18:05
No puedes obligar a que los campos 00:18:06
Sean números, sean strings 00:18:11
A que cumplan cierto patrón 00:18:13
¿O no? 00:18:15
Entonces por eso está tan limitado 00:18:20
Y por eso se ha dejado de utilizar 00:18:22
Porque sí que puedes poner que los campos tengan que contener ciertos campos dentro que sigan la secuencia, pero estas limitaciones de no poder especificar que es un email o que tenga cinco dígitos, por ejemplo, pues hace que no sea muy potente. 00:18:24
Sí que le puedes decir que tenga ciertos valores, eso se hace con aquí fix, permite definir un valor fijo, ¿vale? 00:18:46
Para que decir esto tiene que ser esto, esto o esto. 00:18:59
Pero como veis tiene muchas limitaciones y por eso es una tecnología que está obsoleta. 00:19:05
¿Vale? Pues hasta aquí el DTD 00:19:09
Ya si tenéis alguna duda pues ya sabéis que me podéis preguntar en el foro 00:19:15
Así nos enteramos, o sea, se entera todo el mundo 00:19:19
Y pues si es algo más particular me podéis contactar a mí directamente 00:19:22
Así que con esto yo creo que será suficiente 00:19:29
Leeros también el contenido que viene también muy resumidito y bastante bien 00:19:34
Y ya el próximo vídeo lo hacemos para el XMLSMA 00:19:41
Pues nada, a ver si me recupero y no tenéis que aguantar mis lamentos 00:19:47
Adiós 00:19:53
Materias:
Tecnología
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
Subido por:
Alberto S.
Licencia:
Reconocimiento - Compartir igual
Visualizaciones:
2
Fecha:
22 de enero de 2026 - 15:12
Visibilidad:
Público
Centro:
IES CIFP a Distancia Ignacio Ellacuría
Duración:
00′ 12″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
73.40 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid