SlideShare uma empresa Scribd logo
1 de 47
Datos en la Web

           Sebastian Javier Galiano
           LCC – UNR
           Rosario - 2008
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
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.
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???.
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.
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)
Datos Semiestructurados

Ejemplos:

 Nombre: “Pedro” – Teléfono: 4589465 – Correo: Pedro@gmail.com


 Nombre: “Franco” – Celular: 153854658 – Profesión: Estudiante


 Primer Nombre: “Juan” – Segundo Nombre: “Carlos” – Teléfono
 trabajo: 4568594 - Apellido: “Cañones”

 “Javier Mustachio” - Edad: 56 – Correo: hghsg@inet.com
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)
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
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.
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)
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
XML: Extensible Markup Language

             Ejemplos Usos de Atributos

Ejemplo 1:

    < receta >
       <ingrediente cantidad = “100ml”>
          < nombre > leche < /nombre>
       < / ingrediente>
       <ingrediente cantidad = “200g”>
          < nombre > azucar < /nombre>
       < / ingrediente>
    < /receta>
XML: Extensible Markup Language

             Ejemplos Usos de Atributos

Ejemplo 2:

    < receta >
       <ingrediente cantidad-tamaño = “100”
                      cantidad-unidad = “ml” >
       < nombre > leche < /nombre>
       < / ingrediente>
       <ingrediente cantidad-tamaño = “200”
                     cantidad-unidad = “g” >
          < nombre > azucar < /nombre>
       < / ingrediente>
    < /receta>
XML: Extensible Markup Language

             Ejemplos Usos de Atributos

Ejemplo 3:

    < receta >
       <ingrediente >
          < unidad = “ml” > 250 < /unidad >
          < nombre > leche < /nombre>
       < / ingrediente>
       <ingrediente >
          < unidad = “g” > 200 < /unidad >
          < nombre > azucar < /nombre>
       < / ingrediente>
    < /receta>
XML: Extensible Markup Language


Además:

Se permiten comentarios:

                < !-- Comentario -- >

Algunas restricciones:

    Marcas anidadas correctamente
•




    Atributos únicos
•




    Case Sensitive
•
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.
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
Un documento XML como un árbol



                     <addressbook>
                     <person>
                     <name>juan</name>
                     <phone>5551122</phone>
                     </person>
                     <person>
                     <name>pedro</name>
                     <phone>2218899</phone>
                     </person>
                     </addressbook>
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)
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;)
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;))
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.
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
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
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>
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>
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>
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>
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>
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>
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>
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>
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)>
XML : DTD

                 Atributos: ejemplo
         lavadora.dtd                lavadora.xml
<!ELEMENT lavadora EMPTY>   <?xml version=”1.0”?>
<!ATTLIST lavadora          <!DOCTYPE lavadora
 carga NMTOKEN #IMPLIED       SYSTEM “lavadora.dtd”>
 marca CDATA #IMPLIED       <lavadora
 voltaje NMTOKENS            carga=”frontal”
    #REQUIRED>               marca=”Samsung 10XE”
                             voltaje=”210V 110V”/>
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)>

                                 
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>

                                 
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
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.
XML Schema

             Ejemplo Simple
                       note.xsd
<?xml version=quot;1.0quot;?>
<xsd:schema
   xmlns:xsd=quot;http://www.w3.org/2001/XMLSchemaquot;
   xmlns=quot;http://www.example.comquot;
   targetNamespace=quot;http://www.example.comquot;
   elementFormDefault=quot;qualifiedquot;>

<xsd:element name=quot;notequot;>
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element name=quot;toquot; type=quot;xsd:stringquot;/>
   <xsd:element name=quot;fromquot; type=quot;xsd:stringquot;/>
   <xsd:element name=quot;headingquot; type=quot;xsd:stringquot;/>
   <xsd:element name=quot;bodyquot; type=quot;xsd:stringquot;/>
  </xsd:sequence>
 </xsd:complexType>
</xsd:element>
</xsd:schema> 
 
