martes, 29 de noviembre de 2011

Introducción a XML

Hola a todos

Introducción/Definición de XML
XML (Extended Markup Language) Es un metalenguaje extensible de etiquetas desarrollado por el W3C que permite definir la gramatica de lenguajes específicos(de la misma manera que HTML es a su vez un lenguaje definido por SGML)
Por tanto, XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para diferentes necesidades
Se puede ver como un subconjunto de SGML mucho más simple, hasta el punto de que la especificación de XML es una décima parte que SGML. Por otro lado, el lenguaje XML se puede definir como un metalenguaje, esto es, XML puede ser usado para definir otros lenguaje, al igual que SGML. Por ejemplo, el lenguaje XHTML, ampliamente usado hoy en día en la web, se ha construido usando como base XML.

Estructura y sintaxis de XML
Un documento XML está formado, en principio, por lo que se conoce como “texto plano”, esto es, texto en el cual todos los caracteres se representan visualmente, sin existir caracteres no visible exceptuando los de salto de línea, tabulador o espacio.
Los documentos escritos usando XML contendrán marcas para separar la información que estructura el documento de la información que se quiere almacenar. Para construir dichas marcas, en XML se usan los caractere “<” y “>” para delimitar el texto que se desea marcar, mientras que el carácter “/” sirve para indicar la etiqueta de finalización del marcado. Un posible ejemplo de documento XML sería el siguiente:
<nombre>Luis</nombre>
Esta construcción se denomina habitualmente “elemento” y constituye la base principal de los documentos XML. Además de los elementos, un documento XML puede contener otros tipos de información. A continuación, se especificarán los más relevantes.

Etiquetas, Elementos y atributos.
Las etiquetas son el componente de XML que permite definir los elementos que conformarán un documento de la siguiente forma:

<etiqueta>Valor</etiqueta>

Como se puede observar los elementos se formarán usando una etiqueta de inicio, otra de fin, delimitadas por los caracteres “>” y “<”, y que comparten el identificador textual, pero añadiendo el carácter  “/” al principio. En medio de las etiquetas de inicio y fin del elemento se representará el contenido que se desee almacenar en ese elemento . Este contenido puede a su vez englobar otros elementos. Por otro lado, los elementos pueden no contener ningún valor, pero en ese caso se deberá usar solamente la etiqueta de finalización.
Se considera que en el elemento XML engloba todo lo que se encuentra entre las correspondentes etiquetas de inicio y de fin y pueden contener tanto otros elementos como simplemente texto o una combinación de ambos

Ejemplo de XML para representar la ficha de un alumno sería sintácticamente correcto:

<alumno>
         <nombre>Pablo</nombre>
         <apellido>Pérez</apellido>
         <telefono>91555555</telefono>
</alumno>
Los nombres de los elementos deberán empezar por una letra o bien por el carácter “_” o “:” siempre y cuando el principio no contenga la palabra “xml en cualquier combianción posible de mayúsculas y minúsculas. Además, los nombres son “case sensitive”(Sensibles a las mayúsculas) y solo podrán contener letras, números y los caracteres “_”, ”.”, ”:”

Los elementos pueden asimismo contener atributos, los cuales se especificarán en la etiqueta de inicio del elemento. El objetivo de los atributos es poder proporcionar una información adicional sobre un elemento concreto. La sintaxis para representar los atributos consiste en especificar el nombre del atributo dentro de la etiqueta de inicio, a continuació un símbolo “=” y finalmente el valor del atributo delimitado por comillas dobles o por comillas simples.

<Elemento1 atrib1=”val1” atrib2=”val2”>Valor</Elemento1>
<Elemento2 atrib1=”Val3” atrib3=”val3”>Valor</Elemento2>

Incluyendo atributos en nuestro ejemplo anterior

<alumno sexo=”varon” FechaNacimiento=”5/6/1990”>
         <nombre>Pablo</nombre>
         <apellido>Pérez</apellido>
         <telefono>91555555</telefono>
</alumno>

