apuntes_alexbm8_23_03_09

Apuntes del 23 de Marzo
Comenzamos la clase hablando de que en javascript es posible manejar las cookies. Después Carlos repasó la clase anterior, y el profesor comentó los resultados de la segunda práctica. Después pasamos a los ejercicios de autoevaluación, primero vallesquino realizó un "hola mundo" en JSwing, pero el profesor no pudo probarlo, pudiera ser porque no disponía del JDK, sólo de la máquina virtual JRE, aunque no al final no se supo muy bien por qué. [|Carlos], [|alejandrofh] y [|vallesquino] recomendaron algunos editores XML, y para sorpresa, resulta que el navegador chrome no interpreta correctamente XML. El profesor explicó la diferencia entre CSS y hojas de estilo, ya que éstas últimas no sólo cambian la apariencia, sino también el contenido. También, con motivo del [|ejercicio T2.1], se comentó algo sobre [|XSL].

Seguimos con el temario, **XML bien formado**: Vimos el siguiente ejemplo, analizándolo con profundidad: code format="xml"   aparador sofá 

code //  // Las etiquetas "?" son instrucciones de procesamiento, en la primera línea se indica el estándar 1.0 y por defecto la codificación de los documentos XML no es la convencional. Suele usarse UNICODE, 2 bytes por carácter. La codificación por defecto de cualquier texto suele ser la UTF-8, por lo que debemos ser cuidadosos con la compatibilidad de formatos.

XML suele tener una única etiqueta raíz: // .// Todas las etiquetas están emparejadas y bien anidadas, siempre se deben cerrar en orden contrario al que se abren, en caso contrario, aparecerá un error. //  // Si los elementos no tiene caracteres dentro, se le denomina elemento vacío. Los atributos van siempre entrecomillados con comillas simples o dobles. No puede haber etiquetas aisladas dentro del texto ni de los atributos, si queremos utilizar símbolos como ">", tenemos que sustituirlos por entidades XML similares a las entidades HTML: "//&lt;//"

Para evitar los "&" dentro de las URL, debemos sustituirlos por ";". Una sección CDATA es una sección que no se somete a ningún tipo de procesamiento (por ejemplo, por parte del validador, aunque sí será interpretada por el navegador). Ejemplo : // <![CDATA[ En la pared de la derecha hay un frigorífico // // Y en la de la izquierda, sólo mugre ]]> // Una de las diferencias entre latin-15 y latin-1 es que el símbolo del € está en el primero y no en el segundo. Para evitar estos problemas basta con cambiar la codificación del fichero. Los nombres de las etiquetas son alfanuméricos, y es "case sensitive" (distingue entre mayúsculas y minúsculas). En XML se puede usar el subrayado.

XML bien formado significa que podemos transformar el modelo de objetos en un árbol bien formado. Como vimos, existen muchos programas para editar XML, y usaremos el parser [|XERCES]. Durante la instalación en clase, éste dio problemas y el profesor instaló [|XML LINT] (para Linux).

Las entidades de XML son atómicas, y los comentarios se realizan igual que en HTML. Vimos algunos ejemplos realizados y validados en clase.Los identificadores deben ser únicos, aunque los atributos pueden repetirse entre nodos raíz distintos. Un XML bien formado se denomina INFOSET Dos etiquetas iguales se diferenciarán si pertenecen a espacios de nombres distintos. Es similar al concepto ya visto en javascript. Se identifican mediantes URIs y se utilizan mediante un prefijo que se debe incluir dentro de la etiqueta raíz. El prefijo que se asigna al URI no tiene por qué ser único, de hecho, si sólo usamos un espacio de nombre no tendríamos que asignarle un prefijo. El espacio de nombres se puede aplicar tanto a los elementos como a los atributos.
 * T2.5 Espacios de nombres **

Se pueden combinar dos espacios de nombres dentro del mismo documento.Por ejemplo en el siguiente documento XML: [], aparecen tres espacios de nombres.

Una utilidad de los espacios de nombres es que permite diferenciar entre XML y HTML. Hay una forma de restringir la forma de un documento XML, mediante los DTD. Analizamos el siguiente ejemplo: <!ATTLIST habitacion id NMTOKEN #REQUIRED > <!ELEMENT micasa ( habitacion+ ) > <!ELEMENT mueble ( #PCDATA ) > <!ELEMENT puerta EMPTY > <!ATTLIST puerta a NMTOKEN #REQUIRED > || // <!ELEMENT habitacion ( mueble+, puerta+ ) > // Hay un elemento habitación, que tiene 1 o más muebles y 1 o más puertas // <!ATTLIST habitacion id NMTOKEN #REQUIRED > // Habitación debe llevar obligatoriamente un id // <!ELEMENT puerta EMPTY > // La puerta es un elemento vacío // <!ATTLIST puerta a NMTOKEN #REQUIRED > // Debemos decir a dónde va la puerta
 * T2.6 XML y descriptores de tipo de documento **
 * <!ELEMENT habitacion ( mueble+, puerta+ ) >

Así, mediante DTD, podemos hacer que sólo sean válidos los documentos XML con esta estructura. Por último, vimos XSchema, con función idéntica a DTD pero donde las restricciones están expresadas en XML.