Activa JavaScript para disfrutar de los vídeos de la Mediateca.
XML 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:
Vamos a ver ahora los DTDs o la definición de tipo de documento.
00:00:00
Entonces, lo primero es cómo lo referenciamos en un documento XML.
00:00:07
Puede incluirse dentro del documento.
00:00:12
Dentro del documento XML indicamos DOCTYPE, el nombre que le queramos poner al DTD y las declaraciones, y lo cerramos de esta manera.
00:00:14
O podemos referenciarlo de forma externa, es decir, ponemos dentro de nuestros XML quién va a ser el DTD de referencia, ponemos su dirección, su identificador, su URI o cuál es su localizador de recurso y ya está.
00:00:24
¿De acuerdo? Cualquiera de estas dos opciones nos vale.
00:00:42
Si queremos ver un poco el ejemplo en una referencia externa, aquí tenemos un fichero que se llama marcadores.dtd, esta es la definición, el dtd del documento XML,
00:00:46
y dentro del documento XML definimos su etiqueta para indicar que es un documento XML
00:00:58
y después llamamos a doctype, marcadores, con el system y el nombre del fichero donde se almacena ese documento.
00:01:05
Y aquí escribiríamos el documento. Es la manera de poderlo hacer sin ningún problema.
00:01:13
Bueno, en el caso de que esté dentro, simplemente detrás de esto escribiríamos las etiquetas XML.
00:01:20
Vamos a ir viendo qué elementos tenemos. Vamos a ir viendo primero lo que son las declaraciones de entidades, que simplemente podemos definir una entidad con su nombre y su valor.
00:01:28
Pueden ser entidades de sistema, con lo cual iría la palabra System o Públicas, Public, ¿de acuerdo? Y esa es la parte más importante.
00:01:43
Vamos a ir definiendo elementos.
00:01:54
Por ejemplo, tenemos una etiqueta que se llama empty.
00:01:58
En este caso, nuestro documento, que llamamos ejemplo, tiene que tener un elemento ejemplo que no tenga nada, que esté vacío, que sea empty.
00:02:02
Con lo cual nos valdría tanto esta definición como esta de aquí, en el cual se abre y se cierra la etiqueta directamente.
00:02:12
Este nos daría error y este que dentro tiene esta información, que no corresponde, que también es información al fin y al cabo, también daría error.
00:02:20
Vamos a utilizar para comprobarlo nuestro Visual Studio Code y vamos a crear aquí nuestro ficherito.
00:02:31
voy a ponerlo más grande para que lo veamos mejor
00:02:42
y entonces pues nada
00:02:45
hemos definido nuestro DTD
00:02:47
y tenemos aquí nuestro ejemplo
00:02:48
a este Visual Studio Code
00:02:51
le he añadido una extensión
00:02:53
que es la extensión XML
00:02:55
esta de aquí
00:02:57
esta XML, que esta extensión
00:02:58
nos permite
00:03:01
comprobar que un documento
00:03:02
es válido, es decir, se corresponde
00:03:05
a una gramática determinada
00:03:07
bueno, pues
00:03:08
en este caso no da ningún error
00:03:11
imaginemos que ponemos ahora
00:03:13
ejemplo
00:03:15
sabemos que lo cierra automáticamente
00:03:17
y tampoco
00:03:19
aparece ningún error, pero vamos a
00:03:21
incluir algo de información dentro
00:03:23
inform
00:03:25
y vemos como ya automáticamente
00:03:26
nos ha marcado esto
00:03:29
en rojo, y nos dice
00:03:31
que el contenido
00:03:33
de ejemplo
00:03:35
debe ser, debe corresponderse
00:03:37
a empty
00:03:39
¿De acuerdo? Con lo cual, él se enfada inmediatamente y nos dice que esto es erróneo, tal y como habíamos mostrado ya en la página que estábamos viendo.
00:03:40
Bueno, así vamos a seguir con más etiquetas, vamos a por más ejemplos.
00:03:51
PCData, así entre paréntesis, PCData, indica que podemos escribir cualquier información dentro, cualquier texto dentro.
00:03:58
Entonces puede estar vacío, como es este caso, puede tener información, pero lo que no puede tener en ningún caso es dentro otras etiquetas.
00:04:12
¿De acuerdo?
00:04:23
Entonces PCData se dice texto, simplemente texto.
00:04:24
Any, lo que me dice Any es que puedo tener dentro lo que sea, cualquier tipo de información.
00:04:28
Puede estar vacía, puede haber texto o incluso puedo tener dentro etiquetas, ya las vemos aquí.
00:04:35
Etiqueta A, que empieza y finaliza.
00:04:42
La diferencia, por tanto, entre PCData y ENI es que PCData no permite etiquetar dentro y ENI sí.
00:04:47
Cuando tenemos una serie de elementos separados por comas, lo que quieren indicar es que vamos a tener estos elementos y además en el orden indicado.
00:04:55
este documento
00:05:07
vamos a pasarlo aquí arriba
00:05:09
vamos a llevarlo a nuestro fichero
00:05:11
para jugar con él y verlo
00:05:13
lo vamos a llevar aquí
00:05:15
vamos a cambiar esto de aquí
00:05:17
y ejemplo tiene que tener
00:05:19
tanto
00:05:22
el elemento A
00:05:23
como el B
00:05:25
y en ese orden primero el A y el B
00:05:26
y lo que si pueden estar es vacíos
00:05:28
en este momento ya vemos que no está dando errores
00:05:30
porque no hay ni A ni B
00:05:32
voy a cambiar de línea
00:05:34
para que lo veamos y voy a introducir
00:05:37
A
00:05:38
y como es vacío, pues ya directamente lo incluyo
00:05:39
sigue dándome error
00:05:43
y ahora voy a poner B
00:05:44
y vemos que inmediatamente
00:05:46
ya deja de tener errores porque están
00:05:48
los documentos y vacíos
00:05:50
por supuesto, podría intentar poner
00:05:52
algo en B y tal y daría error, ¿de acuerdo?
00:05:54
pero esto es lo que nos dice
00:05:57
si le cambiara el orden, si yo quitara
00:05:58
A
00:06:00
y lo pusiera así, también
00:06:01
nos daría problema porque no se mantiene
00:06:04
el orden estricto que nos dice el DTD correspondiente. Podemos indicar la barra O. Y en este caso
00:06:06
lo que dice es que tiene que contener uno de los dos elementos. O contiene A o contiene
00:06:20
B. Pero no puede contener los dos a la vez. O contiene A o contiene B. En este caso que
00:06:26
contiene los dos nos da error. Y en el caso de que no contenga a ninguno, pues también
00:06:32
nos da error
00:06:36
mucho interés tiene
00:06:38
cuando aparece
00:06:40
una interrogación detrás de uno de los elementos
00:06:42
porque indica que ese elemento
00:06:44
puede aparecer o no
00:06:46
pero solo una vez
00:06:49
es decir, en este caso
00:06:50
vamos a ir a nuestro ejemplo anterior
00:06:52
si yo pusiera en la B un interrogante
00:06:54
primero
00:06:56
vamos a ponerlo en el orden para que
00:06:58
esto
00:07:00
funcionaría
00:07:02
Esto, quitado b, funcionaría
00:07:03
Porque permite que no haya b
00:07:07
La interrupción es 0 o 1
00:07:09
Y por supuesto, si pongo dos veces b
00:07:12
Por ejemplo, esto daría error
00:07:17
Igual que si pongo dos veces a
00:07:20
¿De acuerdo?
00:07:21
Entonces, esto indica que hay que poner a
00:07:23
Y b se puede poner o no
00:07:27
Si aparece un asterisco
00:07:30
lo que indica es que puede no aparecer o aparecer tantas veces como se quiera
00:07:35
entonces entre 0 y n veces
00:07:41
aquí en este caso tengo a asterisco b
00:07:44
con lo cual a puede desde no aparecer hasta aparecer multitud de veces
00:07:48
y b tiene que aparecer obligatoriamente después de todas ellas
00:07:52
entonces bueno, pues aquí vemos varios ejemplos donde funciona
00:07:56
y uno que no funciona porque la b está delante de la a
00:07:59
más dice que tiene que aparecer ese elemento al menos una vez
00:08:02
pero puede aparecer muchas más
00:08:09
entonces en este caso A tiene que aparecer obligatoriamente una o varias veces
00:08:11
pero si no aparece, pues de error
00:08:17
por supuesto siempre en ese orden
00:08:19
y con paréntesis podemos hacer agrupaciones de este tipo
00:08:21
en este caso primero tiene que aparecer la A
00:08:25
y después puede aparecer o la A o la B
00:08:27
entonces en este caso
00:08:31
que es el que da error
00:08:34
pues nos está diciendo claramente
00:08:35
que aquí no A está la B
00:08:36
o en este caso
00:08:38
es un caso curioso
00:08:40
para poder poner en cualquier orden las cosas
00:08:41
le decimos
00:08:43
tiene que aparecer la A o la B
00:08:44
y después la B o la A
00:08:45
¿de acuerdo?
00:08:47
pues nos va a permitir
00:08:48
poner o una u otra
00:08:49
en cada caso
00:08:52
entonces
00:08:53
cualquiera de las dos no valdría
00:08:54
bueno
00:08:58
pues después continuamos
00:08:59
bueno, finalmente nos quedan los atributos
00:09:01
y los atributos
00:09:06
pues se definen
00:09:08
con esta sintaxis
00:09:09
en la cual ponemos menor admiración
00:09:11
hacia abajo
00:09:13
add list o lista de atributos
00:09:14
el nombre del elemento
00:09:17
el nombre del atributo
00:09:19
en el que está incluido
00:09:21
lo que vamos a definir
00:09:23
el tipo de atributo
00:09:24
y el valor inicial del atributo
00:09:26
si hubiera
00:09:27
Bueno, vamos a ir viendo ejemplos de las posibilidades que tenemos
00:09:28
¿Qué tipo de atributos tenemos?
00:09:33
Pues la primera de ellas es CDATA
00:09:35
Que en general significa que tiene caracteres, sin ningún tipo de restricción
00:09:37
En este caso tenemos un documento que se llama Ejemplo
00:09:41
Tiene un elemento Ejemplo que es empty, es decir, no tiene información dentro
00:09:44
Y una de esas atributos, el primer elemento de Ejemplo es Color
00:09:48
Que es CDATA y que es obligatorio, requerido
00:09:53
Ceata, por tanto, puede ser color, aunque no tenga información
00:09:57
O color amarillo, o color, en este caso, varios elementos dentro
00:10:03
Lo que no puede ser es ejemplo sin color
00:10:09
O ejemplo sabor dulce, pero sigue estando sin color
00:10:13
Esto daría error
00:10:17
Otra posibilidad que tenemos es NMToken
00:10:19
En el cual pueden ser atributos que solo contienen letras dígitas
00:10:22
y los caracteres, o punto, o guión, o subrayado, o dos puntos.
00:10:27
Entonces es similar al anterior, pero no admite, sobre todo, lo más importante es que no admite espacios.
00:10:33
Por tanto, esta podría ser válida, azul-guión marino podría ser válida, un número puede ser válido,
00:10:38
pero no podemos tener azul-espacio marino, o carácter del tipo de almohadilla.
00:10:45
nmtokens es lo mismo que nmtoken
00:10:52
pero varios de ellos
00:10:55
separados por espacios
00:10:57
por lo cual ahora si azul marino
00:10:58
separado por espacio
00:11:01
podría valer
00:11:03
también podemos tener un conjunto de valores
00:11:04
entonces podemos decir por ejemplo
00:11:06
que en la etiqueta
00:11:09
o en el elemento ejemplo
00:11:12
hay un atributo color
00:11:13
que puede tomar los valores azul
00:11:15
blanco o rojo
00:11:17
y que es obligatorio
00:11:19
Por ejemplo, en este caso, color o nada, o azul, lo que no podemos poner verde, puesto que no está en este grupo que hay aquí.
00:11:21
O puede ser de tipo ID, es decir, de tipo identificador, que debe ser único, es decir, no se puede repetir entre otros elementos o atributos.
00:11:30
Y además de ser único, tiene que empezar al menos con un valor alfabético.
00:11:41
Entonces, por ejemplo, aquí tenemos el libro cuyo código es L1, que es poema de Gil Gámez, o L2, que son los preceptos de TAP-HOP-DEP.
00:11:46
Si pusiéramos código igual a 1, pues esto daría error porque tiene que empezar con un número, no puede empezar con un número, tiene que empezar con una letra, o aquí donde se repite el identificador.
00:11:57
También podemos tener un valor atributo que sea una referencia a un ID ya existente de otro elemento
00:12:10
id ref, referencia a un ID
00:12:16
Por ejemplo, tenemos un libro que tiene códigos y un préstamo de esos libros
00:12:19
Ya tenemos el código L1 que corresponde a este poema
00:12:25
Y el libro L1 que lo ha prestado Numan Nigerio de este libro que existe
00:12:30
Si pusiéramos algo que no estuviera identificado, pues daría error
00:12:38
O referencia de varios ides, entonces L1, L2, o solo L1
00:12:43
Lo que no podemos poner es una referencia, algo que no existe
00:12:50
Además tenemos entity, que es un valor atributo de alguna entidad que ya estuviera definida en el DTD
00:12:54
Entities, de alguna de las entidades
00:13:00
Orientation, de alguna de las notaciones ya definidas
00:13:03
En cuanto a los valores iniciales de los atributos, pues pueden ser los siguientes
00:13:07
Required, que ya lo hemos visto, que simplemente significa que es obligatorio
00:13:12
En este caso la etiqueta color dentro de ejemplo tiene que existir
00:13:15
En este caso daría error
00:13:20
Implied, en el cual el atributo no es obligatorio y no se especifica ningún valor por defecto predeterminado
00:13:23
Con lo cual todos estos casos son válidos
00:13:31
Fix en el cual lo que ponemos es un valor fijo
00:13:34
El color siempre va a tener el color verde
00:13:39
Y entonces este sería válido y el color valdría verde
00:13:42
Y este el color valdría verde
00:13:45
Cualquier otra combinación fallaría
00:13:47
Y valor correspondiente en el cual definimos que color va a tener de momento el color verde
00:13:49
Si no lo ponemos tendrá el color verde
00:13:59
Si lo ponemos podemos cambiarlo por cualquier otro valor
00:14:01
Y con esto hemos visto todas las posibilidades que tenemos en DTD
00:14:05
En cuanto a definición de la estructura de un documento XML
00:14:08
Viendo sus entidades, sus notaciones, sus elementos y sus atributos
00:14:11
- Idioma/s:
- Autor/es:
- Amadeo Mora
- Subido por:
- Amadeo M.
- Licencia:
- Dominio público
- Visualizaciones:
- 151
- Fecha:
- 26 de diciembre de 2020 - 18:40
- Visibilidad:
- Público
- Centro:
- IES CLARA DEL REY
- Duración:
- 14′ 20″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1364x768 píxeles
- Tamaño:
- 78.27 MBytes