Se puede observar que generalmente se pueden usar tanto atributos como nuevos elementos para representar información. Sin emabrgo, el uso de un número excesivo de atributos puede provocar que el documento XML sea menos legible, más difícil de mantener y difícilmente extensible. Además hay que tener en cuenta que los atributos no pueden contener información en forma de árbol, esto es, no pueden contener otros elementos o atributos tal y como sucede con los elementos. De forma general, se puede establecer la recomendación no usar atributos en exceso y dejarlos casi exclusivamente para representación de metadatos

Siguiendo esta recomendación, tanto el atributo “sexo” como el atributo “FechaNacimiento” se pueden convertir en elementos. Además, en este ejemplo, se añade un identificador del alumno como atributo

<?xml version="1.0" encoding="utf-8"?>
<alumno id="532">
         <nombre>Pablo</nombre>
         <apellido>Pére</apellido>
         <FechaNacimiento>
                   <dia>5</dia>
                   <mes>6</mes>
                   <año>90</a>
         </FechaNacimiento>
         <sexo>varon</sexo>
         <telefono tipo="movil">555-555-555</telefono>
         <direccion>Ronda de Segovia</direccion>
        
</alumno>

Caracteres especiales
En XML algunos símbolos son reservados del lenguaje por lo que para poder representarlos es necesario usar unos código. Estos se definen usando el símbolo & seguido de una palabra clave y terminados por punto y coma. Estas construcciones son entidades predefinidas (Luego veremos las entidades) A continuación, se detallan algunos de los más relevantes:

Código
Carácter
&quot;
&amp;
&
&apos;
&lt;
< 
&gt;
> 


Instrucciones de procesamiento
Más allá de los propios datos contenidos en los ficheros XML y las etiquetas de marcado en un fichero XML se pueden encontrar instrucciones especiales llamadas instrucciones de procesamiento. Éstas comienzan con <? Y terminan con ¿> Una de las instrucciones procesamiento más habituales es la que se usa para indicar qué versión de XML se va a usar y cuál es la codificación de caracteres que se va a usar. Por ejemplo, si se usa XML 1.0 y UTF-8 la instrucción de procesamiento sería la siguiente:

<?xml version=”1.0” encoding=”UTF-8”?>

Comentarios y secciones CDATA
Dentro de un documetno XML se puede añadir información que no pertenezca ni al marcado ni la información contenida en el documento y que sirve para documentarlo en forma de comentarios internos. La sintaxis de un comentario consta de un texto delimitado por una marca inicial “<!--“ y una marca final “-->”
<!—Comentario válido en XML-->

Los comentarios son elementos especiales y no necesita ninguna marca de cierre. Además hay que tener en cuenta que dentro de un comentario no se pueden usar dos guiones seguidos “--“
Además, en XML se encuentran disponibles las secciones CDATA que permiten marcar un texto para que éste no sea procesado por el parser, es decir, no serán analizadas sintácticamente. CDATA proviene de “Character Data” (Datos de carácter) en contraposición a datos de marcado. La sintaxis de estas secciones se basa en la etiqueta de inicio “<![CDATA[“ y la etiquea de fin, “]]>”

Ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<!--Las dos definiciones del elemento serían interpretadas de la misma forma -->
<alumnos>

