1 00:00:01,070 --> 00:00:14,470 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. 2 00:00:14,470 --> 00:00:25,589 Entonces, bueno, si vamos a la unidad de reciente apertura, vemos que en contenido tenemos el contenido de siempre 3 00:00:25,589 --> 00:00:33,030 y os he subido dos ejemplos, uno de un XML con DTD y otro con XSD. 4 00:00:34,509 --> 00:00:39,329 Si nos metemos en el contenido, vemos que precisamente va a hablar de ello, ¿verdad? 5 00:00:40,049 --> 00:00:44,130 Entonces, ¿qué es esto de DTD y XML SEMA? 6 00:00:45,289 --> 00:00:56,590 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. 7 00:00:58,030 --> 00:01:03,490 Esos campos, el 100% de las veces tienen una validación, o deberían tenerla. 8 00:01:04,409 --> 00:01:08,129 Porque a la hora de poner un país tiene que ser, por ejemplo, un país que exista, ¿verdad? 9 00:01:08,129 --> 00:01:17,670 no os inventáis vosotros el país, lo elegís de un combo box o similar. Cuando metéis un email, 10 00:01:17,670 --> 00:01:24,069 una dirección de correo email, tiene que seguir cierto patrón con un arroba. Si metéis un código 11 00:01:24,069 --> 00:01:29,489 postal, cualquier vez que tenga cinco dígitos, hay campos que son numéricos, otros que son de texto, 12 00:01:29,489 --> 00:01:35,010 campos que son obligatorios, otros que son opcionales... Pues todo esto igual se puede 13 00:01:35,010 --> 00:01:45,969 hacer en el XML con el DTD o el esquema, el SEMA. El caso es que el DTD sí que es verdad 14 00:01:45,969 --> 00:01:52,049 que está muy limitado y por eso es una tecnología antigua y realmente obsoleta. Vosotros en 15 00:01:52,049 --> 00:01:57,769 la vida real nunca vais a programar un DTD, siempre lo vais a hacer con esquemas, pero 16 00:01:57,769 --> 00:02:04,569 bueno, está bien que lo conozcáis porque quizás os tengáis que enfrentar a XMLs antiguos 17 00:02:04,569 --> 00:02:13,629 que tengan validación por DTD, entonces tenéis que saber lo que es y a leerlo. Y bueno, tengo 18 00:02:13,629 --> 00:02:19,129 que pediros perdón porque tengo un poco de trancazo y bueno, a ver qué tal sale el vídeo 19 00:02:19,129 --> 00:02:28,150 porque me está molestando bastante. En estos tiempos así de lluvia y humedad, con frío 20 00:02:28,150 --> 00:02:29,889 nos ponemos malos todos 21 00:02:29,889 --> 00:02:31,210 pero bueno, seguimos 22 00:02:31,210 --> 00:02:32,490 entonces 23 00:02:32,490 --> 00:02:35,909 voy a haceros un vídeo que es este 24 00:02:35,909 --> 00:02:37,449 del DTD y otro 25 00:02:37,449 --> 00:02:39,610 separado del 26 00:02:39,610 --> 00:02:41,330 XML SEMA, ya que tengo 27 00:02:41,330 --> 00:02:43,550 programado dos ejemplillos 28 00:02:43,550 --> 00:02:46,310 y los vemos cada uno en un vídeo aparte 29 00:02:46,310 --> 00:02:47,250 y luego la tarea 30 00:02:47,250 --> 00:02:49,750 será algo parecido, de un 31 00:02:49,750 --> 00:02:51,569 XML que os damos 32 00:02:51,569 --> 00:02:54,189 hacer el DTD y el 33 00:02:54,189 --> 00:02:56,009 esquema, así que 34 00:02:56,009 --> 00:02:56,710 vamos por ello 35 00:02:56,710 --> 00:03:11,449 Si os descargáis el ejemplo del DTD, obtendréis un archivo comprimido, que si lo descomprimís tendréis algo parecido a esto. 36 00:03:13,009 --> 00:03:28,509 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? 37 00:03:28,789 --> 00:03:43,789 Y veis que los campos te los pone en azul fuerte, los atributos un poco en azul cielo, los valores... 38 00:03:44,569 --> 00:03:56,389 Pero ¿qué es lo que pasa? Que si vamos por ejemplo al DTD, que luce tal que así, vamos a ponerlo en paralelo. 39 00:03:58,789 --> 00:04:00,449 veis que es texto plano 40 00:04:00,449 --> 00:04:03,990 aquí el Visual Studio Code no está entendiendo ni papa 41 00:04:03,990 --> 00:04:06,090 vale, dice que es esto 42 00:04:06,090 --> 00:04:09,250 es como si yo le escribiera una carta a Santa Claus 43 00:04:09,250 --> 00:04:15,370 y es que esto pasa porque tenemos que instalarle una extensión 44 00:04:15,370 --> 00:04:18,370 para que pueda validar el DTD 45 00:04:18,370 --> 00:04:21,629 porque el DTD lo vamos a validar a través del Visual Studio Code 46 00:04:21,629 --> 00:04:27,350 vale, realmente vamos a coger toda esta estructura 47 00:04:27,350 --> 00:04:33,589 Y el XML la va a leer y va a ver si hay problemas o no. 48 00:04:34,250 --> 00:04:43,290 Entonces, así a bote pronto, tenemos tres ítems importantes. 49 00:04:44,269 --> 00:04:48,649 Element, que sería un campo, como agenda, contacto, nombre, bla, bla, bla. 50 00:04:51,250 --> 00:04:56,810 Lista de atributos, at list, que sería dentro del teléfono. 51 00:04:57,350 --> 00:05:03,910 el atributo país y aquí decimos que es obligatorio. 52 00:05:04,610 --> 00:05:10,990 Entonces, luego tendríamos entity, que es como la declaración de variables, de entidades. 53 00:05:12,250 --> 00:05:17,610 Entonces aquí estamos diciendo que la entity empresa tiene valor onda. 54 00:05:19,569 --> 00:05:24,810 Según esto, como tenemos un atributo llamado país en teléfono que es obligatorio, 55 00:05:24,810 --> 00:05:28,709 Si yo cojo y le borro aquí el país 56 00:05:28,709 --> 00:05:31,930 Tendría que darme error, pero no me da 57 00:05:31,930 --> 00:05:34,149 Y no me da porque no tenemos la extensión 58 00:05:34,149 --> 00:05:36,189 Así que lo que vamos a hacer va a ser instalarla 59 00:05:36,189 --> 00:05:40,370 ¿Y cómo se instalan extensiones? 60 00:05:40,410 --> 00:05:43,149 Pues ya lo vimos en el vídeo de la primera unidad, ¿verdad? 61 00:05:44,629 --> 00:05:47,750 Que simplemente le damos aquí a los cubos estos 62 00:05:47,750 --> 00:05:51,709 Y aquí lo que vamos a hacer va a ser buscar xml 63 00:05:51,709 --> 00:05:53,649 Rehat 64 00:05:53,649 --> 00:05:59,189 Perdón 65 00:05:59,189 --> 00:06:01,470 Aquí vemos que 66 00:06:01,470 --> 00:06:04,730 La primera tiene 9,3 millones de descargas 67 00:06:04,730 --> 00:06:06,410 Entonces tiene que ser buena, ¿verdad? 68 00:06:08,050 --> 00:06:09,209 Vamos a 69 00:06:09,209 --> 00:06:10,649 A instalarla 70 00:06:10,649 --> 00:06:12,329 A ver qué pasa 71 00:06:12,329 --> 00:06:14,089 Anda 72 00:06:14,089 --> 00:06:15,889 La instalamos y 73 00:06:15,889 --> 00:06:18,350 Inmediatamente vemos que ya 74 00:06:18,350 --> 00:06:19,610 Reconoce los elementos 75 00:06:19,610 --> 00:06:22,170 Reconoce que es un 76 00:06:22,170 --> 00:06:23,370 DTD 77 00:06:23,370 --> 00:06:27,850 Con el que podemos trabajar 78 00:06:27,850 --> 00:06:31,009 Y justo me dice que aquí pasan cosas 79 00:06:31,009 --> 00:06:34,350 Entonces, ¿qué es lo que pasa aquí? 80 00:06:35,050 --> 00:06:36,990 Attribute, país, isRequired 81 00:06:36,990 --> 00:06:39,310 Anda, isRequired 82 00:06:39,310 --> 00:06:42,310 ¿Vale? Como le hemos quitado el atributo 83 00:06:42,310 --> 00:06:43,329 Ahora se queja 84 00:06:43,329 --> 00:06:46,129 Porque le hemos instalado la extensión 85 00:06:46,129 --> 00:06:47,670 Y ya lo puede verificar 86 00:06:47,670 --> 00:06:51,209 Se queja de que el país tiene que estar 87 00:06:51,209 --> 00:07:00,790 Y que es obligatorio y que tiene que estar especificado en el tipo teléfono, porque lo tenemos aquí. 88 00:07:02,430 --> 00:07:07,009 Entonces vamos a volvérselo a poner para que no se queje. 89 00:07:08,110 --> 00:07:08,209 Perfecto. 90 00:07:10,550 --> 00:07:10,750 Vale. 91 00:07:12,509 --> 00:07:13,310 Perdón. 92 00:07:15,620 --> 00:07:16,180 Vamos con ello. 93 00:07:16,180 --> 00:07:29,920 Para utilizar un DTD en un XML lo que tenemos es que decirle al XML que este archivo lo vamos a utilizar para verificarlo 94 00:07:29,920 --> 00:07:32,240 Para ello utilizamos dot type 95 00:07:32,240 --> 00:07:41,379 A continuación ponemos el campo raíz del XML que corresponde al primer campo, en este caso agenda 96 00:07:41,379 --> 00:07:43,220 Y tiene que ser idéntico 97 00:07:43,220 --> 00:07:45,540 si esto por ejemplo lo cambio 98 00:07:45,540 --> 00:07:47,000 se va a quejar también 99 00:07:47,000 --> 00:07:48,620 y nos va a decir 100 00:07:48,620 --> 00:07:51,180 document root element agenda2 101 00:07:51,180 --> 00:07:53,379 más match dot type root 102 00:07:53,379 --> 00:07:54,480 o sea que 103 00:07:54,480 --> 00:07:57,620 la raíz de dot type tiene que 104 00:07:57,620 --> 00:07:59,579 que ser igual a la raíz 105 00:07:59,579 --> 00:08:01,259 del documento xml 106 00:08:01,259 --> 00:08:03,220 vale, aquí no es 107 00:08:03,220 --> 00:08:05,220 no es igual, por eso se queja 108 00:08:05,220 --> 00:08:07,480 la volvemos a poner igual 109 00:08:07,480 --> 00:08:08,680 y dos contentos 110 00:08:08,680 --> 00:08:13,319 y ponemos system 111 00:08:13,319 --> 00:08:29,879 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. 112 00:08:29,879 --> 00:08:33,279 Entonces, vamos con ello 113 00:08:33,279 --> 00:08:38,200 El DTD, ya hemos dicho que hay tres ítems importantes, ¿verdad? 114 00:08:38,460 --> 00:08:42,559 Tres palabras reservadas que representan los elementos como los campos 115 00:08:42,559 --> 00:08:46,200 Los add lists como las listas de atributos 116 00:08:46,200 --> 00:08:49,179 Y las entity como declaración de variables 117 00:08:49,179 --> 00:08:53,860 Entonces, vamos a empezar 118 00:08:53,860 --> 00:08:58,080 Agenda, declaramos el elemento agenda que es el campo raíz 119 00:08:58,080 --> 00:09:03,799 como hemos dicho, que contiene contacto. Y tenemos aquí el asterisco. Este asterisco 120 00:09:03,799 --> 00:09:14,740 representa que puede haber de 0 a infinitos contactos. Si vamos al tema, nos metemos en 121 00:09:14,740 --> 00:09:21,639 el DTD, nos metemos en declaraciones de tipo y lo vemos aquí. Operador de 0 a más, el 122 00:09:21,639 --> 00:09:30,559 asterisco. Operador de uno a más, el plus, la suma. Son iguales, lo único que con el 123 00:09:30,559 --> 00:09:36,080 asterisco te permite no tener ningún contacto y si le pusiéramos una suma por lo menos 124 00:09:36,080 --> 00:09:41,240 tendríamos que tener un contacto. Luego tenemos la interrogación que lo que te hace es decirte 125 00:09:41,240 --> 00:09:49,840 que ese campo es opcional. Como veis, volvemos a esto, todo lo que estoy explicando lo podéis 126 00:09:49,840 --> 00:09:56,919 ver aquí detalladamente, así que yo creo que estaría guay que vierais este vídeo 127 00:09:56,919 --> 00:10:04,559 y luego os leyerais los apuntes, o al revés también sirve, ¿vale? Pero no dejéis de 128 00:10:04,559 --> 00:10:13,059 echar un vistazo al contenido, porque también explicará en más detalle algunos de los 129 00:10:13,059 --> 00:10:20,360 elementos que estoy explicando yo aquí. Entonces, hemos dicho eso. ¿Qué contactos puede tener 130 00:10:20,360 --> 00:10:32,279 de cero a varios? Luego, seguimos. Declaramos contactos. ¿Y contactos qué tiene? Tiene 131 00:10:32,279 --> 00:10:40,379 una lista de elementos, de campos, ¿verdad? Que son estos que detallo aquí. Y aquí el 132 00:10:40,379 --> 00:10:50,299 orden es importante esto qué quiere decir que si pongo nombre no le pongo ningún operador esto 133 00:10:50,299 --> 00:10:57,200 quiere decir que tiene que haber un nombre vale no ningún nombre no cinco nombres tiene que haber 134 00:10:57,200 --> 00:11:09,679 uno exactamente uno si yo cojo y le pongo otro nombre me va a decir que no hay ves me dice que 135 00:11:09,679 --> 00:11:16,899 el contenido tiene que emparejar esta lista. Nombre, apellidos. No, nombre, nombre, apellidos. 136 00:11:17,419 --> 00:11:26,440 Y por eso se queja. Por lo tanto, tenemos que contactos tiene nombre, tiene apellidos, 137 00:11:26,700 --> 00:11:33,700 tiene teléfono, tiene dirección con el más. Eso quiere decir que tiene que tener una dirección, 138 00:11:33,700 --> 00:11:36,440 pero también puede tener 139 00:11:36,440 --> 00:11:38,980 dos direcciones 140 00:11:38,980 --> 00:11:46,799 o 50 direcciones 141 00:11:46,799 --> 00:11:48,919 ¿vale? el caso es que tenga por lo menos 142 00:11:48,919 --> 00:11:49,320 una 143 00:11:49,320 --> 00:11:52,139 por eso tenemos el más 144 00:11:52,139 --> 00:11:55,019 y luego tenemos el correo 145 00:11:55,019 --> 00:11:55,620 que es opcional 146 00:11:55,620 --> 00:11:58,399 que sea opcional quiere decir que yo lo puedo quitar 147 00:11:58,399 --> 00:12:00,659 y no se va a quejar 148 00:12:00,659 --> 00:12:01,980 ¿vale? por eso es opcional 149 00:12:01,980 --> 00:12:08,370 La vivienda también es opcional 150 00:12:08,370 --> 00:12:10,110 El comentario, la empresa 151 00:12:10,110 --> 00:12:15,809 El orden, por supuesto 152 00:12:15,809 --> 00:12:18,009 Tiene que ser este que pongo 153 00:12:18,009 --> 00:12:19,649 Porque si yo ahora cojo apellidos 154 00:12:19,649 --> 00:12:22,210 Y lo pongo delante de nombre 155 00:12:22,210 --> 00:12:24,149 También se va a quejar 156 00:12:24,149 --> 00:12:26,929 Y me va a decir el mismo error 157 00:12:26,929 --> 00:12:29,929 Que tiene que seguir este orden 158 00:12:29,929 --> 00:12:31,210 Nombre, apellidos 159 00:12:31,210 --> 00:12:32,529 Y aquí he puesto apellidos y nombre 160 00:12:32,529 --> 00:12:40,570 Perfecto 161 00:12:40,570 --> 00:12:42,549 Entonces 162 00:12:42,549 --> 00:12:44,690 Ya vamos a 163 00:12:44,690 --> 00:12:46,169 Declarar los elementos 164 00:12:46,169 --> 00:12:49,070 Los cuales ya no contienen más 165 00:12:49,070 --> 00:12:49,549 Dentro 166 00:12:49,549 --> 00:12:52,909 Por ejemplo el nombre 167 00:12:52,909 --> 00:12:53,549 Que es el primero 168 00:12:53,549 --> 00:12:56,879 Perdón 169 00:12:56,879 --> 00:13:00,779 El nombre que es el primero 170 00:13:00,779 --> 00:13:02,220 Entonces el nombre es de tipo 171 00:13:02,220 --> 00:13:03,120 PCData 172 00:13:03,120 --> 00:13:06,519 Esto es fácil porque solo hay dos tipos 173 00:13:06,519 --> 00:13:11,259 Y es la principal limitación que tiene el DTD 174 00:13:11,259 --> 00:13:12,899 Que es el PCData 175 00:13:12,899 --> 00:13:15,639 Que lo utilizamos en los campos 176 00:13:15,639 --> 00:13:20,639 Y el CData 177 00:13:20,639 --> 00:13:22,720 Que lo utilizamos para los atributos 178 00:13:22,720 --> 00:13:28,799 PCData para los campos 179 00:13:28,799 --> 00:13:30,440 Con el element 180 00:13:30,440 --> 00:13:32,720 Y CData para los atributos 181 00:13:32,720 --> 00:13:33,659 En este caso es país 182 00:13:33,659 --> 00:13:35,440 Con atlist 183 00:13:36,759 --> 00:13:40,580 Entonces, nombre es un campo, lo declaramos como PCData. 184 00:13:40,940 --> 00:13:42,559 Apello es un campo, como PCData. 185 00:13:43,080 --> 00:13:44,840 Teléfono es un campo, como PCData. 186 00:13:45,220 --> 00:13:48,500 Ahora decimos que teléfono tiene un atributo, que se llama país. 187 00:13:49,299 --> 00:13:51,259 Por lo tanto, si es un atributo es CData. 188 00:13:51,259 --> 00:13:57,200 Y el país es required, que quiere decir que es obligatorio. 189 00:13:57,200 --> 00:14:10,299 Si nos vamos aquí al contenido, vemos los tipos de restricciones que podamos tener en este sentido. 190 00:14:10,840 --> 00:14:18,200 Entonces vemos que required es obligatorio y que si le ponemos implied es opcional. 191 00:14:18,200 --> 00:14:34,279 Por lo tanto, si en vez de required le ponemos implied, vamos a cogerlo. Es que ¿sabéis 192 00:14:34,279 --> 00:14:43,539 lo que pasa? Que si le doy a alt para la grabación, entonces es un rayón. Vamos a cogerlo así 193 00:14:43,539 --> 00:14:50,100 directamente aquí estamos 194 00:14:53,159 --> 00:14:56,860 y luego lo guardamos 195 00:14:56,980 --> 00:15:00,860 ahora le hemos puesto implied esto quiere decir que es opcional entonces yo 196 00:15:00,860 --> 00:15:05,779 puedo venirme aquí lo quito y ya no me da error porque no es required es 197 00:15:05,779 --> 00:15:11,399 implied lo vamos a dejar como estaba 198 00:15:11,399 --> 00:15:13,159 vale 199 00:15:13,159 --> 00:15:15,399 sin embargo ahora como es required 200 00:15:15,399 --> 00:15:16,799 pues si lo quito 201 00:15:16,799 --> 00:15:18,840 se va a quejar como hemos visto antes 202 00:15:18,840 --> 00:15:22,960 no se queja 203 00:15:22,960 --> 00:15:24,539 ¿por qué? porque no hemos grabado 204 00:15:24,539 --> 00:15:25,759 ahora sí 205 00:15:25,759 --> 00:15:27,379 genial 206 00:15:27,379 --> 00:15:32,840 muy bien 207 00:15:32,840 --> 00:15:34,879 vale, seguimos 208 00:15:34,879 --> 00:15:36,559 tenemos dirección 209 00:15:36,559 --> 00:15:39,639 que lo declaramos aquí 210 00:15:39,639 --> 00:15:41,200 y dirección sí que tiene elementos 211 00:15:41,799 --> 00:15:48,840 Entonces le ponemos los elementos que tiene, los campos que tiene dentro de dirección y el orden del mismo. 212 00:15:49,679 --> 00:15:52,840 Por lo tanto ya hemos visto que si cambiamos el orden se va a quejar. 213 00:15:56,210 --> 00:16:00,549 Y seguimos. Como dirección tiene un más, puede tener otra dirección. 214 00:16:02,970 --> 00:16:05,529 Tenemos calle, número y código postal. 215 00:16:05,529 --> 00:16:07,730 Y luego tenemos correo. 216 00:16:09,149 --> 00:16:11,870 Tenemos vivienda que es empty. 217 00:16:12,710 --> 00:16:13,950 Es un valor vacío. 218 00:16:14,789 --> 00:16:18,269 Eso también se explica más detenidamente. 219 00:16:19,950 --> 00:16:20,549 ¿Dónde estaba? 220 00:16:20,549 --> 00:16:21,549 A ver... 221 00:16:23,230 --> 00:16:26,549 Está en el... 222 00:16:27,470 --> 00:16:27,769 Aquí. 223 00:16:28,870 --> 00:16:31,610 Indica que el elemento no es contenedor. 224 00:16:32,009 --> 00:16:36,429 Por ejemplo, la siguiente definición muestra un elemento A que no contiene nada. 225 00:16:38,269 --> 00:16:41,889 No es contenedor, o sea, no hace falta que le metas datos dentro. 226 00:16:42,710 --> 00:16:46,950 entonces luego tenemos 227 00:16:46,950 --> 00:16:48,230 el comentario 228 00:16:48,230 --> 00:16:51,029 que es de tipo any 229 00:16:51,029 --> 00:16:53,610 o sea aquí puede meterse todo lo que quieras 230 00:16:53,610 --> 00:16:55,529 que también está 231 00:16:55,529 --> 00:16:57,330 aquí 232 00:16:57,330 --> 00:16:59,549 permite que el contenedor del elemento 233 00:16:59,549 --> 00:17:00,370 sea cualquier cosa 234 00:17:00,370 --> 00:17:05,490 y luego tenemos un campo que es 235 00:17:05,490 --> 00:17:07,450 empresa al que leemos 236 00:17:07,450 --> 00:17:11,349 bueno 237 00:17:11,349 --> 00:17:25,470 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. 238 00:17:28,890 --> 00:17:33,049 Entonces, trabajo es igual a onda. 239 00:17:35,049 --> 00:17:38,089 Entonces se utiliza así, con el ampersand, trabajo. 240 00:17:41,349 --> 00:17:54,109 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. 241 00:17:54,109 --> 00:17:59,190 Y ya está 242 00:17:59,190 --> 00:18:01,430 Es así de sencillito 243 00:18:01,430 --> 00:18:02,589 ¿Qué es lo que pasa con esto? 244 00:18:03,549 --> 00:18:05,150 Que como solo hay dos tipos 245 00:18:05,150 --> 00:18:06,990 El PCData y el CData 246 00:18:06,990 --> 00:18:11,829 No puedes obligar a que los campos 247 00:18:11,829 --> 00:18:13,890 Sean números, sean strings 248 00:18:13,890 --> 00:18:15,950 A que cumplan cierto patrón 249 00:18:15,950 --> 00:18:16,829 ¿O no? 250 00:18:20,200 --> 00:18:22,200 Entonces por eso está tan limitado 251 00:18:22,200 --> 00:18:23,920 Y por eso se ha dejado de utilizar 252 00:18:24,759 --> 00:18:46,640 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. 253 00:18:46,640 --> 00:18:58,960 Sí que le puedes decir que tenga ciertos valores, eso se hace con aquí fix, permite definir un valor fijo, ¿vale? 254 00:18:59,319 --> 00:19:03,220 Para que decir esto tiene que ser esto, esto o esto. 255 00:19:05,200 --> 00:19:09,940 Pero como veis tiene muchas limitaciones y por eso es una tecnología que está obsoleta. 256 00:19:09,940 --> 00:19:15,299 ¿Vale? Pues hasta aquí el DTD 257 00:19:15,299 --> 00:19:19,339 Ya si tenéis alguna duda pues ya sabéis que me podéis preguntar en el foro 258 00:19:19,339 --> 00:19:22,140 Así nos enteramos, o sea, se entera todo el mundo 259 00:19:22,140 --> 00:19:29,279 Y pues si es algo más particular me podéis contactar a mí directamente 260 00:19:29,279 --> 00:19:34,619 Así que con esto yo creo que será suficiente 261 00:19:34,619 --> 00:19:41,240 Leeros también el contenido que viene también muy resumidito y bastante bien 262 00:19:41,240 --> 00:19:47,200 Y ya el próximo vídeo lo hacemos para el XMLSMA 263 00:19:47,200 --> 00:19:53,839 Pues nada, a ver si me recupero y no tenéis que aguantar mis lamentos 264 00:19:53,839 --> 00:19:55,660 Adiós