apuntes_alexbm8_16_03_09

=Apuntes del 16 de Marzo=

Comenzamos la clase con el resumen de nika, y vimos todos los proyectos de la UGR para //el// // [|google summer of code] //.

En respuesta a una cuestión de un alumno, el profesor comentó que existe un array que contiene todos los formularios (document.forms), aunque siempre es mejor obtener los elementos por //id// en vez de por //name//.

Vimos el ejercicio T1.8 de draxus, y comentamos que primero teníamos que añadir los //anchors// que permiten enlazar dentro del documento. A continuación presento tal ejercicio que analizamos en profundidad en clase con los respectivos comentarios: code format="javascript" // ==UserScript== // @name               AAP-Nav-Ejercicios // @namespace          http://geneura.org/projects/greasemonkey // @description        Navegación por los ejercicios de AAP // @include            http://geneura.ugr.es/~jmerelo/asignaturas/* // ==/UserScript==

GM_log('Entrando AAP-Nav-Ejercicios'); // Obtenemos todos los títulos de los ejercicios, que se encuentran entre etiquetas var h3 = document.getElementsByTagName('h3'); var a_nodes = new Array; var anchors = new Array; for ( var secs = 0; secs < h3.length; secs ++ ) { // Obtenemos el identificador del nodo padre var id = h3[secs].parentNode.getAttribute('id'); // Creamos un ancla para poder navegar entre bloques var ancla = document.createElement('a'); // Le asignamos un identificador ancla.setAttribute('name', id); // Añadimos el ancla creado al vector de anclas a_nodes[secs] = ancla; // Igual con su identificador anchors[secs] = ancla.getAttribute('name'); // Insertamos el ancla ”ancla” justo antes del título del ejercicio h3[secs].parentNode.insertBefore(ancla, h3[secs]); // Mostramos un mensaje por la consola de Greasemonkey GM_log('Anchor ' + secs + " " + anchors[secs]); }

// Recorremos todo el vector de ejercicios for ( var secs = 0; secs < h3.length; secs ++ ) { // Creamos un span donde insertaremos el texto con los enlaces var span = document.createElement('span'); // Atributos del span span.setAttribute('style','background:lightblue'); // Crearemos un enlace con el ejercicio anterior if ( secs > 0 ) { // Creamos una etiqueta  donde insertaremos el enlace var ahref = document.createElement('a'); // Definimos el enlace ahref.setAttribute('href','#'+anchors[secs-1]); // Creamos el texto donde pinchar para ir al enlace var txt=document.createTextNode('^'); // Añadimos al enlace el texto creado ahref.appendChild(txt); // Añadimos al span el enlace completo span.appendChild(ahref); } // Hacemos lo mismo pero enlazando con el ejercicio siguiente if ( secs < h3.length -1 ) { span.appendChild(document.createTextNode(' | ')); var ahref = document.createElement('a'); ahref.setAttribute('href','#'+anchors[secs+1]); var txt=document.createTextNode('v'); ahref.appendChild(txt); span.appendChild(ahref); } // Insertamos el span con el enlace justo antes del ancla creado para este bloque de ejercicios a_nodes[secs].parentNode.insertBefore(span,a_nodes[secs]); }

code Cristina comentó su ejercicio del tema anterior. Sobre el mismo, el profesor comentó que es mejor no repetir código, ya que con javascript podemos usar bucles, e incluso definir dicho código y llamar a una función que lo inserte en la página. Además, usando contenedores (div), podemos ver el resultado de la función javascript sin tener que crear una nueva página con document.write. El profesor corrigió en la propia clase estos errores. A continuación, alexfh presentó su práctica 2, y el profesor comentó que no debemos usar las tablas para información que no sea tabulada, sino que en su lugar debemos emplear contenedores. XML es una sintaxis general para representar árboles, lo que representa que todo lo que se puede representar mediante XML también puede hacerse mediante un árbol. Por tanto, no es un lenguaje únicamente de internet. Hoy día se usa para todo tipo de intercambio de información. [|JSON] sería una alternativa a XML, aunque éste, como otros, presentan algunos problemas frente a XML, ya que éste permite añadir semánticas, y es muy fácil trabajar con el. Existen librerías en casi todos los lenguajes y es la base de arquitecturas orientadas al servicio.
 * Empezamos el tema de XML **

XML para empezar nos lo podemos imaginar como un HTML más sistemático y donde las etiquetas pueden ser arbirtrarias. Procede del lenguaje [|SGML] que no era extensible (poseía una gran cantidad de etiquetas). XML sirve para el paradigma de programación basada en documento, es decir, tanto la entrada como la salida, e incluso el propio programa se pueden representar como un documento. XML es un metalenguaje, ya que su sintaxis permite expresar lenguajes bien para representar o para manipular estructuras de datos. Normalmente lo que se hacen son programas que manipulan documentos XML y generan documentos XML, por ejemplo, bajo el esquema cliente-servidor. También existen XSP, programas java que se insertan dentro de páginas XML.

Existen múltiples formas de trabajar con XML. Nosotros trabajaremos más bien a bajo nivel. [|RSS] o [|Atom] lo emplean, y [|RDF] y [|XUL]. Delicious usa RDF para almacenar sus marcadores. Hablamos también sobre flujos de trabajo que lo emplean, o el formato KME de google earth-maps.
 * ¿Para qué sirve XML? **