# 2021 Polilibro Tecnologías para la Web ## 1.Introducción ### Conceptos Básicos de la WWW * Internet * Cliente servidor * Tipos de envíos y códigos de respuesta * Lenguaje de programación * Bases de Datos * Primer servidor web next * Protocolo HTTP * Web ### Evolución histórica de la Internet y la WWW * Internet en los 80 * sistemas operativos * equipos de cómputo * aplicaciones para escribir * Internet y Web 90 * sistemas operativos * equipos de cómputo * aplicaciones para escribir, calcular y bases de datos * Lenguajes de programación * Modems * Navegadores * Internet y Web en 2000 * sistemas operativos * equipos de cómputo * Moviles * Tabletas * Aplicaciones Ofimática * Navegadores * Servicios de red de alta velocidad * Internet y Web en los 2010 * sistemas operativos * equipos de cómputo * Moviles * Tabletas * Aplicaciones Ofimática y sistemas cloud * Navegadores * Servicios de red de alta velocidad (4G) 1994 Yahoo directorio de recursos web de páginas web 1994 PHP 1993 Nace W3C 1995 Se integra Microsoft con Internet Explorer 1995 JavaScript En netscape 1995 MySQL 1995 Java del cliente (Applets de Java) 1996 Flash Player, con las animaciones y reproducir videos 1996 Estilo con CSS 1 1998 Larry Page intenta vender un buscador a Yahoo, pero no lo aceptan y se funda Google 1998 HTML 4, primer versión de estándar 1999 Html Versión 4.01 2001 Aparece la Wikipedia como base de conocimiento compartido en el Mundo 2001 Aparece Json 2004 Facebook 2004 WHATWG 2004 Se publica en concepto de 2.0 2005 You-tube 2005 Servicios como maps y posicionamiento 2006 Jquery aparece para facilitar el diseño de recursos basados en CSS y Javascript como librería, facilitando la operación entre navegadores sobre la diferencia de ejecución de cada navegador sobre las funcionalidades Javascript 2006 Twitter 2006 AWS aparece para comercializar serviciso en la nube. 2007 Marca la diferencia de tener una muestra de los datos de manera ajustada en dispositivos con el viewport 2007 Git-Hub 2008 Se lanza HTML por W3C se hacen publicaciones diferenciadas de lo que se manda en WYWG y se agregan nativos videos y sonido como objetos incrustados 2008 Aparece google chrome, para hacer una aplicación separada en sentido de llegar al sistema operativo, que es el objetivo base 2009 Aparece node JS, javascript para servidor, se basa en el fontend y backend. 2009 Aparece Mongo DB 2010 AngularJS El modelo de Vista controlador se soporta de manera directa y tiene forma particular de usar los recursos ahora como consumo de recursos. 2010 MEAN El formato para hacer recursos Web 2010 Responsive Web Design, un diseño para todo ajustable y no diseños específicos para cada tamaño de monitor 2011 Chrome OS, Sistema operativo completo basado en el motor de Google. 2011 Es anunciado el CSS3, es UN CSS2 Fragmentado y orientado a funciones específicas 2013 REACT-JS Se hacen componentes de Web, o Web-components 2014 Aniversario de la web [25 aniversario](https://www.w3.org/webat25/news/tbl-web25-welcome-es) 2015 PWA Progresive Web Apps, Aplicaciones nativas a partir de las herramientas web y service Workers 2015 EMAC SCRIPT 6, la versión de JavaScript más actualizada que resuelve muchos problemas de los anteriores versiones y manipula DOm y objetos nativos 2016 TIC-TOC 2016 20 años de CSS [20 Aniversario CSS](https://www.w3.org/Style/CSS20/) 2016 TTipeScript 2016 Websites for you and your projects. 2017 Webassembly Inserta módulos de funcionalidad Web desarrolladoes en lenguajes como C#, C++ o Kotlin.[Webassembly](https://webassembly.org/getting-started/developers-guide/) 2018 Diseño de web basado en componentes para escritorio y nativos[Flutter](https://flutter.dev/) 2018 Facebook usa agente para manipular sus comportamientos, MArck se sienta en el estrado y reconoce error 2019 Se cierran las diferencias ente los grupos de W3C y wdgc 2020 La web como respuesta a el aislamiento para trabajo remoto. ### Historia y diferencia entre navegadores Navegador en modo texto Mosaic en 1993 NCSA, el primer navegador con interfaz gráfica 1994 Netscape. Navegador 1995 Internet Explorer 1999 Desaparecen a Netscape y en el juicio antimonopolios en Estados Unidos pierde en instancias legales 1999 AJAX aparece como estratégia de uso de recursos asíncronos en Internet Explorer 2002 Nace Firefox tomando como base el motor de netscape que se entrega como un proyecto abierto. 2003 Safari aparece como navegador de Apple para sus sistemas operativos de MAC OS Internet Explorer no soporta XHTML de manera completa hasta el 2011, en la versión 9 ### Web 2.0- versiones de Web Estándares para la Web Se creo el WWW consortium, en Noviembre de 1993, se regulan los avances y evolución 1995 HTML2.0 Internet Engineering Task Force 1997 HTML 3.2 1997 HTML 4.0 Diciembre 1999 HTML 4.01 2000 XHTML 1.0 (Forma extensible ) 2001 XHTML 1.1 Strict 2002 XHTML 2.0 Proyecto que no se puede completar 2004 Ian Hickson Forma parte del Web Hypertext Application Technology Working Group 2008 Apple, mozilla y Opera deciden armar un grupo de desarrollo alternativo de estándar para la Web. WHATWG 2008 HTML 5, propuesta como alternativa a la funcionalidad de trabajo de los desarrolladores de navegadores Web. 2011 Working Draft 5 2012 Recomendación 5.2 2014 Especificación HTML 5. 2000, enero XHTML 1.0, hacer un lenguaje de reglas compatibles con anteriores pero con mayor control de etiquetas y rechazo de recursos mal formados. Para la rpesentación en 1998 se proponen la CHSS (Cascading HTML Style Sheets) y la SSP (Stream-based Style Sheet Proposal) La propuesta CHSS fue realizada por Håkon Wium Lie y SSP fue propuesto por Bert Bos. Entre finales de 1994 y 1995 Lie y Bos se unieron para definir un nuevo lenguaje que tomaba lo mejor de cada propuesta y lo llamaron CSS (Cascading Style Sheets). En 1995, el W3C decidió apostar por el desarrollo y estandarización de CSS y lo añadió a su grupo de trabajo de HTML. A finales de 1996, el W3C publicó la primera recomendación oficial, conocida como "CSS nivel 1". Introducción a CSS Capítulo 1[RFC2318](https://datatracker.ietf.org/doc/html/rfc2318) Hoja de estilo en cascada A principios de 1997, el W3C decide separar los trabajos del grupo de HTML en tres secciones: el grupo de trabajo de HTML, el grupo de trabajo de DOM y el grupo de trabajo de CSS. El 12 de Mayo de 1998, el grupo de trabajo de CSS publica su segunda recomendación oficial, conocida como "CSS nivel 2". Adaptables a visualización a impresoras, pantallas y dispositivos pequeños La versión de CSS 2.1, tiene varias revisiones y rechazos hasta que se acepta en 2011, a la par se estaba desarrollando una propuesta denominada CSS3, la cúal aparece como borrador desde 2009 y se mantiene hasta que se hace candidata en 2011, lo interesante de la versión, es que nos e publica, pero toma el nucleo de 2.1 y divide las funcionalidades para conocer ahora un CSS compuesto de varios elementos, es decir, la base 2.1 tiene piezas específicas de funcionalidad y se estarán sumando a lo que se denomina CSS3 pero que es un conjunto de funcionalidades de estilo y comportamiento Al mismo tiempo, la siguiente recomendación de CSS, conocida como "CSS nivel 3", continúa en desarrollo desde 1998 y hasta el momento sólo se han publicado borradores.La adopción de CSS por parte de los navegadores ha requerido un largo periodo de tiempo. El mismo año que se publicó CSS 1, Microsoft lanzaba su navegador Internet Explorer 3.0, que disponía de un soporte bastante reducido de CSS. ### Entornos de Desarrollo para Aplicaciones Web 2.Creación de páginas Web con XHTML --- Historia de XHTML Para hablar de XHTML debemos retomar los aspectos revisados en el capítulo anterior, el en el apartado de la Introducción denominadao "Evolución histórica de la Internet y la WWW", mencionamos que existen algunos aspectos que definieron las necesidades de tecnología que tenía el mundo a inicios del 2000, con estos antecedentes de tecnología, competidores de empresas que impulsaban sus negocios enfocados en la Web y con las instituciones de estandarización, se pretende mostrar de una manera breve las intervenciones y el impacto que tuvieron tanto en la normalización como en la comercialización de los productos para la Web. Iniciemos por describir el entorno tecnológico, XHTML es una especificación publicada por la W3C que nace como parte de una visión de los que se encuentran a cargo del organismo de estandarización y surge como una actualización de HTML 4.0, debemos recordar que el World Wide Web Consortium es un organismo que concilia las diferencias existentes entre los diferentes competidores de tecnologías en Internet, es decir, los que hacen negocio con los motores de procesamiento de las etiquetas de HTML; Es cierto que las versiones previas de HTML 4.0 no habían podido consolidar un conjunto bien establecido de etiquetas que fueran tratadas de manera homogénea ente los diferentes navegadores, pero la aparición de la W3C en el año 1997 era en los 90's la instancia adecuada para ir cerrando las diferentes funcionalidades y generar una "futura aceptación" de los elementos que se utilizaban en la creciente Web para darle al mundo un producto que pudiera ser usado de manera transparente y con la misma funcionalidad sin importar el navegador utilizado pr el usuario final. Las empresas de navegadores más importantes no querían abandonar los desarrollos de funcionalidades que consideraban necesarios para la Web y no queríasn ceder el control de las mismas a sus competidores, era tan grande la diferencia, que se enfrentaron algunas empresas en tribunales de Estados Unidos (el ejemplo más importante es que Netscape le gana a Microsoft por monopolio un juicio,desafortunadamente gasta todo su dinero en abogados), lo que hacía cada vez más complicado el uso generalizado de la Web para los usuarios finales; Existían recursos que sólo podían ser visibles o se desplegaban de manera "adecuada" con un navegador específico, era notorio al encontrar la leyenda en recursos de esa época "Sitio optimizado para Internet Explorer". En 1998 la recomendación de W3C propone a los fabricantes (a cualquiera, de hecho, es considerado un estándar abierto) un conjunto de etiquetas en una especificación denominaba HTML 4.0 y para el año siguiente propone una variación de la recomendación, denominada HTML 4.01 la cual se encuentra definida en tres vertientes: pasado, presente y futuro. La especificación transitional incluye el nuevo conjunto de etiquetas y da soporte a muchas de las propia de cada navegador que serían des-utilizadas para los nuevos desarrollos Web, es decir, permite que los recursos Web existentes pudieran ser mostrados por los motores de los navegadores propoorcionando soporte a versiones anteriores. La especificación strict, era la línea de base mostrada para trabajar y hacer los nuevos desarrollos, era un referente de la funcionalidad que se debería tener y no aceptaría etiquetas de fabricantes que no se hubieran declarado, era el presente de los desarrollos Web. Por último, proponen una funcionalidad que tenía como objetivo principal el reducir la cantidad de datos transferidos y mejorar la transmisión de los recursos Web (fraccionando el envío en pequeñas partes de la página), se le denomina frameset, ya que su principal aporte es el manejo de frame pequeños y aislados que permiten cargar dentro de ellos contenido de varios sitios o páginas Web, el futuro no fue lo que ellos pensaron. Todo parecia marchar en un buen sentido, W3C marca una base firme para el desarrollo que deja convencidos de manera parcial a los desarrolladores de los motores Web, siguen la base, pero mantienen funcionalidad extra que no se considera en el Strict y tampoco implementan de manera adecuada las hojas de estilo. Por su parte, el grupo de W3C, al tener el control de los futuros diseños o propuesta de funcionalidades, determinan que se han realizado practicas que comprometen la funcionalidad de los sitios por una inadecuada implementación de los desarrolladores de contenido para la Web, es decir, consideran que HTML es muy permisivo y eso genera un problema en la implementaciónd e las recomendaciones, de modo que deciden darle una propuesta de mayor rigidez en la construcción de los recursos para la Web. XHTMl significa eXtensible HyperText Markup Language, es una propuesta de las etiquetas tomadas de la especificación de HTML con el sentido de manejar como aplicación la Web, es decir, buscan separar de manera notoria el contenido del diseño y estilo, estableciendo la estructura del recurso en el HTML pero con el procesamiento de etiquetas como si se tratara de un elemento XML. Se establecen las condiciones en una especificación que llega en el 2000 (Siguiendo las variantes Transitional, Strict y Frameset). Así pues, el XHTML es prácticamente igual que el HTML, y tal como su nombre indica, es simplemente una versión eXtendida del mismo, considerando algunas modificaciones de sintaxis y eliminando definitivamente los elementos de estilo, los cuales serán requeridos por recursos en la Hoja de Estilo en cascada, la cual pasa a ser una herramienta indispensable del nuevo estándar para la prsentación en dispositivos que ya no eran unicamente monitores de computadoras. Al publicar XHTML 1.0  W3C dictamina que no hay más futuro para HTML, la línea será XHTML y el grupo de revisiones de HTML desaparece para dar paso a una nueva visíon buscando estándares de una Web Semántica; la propuesta de XHTML como línea de trabajo no fué bien recibida por los desarrolladores de los motores de navegador, de hecho, generó tal descontento en ellos que fijaron un rumbo diferente al de W3C y deciden fromar el grupo  Web Hypertext Application Technology Working Group (WHATWG), el cual se encuentra enfocado en desarrollar estándares abiertos para las tecnologías Web, retomando el nombre del proyecto en secuencia a mantener HTML, definen HTML 5 y mantienen hasta el día de hoy una versión que denominaron "VIVA" para evitar sub-versiones de las recomendaciones agregadas a través del tiempo. El conflicto de W3C y WHATWG puede entenderse como la especificación y la práctica, las diferencias de visión entre los que desarrollaban los nuevos elementos de la Web y lo que los fabricantes querían implementar, quiza el poder económico es un factor importante a considerar en la toma de decisiones, pero en este desencuentro, W3C no logra hacer que la especificación XHTML 2 tenga un buen desarrollo y para el 2008 reconoce que es un error trabajar en el sentido de abandonar HTML. El W3C retoma las bases del proyecto desarrollado hasta ese momento por el grupo WHATWG (no pareció agradarles mucho) y reconoce que seguira publicando recomendaciones para HTML, por lo que lanza su especificacion HTML5 en ese año, las diferencias se hacen de manera evidente sobre tener el funcionamiento dos versiones de un mismo producto, es hasta el 2018 que se han conciliado los criterios y se propuso que las referencias (también los validadores) aparezcan publicadas directamente en la página del proyecto WHATWG. Podemos cerrar nuestro recorrido por XHTML diciendo que en el futuro (también desde hace varios años), no se producirán especificaciónes de XHTML, se realizan los recursos Web con las recomendaciones de HTML 5, si bien es cierto que no se coloca la etiqueta del DTD que hace la identificación y validación de la página, las prácticas y condiciones determinadas en XHTML proporcionan una guía de buenas prácticas de referencia de codificación de los recursos Web. --- Diferencia entre HTML y XHTML Las diferentes versiones de los recursos HTML podrían hacer que el comportamiento y la validación de los recursos sea diferente, pero existen elementos que son base de operación, si bien han cambiado algunas etiquetas y funcionalidades, la estrcutura que surge en HTML 4.0 se conserva hasta el HTML 5. A continuación se desccriben algunas de las condiciones que hacen una separación funcional o estructural, en nuestro caso, vamos a considerar que la especificacion de XHTML es la establecida en la XHTML 1.0 (2000) entregada por el W3C y la notoriedad se hace con respecto al HTML 5 (2008-actualidad), no se considera hacer un recuento de diferencias con versiones anteriores de HTML 4,debido a que los sitios han permitido desde hace más de una década y recordando que la versión de XHTML maneja el mismo conjunto de etiquetas. Estructura del documento XHTML Elementos básicos de XHTML Tablas, Marcos y Formularios --- ## 3.Lenguaje de Marcaje extensible (XML) ### Elementos de XML El lenguaje de marcaje extensible (eXtensible Markup Language, el acrónimo es XML), se entiende como una composición de tecnologías desarrolladas con el objetivo de las necesidades de transferencia de datos en la Web en la década de los 90s. Es considerado un lenguaje que implementa un conjunto de reglas que definen una sintaxis y una gramática, como hemos mencionado en la unidad anterior, el concepto de marcado se refiere a la capacidad de un texto para hacer trabajo “especial” o servir como marcas (etiquetas), lo cual hace que el texto realice funciones de indicar cómo tratar a los elementos que encierran, se pueden entender que las etiquetas hacen la función de metadatos en un documento. El funcionamiento de XML de manera simple puede considerarse como el conjunto de etiquetas que nos permiten definir otras etiquetas de datos personalizadas, al conformarse de manera estructurada, las etiquetas se podrán agrupar dando origen a un nuevo “lenguaje” (preferimos llamar conjunto para evitar confusiones con un Lenguaje de programación) de marcas creadas para un fin específico, los datos serán siempre independientes de las etiquetas que los envuelvan, esa ventaja, es lo que nos permite emplear documentos XML para el intercambio de información de manera independiente de la aplicación que lo solicite. ### Antecedentes de la creación de XML Los orígenes de los sistemas de los lenguajes de marcado se encuentran en la empresa IBM en 1969, (nombres de los autores) los cuales crearon el primer lenguaje de marcado, lo denominaron el Lenguaje de Marcado generalizado (Generalized Markup Languaje, GML). Con la maduración y contribuciones al proyecto, se convirtió en un Meta-Lenguaje, es decir, se agregaron funcionalidades que lo convirtieron en la base de lenguajes de marcado, llegando a ser el Lenguaje de marcado estándar generalizado (Standard Generalized Markup Languaje, SGML) y convirtiéndose en un estándar internacional en 1990. Al llegar el HTML a impulsar la Web, se presenta la necesidad de generar un mecanismo que permita dotar de datos a los recursos que se publican en la WEB, el enfoque es tener la presentación y el contenido en niveles separados, pero no hay sistema de manejo de datos y se propone un nuevo lenguaje de marcado, es en este momento XML aparece en la historia. Características de XML XML fue desarrollado como un estándar por la W3C para almacenar datos de forma legible, da soporte a sistemas de información desde un espacio accesible para múltiples tecnologías, se tiene la primer versión de la especificación en 1998, se denominada XML 1.0, es un subconjunto de SGML y tiene características interesantes como son: * Deriva de SGML: Es un subconjunto simplificado de SGML, hereda la capacidad de construir otros lenguajes (Pueden ser denominados dialectos o vocabularios), pero se tiene una menor complejidad el desarrollo de herramientas en XML * Es para la Web y para el mundo: La funcionalidad de XML era poderse escribir con diferentes alfabetos y sistemas de escritura ya que es usado en el mundo entero, por lo tanto, su diseño se enfocaba en que tenía que soportar la carga de diferentes sistemas de codificación de caracteres estandarizados. * Es extensible: Se basa en el uso de texto plano (ASCII) y es usado por sistemas simples de comunicación de datos, la posibilidad de definir nuevas etiquetas en los documentos abre de manera importante la creación de aplicaciones que pueden acceder a datos directamente. * Texto plano: Se almacena en archivos de texto que son legibles y entendibles por humanos y por las máquinas. * Separación de presentación y datos: La información dentro de los documentos puede ser presentada en diferentes formas y el trasladar los datos en la red es muy simple, derivado de que no se tiene que transportar los elementos de presentación de la información. ### Ejemplos destacados de tecnologías basadas en XML La aplicación de herramientas basadas en XML se adoptó de manera significativa por el impulso de la Web, por lo que se crearon algunos dialectos basados en él, cada uno orientado a una tarea particular, con datos y conjuntos de etiquetas específicas para un propósito técnico, podemos mencionar como uno de los más importantes a XHTML (HTML con XML), el cual permite la elaboración de recursos Web con la restricción de tener una revisión de la estructura completa y estructura que debe ser libre de errores de sintaxis en las etiquetas que componen al documento completo, otro ejemplo interesante es SVG (Gráficos Vectoriales Escalables) usado para describir elementos que son presentados como gráficos en los recursos con la capacidad de no degradar la calidad del recurso por las necesidades de escalamiento (ajuste de tamaño), por último, podemos mencionar a RSS (Sindicación Realmente Simple) que es altamente utilizado para la distribución de noticias, artículos o blogs. ### Otros usos de XML Si bien es cierto que XML nació como la necesidad de transportar los datos en Internet, encontró espacio en tecnologías que encontraron una solución a problemas de intercambio de información de manera independiente a la aplicación. Existen archivos de configuración basados en XML, en proyectos de desarrollo como Visual Studio, máquinas virtuales de Linux (Kernel Virtual Machine, KVM) entre muchos otros, gracias a la facilidad de implementar analizadores de tuplas elemento-valor con una estructura jerárquica descriptiva. Otro elemento interesante de aplicación de XML es en los Web Services, los principales mecanismos de intercambio de información (SOAP y RESTful) lo implementan debido a su forma simple de serializar la información a través de plataformas cruzadas, lo que significa una alta aceptación ya que se pueden transmitir documentos que configuran los nombres de equipos, puertos, tipos de respuestas, entre muchos otros elementos necesarios para su operación. Son muchos los desafíos que pudo resolver la tecnología XML durante los últimos 20 años, se ha destacado por adoptarse en tecnologías diversas como el almacenamiento de documentos de las herramientas ofimáticas, sistema de comprobantes fiscales digitales en Internet (CFDi) en nuestro país, sin embargo, no todo es positivo en las implementaciones, podríamos mencionar que el exceso de descripción o redundancia de la especificidad de los elementos con etiquetas genera un archivos que tienen mayor proporción de información en etiquetas que sirven en la descripción datos, lo que es una desventaja al enviar documentos XML con pocos datos. ### Lenguaje de Marcaje extensible La denominación de extensible de XML se refiere directamente a la capacidad de permitir al lenguaje crear otros sistemas de etiquetas de marcado, las etiquetas pueden ser definidas por el usuario, por lo que se pueden crear nuevas especificaciones válidas, siempre se que respeten las reglas de sintaxis y anidamiento, las cuales son conocidos como vocablos. Las etiquetas pueden tener un anidamiento que es procesado como un árbol en el cual la etiqueta expresa en el contenido un valor o directamente contiene otras etiquetas que representan el valor. Se considera auto descriptivo el lenguaje porque de manera que se nombren las etiquetas se puede entender el elemento y también el valor que contienen. ### Restricciones para archivos XML Los elementos de un documento XML deben cumplir con un conjunto de reglas de manera estricta, una omisión o declaración incorrecta evitará que pueda ser procesada la información completa, a continuación se describen algunas reglas que podemos considerar a la hora de elaborar recursos: * Las etiquetas se definen encerrando el texto entre <> * Se debe utilizar notación camello para las etiquetas, los espacios o caracteres especiales no pueden ser usados como etiquetas. * Se pueden definir atributos para cada etiqueta, el delimitador es el espacio en blanco y no existe límite de la cantidad de atributos que puede contener cada etiqueta. * Los valores de atributo deben estar encerrados entre comillas simples o dobles y no puede ser un valor vacío * Tiene una estructura jerárquica, por lo que las etiquetas contenidas dentro de otras serán consideradas su descendientes * El documento contiene uno o más elementos. * Cada etiqueta de apertura tiene una etiqueta de cierre * Las etiquetas que se abren primero se cierran al último para permitir un correcto anidamiento * Se respeta el uso del nombre de las etiquetas (sensibles a mayúsculas y minúsculas) * Existe un elemento raíz único del que derivan todos los demás elementos ### Definición del Tipo de Documento (DTD) Una DTD es la descripción del tipo de documento que se va a utilizar, en otras palabras, es una definición de la estructura que puede tener un documento XML, se puede incluir como archivos externos, en línea desde un repositorio y también se puede encontrar de manera explícita en la parte superior del mismo recurso, se determinan mediante la DTD las estructuras que validen el número de atributos, las veces que deben aparecer, si es que son obligatorios y en algunos casos, las características de los atributos contenidos. Los procesadores de documentos (propios de cada aplicación) pueden revisar un documento XML a partir de la Definición del tipo de datos, procesando la información contenida y validarlo, para determinar que se encuentra bien formado o en su caso que corresponde a un recurso válido. Teniendo como consideración que XML es una estructura altamente flexible, no es posible que los documentos XML sean “utilizados” por todas las aplicaciones existentes; Para entender un poco mejor la declaración anterior vamos a poner un ejemplo: Una aplicación A se dedica a trazar gráficos, presentar los mismos en pantalla y basa su sistema de almacenamiento en recursos XML, el recurso no podrá ser “utilizado” de manera adecuada en una aplicación B que se dedica al procesamiento de texto y que basa su almacenamiento en recursos XML, la diferencia radica en la especificación especializada que hace cada aplicación al tratamiento de la información contenida en los recursos XML, de misma naturaleza, pero diferente especificación, cada motor reconoce la estructura que debe basarse para el manejo de la información en cada documento procesado, de aquí la importancia de definición de documentos usando DTD; también se puede implementar una estrategia llamada SML Schemas, ambas estrategias (DTD y XML Schemas) cumplen con la función de definir las reglas acerca de cuales elementos y atributos pueden aparecer en los documentos XML para el adecuado funcionamiento de las aplicaciones. Los DTD utilizan una sintaxis formal, en la cual se explica con precisión qué elementos y entidades pueden aparecer y en qué lugar del documento, también es posible definir contenidos y atributos. Las aplicaciones que toman los recursos XML procesar cada elemento y lo comparan con su DTD, se puede encontrar con diferencias sobre el recurso analizado y el programa podrá decidir las acciones a tomar en caso de encontrar violaciones a las reglas establecidas, por lo tanto, depende de las capacidades de cada aplicación el rechazo o los mecanismos de “corrección de los errores” determinados por el procesador como resultado de analizar un documento XML. ### Validación de los documentos XML Un documento válido incluye una declaración de tipo de documento, la DTD enumera todos los elementos, atributos y entidades que usa el documento y los contextos en los que los usa, se utiliza el concepto de validez con el principio de que lo que no está permitido está prohibido, por lo que un documento al coincidir con una declaración en el DTD en su totalidad, se determina como un elemento válido, en caso contrario, se dice que no es válido. No existen restricciones sobre los valores de longitud, la estructura, el significado, los valores permitidos u otros aspectos del contenido del texto de un elemento, por lo que la validez tiene peso en el uso que se le da a los recursos XML, de manera simple, un recurso que se utiliza como sistema de almacenamiento de datos puede considerarse como un “error grave” en caso de no cumplir con que alguno de los campos obligatorios requeridos en el DTD y no aparezca en el documento, se requiere que se encuentre bien formado y que adicionalmente sea un recurso válido, no lo es así para otras aplicaciones como XHTML, donde la ausencia o el no cumplimiento de un campo (un documento no válido) puede hacer que la visualización sea deficiente o se trate de corregir por parte del motor de navegador la etiqueta faltante, pero se considera un error de menor impacto. ### La definición de tipo de documento (DTD) Cuando tenemos un documento XML que cumple con una DTD específica, se dice que tenemos una instancia de documento de esa DTD; las declaraciones que conforman la DTD pueden ser para declarar elementos, atributos, entidad y notación, a continuación se especifican cada una de las declaraciones para tratar de clarificar su composición y nomenclatura. **!Element**. Declaraciones de tipo Elemento: Una declaración de tipo Element proporciona información sobre un elemento, debe iniciar con el texto !Element y muestra el nombre y el contenido del elemento, su contenido puede ser de tipo dato o algún otro elemento mencionado en el DTD `<!ELEMENT nombreElemento (contenidoElemento)>` Un ejemplo de implementación puede se si hablamos de libros en un documento XML, el uso pudiera verse de la siguiente forma: ``` <!ELEMENT LIBRO (autor, nombre, genero, edicion)> ``` El orden de los elementos dentro de la especificación separada por comas determina el orden en que deben aparecer dentro de una instancia de documento XML. **(#PCDATA)**. Analizador de datos de caracteres (Parser Character Data), indica que el contenido de los elementos es texto, por lo que el analizador puede resolver las referencias a caracteres y entidades, para nuestro caso de ejemplo tenemos la siguiente nomenclatura: ``` <!ELEMENT autor (#PCDATA)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT genero (#PCDATA)> <!ELEMENT edicion (#PCDATA)> ``` Es posible utilizar diferentes modificadores para proporcionar más información sobre los elementos hijo, algunos de los modificadores se mencionan a continuación. Modificador Descripción | ,| Indica la secuencia o el orden en que deben aparecer los elementos descendientes| | ----| ---- | | + | Significa que el elemento puede aparecer más de una vez (debe aparece al menos una vez) | |""|Significa que el elemento puede aparecer más de una vez (debe aparece al menos una vez) | | | | Permite la elección entre un grupo de elementos (Es una selección con una proposición o, que indica que alguno de los elementos puede ser seleccionado) ( ) Se utilizan para definir un grupo de elementos * Se utiliza para marcar que el elemento es opcional y que puede encontrarse cualquier número de veces (Al ser opcional, es posible que se encuentre cero coincidencias con el elemento) ? Se utiliza para especificar que el elemento es opcional, pero en caso de que se encuentre en el documento puede aparecer unicamente una vez. Cuando no se pone algún símbolo (vacío), se indica que el elemento debe aparecer una sola vez. En el ejemplo que estamos uticlizando, podemos decir que una colección de libros son parte de una biblioteca, por lo que el elemento libro puede aparecer una o más veces, utilizaremos el símbolo “+”, para indicarlo en nuestra sintaxis de la siguiente forma: <!ELEMENT biblioteca (libro+)> !ATTLIST. Declaración de atributos Las etiquetas de elementos pueden contener atributos, por lo que es posible hacer una definiciónd e los mismos en la DTD, se considera un poco más complicado que la definición propia de elementos, pero es una base que ayuda a la especificación de los recursos XML, a continuación se resumen algunos atributos que pueden ser especificados. Attributo Tipo de atributo ID Identificador único IDREF Es el ID de otro elemento IDREFS Se refiere a la lista de ID de otros elementos NMTOKEN Es un nombre valido en XML NMTOKENS Es una lista de nombres válidos en XML ENTITY Es el nombre de una entidad ENTITIES Es una lista de nombres de entidades LIST Es una lista con valores específicos #REQUIRED Es una palabra reservada que acompaña a los atributos, indica que se debe de cumplir el atributo #IMPLIED Es una palabra reservada que acompaña a los atributos, indica que es opcional el atributo #FIXED Es una palabra reservada que acompaña a los atributos, implica que se puede usar un único valor en el atributo, en caso de no colocarse, el analizador interpreta que el atributo debe entenderse tipo #FIXED Un ejemplo de aplicación de atributos en la definición de nuestro documento puede ser la siguiente: <!ATTLIST LIBRO id CDATA #REQUIRED)> El el cual podemos identificar que el elemento LIBRO requiere de manera obligatoria de un atributo id y el cual tiene un tipo de dato CDATA. En caso de requerir que se definan una lista de atributos para un elemento y especificar alguno que se debe asignar en caso de que no se proporcione información, tendríamos un ejemplo como el siguiente. <!ATTLIST portada color (rojo|negro|azul) "verde"> Vemos que se proporciona al elemento portada un grupo de opciones para el atributo color (se usan paréntesis para definición de grupo y el símbolo pipe | para proporcionar la lista de opciones), en caso de no encontrar el analizador en el documento XML una asignación del atributo color, se considera que el elemento tiene un atributo color que se ha definido con un valor igual a verde. !ENTITY. Declaración de Entidades. Se pueden definir entidades de diversos tipos, se pueden definir diferentes tipos de datos que permitan asignar a una referencia determinada por el usuario. Por ejemplo, cuando tenemos una marca de un producto y queremos colocarla dentro de una especificación, podemos hacer uso de las entidades, un ejemplo para comprender lo anterior sería ``` <!ENTITY marca "ACME 2021"> ``` Al definir la entidad, se podrá hacer uso de la misma dentro del documento XML con referenciarla, debemos usar el símbolo & antes de la entidad definida y para nuestro caso quedará como ejemplo &marca cuando lo necesitemos. Las entidades también se pueden definir en recursos externos al documento XML que estamos procesando, es necesario usar una referencia para poder incluirlos, la disposición de recursos enlazadas permite que sean implementadas las definiciones de entidades en diferentes documentos XML sin tener que repetir la definición en cada uno de ellos, para hacer uso de un recurso de definición externo se debe utilizar la palabra reservada SYSTEM y especificar la ruta y el nombre del archivo donde se encuentra el recurso de definición de entidades, por ejemplo, vamos a considerar una muestra de entidades que se definen nuestro ejemplo de libro. El archivo entidadesLibro.xml puede tener el siguiente contenido ``` <libro> <contenido> &indice; &capitulo1; &capitulo2; &capitulo3; &capitulo2; </contenido> </libro> ``` Y la definición de entidad quedaría de la siguiente manera ``` <!ENTITY contenidos SYSTEM "entidadesLibro.xml"> ``` Es posible asociar los documentos con las entidades o describirlas de manera directa en el documento XML que será procesado, de manera conveniente, recomendamos la separación de entidades en otro archivo XML, con la facilidad que conlleva el reutilizar en varios recursos las mismas definiciones, como nota adicional, en caso de implementar las entidades en un archivo externo, es necesario que el atributo standalone del DTD quede establecido en un valor igual a no. ### Esquema de documentos XML(XMLSchema) La especificación de XML incluye una sintaxis de esquema del lenguaje, es decir, se tiene un camino diferente a DTD para definir lo que el documento XML contiene para considerarse válido, en el que se pueden definir elementos, atributos y su relación, conceptos que pueden ser muy útiles para las aplicaciones basadas en datos con documentos XML. El W3C desarrolló un esquema en 2001, fue denominado XML Schema, es una definición del tipo de documento que se usa en XML al igual que DTD, por lo que también se le conoce como XML Schema Definition (XSD), pero tiene algunas ventajas respecto a su antecesor. Completamente escrito en XML, permite especificar el tipo de dato mas allá de cadenas de texto (string) como sucede en DTD, es posible definir tipos de datos enteros, tipos de datos para almacenar fechas o algún tipo de dato compuesto que sea necesario para alguna aplicación, se considera el sucesor de DTD mientras se permita la aceptación y el uso extendido del mismo. Definición de XML Schema Se puede especificar la estructura de un documento válido si definimos el conjunto de elementos y su relación con cada uno de ellos y los atributos que deben contener. Para iniciar vamos a definir dos tipos de elementos que se pueden identificar fácilmente, el primero es un elemento simple, el cual es un elemento XML que contiene texto, por otra parte, un elemento compuesto es un elemento que contiene elementos hijos y/o atributos. Para definir elementos simples es suficiente con definir que el tipo de datos es texto, en este caso podemos definir que el texto contenido puede ser también número, fecha o cualquier otra cosa, por lo que tenemos opciones de decidir el tipo de dato a utilizar, esta flexibilidad permite adecuar a tipos de datos específicos como cadena (string), entero (integer) o crear un tipo específico cumpliendo las reglas de la sintaxis te validación de XML Schema. Los elementos compuestos pueden ser clasificados de acuerdo con las siguientes características: 1. Contienen elementos hijos 2. Contienen elementos contienen hijos y texto 3. Contienen unicamente texto 4. Se encuentran vacíos xs:Schema. Inicio de la definición Por ser un recurso basado en XML, debe seguir la estructura de composición de los elementos con estructura de apertura y cierre de las etiquetas con símbolos de “<>”. Se debe colocar la definición de la versión de la siguiente forma : ?xml versión=”1.0”? El inicio del XML Schema se inicia con una etiqueta xs:schema, el cual identifica el elemento raíz de la definición, se considera que a continuación de esta etiqueta vendrá todo el “espacio” de declaración de la estructura definida para el documento XML (nota: Se utiliza el prefijo xs: para delimitar los elementos que componen el namespace o lo que será el espacio de definición del XML Schema), se debe recordar que por ser un espacio de definición, el mismo se debe cerrar con la etiqueta de apertura al finalizar nuestra labor (</xs:schema>) El elemento XML Schema debe tener definido el atributo sobre el cual toma su definición el XML Schema, podemos referenciarlo directamente al W3C con el atributo de la siguiente forma: xmlns:xs="http://www.3.org/2001/XMLSchema” xsi:noNamespaceSchemaLocation. Asociar la declaración del XML Schema a un documento XML Es posible que no se defina en el documento a procesar el XML Schema y se haga uso de un recurso XML externo para tomar la referencia de análisis y validación, como lo describimos anteriormente, es una técnica que permite aplicar los mecanismos de definición en varios documentos XML que deben ser procesados sin la necesidad de reescribir en cada uno de ellos las definiciones. La definición de enlace al recurso XML Schema se debe realizar en el elemento raíz del XML a procesar, el atributo xmlns debe contener el valor a donde hace referencia su base de definición y se debe especificar también la uri donde se localiza el recurso de definición XML. Un ejemplo de la sintaxis a utilizar puede ser la siguiente: <muestra xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="definicion.xsd"> Nos damos cuenta que la etiqueta de apertura muestra es la raíz del documento XML a procesar, es decir, definimos el XML Schema dentro de la estructura del documento a procesar y el último elemento del documento debe ser la etiqueta de cierre </muestra>. xs:annotation. Documentar el XML Schema. Existen definiciones complejas que deben ser explicadas o documentadas de manera que los desarrolladores puedan ajustar los tipos de datos a las necesidades descritas en el documento de referencia, por lo que existe un espacio para poder comentar aspectos dentro del recurso XML Schemas, utilizaremos la etiqueta xs:annotation como delimitadores de los elementos que serviran como comentarios, es importante saber que todo lo que se encuentra en este bloque será ignorado por el motor de procesamiento del documento XML. <xs:annotation> <xs:documentacion> El texto que ponemosen este bloque no va a ser procesado, es un espacio de comentarios </xs:documentacion> </xs:annotation> xs:element. Definición de un elemento de tipo simple Los elementos de tipo simple pueden tener un valor, no debería contener elementos hijos y tampoco atributos. Es posible determinar a cada etiqueta un nombre con name y también especificar el tipo de dato solicitado con type, el nombre es un valor que se recomienda sea utilizado en notación camello y a continuación se muestran algunos tipos de datos que se pueden especificar: Tipo de dato cadena (string) Valor Descripción xs:string Permite colocar cadenas de caracteres xs:decimal El elemento contiene un número decimal xs:boolean El elemento puede contener valores de verdadero o falso (true o false) xs:date El elemento puede contener valores de fecha, se puede especificar el formato usando argumentos en la expresión (el formato base es año, mes y día: YYYY-MM-DD) xs:time El elemento puede contener valores de la hora del día (el formato es hora, minuto, segundo hh:mm:ss en valores de 0 a 24 horas) xs:dateTime El elemento puede contener valores del día y la hora (el formato es YYYY-MM-DThh:mm:ss y debe aparecer la T entre los valores de día y hora) xs:duration Se puede especificar en el elemento una especificación de la duración del evento en tiempo (Se usa la estructura PnYnMnDTnHnMn indicando que se pueden combinar con cada inicial el periodo, se debe considerar en un número entero representado por n) P30D es 30 días P5M es 5 meses A continuación se muestra un ejemplo de la definición de algunos tipos de datos presentados en la tabla. Tipo de dato numérico Valor Descripción xs:decimal El elemento puede contener números finito de elementos positivos o negativos con opción de colocar el punto decimal o no. xs:integer El elemento puede contener números finito de elementos positivos o negativos sin parte fraccionaria (sin punto decimal). xs:positiveInteger xs:negativeInteger xs:nonPositiveInteger xs:nonNegativeInteger El elemento puede tener enteros, pero se condiciona de acuerdo al tipo de elementos positivos o negativos exclusivamente que se aceptan como válidos (nonPositiveInteger y nonPositiveInteger agregan al conjunto de elementos correspondientes validos el cero, ya que no es considerado en lo otros dos casos) xs:int El elemento puede ser un entero con signo y tiene longitud de hasta 32 bits xs:float El elemento puede contener elementos positivos y negativos de hasta 32 bista de longitud, soporta nomenclatura de notación científica (12e-5 por ejemplo) y términos como INF para infinito A continuación se muestra un ejemplo de la definición de algunos tipos de datos presentados en la tabla. Contenido predefinido de un elemento Existen 2 formas distintas de establecer el contenido de un elemento de forma predeterminada o en caso de que no se encuentre el valor al procesar el documento XML, se muestran las formas de declarar con los valores fixed y default para este propósito. 1. Dentro de la etiqueta del elemento se puede establecer el atributo fixed=”valor”, donde el valor será el que se asigne en caso de que no se encuentre alguno asignado al elemento al ser procesado el documento XML. En caso de que el valor que se encuentre en el elemento sea diferente al designado en fixed, se considera también que es un documento no válido. 2. Dentro de la etiqueta del elemento se puede colocar el atributo default=”valor”, donde se asignará el valor definido en campo valor, en caso de que al procesar se encuentre un valor para el elemento de vacío o no se le haya definido un valor, se le asignará el que establecimos en default, el elemento también puede contener un valor distinto al que definimos y será considerado válido, es decir, se aplica unicamente para completar al elemento en caso de que se omita o aparezca vacío el valor No es posible colocar al mismo tiempo fixed y default, el primero se utilizará en caso de que el elemento aparezca, pero el valor definido es considerado vacío, en caso de que no aparezca, se considera que se omite y se considera que no es valido el documento. El siguiente ejemplo muestra como el caso de aplicación de valor predefinido en un elemento del documento no es valido en el caso 3, dado que el valor difiere del establecido en fixed. En el caso del establecimiento con default, los tres casos son válidos. Tipos simples derivados Es posible generar tipos de datos generados de manera específica basado en los tipos de datos simples, es decir, cada tipo de dato generado tendrá restricciones para un fin definido por la aplicación que requiere procesar el documento XML. Se debe definir el nombre del elemento al que le aplicaremos el tipo de dato derivado, se debe implementar una etiqueta de restricción o las que sean necesarios para definir el tipo de dato que se desea implementar, es importante recordar que derivan de tipos simples, por lo que se debe especificar la base de tipo de dato que utilizan; un ejemplo de un tipo de dato derivado puede ser en el que esperamos una cdena de texto, pero delimitamos que el tamaño debe ser máximo 1024 caracteres. El tipo de dato definido se conoce como anónimo (no se define su nombre), puede ser usado una sola vez cuando encuentre el elemento declarado, existe otro tipo derivado que puede ser utilizado una múltiple cantidad de veces (cuando le ponemos nombre) en cualquier elemento que sea requerido. Tipos simples derivados con nombre Es posible definir un tipo simple derivado y además nombrarlo, para usarlo como referencia en diferentes elementos que comparten ese tipo de validación de los datos del documento. En el ejemplo podemos ver que se utiliza en más de un elemento el tipo de dato definido, al hacer una referencia cruzada mediante el atributo name (simpleNombrado), funciona en la misma forma que el ejemplo anterior, pero se utiliza más de una vez en el documento XML. Especificar rangos de valores aceptables Es posible definir en el XML Schema un espacio de valores que son permitidos para los elementos, lo que permite tener rangos específicos de valores que permitan hacer un documento XML válido, el conjunto de restricciones se llama (facets), para implementar el rangod e valores permitido se debe crear un tipo de datos simple, es posible establecer el valor máximo, mínimo o ambos para un elemento que sea considerado válido xs:maxInclusive value="n" Se puede definir el valor máximo al establecerlo en el contenido del value, la especificación Inclusive permite que sea válido cualquier valor menor y hasta el especificado en value xs:maxExclusive value="n" Se puede definir el valor máximo al establecerlo en el contenido del value, la especificación Exclusive permite que sea válido cualquier valor menor al especificado en value. xs:minInclusive value="n" Se puede definir el valor ínimo al establecerlo en el contenido del value, la especificación Inclusive permite que sea válido cualquier valor mayor a partir del especificado en value xs:maxExclusive value="n" Se puede definir el valor mínimo al establecerlo en el contenido del value, la especificación Exclusive permite que sea válido cualquier valor mayor al especificado en value. Se pueden utilizar ambos elementos (max y min) para establecer el rango de valores permitidos, se debe establecer un elemento por cada tipo de condición establecida. Especificar rangos de valores aceptables No es lo mismo considerar un conjunto secuenciado de valores, que un conjunto no secuencial de valores válidos para un elemento en XML, cuando utilizamos un conjunto restringido de opciones que serán permitidos para hacer un documento válido podemos utilizar xs:enumeration. Se considera que cada elemento que colocamos con un value específico, corresponde a una opción permitida, el conjunto de definición de opciones validas determina el número de elementos que debemos colocar en las especificación. Establecer la longitud de un elemento Es posible especificar el número de caracteres que debe contener un elemento en un documento XML, se utiliza xs:length y en el value se define el valor (debe ser un entero no negativo) xs:length value="x" Se puede definir el valor exacto de caracteres que debe tener el elemento xs:maxLength value="x" Se puede definir el valor máximo de caracteres que debe tener el elemento xs:minLength value="x" Se puede definir el valor mínimo de caracteres que debe tener el elemento Se puede definir el valor mínimo al establecerlo en el contenido del value, la especificación Exclusive permite que sea válido cualquier valor mayor al especificado en value. Tipos derivados compuestos con nombre ​ En la implementación podemos notar que el tipo de dato definido como tipoNombrado es utilizado en dos elementos del documento XML, se usan en la definición del año de creación y del año de destrucción, notamos que la era es un atributo que debe aparecer de tipo cadena y que el valor tipoNombrado debe ser un entero positivo. ### Modelo de objetos del documento (DOM) ### Familia de dialectos XML Como se mencionó, la aplicación de XML a las problemáticas específicas que se presentaron para el intercambio y la presentación de la información en Internet, generó nuevos vocabularios o dialectos como Chemical Markup Languaje (CML) desarrollado par ala representación de moléculas enfatizando la semántica de la aplicación, Mathematical Markup Languaje (MathML) que es usada para la representación de expresiones matemáticas ya que ASCII no tiene soporte directo para representar mucha de la simbología implementada, Instrument Markup Languaje (IML) es usado para controlar instrumentos de laboratorio implementado por la NASA Lenguaje XHTML En la especificación del W3C se había pensado como el sustituto de HTML como estándar para las páginas Web,por lo que XHTML es la versión XML de HTML y tiene las mismas funcionalidades, pero cumple las especificaciones, más estrictas, de XML. Se pueden publicar documentos para la Web con un recurso formado en XHTML, pero un recurso con XML no es reconocido directamente para presentarse en el navegador, para hacer la distinción entre ambos existe una especificación del tipo de documento (DTD) que debe agregarse a cada apartado en caso de que se utilice como elemento Web o como almacenamiento de información. Referencias [RSS - Really Simple Syndication](https://www.xul.fr/en-xml-rss.html#historyps://) [Vector Markup Language](https://)https://es.wikipedia.org/wiki/Vector_Markup_Language [Scalable Vector Graphics (SVG) 2](https://www.w3.org/TR/SVG2/) --- ## 4.Hojas de Estilo en Cascada CSS3 Conceptos básicos de los estilos Modelo de Cajas. Propiedades generales de estilo para los elementos de XHTML * falta agregar a el nuevo libro 1. max-width Using width, max-width and margin: auto; As mentioned in the previous chapter; a block-level element always takes up the full width available (stretches out to the left and right as far as it can). Setting the width of a block-level element will prevent it from stretching out to the edges of its container. Then, you can set the margins to auto, to horizontally center the element within its container. The element will take up the specified width, and the remaining space will be split equally between the two margins: Note: The problem with the <div> above occurs when the browser window is smaller than the width of the element. The browser then adds a horizontal scrollbar to the page. Using max-width instead, in this situation, will improve the browser's handling of small windows. This is important when making a site usable on small devices: ```css= div.ex1 { width: 500px; margin: auto; border: 3px solid #73AD21; } div.ex2 { max-width: 500px; margin: auto; border: 3px solid #73AD21; } ``` 2. Overflow The CSS overflow property controls what happens to content that is too big to fit into an area. The overflow property specifies whether to clip the content or to add scrollbars when the content of an element is too big to fit in the specified area. The overflow property has the following values: visible - Default. The overflow is not clipped. The content renders outside the element's box hidden - The overflow is clipped, and the rest of the content will be invisible scroll - The overflow is clipped, and a scrollbar is added to see the rest of the content auto - Similar to scroll, but it adds scrollbars only when necessary Note: The overflow property only works for block elements with a specified height. Note: In OS X Lion (on Mac), scrollbars are hidden by default and only shown when being used (even though "overflow:scroll" is set). overflow: visible By default, the overflow is visible, meaning that it is not clipped and it renders outside the element's box: overflow: hidden With the hidden value, the overflow is clipped, and the rest of the content is hidden: overflow: scroll Setting the value to scroll, the overflow is clipped and a scrollbar is added to scroll inside the box. Note that this will add a scrollbar both horizontally and vertically (even if you do not need it): overflow: auto The auto value is similar to scroll, but it adds scrollbars only when necessary: overflow-x and overflow-y The overflow-x and overflow-y properties specifies whether to change the overflow of content just horizontally or vertically (or both): overflow-x specifies what to do with the left/right edges of the content. overflow-y specifies what to do with the top/bottom edges of the content. ```css= div { width: 200px; height: 50px; background-color: #eee; overflow: visible; } ``` Propiedades Avanzadas de los estilos (CSS Nivel 3) 5.JavaScript --- Sintaxis de JavaScript Modelo de Eventos Creación de Clases con JavaScript Modelo de objetos del Navegador Manejo de Expresiones regulares 6.Bibliotecas de JavaScript y Ajax --- Bibliotecas de JavaScript (Frameworks) 1. Biblioteca Prototype 2. Prototype 3. Dojo 4. Mootools Historia de AJAX Conceptos básicos Diferencias entre aplicaciones Web tradicionales y aplicaciones Web con AJAX Objetos de AJAX