Este documento proporciona una breve reseña de la historia de la Web desde 1945 hasta el año 2000. Describe los orígenes de la Web con Vannevar Bush en 1945 y el desarrollo del hipertexto por Tim Berners-Lee en el CERN en 1980. Explica cómo la Web se difundió en círculos académicos en los años 1990 y su boom comercial a partir de 1995, con la entrada de los grandes medios en Internet en 1996-1997.
Introducción a XML: Sintaxis y documentos bien formados
Historia de la Web y XML
1. Datos en la Web
Sebastian Javier Galiano
LCC – UNR
Rosario - 2008
2. Breve reseña de la historia de la Web
1945: Vannebar Bush quot;As We may thinkquot; en el Atlantic Monthly
1980: “Enquire” de Tim Berners-Lee en el CERN; permite nodos con enlaces
1989: Information managment: una propuesta de Tim Berners-Lee
1990/91: Se materializa - Difusión en circulos académicos y en las news
1992: Varios clones del browser, port a otras plataformas, etc
1993: El 1% del tráfico por los routers de la NSF es al puerto 80.
Mosaic sale para varias plataformas.
1995: Comienza el boom a raíz del aumento de tráfico en 1994
1996/97: Los grandes medios electrónicos entran en Internet y comienza una
avalancha de .COM
1998: Netscape inicia el proyecto Mozilla
2000: Derrumbe de las acciones de las .COM
3. HTML: HyperText Markup Language
- lenguaje utilizado para describir páginas web
- describe la estructura y apariencia de un texto.
- muy útil y simple para crear documentos
Pero estos documentos no son fácilmente
procesables por programas computacionales en
caso de que tengamos que buscar información.
Posibles pérdidas de información.
4. Cual es el problema???
Necesitamos un formato de intercambio.
Debe cumplir tres características fundamentales:
debe describir los datos, por lo cual tiene que ser lo
suficientemente expresivo para lograr esto.
debe tener flexibilidad, para poder adaptarlo y/o cambiarlo
a los distintos sistemas que quieran acceder a la
información.
en el primer punto debe ser eficiente, datos
semiestructurados en la web???.
5. Datos Semiestructurados
Definición:
Lo que sea entre estructurado y no estructurado
Variables pobremente tipadas (x=1 es válido y x=”hola” también es
válido)
Un registro no necesariamente tiene que tener todos sus atributos
definidos.
Mientras por ejemplo en una base de datos relacional un campo debe
establecerse como NULL cuando no se tiene, en un ambiente de datos
semiestructurados basta con omitir dicho atributo.
Un atributo de un registro puede ser otro registro
No existe necesariamente una diferencia entre un identificador de un
campo y el valor mismo de este.
6. Datos Semiestructurados
Otras definiciones:
Datos que no son totalmente desestructurados pero tampoco
están estrictamente tipados. - (Abiteboul – 1997 )
Datos autodescriptivos, donde su esquema está implícito y
requiere un análisis previo. - (Buneman – 1997)
Datos con una estructura irregular, poco restrictivos o incluso
cambiantes. - (Suciu – 1998)
8. Datos Semiestructurados
La estructura es irregular: faltante o adicional información (etiquetas)
Partes de los datos carecen de estructura (imagenes)
Su estructura con frecuencia puede variar
Los nuevos datos pueden no respetar la estructura ya existente
La estructura es larga y complicada
El dato y la información sobre el mismo (metadatos) no se pueden separar
Son dificiles de adaptar a los modelos convencionales (modelos de datos
fuertemente tipados)
9. XML: Extensible Markup Language
XML es un nuevo standar adoptado por la W3C para complementar
html para el intercambio de información en la web.
Originalmente surge como un lenguaje de marcado para documentos, no como un
•
lenguaje de base de datos.
Los documentos tienen quot;tagsquot; que brindan información acerca de las diferentes
•
secciones de los documentos.
Ej. <title> XML </title> <slide> Introduction …</slide>
Se derivó del lenguaje SGML (Standard Generalized Markup Language), pero
•
todavía más fácil de usar.
Es Extensible
•
Separación de datos y formato
•
La posibilidad de crear nuevos tags y mezclarlos permite el intercambio de datos,
•
no solo de documentos Ej. Web services
10. XML: Extensible Markup Language
En términos más fáciles:
http://www.xml.org/xml/xmlfaq.shtml
* XML es una forma de poner información estructurada en un
archivo.
* XML se parece externamente a HTML, pero no lo es. No hay
etiquetas predefinidas, por lo cual pueden definirse nuevas
etiquetas. Las estructuras pueden anidarse sin límite de profundidad.
* XML es texto, pero no para ser leído por un humano.
* XML es una familia de tecnologías.
* XML es verborrágico, pero no importa porque se puede
comprimir.
* XML es nuevo, pero no tan nuevo, porque deriva de SGML.
* XML es freeware.
11. XML: Extensible Markup Language
Síntaxis - Elementos:
<persona> Tag inicial
</persona> Tag final
“Juan” Nodo textual
<persona/> Nodo vacío
Todo lo que esté entre <> es tomado como texto.
Se le llama PCDATA (Parsed Character Data)
12. XML: Extensible Markup Language
Síntaxis – Atributos:
Usan comillas simples o dobles:
< e a1 = ”v1” a2 = ”v2” ... an = ”vn” >
...
< /e >
- Los identificadores ( ai ) no está repetidos y no se conserva el
orden.
- Un identificador es una secuencia de letras, números ó '-' , que
comienza con una letra de largo >1
- v1,v2,...,vn son texto
16. XML: Extensible Markup Language
Además:
Se permiten comentarios:
< !-- Comentario -- >
Algunas restricciones:
Marcas anidadas correctamente
•
Atributos únicos
•
Case Sensitive
•
17. XML: Extensible Markup Language
Se puede introducir un mecanismo de identificación universal de
algunos nombres para usarlos como marcas o no duplicarlos.
<club xmlns:Arg = “dklash”>
....
<Arg:jugador><Arg:nombre>Seba </Arg:nombre></Arg:jugador>
....
< /club >
<something></something> es equivalente a <something/>
Decimos que el documento está “Bien Formado” si se
cumplen todas estas reglas.
18. Un documento XML como un árbol
Es posible ver todo documento XML como un árbol:
* La raíz es el elemento raíz
* Los nodos internos son elementos o atributos
* Los nodos externos (hojas) son texto o elementos
vacíos.
* Los hijos de un nodo elemento pueden ser elementos,
texto o atributos
* Los hijos de un nodo atributo sólo pueden ser texto
* El orden de los hijos de un nodo es importante y debe
ser conservado
19. Un documento XML como un árbol
<addressbook>
<person>
<name>juan</name>
<phone>5551122</phone>
</person>
<person>
<name>pedro</name>
<phone>2218899</phone>
</person>
</addressbook>
20. Qué es un parser XML???
Un “Parser” es un módulo, biblioteca o programa que se
ocupa de transformar un archivo de texto en una
representación interna. En el caso de XML, como el
formato siempre es el mismo, no necesitamos crear un
parser cada vez que hacemos un programa, hay muchos
parsers disponibles.
Se clasifican en:
- Sax (Simple Api para XML)
- DOM (Document Object Model)
21. SAX
Tiene una interfaz del estilo:
saxParse( documento, f_inicio_elemento, f_fin_elemento, f_texto )
Por ejemplo, en el documento:
<p>Hola <b>mundo</b></p>
saxParse( documento, fstart, fend, ftext )
Si ejecuto:
Se producen las siguientes invocaciones:
fstart(http://www.w3.org/TR/REC-xml-names/quot;pquot;)
ftext(quot;Holaquot;)
fstart(quot;bquot;)
ftext(quot;mundoquot;)
fend(quot;bquot;)
fend(quot;pquot;)
22. DOM
Tiene una interfaz del estilo:
nodoRaiz = domParse( documento )
Produce un árbol. Lo lee completo en memoria.
Puede buscar nodos, tiene algunas funciones que se llaman igual en
varios lenguajes.
Si seguimos el ejemplo anterior:
<p>Hola <b>mundo</b></p>
Produciría algo así:
(p quot;Holaquot; (b quot;mundoquot;))
23. SAX vs DOM
SAXParser:
más versátil.
más veloz.
menos potente.
Requiere de mayor programación hacer algo útil con ella, pero
puede ser muy buena idea si por ejemplo, lo que interesa es rescatar
un fragmento de un documento, buscar sólo un elemento en
particular.
DOMParser:
es menos versátil.
más lento.
más potente.
El DOMParser me entrega el árbol construído y listo, así que no
necesito nada más para funcionar.
24. XML: Document Schema
Los documentos pueden ser validados contra una
especificación. Estas especificaciones son los esquemas.
Definen qué información puede estructurar un documento XML,
así como los tipos de datos posibles para los distintos
elementos y atributos.
Los documentos XML no necesariamente tienen asociado un
esquema, sin embargo son importantes para el intercambio de
infomación.
Existen dos mecanismos para definir estos esquemas:
* DTD (Document Type Definition)
* XML Schema
Se dice que un documento xml es válido si está bien
formado y tiene asociado a él uno de estos dos esquemas
25. XML : DTD
Que describe una DTD???
Elementos
Cuales son los tags permitidos
Cual es el contenido de cada tag
Estructura
En que orden van los tags en el documento
Anidamiento
Cuales tags van dentro de cuales
Un DTD Restringe la información en un documento xml en el
sentido del aspecto, no del tipo
26. XML : DTD
Un elemento tiene
ejemplo.dtd
contenido ELEMENT,
<!ELEMENT mensaje
si solo puede
(urgente?, asunto,
cuerpo)>
contener a otros
<!ELEMENT asunto
(#PCDATA)>
elementos,
<!ELEMENT cuerpo
opcionalmente
(cita|#PCDATA)*>
<!ELEMENT cita
separados por
(#PCDATA)>
espacios en blanco.
<!ELEMENT urgente
EMPTY>
27. XML : DTD
ejemplo.dtd
Un elemento tiene
<!ELEMENT mensaje
contenido TEXT, si
(urgente?, asunto,
cuerpo)>
solo puede contener
<!ELEMENT asunto
texto
(#PCDATA)>
<!ELEMENT cuerpo
(PCDATA = printable
(cita|#PCDATA)*>
<!ELEMENT cita
character data)
(#PCDATA)>
<!ELEMENT urgente
EMPTY>
28. XML : DTD
Un elemento tiene
ejemplo.dtd
contenido MIXED, si
<!ELEMENT mensaje
(urgente?, asunto,
puede contener texto
cuerpo)>
u otros elementos
<!ELEMENT asunto
(#PCDATA)>
<!ELEMENT cuerpo
(cita|#PCDATA)*>
<!ELEMENT cita
(#PCDATA)>
<!ELEMENT urgente
EMPTY>
29. XML : DTD
Un elemento tiene
ejemplo.dtd
contenido EMPTY, si
<!ELEMENT mensaje
(urgente?, asunto,
no puede contener
cuerpo)>
otros elementos
<!ELEMENT asunto
(#PCDATA)>
<!ELEMENT cuerpo
(cita|#PCDATA)*>
<!ELEMENT cita
(#PCDATA)>
<!ELEMENT urgente
EMPTY>
30. XML : DTD
Ejemplos documentos 1/4
ejemplo.dtd ok1.xml
<?xml version=”1.0”?>
<!ELEMENT mensaje
<!DOCTYPE mensaje
(urgente?, asunto,
SYSTEM “asunto.dtd”>
cuerpo)>
<mensaje>
<!ELEMENT asunto
<urgente/>
(#PCDATA)>
<asunto>
<!ELEMENT cuerpo
Agenda del curso
(cita|#PCDATA)*>
</asunto>
<!ELEMENT cita
<cuerpo>
(#PCDATA)>
<cita>
<!ELEMENT urgente
Por favor enviar agenda
EMPTY>
</cita>
Te envio la agenda ahora
</cuerpo>
</mensaje>
31. XML : DTD
Ejemplos documentos 2/4
ejemplo.dtd ok2.xml
<!ELEMENT mensaje <?xml version=”1.0”?>
(urgente?, asunto, <!DOCTYPE mensaje
cuerpo)> SYSTEM “asunto.dtd”>
<!ELEMENT asunto <mensaje>
(#PCDATA)> <asunto>
<!ELEMENT cuerpo Agenda del curso
(cita|#PCDATA)*> </asunto>
<!ELEMENT cita <cuerpo>
(#PCDATA)> Te envio la agenda ahora
<!ELEMENT urgente </cuerpo>
EMPTY> </mensaje>
32. XML : DTD
Ejemplos documentos 3/4
malo1.xml
ejemplo.dtd
<!ELEMENT mensaje <?xml version=”1.0”?>
(urgente?, asunto, <!DOCTYPE mensaje
cuerpo)> SYSTEM “asunto.dtd”>
<!ELEMENT asunto <mensaje>
(#PCDATA)> <urgente>Si</urgente>
<!ELEMENT cuerpo <asunto/>
(cita|#PCDATA)*> <cita>Enviar</cita>
<!ELEMENT cita <cuerpo>
(#PCDATA)> Te envio la agenda ahora
<!ELEMENT urgente </cuerpo>
EMPTY> </mensaje>
33. XML : DTD
Ejemplos documentos 4/4
ejemplo.dtd malo2.xml
<!ELEMENT mensaje <?xml version=”1.0”?>
(urgente?, asunto, <!DOCTYPE mensaje
cuerpo)> SYSTEM “asunto.dtd”>
<!ELEMENT asunto <mensaje>
(#PCDATA)> <cuerpo>
<!ELEMENT cuerpo Te envio la agenda ahora
(cita|#PCDATA)*> </cuerpo>
<!ELEMENT cita <asunto>Test</asunto>
(#PCDATA)> </mensaje>
<!ELEMENT urgente
EMPTY>
34. XML : DTD
Orden e inclusión de elementos
ejemplo.dtd
Los DTD's
usan mucho
<! Uno o varios FirstName seguidos de
las Regexp!!!
uno o varios LastName >
<!ELEMENT nombre (FirstName+, LastName+)>
<! Cero o varios FirstName seguidos de
uno o varios LastName >
<!ELEMENT nombre (FirstName*, LastName+)>
<! cheque O BIEN efectivo O BIEN tarjeta >
<!ELEMENT pago (cheque|efectivo|tarjeta)>
<! Carta con o sin fecha >
<!ELEMENT carta (fecha?, cuerpo)>
36. XML : DTD
Repetición de elementos
biblioteca1.dtd biblioteca2.dtd
<!ELEMENT bib
<!ELEMENT bib
(libro|revista)+>
(libro|revista)+>
<!ENTITY % bibelem
<!ELEMENT libro
“titulo,autor”>
(titulo,autor)>
<!ELEMENT libro
<!ELEMENT revista
(%bibelem;) >
(titulo,autor)>
<!ELEMENT revista
<!ELEMENT titulo
(%bibelem;) >
(#PCDATA)>
<!ELEMENT titulo
<!ELEMENT autor
(#PCDATA)>
(#PCDATA)>
<!ELEMENT autor
(#PCDATA)>
37. XML : DTD
Repetición de Atributos
biblioteca1.dtd biblioteca2.dtd
<!ELEMENT bib
<!ELEMENT bib
(libro|revista)+>
(libro|revista)+>
<!ENTITY % bibattrs
<!ELEMENT libro EMPTY>
“titulo CDATA #REQUIRED
<!ATTLIST libro
editorial CDATA #REQUIRED“
titulo CDATA #REQUIRED
>
editorial CDATA #REQUIRED
<!ELEMENT libro EMPTY>
autor CDATA #REQUIRED>
<!ATTLIST libro
<!ATTLIST revista
%bibattrs;
titulo CDATA #REQUIRED
autor CDATA #REQUIRED>
editorial CDATA #REQUIRED
<!ELEMENT revista EMPTY>
numero NMTOKEN #REQUIRED>
<!ATTLIST revista
%bibattrs;
numero CDATA #REQUIRED>
38. XML : DTD
El DTD posee algunas limitaciones muy
importantes, a saber:
No puedo declarar tipos para los elementos.
•
Es dificil usarlo para expresar conjuntos de elementos
desordenados.
No impone restricciones a los identificadores y
referencias
39. XML Schema
Sinapsis: es un lenguaje mucho más sofisticado que el DTD
que pretende solventar muchos de los problemas
presentados por los DTDs
Algunas características importantes:
* Tipeo de valores
o Ej. integer, string, etc
* Restricciones de valores min/max
* Tipos definidos por el usuario
* La definición por si misma se realiza en XML
* Integra namespaces
Desgraciadamente tiene un quot;pero...quot; es significativamente
más complicado que los DTDs, de ahí que no hayan sido
ampliamente aceptados.
44. XML Schema
Tipos de tipos de datos
Singulares: primitivos o derivados
Listas: Dependientes de un solo tipo
Uniones: Listas heterogeneas (varios tipos)
Derivación de tipos
Por restriccion: string restringido a una regexp
Por listado
Por unión: tipos complejos
Tipo complejo = compuesto de tipos simples. Contiene elementos y atributos
<complexType name=quot;USAddressquot;>
<sequence>
<element name=quot;namequot; type=quot;stringquot;/>
<element name=quot;streetquot; type=quot;stringquot;/>
<element name=quot;zipquot; type=quot;decimalquot;/>
</sequence>
<attribute name=quot;countryquot; type=quot;NMTOKENquot; fixed=quot;USquot;/>
</complexType>
45. XML Schema
Si bien las DTD permiten describir documentos, un schema es
algo más restrictivo, más similar a un esquema de bases de
datos en que el contenido de los elementos tiene asociado un
tipo. Normalmente en XML el contenido siempre es texto. Un
schema permitiría a un procesador validar el documento por
inconsistencias de una forma más apropiada. Además, un
schema permite crear un formulario de ingreso a partir de él,
en cambio en una DTD no es posible hacer eso.
46. Jerarquía de Lenguajes
Schematron
RELAX + restricciones
+ tipos + unicidad
+ contexto
DSD
DTD
+ restricciones
soporte básico
+ estructura
para estructura SOX
+ version
+ herencia
+ tipos
XML Schema
+ restricciones
+ unicidad
+ tipos de dato