XML Schema

       Ejemplo Simple + doc.
                       note.xsd
<xsd:element name=quot;notequot;>
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element name=quot;toquot; type=quot;xsd:stringquot;/>
   <xsd:element name=quot;fromquot; type=quot;xsd:stringquot;/>
   <xsd:element name=quot;headingquot; type=quot;xsd:stringquot;/>
   <xsd:element name=quot;bodyquot; type=quot;xsd:stringquot;/>
  </xsd:sequence>
 </xsd:complexType>
</xsd:element


                       note.xml
<?xml version=”1.0”?>
<note>
 <to>Juan</to>
 <from>Miguel</from>
 <heading>Llama a X</heading>
 <body>X te busca urgente</body>
</note>
XML Schema

                                note.xsd
         <xsd:element name=quot;notequot;>
XML       <xsd:complexType>
           <xsd:sequence>
Schema      <xsd:element name=quot;toquot; type=quot;xsd:stringquot;/>
            <xsd:element name=quot;fromquot; type=quot;xsd:stringquot;/>
            <xsd:element name=quot;headingquot; type=quot;xsd:stringquot;/>
            <xsd:element name=quot;bodyquot; type=quot;xsd:stringquot;/>
           </xsd:sequence>
          </xsd:complexType>
         </xsd:element


                                note.dtd

DTD      <!ELEMENT note (to,from,heading,body)>
         <!ELEMENT to (#PCDATA)>
         <!ELEMENT from (#PCDATA)>
         <!ELEMENT heading (#PCDATA)>
         <!ELEMENT body (#PCDATA)>
XML Schema
                                note2.xsd
         <xsd:element name=quot;notequot;>
          <xsd:complexType>
           <xsd:sequence>
XML         <xsd:element name=quot;toquot; type=quot;xsd:stringquot;/>
            <xsd:element name=quot;priorityquot; type=quot;xsd:integerquot;/>
Schema      <xsd:element name=quot;headingquot;>
             <xsd:simpleType>
              <xsd:restriction base=quot;xsd:stringquot;>
               <xsd:maxLength value=quot;10quot;/>
              </xsd:restriction>
             </xsd:simpleType>
            </xsd:element>
            <xsd:element name=quot;bodyquot; type=quot;xsd:stringquot;/>
           </xsd:sequence>
          </xsd:complexType>
         </xsd:element>



DTD                             note2.dtd
         <!ELEMENT note (to,from,heading,body)>
         <!ELEMENT to (#PCDATA)>
         <!ELEMENT priority (#PCDATA)>
         <!ELEMENT heading (#PCDATA)>
         <!ELEMENT body (#PCDATA)>
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>
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.
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
Bibliografía:


http://ict.udlap.mx/people/carlos/
http://www.tejedoresdelweb.com/307/channel.html
http://www.w3c.es/
http://www.dcs.bbk.ac.uk/~ptw/teaching/ssd/toc.html
http://www.cis.upenn.edu/~db/tutorials.html
http://en.wikipedia.org/wiki/Main_Page

Video Introductorio:

            www.youtube.com/watch?v=-4CV05HyAbM

Mais conteúdo relacionado

Mais procurados (19)

Xml
XmlXml
Xml
 
XML y JAVA
XML y JAVAXML y JAVA
XML y JAVA
 
Lenguaje XML
Lenguaje XMLLenguaje XML
Lenguaje XML
 
El lenguaje html
El lenguaje htmlEl lenguaje html
El lenguaje html
 
Html
HtmlHtml
Html
 
HTML 2011
HTML 2011HTML 2011
HTML 2011
 
Introduccion al xml
Introduccion al  xmlIntroduccion al  xml
Introduccion al xml
 
Diseño de páginas Web con HTML
Diseño de páginas Web con HTMLDiseño de páginas Web con HTML
Diseño de páginas Web con HTML
 
Conociendo mas sobre HTLM
Conociendo mas sobre HTLMConociendo mas sobre HTLM
Conociendo mas sobre HTLM
 
PresentacióN Html
PresentacióN HtmlPresentacióN Html
PresentacióN Html
 
Archivo xml
Archivo xmlArchivo xml
Archivo xml
 
Archivo xml
Archivo xmlArchivo xml
Archivo xml
 
Lenguaje Html
Lenguaje Html Lenguaje Html
Lenguaje Html
 
Html
HtmlHtml
Html
 
El lenguaje html
El lenguaje htmlEl lenguaje html
El lenguaje html
 
Tutorial de DTD en PDF
Tutorial de DTD en PDFTutorial de DTD en PDF
Tutorial de DTD en PDF
 
Introducción al lenguaje HTML
Introducción al lenguaje HTMLIntroducción al lenguaje HTML
Introducción al lenguaje HTML
 
05 Introduccion a HTML
05 Introduccion a HTML05 Introduccion a HTML
05 Introduccion a HTML
 
LENGUAJE HTML
LENGUAJE HTMLLENGUAJE HTML
LENGUAJE HTML
 

Semelhante a Datos En La Web - Clase 1

Semelhante a Datos En La Web - Clase 1 (20)

XML de A a Z
XML de A a ZXML de A a Z
XML de A a Z
 
Xml
XmlXml
Xml
 
Tutorial XML
Tutorial XMLTutorial XML
Tutorial XML
 
XML en .NET
XML en .NETXML en .NET
XML en .NET
 
Unidad 1 lenguajes de marcas
Unidad 1   lenguajes de marcasUnidad 1   lenguajes de marcas
Unidad 1 lenguajes de marcas
 
¿Qué es la Web Semántica?
¿Qué es la Web Semántica?¿Qué es la Web Semántica?
¿Qué es la Web Semántica?
 
Videoconferencia
VideoconferenciaVideoconferencia
Videoconferencia
 
Xml
XmlXml
Xml
 
Diferencias entre XML y HTML
Diferencias entre XML y HTMLDiferencias entre XML y HTML
Diferencias entre XML y HTML
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
 
Qué es xhtml
Qué es xhtmlQué es xhtml
Qué es xhtml
 
Colima2000
Colima2000Colima2000
Colima2000
 
Xml On Rails
Xml On RailsXml On Rails
Xml On Rails
 
Introducción xml
Introducción xmlIntroducción xml
Introducción xml
 
Xml presentacin
Xml presentacinXml presentacin
Xml presentacin
 
Presentación1 bricio vera
Presentación1 bricio veraPresentación1 bricio vera
Presentación1 bricio vera
 
Practica xml
Practica xmlPractica xml
Practica xml
 
Programacion
ProgramacionProgramacion
Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Introducción a XML: Sintaxis y documentos bien formados
Introducción a XML: Sintaxis y documentos bien formadosIntroducción a XML: Sintaxis y documentos bien formados
Introducción a XML: Sintaxis y documentos bien formados
 

Datos En La Web - Clase 1

  • 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)
  • 7. Datos Semiestructurados Ejemplos: Nombre: “Pedro” – Teléfono: 4589465 – Correo: Pedro@gmail.com Nombre: “Franco” – Celular: 153854658 – Profesión: Estudiante Primer Nombre: “Juan” – Segundo Nombre: “Carlos” – Teléfono trabajo: 4568594 - Apellido: “Cañones” “Javier Mustachio” - Edad: 56 – Correo: hghsg@inet.com
  • 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
  • 13. XML: Extensible Markup Language Ejemplos Usos de Atributos Ejemplo 1: < receta > <ingrediente cantidad = “100ml”> < nombre > leche < /nombre> < / ingrediente> <ingrediente cantidad = “200g”> < nombre > azucar < /nombre> < / ingrediente> < /receta>
  • 14. XML: Extensible Markup Language Ejemplos Usos de Atributos Ejemplo 2: < receta > <ingrediente cantidad-tamaño = “100” cantidad-unidad = “ml” > < nombre > leche < /nombre> < / ingrediente> <ingrediente cantidad-tamaño = “200” cantidad-unidad = “g” > < nombre > azucar < /nombre> < / ingrediente> < /receta>
  • 15. XML: Extensible Markup Language Ejemplos Usos de Atributos Ejemplo 3: < receta > <ingrediente > < unidad = “ml” > 250 < /unidad > < nombre > leche < /nombre> < / ingrediente> <ingrediente > < unidad = “g” > 200 < /unidad > < nombre > azucar < /nombre> < / ingrediente> < /receta>
  • 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)>
  • 35. XML : DTD Atributos: ejemplo lavadora.dtd lavadora.xml <!ELEMENT lavadora EMPTY> <?xml version=”1.0”?> <!ATTLIST lavadora <!DOCTYPE lavadora  carga NMTOKEN #IMPLIED   SYSTEM “lavadora.dtd”>  marca CDATA #IMPLIED <lavadora  voltaje NMTOKENS  carga=”frontal”     #REQUIRED>   marca=”Samsung 10XE”  voltaje=”210V 110V”/>
  • 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.
  • 40. XML Schema Ejemplo Simple note.xsd <?xml version=quot;1.0quot;?> <xsd:schema    xmlns:xsd=quot;http://www.w3.org/2001/XMLSchemaquot;    xmlns=quot;http://www.example.comquot;    targetNamespace=quot;http://www.example.comquot;    elementFormDefault=quot;qualifiedquot;> <xsd:element name=quot;notequot;>  <xsd:complexType>   <xsd:sequence>    <xsd:element name=quot;toquot; type=quot;xsd:stringquot;/>    <xsd:element name=quot;fromquot; type=quot;xsd:stringquot;/>    <xsd:element name=quot;headingquot; type=quot;xsd:stringquot;/>    <xsd:element name=quot;bodyquot; type=quot;xsd:stringquot;/>   </xsd:sequence>  </xsd:complexType> </xsd:element> </xsd:schema>   
  • 41. XML Schema Ejemplo Simple + doc. note.xsd <xsd:element name=quot;notequot;>  <xsd:complexType>   <xsd:sequence>    <xsd:element name=quot;toquot; type=quot;xsd:stringquot;/>    <xsd:element name=quot;fromquot; type=quot;xsd:stringquot;/>    <xsd:element name=quot;headingquot; type=quot;xsd:stringquot;/>    <xsd:element name=quot;bodyquot; type=quot;xsd:stringquot;/>   </xsd:sequence>  </xsd:complexType> </xsd:element note.xml <?xml version=”1.0”?> <note>  <to>Juan</to>  <from>Miguel</from>  <heading>Llama a X</heading>  <body>X te busca urgente</body> </note>
  • 42. XML Schema note.xsd <xsd:element name=quot;notequot;> XML  <xsd:complexType>   <xsd:sequence> Schema    <xsd:element name=quot;toquot; type=quot;xsd:stringquot;/>    <xsd:element name=quot;fromquot; type=quot;xsd:stringquot;/>    <xsd:element name=quot;headingquot; type=quot;xsd:stringquot;/>    <xsd:element name=quot;bodyquot; type=quot;xsd:stringquot;/>   </xsd:sequence>  </xsd:complexType> </xsd:element note.dtd DTD <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
  • 43. XML Schema note2.xsd <xsd:element name=quot;notequot;>  <xsd:complexType>   <xsd:sequence> XML    <xsd:element name=quot;toquot; type=quot;xsd:stringquot;/>    <xsd:element name=quot;priorityquot; type=quot;xsd:integerquot;/> Schema    <xsd:element name=quot;headingquot;>     <xsd:simpleType>      <xsd:restriction base=quot;xsd:stringquot;>       <xsd:maxLength value=quot;10quot;/>      </xsd:restriction>     </xsd:simpleType>    </xsd:element>    <xsd:element name=quot;bodyquot; type=quot;xsd:stringquot;/>   </xsd:sequence>  </xsd:complexType> </xsd:element> DTD note2.dtd <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT priority (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
  • 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