Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Unidad 4 - LMM: DTD - 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:
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
- Ciclo formativo de grado básico
- 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