Diferencia entre revisiones de «Usuario:Lmorillas/modulo lenguajes de marcas/xml»

De WikiEducator
Saltar a: navegación, buscar
Línea 31: Línea 31:
  
 
{{/dtd}}
 
{{/dtd}}
 +
 +
{{/namespaces}}

Revisión de 10:52 16 ene 2012




Documentación general


¿Qué es XML?


Lectura inicial


Un ejemplo

XML (EXtensible Markup Language) es un modo multiplataforma de representar datos. XML te permite crear datos que se podrán leer por cualquier aplicación en cualquier plataforma. Puedes crearlo y editarlo a mano por estar basado en tecnologías de etiquetas.

<?xml version="1.0"?>
<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>



Listado de cursos en XML

Icon activity.jpg

Listado de cursos en XML

Crea una versión en XML con la información de 5 cursos de http://plan.aragon.es/MapaRec.nsf/fmrListado?OpenForm






Icon activity.jpg

Actividad


Icon objectives.jpg

Objetivo

  • Vas a crear un documento xml válido que almacene información de alumnos del centro (al menos 5).
  • De cada alumno tendremos la siguiente información:
    • Nombre
    • Apellido
    • Fecha de nacimiento (día, mes y año)
    • Asignaturas que está cursando
    • Número de matrícula
    • Turno (mañana, tarde, noche)
  • De las asignaturas tendremos la información:
    • Nombre
    • Notas
  • Crea una estructura para representar la información anterior.
  • Elige qué pondrías como atributos y qué como elementos
  • Recuerda que los atributos:
    • No pueden contener varios valores
    • No pueden contener estructuras de nuevos árboles
    • Son más complejos de expandir y mantener.
  • Usa elementos para los datos y atributos para información no tan relevante.






Ventajas de usar XML



Icon preknowledge.gif

Ventajas

  • Separa datos de presentación
  • Simplifica compartir e intercambiar datos
  • La información se almacena en texto plano: software y hardware independiente.
  • Simplifica el transporte de la información.
  • Simplifica los cambios de plataforma
  • Hace los datos disponibles más fácil
  • Usado en los nuevos lenguajes de internet: xhtml, servicios web, rss, rdf, smil





Icon objectives.jpg

¿Para qué sirve?

  • Guardar datos
  • Servicios web
  • Podcast y suscripción de datos
  • RDF, microformatos y tecnologías semánticas
  • AJAX
  • Mashups






Visualización con CSS

Documentación

En el doc xml

En el documento xml introducimos una referencia al documento .css

 <?xml-stylesheet type="text/css" href="url_del_css"?>
Ejemplo: http://www.w3schools.com/xml/xml_display.asp

Chuleta CSS

  • Básico
long {display: none;}
abbreviation {display: inline;}
abbreviation * {display: inline;}
* {display: block;}
  • Generar contenido
title:before {content: 'Title: ';}
title:after {content: ' (technical paper)';}
subtitle:before {content: 'Subtitle: ';}
author:before {content: 'Author: ';}
  • Comillas
subtitle:before {content: open-quote;}
subtitle:after {content: close-quote;}
  • Atributos
author:after {content: ' (' attr(e-mail) ')';}
  • Contadores
section:before {
  content: "Section " counter(section) "\A\A0";
  counter-increment: section;
  white-space: pre;
}
  • Contenido desde uris
paper:after {
  content: url('disclaimer.txt');
  white-space: pre;
}


Sintaxis XML

La estructura de los documentos XML

  • Los documentos XML tienen información de texto que abarca las marcas y el contenido.
  • Las marcas describen los datos y están encerradas entre signos < y >
  • El prólogo es la parte introductoria del doc XML: precede al primer elemento:
<?xml version="1.0" encoding="utf-8"?>
  • El contenido del documento se encuentra en sus elementos y atributos.
    • Los elementos empiezan y finalizan con una etiqueta de inicio y fin.
    • Los atributos están en la etiqueta de inicio.
  • Restricciones para los nombres:
    • Tienen que empezar por letra, quión bajo o dos puntos (recomendado letra)
    • Se distinguen mayúsculas y minúsculas
    • Los dos puntos deberían de usarse sólo para separar namespaces.
    • No deben de empezar con el carácter xml (reservados para el W3C)

Documentos bien formados

  • Un elmento raíz que encierra los demás
  • Todos los elementos tienen una etiqueta de inicio y una de fin ( o son elementos vacíos)
  • Todos los elementos están anidados jerárquicamente (sin solapamientos)
  • Todos los valores de los atributos están entre comillas (dobles o sencillas)
<elemento_vacio></elemento_vacio>
<elemento_vacio />

Secciones CDATA

  • Incluyen caracteres no permitidos: <, >, &, "
<formula>4 < 5 </formula>   # NO VÁLIDO
<formula><![CDATA[4<5>]]> </formula>

Documentos válidos

  • Según un tipo de documento (DTD, xml schema, relax NG, ...)


DTD

Un DTD es el documento que define la estructura que debe tener un documento XML(elementos, atributos, entidades, notaciones, etc, que pueden aparecer, el orden y el número de veces que pueden aparecer, cuáles pueden ser hijos de cuáles, etc.)

Icon present.gif
Tip: Aquí tienes un buen resumen: http://www.mclibre.org/consultar/xml/lecciones/xml_dtd.html


Funciones de un DTD

  • Validar documentos
  • Dar valores por defecto a atributos que no existen
  • Declarar y reemplazar entidades
  • Documentar los documentos.

¿Cómo se introduce?

  • declaración DOCTYPE

¿Dónde?

  • Pueden aparecer dentro del documento xml, fuera o en ambos sitios.
  • Dentro del doc:
<!DOCTYPE root  ... >
  • Fuera del documento:
 <!DOCTYPE root SYSTEM 
        "http://...">
  • Primero lee el externo, depués el interno


Declaraciones ELEMENT

  • Especifican qué pueden contener los elementos
  • No soporte directo de namespaces
  • Los elementos pueden contener:
    • Nada
 <!ELEMENT name EMPTY>
    • Texto
 <!ELEMENT name (#PCDATA)>
    • Texto y nuevos elementos (hijos)
 <!ELEMENT name
  (#PCDATA|elem1|elem2|...)*>
    • Hijos
 <!ELEMENT name
  (elem1|elem2|...)*>

Sintaxis de declaraciones ELEMENT

  • Secuencia de hijos
 <!ELEMENT name (ch1, ch2)>
  • Elección entre hijos
 <!ELEMENT name (ch1|ch2)>
  • Secuencia de hijos opcionales
 <!ELEMENT name
    (ch?, ch2?, ch3?)>
  • Cero o más ...
 <!ELEMENT name (child*)>
  • Uno o más
 <!ELEMENT name (child+)>

Se pueden combinar las posibilidades

  • Elección entre secuencias:
 ((a, b) | (c, d)
  • Secuencia de opciones
 ((a | b), (c | d))
  • Secuencia opcional
 (a, b, c)?

No se puede mezclar , y | en una lista. Usa paréntesis para desambiguar.

Restricciones

  • Un modelo mixto no puede restringir cuántas veces y el orden en que aparecen los hijos. Sólo los elementos permitidos.
  • Un modelo de sólo elementos requiere que cada elemento hijo de la instancia coincida exactamente con una parte del modelo. Lo siguente no es legal:
 (A?, A?)

Comodines

  • Un elmento que puede contener cualquier elemento declarado en el DTD o texto
 <!ELEMENT name ANY>

Declaración de atributos de un elemento

 <!ATTLIST ename
   attr1 type1 default1
   attr2 type2 default2
   ...>

Tipos de atributos

  • CDATA
sin restricción
  • ID
un identificador
  • IDREF
tiene que coincidir con un ID de un elemento.
  • NMTOKEN
nombre o número
  • IDREFS
uno o más IDs separados por espacios
  • NMTOKENS
uno o más separados por espacios

Atributos por defecto

  • Valor requerido, lo insertará el parser
  #FIXED "value"
  • Atributo requerido, pero sin valor específico
 #REQUIRED
  • Atributo no requerido, con valor por defecto
 "valor"
  • Atributo no requerido, sin valor por defecto:
 #IMPLIED

Declaración de entidades

  • Declaran un nombre para texto que se insertará en el documento
 <!ENTITY nombreEntidad "valorEntidad">
  • Se insertan así:
 &nombreEntidad;

Entidades parámetro

<!ENTITY %datos_personales "nombre|telefono|email">
<!ENTITY %empleado (departamento, %datos_personales)>

Entidades y notaciones

Combinar datos textuales y no textuales.

 <!ELEMENT logo EMPTY>
 <!ATTLIST logo imagen ENTITY #REQUIRED>
 <!NOTATION GIF SYSTEM "visor_sistemas">
 <!ENTITY logo_centro SYSTEM "http://www.miempresa.com/logo.gif">
    NDATA GIF>


<logo imagen="logo_centro" />


Ejercicios DTDs

Icon activity.jpg

Ejercicios DTDs

Realiza los ejercicios de DTDs de la siguiente página de Bartolomé Sintes Marco: http://www.mclibre.org/consultar/xml/ejercicios/dtd.html






Uso de Namespaces

(Ejemplos de

Motivación

  • Objetivo: resolver conflictos cuando coinciden elementos con el mismo nombre, pero con diferente significado.
  • Ocurre con frecuencia cuando construimos nuevas estructuras desde definiciones existentes.
  • Recomendación del W3C. Se usa para identificar el origen de cada elemento: http://www.w3.org/TR/REC-xml-names/

Ejemplo 1

<table>
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>
This XML carries information about a table (a piece of furniture):

Ejemplo 2

<table>
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

Declaración de namespaces

  • A cada namespace se le asigna un prefijo
  • El prefijo hace referencia a una URI (Uniform Resource Identifier), que no suele tener equivalencia física (convención para crear espacios únicos)
<root>
 
<h:table xmlns:h="http://www.w3.org/TR/html4/">
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>
 
<f:table xmlns:f="http://www.w3schools.com/furniture">
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
 
</root>

Declaración al inicio

<root
xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3schools.com/furniture">
 
<h:table>
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>
 
<f:table>
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
 
</root>

Namespace por defecto

  • Sin prefijo: los elementos sin especificación del namespace están en el namespace por defecto, excepto si el elemento que no tiene prefijo es hijo de un elemento que sí que lo tiene.
<table xmlns="http://www.w3.org/TR/html4/">
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

Namespace vacío

  • Si un elemento no va a estar asociado a ningún namespace, se puede definir un namespace vacío.

Namespaces y atributos

  • La declaración de namespaces no tienen efecto sobre los atributos
  • Si los atributos no están calificados, no se asocian a ningún namespace.