Personal tools
You are here: Home Documentación Charlas en el Chat XML Básico
Document Actions

XML Básico

by Lorenzo Gil Sanchez last modified 23-10-2004 11:20 PM

Imparte: Carmen Lópen Martínez. Fecha: 18 de Marzo de 2003

--> Estás hablando ahora en #gcubo
--- Tópico para #gcubo es #gcubo | Usuarios y Desarrolladores de Granada de Software Libre | All your base are belong to us | Hoy, --- charla de XML a las 22:00 ---
--- Tópico para #gcubo fijado por Pummel en Tue Mar 18 18:10:58
--- ChanServ da estatus de operador de canal a nauj27
--- malglam da estatus de operador de canal a Pummel
nauj27wenas
<-- Pummel ha salido ("Terminando cliente")
--> Pummel (~Pummel@185.Red-80-59-237.pooles.rima-tde.net) ha ingresado en #gcubo
--- malglam da estatus de operador de canal a Pummel
--- malglam da estatus de operador de canal a Pummel
nauj27está ya esto organizao?
malglammaj o menoj
malglam:)
* bitland is back (gone 00:45:43)
nauj27ok :)
MiguelQuirosMientras nadie dice otra cosa: No a la guerra
bitlandhola gente
Pummelmenuda tardecita que lleva el señor bigotini...su vieja....no lo soporto
malglames que se pone la ulcera a 100 cada vez que aparece
malglambueno, chicos... pues cuando querais empezamos
MiguelQuirosPos venga, que me aburro
malglampues empiezo... porque como estamos en familia no hacen falta presentaciones :)
malglampues...
malglamXML significa eXtensible Markup Language
malglamo lo que es lo mismo,Lenguaje Extensible de Etiquetas
malglamUn lenguaje de etiquetas
malglames un mecanismo para definir estructuras en un documento
malglamy Extensible significa que
malglamproporciona un estandar para añadir marcas a un documento.
malglamEn resumen, XML es un lenguaje de marcas
malglampara documentos que contienen información estructurada.
malglamtodo claro?
malglamVamos a empezar con un ejemplo:
Pummel(las preguntas a mi, que se supone que soy el moderador de todo esto)
malglam<?xml version="1.0" encoding="ISO-8859-1"?>
malglam<libro>
malglam<portada>
malglam<titulo>La Cuarta Taifa</titulo>
malglam<autor>Juan Julian Merelo Guervos</autor>
malglam</portada>
malglam<contenido>
malglam<capitulo numero="1" titulo="De como una ciudad se acosto en el siglo XX, y se levanto en el XXI">
malglamIgual que todo el mundo recuerda dónde estaba y qué hacía
malglamcuando el primer hombre puso el pie en Marte,
malglamos sugiero que miréis a vuestro alrededor,
malglamporque querréis recordar lo mismo cuando escuchéis lo que voy a deciros.
malglam</capitulo>
malglam</libro>
malglamese es un ejemplo de lo que podría ser un fichero xml
malglamLa primera línea del ejemplo sirve para especificar que lo que sigue es XML.
malglamEl encoding indica que el texto es Latin-1, o lo que es lo mismo,
malglampodremos escribir ñ y acentos.
malglamLuego nos encontramos unas cuantas etiquetas
malglamque hemos definido para darle estructura al documento.
malglamPor ejemplo <libro>, <portada>, <titulo> son etiquetas.
malglamLas etiquetas tienen un nombre y se escriben entre los símbolos '<' y '>'
malglamLas etiquetas obligatoriamente tienen una marca de principio y otra de fin.
malglam</libro>, por ejemplo, es una marca de fin.
malglamLo que hay dentro es el contenido de la etiqueta.
malglamHay etiquetas que no tienen contenido y se les llama "vacias".
malglamUna etiqueta vacia se puede escribir asi <etiqueta/>
malglam<nauj27> pero en algunos casos las hay sin final no?
malglamno entiendo lo de sin final
malglamlas etiquetas o son <etiqueta>...</etiqueta>
malglamsi tienen contenido
malglamo <etiqueta/> si son vacias
malglam<nauj27> ¿no es por ejemplo html un caso particular de xml?
Pummel<nauj27> ok
malglamsi, pero es diferente el HTML estandar
malglamy el que implementan los navegadores...
malglamo el que entienden
malglamLos nombres de las etiquetas no pueden tener los siguientes símbolos:
malglam@,#,$,%,^,(,),+,?,=,/,*,; ni empezar por un número.
malglamSi nos fijamos en la marca <capitulo> vemos que además del nombre de la marca (capitulo)
malglamtiene dos atributos, que son numero y titulo.
malglamAdemás de estos componentes, en un documento XML podemos encontrar entidades,
malglamque sirven para introducir, en el contenido, los caracteres reservados.
malglamPor ejemplo, "lt" define el caracter '<'
malglam<nauj27> ¿Entonces te referias a que las etiquetas con contenido tienen de principio y de fin, pero no asi las vacias?
malglamuna etiqueta vacia es <br/>
malglampero en HTML no hace falta ponerlo
malglamporque la version HTML compatible con XML es XHTML
malglamque sí sigue el estándar de XML
malglamsi una etiqueta no tiene contenido,
malglamcomo por ejemplo, <br/> se puede abreviar así
malglamaunque también se puede poner <br><br/>
malglamqueda claro?
malglamPues como decíamos...
malglamTambién podemos definir entidades propias,
malglampor ejemplo, si usamos mucho en un documento
malglamla frase "Organizacion de Naciones Unidas",
malglampodemos definir la entidad 'onu' y
malglamllamarla &onu; dentro del contenido.
malglamLa definición de las entidades se hace dentro del DTD.
malglam<bitland> ¿y no se parece todo eso a latex, por ejemplo?
malglampues se parece en que usa marcas para darle formato al documento
malglampero sólo sirve para documentos
malglamy xml sirve para más cosas...
malglampor ejemplo, protocolos de comunicación.
malglamLatex tiene un conjunto fijo de marcas
malglampero con XML se puede definir el lenguaje que quieras
malglames un metalenguaje
--> Brock (alpho@gate7130.ugr.es) ha ingresado en #gcubo
malglamSeguimos con el DTD
malglamEn el DTD (Document Type Definition o Definición del Tipo de Documento)
malglamcomo su propio nombre indica,
malglamse define el tipo o estructura del documento.
malglamEs decir, se definen las marcas que se usaran y en qué orden,
malglamlos atributos y sus tipos y las entidades propias del documento.
malglamUn DTD para el ejemplo anterior
malglam<!ELEMENT libro (portada, contenido)>
malglam<!ELEMENT portada (titulo, autor?)>
malglam<!ELEMENT titulo (#PCDATA)>
malglam<!ELEMENT autor (#PCDATA)>
malglam<!ELEMENT contenido (#PCDATA | capitulo)+>
malglam<!ELEMENT capitulo (#PCDATA)>
malglam<!ATTLIST capitulo numero ID #REQUIRED titulo CDATA #IMPLIED>
malglam<!ENTITY onu "Organizacion de Naciones Unidas">
malglamese sería el DTD completo
malglamEn un DTD hay tres tipos de marcas:
malglamELEMENT: define las etiquetas, por ejemplo,
--> herzed (herzed@cliente-217217018150.uBRgrb01.supercable.es) ha ingresado en #gcubo
malglamla etiqueta libro tiene que contener, obligatoriamente,
malglamuna etiqueta portada y una contenido.
malglamUna y exactamente una.
malglamSin embargo, portada tiene que tener una etiqueta titulo
malglamy puede tener una etiqueta autor. Eso nos lo dice el símbolo '?'
malglamTitulo está compuesto de caracteres
--- Pummel da estatus de operador de canal a herzed
malglamEl símbolo + nos dice que tiene que ser un elemento o más
malglamy el símbolo * nos dice que tiene que tener cero o más.
--- herzed elimina estatus de operador de chanal de bitland
--- herzed elimina estatus de operador de chanal de enlavin
malglamLa coma (,) nos indica secuencia
--- herzed elimina estatus de operador de chanal de nauj27
malglamy el símbolo '|' nos indica uno y/u otro.
malglam#PCDATA nos indica caracteres.
malglamResumiendo:
malglamSi queremos tener una lista de elementos, los separamos con ','
malglamSi queremos que un elemento aparezca cero o una vez, '?'
malglamSi queremos que un elemento aparezca una o más veces, '+'
malglamSi queremos que un elemento aparezca cero o más veces, '*'
malglamSi queremos que un elemento aparezca cero o más veces, '*'
malglamSi queremos que un elemento sea vacio pondremos EMPTY
malglames fácil no?
--- herzed elimina estatus de operador de chanal de Crg
--- herzed elimina estatus de operador de chanal de herzed
malglamOtra marca que aparece en el DTD es
malglamATTLIST: Define la lista de atributos de una etiqueta.
malglamEn este caso, la etiqueta 'capitulo' tiene dos atributos:
malglamnumero que es de tipo ID,
malglamque nos dice que debe ser único para el documento,
malglamy además es obligatorio, lo cual nos lo indica el #REQUIRED
malglamtitulo, es de tipo CDATA, es decir, texto.
malglamEn este caso, el atributo no es obligatorio,
malglamlo cual nos lo indica el #IMPLIED.
malglamLos tipos de los atributos pueden ser:
--- Pummel retira voz de MiguelQuiros
malglamID el contenido es único para el documento.
malglamCDATA el contenido es texto
malglamhay más tipos de atributos, pero estos son los más usados
--> chafardix (~chafar@213-98-71-184.uc.nombres.ttd.es) ha ingresado en #gcubo
malglamLa otra marca que nos queda es
malglamENTITY: Define una entidad,
malglamen el ejemplo la entidad se llama 'onu'
malglamy el contenido es "Organización de Naciones Unidas.".
malglamEn el documento XML la referenciaremos como &onu;
Pummel¿el DTD se define en el propio documento xml o en un fichero/URL aparte?
malglamse puede hacer de las dos formas
malglamahora lo iba a contar ;)
malglamPara decirle a un documento cual es su DTD asociado hay dos formas:
malglam- Incluir en el fichero XML la siguiente línea:
malglam<!DOCTYPE libro SYSTEM "fichero.dtd">
malglamDe esta forma le indicamos que busque en el fichero "fichero.dtd"
malglamla definición del documento.
malglam- Incluir en el mismo fichero XML el DTD completo:
malglam<!DOCTYPE libro [.....]>
malglamEntre los corchetes iría todo la definición del DTD.
malglamUn documento XML puede ser válido o bien formado.
malglamUn documento es "bien formado" si sigue la sintaxis de XML.
malglamPor definición, todo documento XML es bien formado, si no, no sería XML.
malglampor ejemplo esto
malglam<etiqueta1><etiqueta2></etiqueta1></etiqueta2>
malglamno podría estar en un documento XML bien formado
malglames decir, las marcas tienen que estar correctamente anidadas
malglamUn documento es "válido" si contiene un DTD
malglamy además cumple las reglas que se especifican en ese DTD.
malglamel ejemplo de arriba sería valido
malglamporque cumple las reglas del DTD que hemos diseñado
malglamalguna duda?
malglamno? pues sigo
malglamUna vez que tenemos el documento escrito,+
malglamvamos a ver la forma de acceder a esos datos desde un programa.
malglam<bitland> ¿existe algún editor para XML?
malglamexisten muchos
malglambasta buscar en google
malglamvi y emacs tienen modos de sintaxis para xml
malglam<herzed> si, una duda. El DTD es XML?
malglamel DTD no es un documento XML
malglames un documento DTD
malglames una forma estandar de estructurar los documentos
malglamLa forma de acceder a los datos de XML desde un programa
malglames mediante las APIS
malglamExisten básicamente dos tipos de APIs para leer los datos en XML
malglamEl API tipo SAX y el API tipo DOM.
malglamLa API DOM (Document Object Model -> Modelo de Objetos del Documento)
malglamcrea una estructura en árbol que representa al documento XML
malglamy permite a la aplicación moverse por el árbol.
malglamLa API SAX (Simple API for XML -> API Simple para XML)
malglamestá basada en eventos,
malglames decir, te avisa cuando encuentra una marca determinada.
malglamEn general, este modelo no construye el árbol.
malglamLas ventajas que tiene SAX sobre DOM es que consume menos recursos,
malglamy puedes empezar a analizar el documento sin necesidad de tenerlo completo
malglamPor eso se usa mucho en protocolos de comunicaciones, por ejemplo, en Jabber.
malglamsin embargo, hay ocasiones en que es necesario usar una API de tipo DOM.
--> herzed_ (herzed@cliente-217217018150.uBRgrb01.supercable.es) ha ingresado en #gcubo
malglamImplementaciones de estas APIs son:
malglamPara Python: http://pyxml.sourceforge.net/
malglamImplementa el modelo DOM y el SAX
malglamPara Java: http://xml.apache.org/xerces2-j/index.html
malglamTambién implementa las dos APIs y además hay versión para C++
malglamhttp://xml.apache.org/xerces-c/index.html
malglamY para C, una implementación muy usada del modelo SAX
malglamhttp://expat.sourceforge.net/
malglamPara que veais que el XML se usa en la vida real,
malglam<Pummel> ¿y puedes empezar a analizar el documento sin necesidad de tenerlo completo
<-- herzed_ (herzed@cliente-217217018150.uBRgrb01.supercable.es) ha salido de #gcubo
malglamcon SAX si se puede empezar a analizar el documento antes de tenerlo completo
--> jaime (herzed@cliente-217217018150.uBRgrb01.supercable.es) ha ingresado en #gcubo
--- ChanServ da estatus de operador de canal a jaime
--- jaime elimina estatus de operador de chanal de jaime
malglamen sax la estructura del documento la has de mantener tu
malglamal contrario que en dom
malglamque se crea una estructura completa del documento en memoria
malglamentendido?
Pummelok
malglampues seguimos con los ejemplos de la vida real:
malglam- Galeon: usa un fichero XML para guardar los bookmarks.
malglam- Trillian: (mensajeria en windows) -> Guarda los contactos en formato XML.
malglam- Dia: Guarda la definición del diagrama o esquema usando XML
malglam- Glade: Guarda la definición de la interfaz de usuario en XML
malglam- Gnumeric: Guarda las hojas de cálculo en XML.
malglam- Borland C++ y Delphi: Almacena los proyectos en XML
malglamy así podríamos seguir toda la noche, pero por hoy, ya vale
malglamcomo veis, a diferencia de latex, se usa para muchas cosas más
malglamno sólo documentos
malglamPara ampliar todo esto, lo mejor es irse a la página
malglamhttp://www.xml.com
malglamo a la página del w3c,
malglamhttp://www.w3c.org/XML
malglamTambién en gnome hispano hay una charla sobre esto:
malglamhttp://www.es.gnome.org/eventos/charlairc-20011125-xml.php
malglamUn tutorial en español
malglamhttp://www.dat.etsit.upm.es/~abarbero/curso/xml/xmltutorial.html
malglamy por supuesto, nuestro amigo google ;)
malglam<MiguelQuiros> El formato nativo de OpenOffice es algo así como un XML comprimido, creo ¿no?
malglamsi
malglamse basa en el formato de documento de StarOffice
malglampero en XML
malglamDia guarda los ficheros en XML comprido con gzip
malglam<nauj27> Si yo quiero usar xml en mi aplicación ¿tengo que seguir la documentación de la api concreta que use para saber como hacerlo?
malglamclaro
malglama ver...
malglampor ejemplo, usando un API de tipo SAX
malglamla libreria implementa el parser de marcas XML
malglamy notifica a la aplicación cuando aparece un evento
malglampor ejemplo, marca que se abre o una marca que se cierra
malglamy es la aplicación la que hace el trabajo sucio
malglam<bitland> o sea, ¿que se ha convertido en un standar de facto en el software libre?
malglamcasi que si, porque es muy cómodo usar XML porque se puede editar con un simple editor de textos
malglam<nauj27> ¿y el api que hace? lee el dtd y tiene unas instrucciones para acceder a los datos o algo asi?
malglamhay APIs que ni usan el DTD
malglamla librería notifica a la aplicación (es decir lo que tú estás programando) de los eventos que van apareciendo
malglamen caso de SAX
malglamsi es DOM, se construye un árbol en memoria
malglamy tienes una serie de funciones para navegar por las etiquetas
malglamy por los atributos
malglamse ha entendido así?
malglamme apuntan por aquí que también sirve para guardar trozos de programas (serializados)
malglam<bitland> ¿cada aplicación que usa XML usa su propio DTD, está ahí la diferencia entre un bookmark de galeon y un documento de texto de openoffice, por ejemplo?
malglampues cada uno puede definir su propio DTD según le convenga
malglampero luego hay DTDs estandar
malglampor ejemplo XHTML, XMATH
malglamSVG
malglamno es XMATH, perdón, es MATHML
malglampodemos ver el DTD como los planos para construir un edificio
malglamy el XML es un edificio construido con esos planos
malglamalguna pregunta más?
malglam<bitland> ¿es una forma de escribir código para cualquier tipo de documento de cualquier aplicación?
malglames una forma para definir documentos estructurados
malglamcómo los uses luego depende de tu imaginación
malglamy tus necesidades
malglampor ejemplo, lo puedes usar como fichero de configuración de aplicaciones
malglamcomo base para construir textos
malglamcon un formato
malglam<MiguelQuiros> Los programas propietarios (Word, para entendernos) saben algo de XML? ¿Pueden leer o escribir en alguna de sus variantes?
malglamen las versiones nuevas sí lee XML
malglampero usa un DTD especial de Microsoft
malglampor lo cual no lee cualquier XML
malglamsólo el que sea valido para su DTD
malglam<bitland> ¿el formato que adopte en aplicaciones wysiwyg depende de las etiquetas, del DTD o del programa?
malglama ver el formato que adopte en cualquier aplicacion
malglamdepende del DTD
malglamque depende de lo que haya querido hacer el que lo haya diseñado
malglam<MiguelQuiros> O sea, para que XML se pueda considerar un estandar debe utilizar un DTD estandar
malglamXML es un estandar por sí mismo
malglamy los lenguajes que yo he nombrado
malglamson aplicaciones de XML
malglamen el sentido genérico
malglamXML solamente define cómo se escriben las marcas y se definen los diferentes elementos
malglampara cada aplicación especifica de XML
malglam(XHTML, RDF, MATHML, SVG, DIA...)
malglamhay que definir un DTD donde se especifica las marcas válidas
malglamy como se relacionan entre ellas
malglamy además es necesario hacer un programa que gestione ese documento
malglammás cosas
Pummelalguna pregunta mas?
Pummelo comentario?
<-- Brock (alpho@gate7130.ugr.es) ha salido de #gcubo
malglampues eso es todo
Pummelesta bien, pues, malglam, muchas gracias por la charla de esta noche, que a mas de uno seguro que nos ha aclarado muchas cosas :D
--- Pummel da voz a bitland
--- Pummel da voz a chafardix
--- Pummel da voz a Crg
--- Pummel da voz a enlavin
--- Pummel da voz a herzed
--- Pummel da voz a jaime
--- Pummel da voz a MiguelQuiros
--- Pummel da voz a nauj27
malglamha sido un placer :)
nauj27plas plas plas plas :)
enlavinplas plas plasplasplas
MiguelQuirosPlas plas plas plas. Gracias y buenas noches
bitlandplasplasplasplasplasplas :9
Pummelplas plas plas plas plas plas
<-- MiguelQuiros ha salido ("Aplicación Saliendo")
enlavinmu shula la conferencia
Pummelposi posi
nauj27muy bien malglam, ma gustao
malglamjejeje pelotas :)
<-- chafardix ha salido ("[x]chat")
enlavinO : -)
malglamespero que os haya servido de algo
Pummelahora ya me puedo enfrentar al SCORM : http://xml.coverpages.org/scorm.html, que me han encargao un seminario en el currele ....
Pummelpara definir "learning objects"
Pummelmooola XD

Powered by Plone CMS, the Open Source Content Management System Powered by GCubo Powered by Cicode

This site conforms to the following standards: