curso: xml, de los datos a la presentación julio de 2005 captiva · xml, el lenguaje

27
Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · www.captiva.es XML, el lenguaje

Upload: encarnacion-serafin

Post on 15-Jan-2015

14 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Curso: XML, de los datos a la presentaciónJulio de 2005

CAPTIVA · www.captiva.es

XML, el lenguaje

Page 2: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Estructura de un documento

XML sólo marca las reglas Tú decides qué tags usar y qué

significado/representación tendrán Componentes de un documento XML:

Elementos: <elemento> Atributos: <elemento atributo=“valor”> Entidades: <elemento>Esto es una entidad

</elemento> Componentes avanzados:

Secciones CDATA Instrucciones de procesamiento (PI)

Page 3: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Estructura de documento (II)

Ejemplo de documento XML

<?xml version="1.0" encoding="UTF-8"?> <time-o-gram pri="important"> <to>Sarah</to> <subject>Reminder</subject> <message>Don't forget to recharge K-9 <emphasis>twice a day</emphasis>. Also, I think we should have his bearings checked out. See you soon (or late). I have a date with some <villain>Daleks</villain>... </message> <from>The Doctor</from> </time-o-gram>

Page 4: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

TIME-O-GRAMPriority: importantTo: SarahSubject: ReminderDon't forget to recharge K-9 twice a day.Also, I think we should have his bearings checked out.See you soon (or late). I have a date with some Daleks...From: The Doctor

Estructura de documento (III)

XML no busca crear un documento acabado (ej Latex)

Necesita otros componentes (hojas de estilos) Ejemplo anterior “formateado” con una hoja de

estilo:

Page 5: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Estructura de documento (IV)

El documento se puede dividir en regiones Encabezado con info del documento: <?xml version=“1.0”?> Elementos

Necesitan una etiqueta de inicio y fin: <subject></subject> Se organizan jerárquicamente Siempre debe haber un elemento raíz: <time-o-gram> Cada elemento puede tener un número de atributos (modifican comportamiento,función del

elemento): <time-o-gram pri=“important”> Volviendo al ejemplo podemos ver la estructura de elementos y por su nombre

intuimos su función:

Page 6: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Estructura de documento (V)

Todos los componentes se pueden representar en árbol Elemento raíz y elemento de documento Rectángulos que cierran una rama hojas (contenido, datos del documento) Nodos (elementos y atributos)

Page 7: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Prólogo del documento Prólogo

Todo lo que se encuentra antes del elemento raíz Partes

Identificar archivo como documento XML Opcionalmente puede incluir

Indicaciones de cómo validar documento DTD Declaraciones especiales

Ejemplo de prólogo:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE time-o-gram PUBLIC "-//LordsOfTime//DTD TimeOGram 1.8//EN" "http://www.lordsoftime.org/DTDs/timeogram.dtd" [ <!ENTITY sj "Sarah Jones"> <!ENTITY me "Doctor Who"> ]>

Page 8: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Prólogo del documento (II)

Declaración XML Primera línea muy aconsejable del prólogo. Formato:

<?xml nombre1 = “valor1” nombre2 = “valor2”?> Propiedades válidas:

version Número de versión: 1.0 ó 1.1 (evolución Unicode)

encoding Define codificación del documento: p.e.: UTF-8, iso-8859-1, US-ASCII

standalone ‘yes’ o ‘no’ Indica si se incluyen entidades externas o documentos DTD

Siempre se debería indicar la versión como mínimo

Page 9: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Prólogo del documento (III)

Declaración de tipo de documento Segunda línea del prólogo Formato:

<!DOCTYPE elemento-raiz uri-del-dtd [

subconjunto-interno]>

Incluir esta línea implica que se usara un documento DTD para validar

La URI especifica al parser XML cómo debe encontrar el DTD del documento

El subconjunto interno es un sitio para poner declaraciones a utilizar en el documento (~variables) y partes de un DTD

Page 10: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Elementos Son los componentes de un documento Tipos

Contenedor<nombre-elemento atributo1=“valor2” atributo2=“valor2” >

Contenido</nombre-elemento>

Vacío<nombre-elemento atributo1=“valor2” atributo2=“valor2” />

Reglas para el nombre: Debe comenzar por una letra o _ y puede contener letras, números, guiones, puntos y

guiones bajos. Se puede incluir cualquier letra soportada en unicode (griegas, árabes, japonesas, …) No permitidas: punto y coma, espacio, tabulador, nueva linea, signo igual, comillas

dobles o simples Los nombres son case-sensitive: <EjemplO> != <EJEMPLO> != <ejemplo> No puede haber separación entre < y nombre, pero puede haber espacios adicionales

en cualquier otro sitio :<personal departamento=“finanzas”> <miembro > Perico de los Palotes</miembro ></personal

>

Page 11: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Elementos (II)

Reglas Etiqueta de cierre antes que la de apertura Ambas etiquetas en el mismo padre

<a>Esto está <b>mal</a></b><a>Esto está <b>bien</b></a>

En el texto no se permite “<“ o “>” Utilizar referencias a entidades

<a>Esto dará un < error </a><a>Esto está &lt; bien </a>

HTML elimina los espacios extra. XML los conserva por defecto.

Page 12: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Atributos Sintaxis

nombre = “valor” ó nombre = ‘valor’

Utilidad Definir/diferenciar un elemento Modificar su comportamiento No orientados a contener datos Contenido de elemento

Número de argumentos ilimitado pero únicos por elemento<equipo persona=“pedro” persona=”juan”/> MAL<equipo persona1=“pedro” persona2=”juan”/> BIEN

Alternativa<equipo>

<persona>pedro</persona><persona>juan</persona>

</equipo>

En la cadena de valor se pueden incluir comillas de dos formasnombre = ‘valor “x”’ ó nombre = ‘valor &quot;x&quot;’

A través de DTD o XMLSchema podemos restringir los valores de los atributos (conjunto finito, tipo de datos, único para un tipo elemento, etc.)

Page 13: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Atributos (II)

Nombres reservados xml:lang idioma del contenido de elem xml:space ¿se han de conservar

espacios extras? xml:link XLink xml:attribute XLink

Page 14: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Namespaces Agrupación de nombres de elementos y atributos de diferentes tipos documentos Ejemplo de uso: combinar formulas MathML dentro de documento XHTML Nombre cualificado

ns-prefix:local-name Declaración de uso de un namespace, atributo dentro de elemento

xmlns:name = “url” Url dependiendo del procesador no siempre se procesa. Obj Indicar el que

mantiene el namespace Todos los hijos de un elemento heredan la definición de namespace Ejemplo de uso

<?xml version="1.0" encoding="UTF-8"?><book xmlns="http://www.books.org/schemas/books" xmlns:person="http://www.persons.org/schemas/persons"> <title>Mandatory book for students</title> <author> <person:name>John Doe</person:name> <person:title>Professor</person:title> </author></book>

Page 15: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Namespaces (II)

Inconvenientes de uso Namespaces y DTDs

Un DTD no soporta uso de namespaces Por cada namespace definido Un DTD No se pueden importar más de un DTD por

documento

Solución XMLSchema

Page 16: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Entidades Son “variables” que permiten substituir contenido Declaración

<!ENTITY cliente “Perico de los Palotes”><!ENTITY telefono “<numero>100100100</numero>”>

Referencias&nombre;%nombre;

Ejemplo<?xml version=“1.0”?><!DOCTYPE message SYSTEM “/xmlstuff/dtds/message.dtd”[

<!ENTITY client “Fulanito de Tal y Cual"><!ENTITY info “Le ofrecemos la increible oferta de bla bla bla , ..."><!ENTITY contact “Ramón Rubial”>

]

<message><from>&contact;</from><to>&client;</to><subject>Increíble oferta</subject><body>&info;Atentamente &contact; </body>

</message>

Page 17: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Entidades (II)

Tipos de entidades Entidades de carácter

Predefinidas &amp; & &apos; ‘

Numeradas. Código unicode &#231; &#xe7; ç

Nombradas. Deben o definirse o incluir DTD estándar que las incluye (p.e. ISO-8879)&THORN; Þ

Entidades internas Declaradas tras DOCTYPE Más prioridad que las externas Pueden incluir referencias a otras entidades ya declaradas

Page 18: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Entidades (III) Tipos de entidades

Entidades externas Igual que las internas pero referencian a ficheros externos a través de URI Gran cantidad de texto compartido entre varios documentos<?xml version=“1.0”?><!DOCTYPE message SYSTEM “http://www.captiva.es/dtds/generico.dtd”[

