1 00:00:00,940 --> 00:00:07,120 Hola de nuevo, seguimos con la unidad 4 de la unja de marcas, ¿verdad? 2 00:00:07,620 --> 00:00:18,539 Ya he subido el vídeo anterior del DTD, ahora vamos a hacer el vídeo explicando el XSD, que es el XML SEMA, los esquemas de XML. 3 00:00:19,239 --> 00:00:27,160 Habíamos dicho que tanto el DTD como los XSD son validadores de los XML, ¿vale? 4 00:00:27,160 --> 00:00:46,780 Porque, por ejemplo, en un formulario de Internet tenemos que validar los campos que sean obligatorios, que tengan un formato adecuado al contenido que van a tener, si tiene que ser números, si tiene que ser un patrón, como en el email o en los códigos postales, etc. 5 00:00:46,780 --> 00:00:54,060 Entonces, habíamos dicho también que el DTD es una tecnología que tiene muchas limitaciones 6 00:00:54,060 --> 00:00:59,299 Porque es muy sencilla, pero no se puede acotar el tipo de datos que metemos 7 00:00:59,299 --> 00:01:00,840 Ni se pueden meter patrones 8 00:01:00,840 --> 00:01:05,500 Sin embargo, en el XSD sí que se utiliza 9 00:01:05,500 --> 00:01:08,980 Es más compleja, es más potente, te da más posibilidades 10 00:01:08,980 --> 00:01:10,560 Y es la que se utiliza a día de hoy 11 00:01:10,560 --> 00:01:21,420 entonces si os descargáis el xsd obtendréis algo parecido a esto y si vais a aquí al visual 12 00:01:21,420 --> 00:01:30,060 studio code pues lo tenemos así vale antes de nada recordad que tenéis que instalar el xml 13 00:01:30,060 --> 00:01:35,879 barrijas vale esta extensión de aquí que es la que te permite utilizar el visual estudio 14 00:01:35,879 --> 00:01:46,920 code como validador porque por ejemplo aquí en él en el número de la calle bueno pues le he metido 15 00:01:46,920 --> 00:01:57,060 que sea entre 1 y 120 entonces si le meto 21 pues me da error me dice que no hay porque tengo una 16 00:01:57,060 --> 00:02:05,239 restricción ahora me dice que no es válido y esto me sale precisamente porque tengo la extensión si 17 00:02:05,239 --> 00:02:10,759 no la instaló pues no me lo va a reconocer entonces vamos con ello tenemos el xml lo 18 00:02:10,759 --> 00:02:16,800 primero que tenemos que hacer es referencia el xst en el xml vale y eso lo hacemos con esta línea 19 00:02:19,419 --> 00:02:30,120 xml model href aquí le ponemos el link al xsd y type application xml y luego el estándar que 20 00:02:30,120 --> 00:02:38,090 estamos utilizando que va a ser el mismo que el que vemos aquí como tenemos el la extensión yo 21 00:02:38,090 --> 00:02:44,110 puedo venir aquí y si pongo esto veis tengo una pequeña ayuda verdad entonces y ser xml 22 00:02:44,110 --> 00:02:51,849 es más exigente ya me lo pone automáticamente y aquí lo que habría que ponerle es el xs de agenda 23 00:02:52,990 --> 00:03:01,310 y ya funcionaría vale también con el xsd también tenéis esta misma ayuda para 24 00:03:01,310 --> 00:03:07,689 que os vaya saliendo los los campos así que es está bien utilizarla para cuando os perdáis y 25 00:03:07,689 --> 00:03:13,849 tal entonces aquí ya veis que lo primero que hay que poner es el protocolo que estamos utilizando 26 00:03:13,849 --> 00:03:23,669 con esta nomenclatura bueno esto lo voy a explicar más adelante lo que vamos a ver es primero los las 27 00:03:23,669 --> 00:03:32,770 etiquetas raíz vale tenemos la primera que tenemos esa agenda entonces ponemos xs element name agenda 28 00:03:32,770 --> 00:03:40,550 vale esto es un tipo complejo porque tiene más etiquetas dentro dentro del mismo verdad por eso 29 00:03:40,550 --> 00:03:47,169 ponemos complex type a continuación vamos a definir la secuencia como en el dt de que le 30 00:03:47,169 --> 00:03:54,009 teníamos que decir el orden de los campos verdad vale pues lo primero que nos encontramos es 31 00:03:54,009 --> 00:04:03,789 contacto aquí le decimos que es un xs element name contacto y cuántas contactos puede tener 32 00:04:03,789 --> 00:04:12,370 pues más occurs un bounded esto quiere decir que son ilimitados le puedes poner 1 2 3 400 33 00:04:12,370 --> 00:04:25,290 o en este caso infinitos. Seguimos. Contactos no es un tipo simple, ¿verdad? Tiene también etiquetas dentro. Por lo tanto, es un complex type. 34 00:04:26,730 --> 00:04:37,110 Y vamos a poner la secuencia de contactos. Entonces, en las secuencias de contactos tendremos un elemento que es nombre, que ya sí que es simple, 35 00:04:37,110 --> 00:04:43,050 Entonces le ponemos que es un string. ¿Veis? Aquí ya sí que le ponemos que es un string o un integer o lo que sea. 36 00:04:44,389 --> 00:04:52,410 Luego vamos a tener apellidos, que también es simple, por lo tanto lo declaramos así. 37 00:04:53,629 --> 00:04:55,689 Y teléfono. Vale. 38 00:04:57,149 --> 00:05:00,649 Teléfono ya es un complex type. 39 00:05:00,649 --> 00:05:08,990 Es un complex type porque no solo tiene el valor, sino que tiene un atributo. Entonces hay que declararlo como complex type. 40 00:05:10,649 --> 00:05:15,750 Y aquí se da una particularidad, que es que tenemos un atributo y un valor. 41 00:05:16,589 --> 00:05:27,029 Entonces, como tenemos que, he decidido, para declarar el atributo, primero tenemos que seguir esta estructura. 42 00:05:27,029 --> 00:05:29,990 Simple content y luego extension. 43 00:05:30,649 --> 00:05:37,029 En la extensión es donde vamos a utilizar el teléfono type. 44 00:05:38,350 --> 00:05:43,730 El teléfono type es como un tipo de variable que me he definido aquí arriba. 45 00:05:44,310 --> 00:05:53,110 Entonces hemos dicho que es un tipo simple que lo llamamos teléfono type y tiene una restricción. 46 00:05:53,110 --> 00:06:14,740 Este tipo string, declaro el tipo string en la restricción para declarar un patrón. Entonces, a ver, esto lo que es es un tipo que vamos a aplicar en una variable que la utilizamos aquí. 47 00:06:14,740 --> 00:06:33,879 ¿Vale? Entonces, lo que estamos diciendo es que en este tipo el dato es un string y utilizamos este patrón, este pattern, que es que los valores van a ir de 0 a 9 y se van a repetir 9 veces. 48 00:06:33,879 --> 00:06:43,199 ¿Vale? Entonces, tenemos números que van a ir de 0 a 9 y se van a repetir 9 veces, que son los números de un número de teléfono. 49 00:06:43,199 --> 00:07:03,779 ¿Vale? Entonces, aparte hay que definir el atributo. Así que tenemos teléfono que es un tipo complejo y le ponemos un contenedor que va a tener el valor del teléfono type que hemos definido aquí y que estamos marcando para el valor. 50 00:07:03,779 --> 00:07:20,740 Y luego aparte va a tener un atributo que es el de país, que es de tipo string. Seguimos. Tenemos otro elemento que es la dirección y esto ya no es sencillo, ya es complejo porque tiene dentro otras etiquetas. 51 00:07:20,740 --> 00:07:32,680 Entonces, otro complex type y definimos la secuencia. Tenemos calle, que sí que es simple, y número. En este número he decidido ponerle un patrón, una restricción. 52 00:07:33,639 --> 00:07:46,500 Un patrón no, una restricción. Entonces, lo hacemos lo mismo que aquí. Lo único que este es más complejo porque le he tenido que añadir el atributo. 53 00:07:46,500 --> 00:07:57,620 Entonces para añadir el atributo es SimpleContent y con este TelephoneType es con lo que le formateo el número. 54 00:07:57,620 --> 00:08:20,040 Pero aquí, en número, como no tiene atributo ni tiene nada, es algo simple, es SimpleType, ¿vale? Y luego le meto la restricción. En la restricción le meto el tipo y es básicamente como esto, realmente. 55 00:08:20,040 --> 00:08:30,899 Aquí le ponemos un nombre al simple type porque luego lo tenemos que utilizar 56 00:08:30,899 --> 00:08:36,720 Pero veis, es el simple type, la restricción con el tipo y el patrón 57 00:08:36,720 --> 00:08:41,320 Aquí en el número es simple type, la restricción con el tipo 58 00:08:41,320 --> 00:08:44,080 Que es positive integer 59 00:08:44,080 --> 00:08:47,879 Y luego le podemos poner integer también 60 00:08:47,879 --> 00:08:57,179 porque realmente va a ser siempre positivo pero bueno lo dejamos aquí yo 61 00:08:57,179 --> 00:09:04,730 creo que este archivo tiene algo mal porque no lo está reconociendo bien 62 00:09:04,730 --> 00:09:09,110 porque si yo le meto este así 63 00:09:09,110 --> 00:09:13,710 si le meto aquí un íntegro 64 00:09:13,710 --> 00:09:18,549 si, si que me lo reconoce pero 65 00:09:18,549 --> 00:09:22,250 Ah, es que va a ser en minúscula 66 00:09:22,250 --> 00:09:23,570 Por eso no me lo pilla 67 00:09:23,570 --> 00:09:28,409 Vale 68 00:09:28,409 --> 00:09:30,490 Vale, guay 69 00:09:30,490 --> 00:09:31,450 Pues eso 70 00:09:31,450 --> 00:09:33,730 Llegamos al número 71 00:09:33,730 --> 00:09:36,929 Ahora no me gusta esto 72 00:09:36,929 --> 00:09:37,490 A ver 73 00:09:37,490 --> 00:09:42,159 The following content is not valid 74 00:09:42,159 --> 00:09:44,360 Is not valid 75 00:09:44,360 --> 00:09:45,440 Ah, amigo 76 00:09:45,440 --> 00:09:47,700 Porque se me ha olvidado poner la question 77 00:09:47,700 --> 00:09:49,700 Eh, como estaba 78 00:09:49,700 --> 00:09:54,320 vale, ahora sí, perdona 79 00:09:54,320 --> 00:09:56,340 pues eso 80 00:09:56,340 --> 00:09:59,480 sí, el número 81 00:09:59,480 --> 00:10:02,019 simple type 82 00:10:02,019 --> 00:10:06,179 luego le metemos una restricción porque le vamos a meter 83 00:10:06,179 --> 00:10:09,179 la restricción de que tenga 84 00:10:09,179 --> 00:10:12,220 un mínimo y un máximo, entonces le metemos 85 00:10:12,220 --> 00:10:15,220 la restricción y le decimos que el contenido 86 00:10:15,220 --> 00:10:18,159 va a ser un integer y que el valor mínimo 87 00:10:18,159 --> 00:10:27,750 va a ser inclusive el 1 y el máximo inclusive el 120 vale entonces seguimos con el código postal 88 00:10:27,750 --> 00:10:34,090 y aquí le metemos otra restricción le decimos que es un tipo simple y la restricción en la 89 00:10:34,090 --> 00:10:40,090 restricción le decimos que es un string y que van a ser cinco números o sea que este patrón 90 00:10:41,409 --> 00:10:50,100 que van a ser números del 0 al 9 se va a repetir cinco veces vale cinco veces para el código 91 00:10:50,100 --> 00:11:02,850 posta volvemos el siguiente es dirección no correo correo perfecto esto es un tipo simple por lo 92 00:11:02,850 --> 00:11:12,769 tanto no hay nada que hacer xs element name correo y el tipo es un string vale y si luego 93 00:11:12,769 --> 00:11:19,029 tenemos la vivienda que también es un tipo simple y los comentarios que es un tipo simple y ya 94 00:11:19,029 --> 00:11:27,669 cerramos todos los las llaves y así funcionaría vale o sea que parece mucho engorro porque hay 95 00:11:27,669 --> 00:11:33,730 que escribir mucho código tenerse en cuenta que con el xml by red hat os puede ayudar a 96 00:11:33,730 --> 00:11:41,830 generar código también y pero realmente tampoco es tan complejo vale si es un elemento simple 97 00:11:41,830 --> 00:11:46,590 como el nombre lo que tenemos es esto 98 00:11:46,590 --> 00:11:52,669 si no si es contacto como es complejo hay que ponerle complex type y luego la 99 00:11:52,669 --> 00:11:58,330 secuencia y definir todos los los elementos uno a uno vale este también es 100 00:11:58,330 --> 00:12:03,909 un complex type y luego habrá que definir la secuencia hay que definir si 101 00:12:03,909 --> 00:12:09,529 es un string si es un íntegro el tipo que sea si tiene atributos y luego 102 00:12:09,529 --> 00:12:21,690 puedes meterle patrones para obligar a que, por ejemplo, sean cinco números del 0 al 9 o aquí le podríamos poner que tuviera que tener un arroba, ¿vale? 103 00:12:22,549 --> 00:12:35,730 Entonces es así, más complejo, más potente, pero realmente una vez que lo pillas es sencillo, ¿vale? Así que nada, muchas gracias por atender 104 00:12:35,730 --> 00:12:52,110 Y a por ello, porque la tarea al final va a ser un XML que os hemos puesto y tendréis que sacar el DTD y el XSD. Así que yo creo que con esto que os he explicado tendría que ser suficiente. ¿Vale? Pues venga, ánimo. Adiós.