<!CDATA[
         <alumno id="321">
                   <nombre>Luis</nombre>
         </alumno>
</alumnos>


<alumnos>
         &lt;alumno id "321"&gt;
         &lt;nombre&gt;luis&lt;/nombre&gt;
         &lt;alumno&gt;
</alumnos>

Documentos XML bien formados y válidos
Una vez hemos visto los elementos que pueden formar parte de un documento XM y sus características el siguiente paso será establecer cuando un documento es correcto. En este sentido, en XML se puede hablar de documentos “bien formados” y documentos “válidos”

Los documentos bien formados son aquellos que son sintácticamente correctos, es decir, que cumplen las reglas expuestas anteriormente. Sin embargo, los documentos válidos son aquellos que además de estar bien formados, cumplen los requisitos de una definición de estructura o DTD

Además de las reglas expuestas anteriormente, se pueden destacar algunos otros aspectos en los que no se ha incidido de forma directa:
-          Un documento XML debe contener un único elemento raíz
-           Los elementos son case-sensitive, por lo que las etiquetas de inicio y fin de un   
      elemento deben concordar en mayúsculas y minúsculas
-           El documento sólo contendrá caracteres válidos dependiendo del tipo de codificación  
      del documento
-          Los caracteres “<”, “>”, y “&” solo deben aparecer para delimitar las etiquetas de los elementos y para usar caracteres especiales

Espacios de nombres
De forma general, los documentos XML se suelene combinar con otros documentos XML existentes, esto es, es habitual que se desee usar uno o varios módulos desarrollados previamente por terceras personas. Esta modularida es una característica esenciall de XML y permite al desarrollador poder reutilizar código existente que en muchos casos ya sido depurado y ampliamente probado.
El problema que sirge en estos casos es la posible colisión que se puede producir en los nombres d elos elementos que conformen los módulo que se quieren usar. Para solucionar este problema XML proporciona un mecanismo denominado “espacio de nombres”, que permite asignar nombres extendidos a los elementos de forma que se puedan evitar las colisiones

Declaración de un espacio de nombres
Un espacio de nombres se define como una referencia URI que servirá para identificar los elementos que pertenecen a dicho espacio de nombres. Otra forma de verlo es que los elementos tendrán un nombre compuesto por dos partes: una primera con su nombre y una segunda con el nombre deespacio de nombres. Este nombre compuesto permitirá identificar de forma unívoca al elemento en cuestión y de esta forma conocer siempre a qué elemento se está refiriendo el documento.
La contrucción de estos nombres extendidos se realiza uniendo el nombre al espacio de nombres y el nombre del elemento o atributo usando como conector el símbolo “:”. Sin embargo, las referencias URI pueden ser largas, lo que va en detrimento de la legibilidad y claridad del documento, además de propiciar que se cometan errores más fácilmente. Además las URIs pueden contener caracteres no válidos en XML. Para solucionar este problema, en XML se puede asignar un sinónimo corto al espacio de nombres de forma que este sinónimo corto sea el que se use a lo largo del documento. . El sinónimo se asigna usando el separador “:” y la etiqueta “xmlns”. En realizada, “xmlns” es un atributo reservado

Ejemplo:

<?xml version="1.0" encoding="utf-8"?>
<elementoej xmlns:enej="http://dominioeje.com/rutaej">
         <enej:elemento1>Texto 1</enej:elemento1>
         <enej:elemento2>Texto 2</enej:elemento2>
</elementoej>

Se puede observar que el sinónimo corto del espacio de nombres de ejemplo es “enej” y que su uso resulta más adecuado que el nombre completo del espacio de nombres http://dominioeje.com/rutaej. Además, se puede observar que los elementos “elemento1” y “elemento2” pertenecen al espacio de nombres “enej” al estar calificados con el sinónimo de dicho espacio.


Espacios de nombres por defecto
Si un espacio de nombres se declara sin su sinónimo correspondiente esto indicará que todos los elementos (incluido el elemento que declara el espacio de nombres) que contenga pertenecerán a dicho espacio d enombres. Por tanto, sería como definir un espacio de nombres por defecto para los elementos que no tengan espacio de nombres asignado.
Otro uso de los espacios de nombres que puede resultar de gran utilidad es dejar su declaración en blanco (xmlns=””), lo que indicaría que los elementos y atributos contenidos, por defecto no pertenecen a ningún espacio de nombres.
Para terminar, hacer hincapié en que cuando se declara un espacio de nombres por defecto (o sin espacio de nombres por defecto, dejando el atributo xmlns vacío) pero un elemento contiene un prefijo de un espacio de nombres, el espacio de nombres que prevalecerá será éste último.

  
Ejercicios
  1. Definir un documento XML que permita representar un libro. Deberá contener los atributos típicos como “título”, “autores”, “editorial”,”fecha de publicacion”, “isbn”…
  2. A partir d ela definición anterior escribir un documento XML que al menos contenga 10 entradas de libros.
  3. Buscar un validador de XML online por ejemplo el de W3C http://validator.w3.org , introducir el documento generado en el ejercicio anterior y comprobar que el documento esté bien formado.
  4. Crear un espacio de nombres ficticio e introducirlo en el XML del ejercicio 2 y comprobar que el documento XML sigue estando bien formado.

Saludos,
Alfredo











  

domingo, 6 de noviembre de 2011

Modelo de Objeto de Documento


DOM
El modelo de objetos del documento  (DOM) es un API (Application Programming Interface) estándar del W3C para documentos HTML y XML. Proporciona una representación estructural del documento que permite la modificación de su contenido o su presentación visual. Esencialmente, comunica las páginas web con los scripts o los lenguajes de programación.
Con el modelo de objetos del documento los programadores pueden construir documentos, navegar por su estructura  y añadir, modificar, o eliminar elementos y contenido. Se puede acceder a cualquier cosa que se encuentre en el documento HTML o XML, y se puede modificar, eliminar o añadir usando el Modelo de Objetos del documento salvo algunas excepciones. En particular, aún no se han especificado las interfaces DOM para los subconjuntos externos e internos de XML

“Un API es el conjunto de funciones y procedimientos (O métodos, en programación orientada a objetos), que ofrece una biblioteca para ser utilizado por otro software como una capa de abstracción”

Una página web es un documento HTML que es interpretado por los navegadores en forma gráfica, permitiendo también el acceso al código

El modelo de objetos del documento (DOM) permite ver el mismo documento de otra manera, describiendo el contenido del documento como un conjunto de objetos para que un programa Javascript pueda actuar sobre ellos.

El DOM permite acceder a la estructura de una página HTML mediante el mapeo de los elementos de esta página en un árbol de nodos. Cada elemento se convierte en un nodo y cada porción de texto en un nodo de texto. Para comprender más fácilmente veamos el siguiente ejemplo:

EJEMPLO
<body>
<p>Esto es un párrafo que contiene <a href.=”#”>un enlace </a> en el medio</p>
<ul>
<li>Primera entrada en la lista</li>
<li>Segunda entrada en la lista</li>
</ul>
</body>

Como se puede apreciar en el ejemplo, el elemento a se encuentra localizado dentro del elemento p del HTML, convirtiéndose en un nodo hijo, o simplemente hijo del nodo p, de manera similar, p es el nodo padre. Los dos nodos li son hijos del mismo padre, llamándose nodos hermanos o, simplemente, hermanos.

Es importante comprender la diferencia entre elementos y nodos de textos. Los elementos, normalmente, están asociados a las etiquetas. En HTML todas las etiquetas son elementos, tales como <p> por lo que tienen atributos y contienen nodos hijos. Sin embargo, los nodos de textos no poseen atributos e hijos.

En el DOM, los documentos tienen una estructura lógica que es muy parecida a un árbol (para ser más precisos, es más bien un “bosque” o una “arboleda”, que puede contener más de un árbol) Sin embargo, el DOM no especifica que los documentos deban ser implementados como un árbol o un bosque, ni tampoco especifica cómo deben implementarse las relaciones entre los objetos. El DOM es un modelo lógico que puede implementarse de cualquier manera que se considere conveniente. En esta especificación, se usa el término modelo de estructura para describir la representación en forma de árbol de un documento, evitando la utilización de términos como “árbol” o “bosque” para evitar la implicación de una implementación en particular. Una propiedad importante de los modelos de estructura del DOM es su isomorfismo estructural: si dos implementaciones cualesquiera del modelo de objetos del documento se usan para crear una representación del mismo documento, ambas crearán el mismo modelo de estructura, con exactamente los mismos objetos y relaciones

Se eligió el nombre modelo de objetos del documento porque es un modelo de objetos en el sentido tradicional del diseño orientado a objetos: los documentos se modelizan usando objetos, y el modelo comprende no solamente la estructura de un documento, sino también el comportamiento de un documento y de los objetos de los cuales se compone. Como modelo de objetos, el DOM identifica:
-         Las interfaces y objetos usados para representar y manipular un documento
-         La semántica de estas interfaces y objetos, incluyendo comportamiento y atributos
-         Las relaciones y colaboraciones entre estas interfaces y objetos

Tradicionalmente, la estructura de los documentos SGML se ha representado mediante un modelo de datos abstractos, no con un modelo de objetos. En un modelo de datos abstractos, el modelo se centra en los datos. En los lenguajes de programación orientados a objetos, los datos se encapsulan en objetos que ocultan los datos, protegiéndolos de su manipulación directa desde el exterior. Las funciones asociadas con estos objetos determinan como pueden manipularse los objetos y son parte del modelo de objetos

El modelo de objetos del documento consiste actualmente de dos partes: el núcleo del DOM y el DOM HTML. El núcleo del DOM representa la funcionalidad usada para los elementos XML, y también sirve de base para el DOM HTML. Una implementación conforme del DOM debe implementar todas las interfaces fundamentales del capítulo con la semántica definida. Además, debe implementar el DOM HTML, las interfaces extendidas (XML) o ambas, con la semántica definida   

Saludos,
Alfredo

Ejercicio final de evaluación previo al examen final

Hola a todos
A continuación, se realizará un sitio web dedicado a la metodología de programación en caso de Desarrollo de Aplicaciones Web, y Desarrollo de Aplicaciones Multiplataforma, y a los diferentes tipos y topologías de redes en el de Administración de Sistemas Informáticos y en red, que debe atender a las siguientes directrices

  1. Debe haber una página de índice, con el título del tema en la parte superior de la misma
  2. Esa página de índice debe tener diferentes niveles de profundidad
  3. En el caso de realizar el sitio web en solitario, el mínimo número de páginas será de 6.
  4. En el caso de realizar el sitio web dos personas juntas, el mínimo número de páginas será de 11
  5. No se permitirá hacer el trabajo en grupos de más de dos personas
  6. Tanto en el caso de que se haga individualmente como en grupo, deberá existir, obligatoriamente, una página de créditos, en la cual se especifique de forma clara y concisa la siguiente información:
    1. Autor(es) del sitio web
    2. Qué parte del trabajo de desarrollo ha realizado cada alumno (Caso de más de un alumno)
    3. Justificación de aquellas partes del diseño que no vengan dadas por estas directrices
    4. Fecha de terminación de la actividad
  7. El sitio web debe estar desarrollado siguiendo los estándares XHTML 1.0 o XHTML 1.1
  8. Todas las páginas que conforman el  sitio web deben estar validadas con el validador del W3C
  9. La información de estilo del sitio web debe encontrarse en una hoja de estilo externa.
  10. Esta hoja de estilo también debe haber sido validada en el validador del W3C
  11. La información de estilo contenida en la misma debe ser la siguiente:
    1. Los  títulos deben tener un tamaño de 30pts, estarán centrados y debe especificarse que no van a estar subrayados, y el color de fondo de la etiqueta que les contiene (h1) debe ser verde suave (88%,99%,88%). El borde debe ser de un verde más sólido y grueso. La fuente debe ser Verdana. El relleno debe ser de 15px y el margen de 10px
    2. Los título de menor nivel tendrán las mismas características, pero rebajando de cinco en cinco pts el tamaño de la letra
    3. Dentro de las etiquetas de bloques de contenido  que se utilicen, la fuente debe ser "Palatino Linotype", el tamaño de la misma 16pts, el interlineado un centímetro, el tamaño entre las palabras unos 15px y el espaciado entre letras debe ser de dos píxeles
    4. Los enlaces deben no estar subrayados, deben subrayarse y aumentar el tamaño cuando se coloque el ratón encima de los mismos. El color de los enlaces debe estar controlado, de tal forma que destaque del resto del texto
    5. Las imágenes -particularmente indicadas en la parte de ordinogramas en metodología de programación y en topología para redes, deben tener un borde equivalente al del título y deberían ser todas de la misma anchura y altura, salvo causa justificada (A explicar en los créditos)

La fecha tope de entrega de este ejercicio será el día 16 de Noviembre para Desarrollo de Aplicaciones Web y el 17 de Noviembre de 2011 para Desarrollo de Aplicaciones Multiplataforma y Administración de Sistemas Informáticos en Red. 

Saludos,
Alfredo

miércoles, 2 de noviembre de 2011

Ejercicio de estilo

Hola a todos
Como ejercicio os propongo hacer el siguiente diseño y validarlo (Hacedlo en HTML 4.01 Transicional o flexible o en el estricto). Éste será el primer paso del ejercicio final de evaluación


Saludos,
Alfredo