<!ENTITY encabezado SYSTEM “header.xml”><!ENTITY texto SYSTEM “body.xml”><!ENTITY cierre SYSTEM “ending.xml”>

]

<message>&enc;&texto;&cierre;

</message> Se pueden usar identificadores públicos (procesador XML sabrá como encontrarlo

p.e. catálogos públicos)<!ENTITY encabezado PUBLIC “-//MIKE//FILE Catalog//EN”

“http://www.mikestuff.com/catalog.xml”>

Page 19: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Entidades (IV)

Tipos de entidades Entidades externas en bruto (unparsed entities)

Se incluye documento externo sin “parsear”

<?xml version=“1.0”?><!DOCTYPE message SYSTEM “http://www.captiva.es/dtds/generico.dtd”[

<!ENTITY foto SYSTEM “pics/fer.gif” NDATA GIF>]

<message>Éste soy yo: &foto;

</message>

Page 20: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Comentarios

Formato<!-- Aquí lo que se quiera -->

Prohibido “--” Dentro del comentario Comentarios inválidos:

<!------------------->

<!-- --Esto no vale-- -->

Page 21: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Secciones CDATA

Permiten incluir caracteres “sin secuencias de escape” Formato

<![ CDATA[ Aquí lo que se quiera ]]>

Prohibido “]]>” Puede usarse ]]&gt;

Ejemplo <comentario> El código quedaría así:

<![CDATA[ if(x[y] >= 0 && x[y] < w) {printf(“OK!\n”);

}]]>

</comentario>

Page 22: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Processing Instructions

Permiten incluir información de presentación

Último recurso P.e. generación de números de página

Sólo interpretadas por procesador específico e ignoradas por resto

Formato<?name data ?>

Ejemplos<?hazalgo xyz?> <?nuevalinea?> <?seccion a?>

Page 23: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Ejemplos (I)

Catálogo de CDs (www.w3cschools.org)<?xml version="1.0" encoding="UTF-8"?> <CATALOG> <CD> <TITLE>Eros</TITLE> <ARTIST>Eros Ramazzotti</ARTIST> <COUNTRY>EU</COUNTRY> <COMPANY>BMG</COMPANY> <PRICE>9.90</PRICE> <YEAR>1997</YEAR> </CD> <CD> <TITLE>One night only</TITLE> <ARTIST>Bee Gees</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Polydor</COMPANY> <PRICE>10.90</PRICE> <YEAR>1998</YEAR> </CD> <CD> <TITLE>Sylvias Mother</TITLE> <ARTIST>Dr.Hook</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>CBS</COMPANY> <PRICE>8.10</PRICE> <YEAR>1973</YEAR> </CD> </CATALOG>

Page 24: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Ejemplos (II) Aplicación MathML: Aplicación W3C XML para representación

matemática:<?xml version="1.0"?> <!-- <?xml-stylesheet type="text/xsl" href="mathml.xsl"?> --> <!-- Doesn't work at home --> <!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <msup> <mi>x</mi><mn>2</mn> </msup> <mo>+</mo> <mrow> <mn>4</mn><mo>&InvisibleTimes;</mo><mi>x</mi> </mrow> <mo>+</mo> <mn>4</mn> </mrow> </math>

Page 25: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Ejemplos (III) Aplicación DocBook: Aplicación OASIS XML para formato de

documentos:<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> <book> <bookinfo> <title>DocBook document example</title> <author> <firstname>Ovidiu</firstname> <surname>Predescu</surname> </author> <copyright> <year>2001</year> <holder>Ovidiu Predescu</holder> </copyright> </bookinfo> <preface> <title>Example document</title> <para>A simple DocBook example document.</para> </preface>

Page 26: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Ejemplos (IV) <chapter> <title>DocBook and XSLT-process mode for GNU Emacs/XEmacs</title> <para>The <emphasis>XSLT-process</emphasis> mode, when used with the DocBook-XSL stylesheets makes GNU Emacs/XEmacs the ideal DocBook processor.</para> <para>To find out more on how to use the <emphasis>XSLT-process</emphasis> mode for DocBook processing, point your browser to <ulink url="http://xslt-process.sourceforge.net/docbook.php">http://xslt-process.sourceforge.net/docbook.php</ulink>.</para> </chapter> </book>

Page 27: Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA ·  XML, el lenguaje

Ejemplos (V)

Microsoft Word visualizando DocBook