SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Sistemas de Información II
Tema 9. Procesamiento
de texto XML



                 Carlos Castillo
                   UPF – 2007

                                   1
Agenda

XML como texto estructurado
Procesamiento de XML
Validación de XML con DTDs




                              2
XML
Texto Estructurado



                     3
4
HTML
Lenguaje usado
para escribir
páginas Web
Inicialmente
  Estructura
Actualmente
  Presentación




                        5
Código HTML
Describe tamaño, posición, etc...




                                    6
HTML y datos
Difícil extraer el texto importante




                                      7
Pérdida de información

                     Página HTML
             <h1>Gente</h1>

             <dl>
             <dt>Perez</dt>
Despliegue                                 Extracción
             <dd>12345 – Calle 111</dd>
             <dt>González</dt>
             <dd>67889 – Calle 222</ddd>
             </dl>




                                                        8
XML: Objetivos

Describir contenido, no presentación
  Nuevos tags
  Estructuras anidadas
  Documentos autodescriptivos
Representación textual de los datos
  Para almacenamiento, trasmisión
  “Internacionalizable”
  Legible

                                       9
Puntos fundamentales

XML
  Información estructurada en un archivo.
XML es texto plano, internacionalizable.
XML es modular
  Crear aplicaciones cuando se necesiten
XML es un formato no propietario



                                            10
NO son objetivos ...

No es fácil de editar “a mano”
No está comprimido
  La compresión debe ser provista
  externamente
  Ejemplo: cierre de elemento es explícito,
  pero como es un árbol, podría no serlo.
No es directamente compatible con
HTML
  XHTML es una aplicación XML.

                                              11
Texto y Árbol

Un documento corresponde a un árbol
                                       A
<?xml version=”1.0”?>

<agenda>
 <persona>
                                               P
                               P
  <nombre>Juan</nombre>
  <fono>123</fono>
 </persona>
 <persona>
  <nombre>Pedro</nombre>                           F
                                           N
                                   F
                           N
  <fono>234</fono>
 </persona>
</agenda>
                                           P       2
                           J       1

                                                       12
Sintaxis elementos

<persona>
   Tag inicial
</persona>
   Tag final
“Juan”
   Nodo textual
<persona/>
   Nodo vacío

                              13
Sintaxis atributos
 Atributos usan comillas “dobles”
<e a1=”v1” a2=”v2” .. an=”vn”>
  ...
</e>
   a1 .. an son identificadores no repetidos,
   cuyo orden NO ES conservado.
   Identificador es una secuencia de letras,
   números o '-', que comienza con una letra,
   de largo > 1
   v1 .. vn son texto

                                                14
Ejemplo uso de atributos (1)

<menu>
  <menu­item portion=quot;250 mlquot;>
    <name>Small soft drink</name>
  </menu­item>
  <menu­item portion=quot;500 gquot;>
    <name>Sirloin steak</name>
  </menu­item>
</menu>


                                    15
Ejemplo uso de atributos (2)

<menu>
  <menu­item portion­size=quot;250”
             portion­unit=”mlquot;>
    <name>...</name> </menu­item>
  <menu­item portion­size=”500”
             portion­unit=quot;gquot;>
    <name>...</name> </menu­item>
</menu>


                                    16
Ejemplo uso de atributos (3)

<menu>
  <menu­item>
    <portion unit=”ml”>250</portion>
    <name>...</name> </menu­item>
  <menu­item>
    <portion unit=”g”>500</portion>
    <name>...</name> </menu­item>
</menu>


                                       17
Sutilezas (newlines)
<tag>n               <tag>n
<tag a=”1”n          <tag a=”1”n
b=”2”>n              b=”2”>n
Texton               Texton
Texton               Texton
</tag>                </tag>
<tag>Texto</tag>n    <tag>Texto</tag>n
</tag>                </tag>




  <tag><tag a=”1”b=”2”>Texton
  Texto</tag><tag>Texto</tag></tag>




                                           18
XML   Contenido




                  19
Procesamiento de XML
Orientado a eventos
  SAX – Simple API for XML
  Más rápido
Orientado a estructura
  DOM
  Más usable




                             20
Parsing SAX
SAXparse( start, end, text )
  Se provee de apuntadores a funciones
Start( nombre_del_tag )
  Ejecutado cada vez que se ve un tag
End()
  Cada vez que se ve un tag de cierre
Text( buffer )
  Cada vez que se lee texto


                                         21
Ejemplo de parsing en SAX

 <p>Hola <b>mundo</b></p>


 saxParse(“...”,start,text,end)
  text(quot;Holaquot;)
  start(quot;bquot;)
  text(quot;mundoquot;)
  end(quot;bquot;)
  end(quot;pquot;)




                                  22
Parsing DOM

     doc = DOMParse( “archivo.xml”)



Se lee un árbol completo en memoria
Se pueden buscar nodos
  Node = doc.getElementById()
  doc.getChild(), etc...
Las funciones se llaman igual en varios
lenguajes: Java, Perl, Python, C++,
etc...
                                          23
Ejemplo de DOM en Java
Extraer primer nodo “recipe” (receta) en un documento XML
public static void main(String[] args) {
      DOMParser p = new DOMParser();
      p.parse(args[0]);
      Document doc = p.getDocument();
      Node n = doc.getDocumentElement().getFirstChild();
      while (n!=null &&
        !n.getNodeName().equals(quot;recipequot;)) 
        {
           n = n.getNextSibling();
        }
      PrintStream out = System.out;
      out.println(quot;<?xml version=quot;1.0quot;?>quot;);
      out.println(quot;<collection>quot;);
      if (n!=null)
        print(n, out);
      out.println(quot;</collection>quot;);
  }

                                                           24
Validación de XML




                    25
Diferentes aplicaciones de XML

             personas.dtd

                                productos.dtd


         doc1.xml                       doc2.xml
<?xml version=”1.0”?>          <?xml version=”1.0”?>
<pacientes>                    <lavadoras>
 <paciente>                     <lavadora>
  <nombre>Juan</nombre>          <marca>Samsung</marca>
  <apellido>Perez</apellido>     <modelo>RX­1200</modelo>
  <edad>38</edad>               </lavadora>
 </paciente>                   ...
...                            </lavadoras>
</pacientes>


                                                            26
Documento XML bien formado




Se dice que un documento XML está bien 
 formado si es sintácticamente correcto.




                                      27
Documento XML válido




Se dice que un documento XML es válido 
    si está de acuerdo con una cierta 
     especificación de tipo de dato.



                                     28
Procesamiento


doc.xml

               Parsing
                                tipo.dtd


              Validación


            ... procesamiento



                                           29
¿Para qué sirven las DTD?
Describir un formato de datos
Usar un formato común de datos
Verificar los datos al intercambiarlos
Mantener la consistencia




                                         30
Ejemplo simple DTD 1
        ejemplo.dtd            ok1.xml
<!ELEMENT ejemplo     <!DOCTYPE ejemplo
   (#PCDATA)>          SYSTEM ejemplo.dtd>
                      <ejemplo>
                       Este es un ejemplo.
                      </ejemplo>



                               ok2.xml
                      <!DOCTYPE ejemplo
                       SYSTEM ejemplo.dtd>
                      <ejemplo/>




                                             31
Ejemplo simple DTD 2
                         ejemplo.dtd
<!ELEMENT ejemplo
   (#PCDATA)>



        malo1.xml                      malo2.xml
<!DOCTYPE ejemplo              <!DOCTYPE ejemplo
 SYSTEM ejemplo.dtd>            SYSTEM ejemplo.dtd>
<inicioejemplo>                <example>
 Este es un ejemplo.            Este es un ejemplo.
</finejemplo>                  </example>

(NO ESTA BIEN FORMADO)         (NO ES VÁLIDO)




                                                      32
¿Qué 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



                                              33
Contenido ELEMENT
                        Un elemento tiene
        ejemplo.dtd
                         contenido
<!ELEMENT mensaje
   (urgente?, asunto,
                         ELEMENT, si solo
    cuerpo)>
                         puede contener a
<!ELEMENT asunto
   (#PCDATA)>
                         otros elementos,
<!ELEMENT cuerpo
   (#PCDATA|cita)*>
                         opcionalmente
<!ELEMENT cita
   (#PCDATA)>
                         separados por
<!ELEMENT urgente
                         espacios en
   EMPTY>

                         blanco.



                                            34
Contenido TEXT
                        Un elemento tiene
        ejemplo.dtd
                         contenido TEXT, si
<!ELEMENT mensaje
   (urgente?, asunto,
                         solo puede
    cuerpo)>
                         contener texto
<!ELEMENT asunto
   (#PCDATA)>
<!ELEMENT cuerpo
                        (PCDATA = printable
   (#PCDATA|cita)*>
<!ELEMENT cita
                          character data)
   (#PCDATA)>
<!ELEMENT urgente
   EMPTY>




                                          35
Contenido MIXED
                        Un elemento tiene
        ejemplo.dtd
                         contenido MIXED,
<!ELEMENT mensaje
   (urgente?, asunto,
                         si puede contener
    cuerpo)>
                         texto u otros
<!ELEMENT asunto
   (#PCDATA)>
                         elementos
<!ELEMENT cuerpo
   (#PCDATA|cita)*>
<!ELEMENT cita
   (#PCDATA)>
<!ELEMENT urgente
   EMPTY>



                        Nota: #PCDATA debe
                          aparecer primero en la lista
                          ej.: “(#PCDATA|cita)”

                                                     36
Contenido EMPTY
                        Un elemento tiene
        ejemplo.dtd
                         contenido EMPTY,
<!ELEMENT mensaje
   (urgente?, asunto,
                         si no puede
   cuerpo)>
                         contener otros
<!ELEMENT asunto
   (#PCDATA)>
                         elementos
<!ELEMENT cuerpo
   (#PCDATA|cita)*>
<!ELEMENT cita
   (#PCDATA)>
<!ELEMENT urgente
   EMPTY>




                                            37
Ejemplos documentos 1/4
        ejemplo.dtd               ok1.xml
<!ELEMENT mensaje       <?xml version=”1.0”?>
   (urgente?, asunto,   <!DOCTYPE mensaje
   cuerpo)>                SYSTEM “asunto.dtd”>
<!ELEMENT asunto        <mensaje>
   (#PCDATA)>            <urgente/>
<!ELEMENT cuerpo         <asunto>
   (#PCDATA|cita)*>       Agenda del curso
<!ELEMENT cita           </asunto>
   (#PCDATA)>            <cuerpo>
<!ELEMENT urgente         <cita>
   EMPTY>                  Por favor enviar agenda
                          </cita>
                          Te envio la agenda ahora
                         </cuerpo>
                        </mensaje>




                                                     38
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
   (#PCDATA|cita)*>      </asunto>
<!ELEMENT cita           <cuerpo>
   (#PCDATA)>             Te envio la agenda ahora
<!ELEMENT urgente        </cuerpo>
   EMPTY>               </mensaje>




                                                     39
Ejemplos documentos 3/4
        ejemplo.dtd             malo1.xml
<!ELEMENT mensaje       <?xml version=”1.0”?>
   (urgente?, asunto,   <!DOCTYPE mensaje
   cuerpo)>                SYSTEM “asunto.dtd”>
<!ELEMENT asunto        <mensaje>
   (#PCDATA)>            <urgente>Si</urgente>
<!ELEMENT cuerpo         <asunto/>
   (#PCDATA|cita)*>      <cita>Enviar</cita>
<!ELEMENT cita           <cuerpo>
   (#PCDATA)>             Te envio la agenda ahora
<!ELEMENT urgente        </cuerpo>
   EMPTY>               </mensaje>




                                                     40
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
   (#PCDATA|cita)*>      </cuerpo>
<!ELEMENT cita           <asunto>Test</asunto>
   (#PCDATA)>           </mensaje>
<!ELEMENT urgente
   EMPTY>




                                                     41
Orden e inclusion de 
               elementos
                      ejemplo.dtd
<!­­ Uno o varios FirstName seguidos de 
     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)>




                                                 42
Orden de elementos, ejemplo
          msj.dtd                      ok.xml
<!ELEMENT mensaje            <?xml version=”1.0”?>
 (urgente?|asunto|cuerpo)>   <!DOCTYPE mensaje
<!ELEMENT asunto                SYSTEM “msj.dtd”>
   (#PCDATA)>                <mensaje>
<!ELEMENT cuerpo              <cuerpo/>
   (#PCDATA|cita)*>           <asunto/>
<!ELEMENT cita               </mensaje>
   (#PCDATA)>
<!ELEMENT urgente
   EMPTY>




                                                     43
Atributos
                             CDATA:
       lavadora.dtd
<!ELEMENT lavadora EMPTY>
                             texto
<!ATTLIST lavadora
 carga NMTOKEN #IMPLIED
                             NMTOKEN:
 marca CDATA #IMPLIED
 voltaje NMTOKENS
                             “abc...z0123..9-_:.”
  #REQUIRED>

<!­­ #IMPLIED=opcional ­­>
                             NMTOKENS:
                             NMTOKEN +
                              espacios

                             ID: empezar con letra
                             IDREF: ser un ID
                                                     44
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”/>




                                                       45
Repetición de elementos
      biblioteca1.dtd         biblioteca2.dtd
<!ELEMENT bib           <!ELEMENT bib
 (libro|revista)+>       (libro|revista)+>
<!ELEMENT libro         <!ENTITY % bibelem
 (titulo,autor)>         “titulo,autor”>
<!ELEMENT revista       <!ELEMENT libro
 (titulo,autor)>         (%bibelem;) >
<!ELEMENT titulo        <!ELEMENT revista
 (#PCDATA)>              (%bibelem;) >
<!ELEMENT autor         <!ELEMENT titulo
 (#PCDATA)>              (#PCDATA)>
                        <!ELEMENT autor
                         (#PCDATA)>

                         




                                                46
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>

                              



                                                           47
Resumen
XML = Texto estructurado
DTD = Descripción de estructura
Validar XML usando DTD




                                  48

Mais conteúdo relacionado

Mais procurados

4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)
felpe33
 
Programación avanzada etiquetas de html
Programación avanzada   etiquetas de htmlProgramación avanzada   etiquetas de html
Programación avanzada etiquetas de html
Evelyncita Perea
 
Unid2 transact sql 1
Unid2  transact sql 1Unid2  transact sql 1
Unid2 transact sql 1
ALEXSILVARSM
 
Sql server express edition 2012 libro
Sql server express edition 2012 libroSql server express edition 2012 libro
Sql server express edition 2012 libro
Osmar Zaragoza
 
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y ValidacionesDesarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Didier Granados
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sql
Julio Pari
 

Mais procurados (20)

XML con J de JDOM
XML con J de JDOMXML con J de JDOM
XML con J de JDOM
 
Estructura Pagina Web III
Estructura Pagina Web IIIEstructura Pagina Web III
Estructura Pagina Web III
 
Fundamentos de SQL
Fundamentos de SQLFundamentos de SQL
Fundamentos de SQL
 
LENGUAJE TRANSACT SQL
 LENGUAJE TRANSACT SQL LENGUAJE TRANSACT SQL
LENGUAJE TRANSACT SQL
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)
 
Programación avanzada etiquetas de html
Programación avanzada   etiquetas de htmlProgramación avanzada   etiquetas de html
Programación avanzada etiquetas de html
 
Unid2 transact sql 1
Unid2  transact sql 1Unid2  transact sql 1
Unid2 transact sql 1
 
Curso de diseño CSS
Curso de diseño CSSCurso de diseño CSS
Curso de diseño CSS
 
Tag s
Tag sTag s
Tag s
 
Sql server express edition 2012 libro
Sql server express edition 2012 libroSql server express edition 2012 libro
Sql server express edition 2012 libro
 
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y ValidacionesDesarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
 
Elianyyyyy
ElianyyyyyElianyyyyy
Elianyyyyy
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sql
 
Abd3 sql
Abd3 sqlAbd3 sql
Abd3 sql
 
Html
HtmlHtml
Html
 
Microsoft sql server
Microsoft sql serverMicrosoft sql server
Microsoft sql server
 
Taller de Base de Datos - Unidad 4 seguridad
Taller de Base de Datos - Unidad 4 seguridadTaller de Base de Datos - Unidad 4 seguridad
Taller de Base de Datos - Unidad 4 seguridad
 
Guia de css para principiantes
Guia de css para principiantesGuia de css para principiantes
Guia de css para principiantes
 
Manual intencivo de htlm
Manual intencivo de htlmManual intencivo de htlm
Manual intencivo de htlm
 
C3 lenguaje de presentación.
C3 lenguaje de presentación.C3 lenguaje de presentación.
C3 lenguaje de presentación.
 

Destaque

Bases de Datos - Parte 7/10 Almacenamiento físico
Bases de Datos - Parte 7/10 Almacenamiento físicoBases de Datos - Parte 7/10 Almacenamiento físico
Bases de Datos - Parte 7/10 Almacenamiento físico
Carlos Castillo (ChaTo)
 
Bases de Datos - Parte 6/10 Álgebra relacional
Bases de Datos - Parte 6/10 Álgebra relacionalBases de Datos - Parte 6/10 Álgebra relacional
Bases de Datos - Parte 6/10 Álgebra relacional
Carlos Castillo (ChaTo)
 

Destaque (19)

Observational studies in social media
Observational studies in social mediaObservational studies in social media
Observational studies in social media
 
Indexing
IndexingIndexing
Indexing
 
Bases de Datos - Parte 10/10 XPath
Bases de Datos - Parte 10/10 XPathBases de Datos - Parte 10/10 XPath
Bases de Datos - Parte 10/10 XPath
 
Clustering
ClusteringClustering
Clustering
 
Intro to Creative Commons (May 2015)
Intro to Creative Commons (May 2015)Intro to Creative Commons (May 2015)
Intro to Creative Commons (May 2015)
 
Big Crisis Data for ISPC
Big Crisis Data for ISPCBig Crisis Data for ISPC
Big Crisis Data for ISPC
 
Índices de Texto
Índices de TextoÍndices de Texto
Índices de Texto
 
Link-Based Ranking
Link-Based RankingLink-Based Ranking
Link-Based Ranking
 
Bases de Datos - Parte 7/10 Almacenamiento físico
Bases de Datos - Parte 7/10 Almacenamiento físicoBases de Datos - Parte 7/10 Almacenamiento físico
Bases de Datos - Parte 7/10 Almacenamiento físico
 
Characterizing the Life Cycle of Online News Stories Using Social Media React...
Characterizing the Life Cycle of Online News Stories Using Social Media React...Characterizing the Life Cycle of Online News Stories Using Social Media React...
Characterizing the Life Cycle of Online News Stories Using Social Media React...
 
Social Media News Mining and Automatic Content Analysis of News
Social Media News Mining and Automatic Content Analysis of NewsSocial Media News Mining and Automatic Content Analysis of News
Social Media News Mining and Automatic Content Analysis of News
 
Fairness-Aware Data Mining
Fairness-Aware Data MiningFairness-Aware Data Mining
Fairness-Aware Data Mining
 
Natural experiments
Natural experimentsNatural experiments
Natural experiments
 
Graph Partitioning and Spectral Methods
Graph Partitioning and Spectral MethodsGraph Partitioning and Spectral Methods
Graph Partitioning and Spectral Methods
 
Bases de Datos - Parte 3/10 Modelo ER
Bases de Datos - Parte 3/10 Modelo ERBases de Datos - Parte 3/10 Modelo ER
Bases de Datos - Parte 3/10 Modelo ER
 
Discrimination Discovery
Discrimination DiscoveryDiscrimination Discovery
Discrimination Discovery
 
Detecting Algorithmic Bias (keynote at DIR 2016)
Detecting Algorithmic Bias (keynote at DIR 2016)Detecting Algorithmic Bias (keynote at DIR 2016)
Detecting Algorithmic Bias (keynote at DIR 2016)
 
Web Information Retrieval and Mining
Web Information Retrieval and MiningWeb Information Retrieval and Mining
Web Information Retrieval and Mining
 
Bases de Datos - Parte 6/10 Álgebra relacional
Bases de Datos - Parte 6/10 Álgebra relacionalBases de Datos - Parte 6/10 Álgebra relacional
Bases de Datos - Parte 6/10 Álgebra relacional
 

Semelhante a Bases de Datos - Parte 9/10 XML

Presentación muy chula ApéndiceTecnologíaXML.ppt
Presentación muy chula ApéndiceTecnologíaXML.pptPresentación muy chula ApéndiceTecnologíaXML.ppt
Presentación muy chula ApéndiceTecnologíaXML.ppt
profesoralpe4
 

Semelhante a Bases de Datos - Parte 9/10 XML (20)

Xml
XmlXml
Xml
 
Presentación muy chula ApéndiceTecnologíaXML.ppt
Presentación muy chula ApéndiceTecnologíaXML.pptPresentación muy chula ApéndiceTecnologíaXML.ppt
Presentación muy chula ApéndiceTecnologíaXML.ppt
 
Tutorial de DTD en PDF
Tutorial de DTD en PDFTutorial de DTD en PDF
Tutorial de DTD en PDF
 
XML y JAVA
XML y JAVAXML y JAVA
XML y JAVA
 
XML - Introducción
XML - IntroducciónXML - Introducción
XML - Introducción
 
Html
HtmlHtml
Html
 
Apuntes de DTD
Apuntes de DTDApuntes de DTD
Apuntes de DTD
 
2. DTD.pdf
2. DTD.pdf2. DTD.pdf
2. DTD.pdf
 
Curso xml
Curso xmlCurso xml
Curso xml
 
Html y xml
Html   y   xmlHtml   y   xml
Html y xml
 
05introduccionhtml 100901142734-phpapp02
05introduccionhtml 100901142734-phpapp0205introduccionhtml 100901142734-phpapp02
05introduccionhtml 100901142734-phpapp02
 
Introducción al Desarrollo Web
Introducción al Desarrollo WebIntroducción al Desarrollo Web
Introducción al Desarrollo Web
 
XML - DTD - XML XSchema - XSLT / OpenERP.
XML - DTD - XML XSchema - XSLT / OpenERP.XML - DTD - XML XSchema - XSLT / OpenERP.
XML - DTD - XML XSchema - XSLT / OpenERP.
 
Xml
XmlXml
Xml
 
Clase Html + CSS
Clase Html + CSSClase Html + CSS
Clase Html + CSS
 
XML Básico
XML BásicoXML Básico
XML Básico
 
Xml
XmlXml
Xml
 
Xml
XmlXml
Xml
 
Manual XML
Manual XMLManual XML
Manual XML
 
XML de A a Z
XML de A a ZXML de A a Z
XML de A a Z
 

Mais de Carlos Castillo (ChaTo)

Mais de Carlos Castillo (ChaTo) (18)

Finding High Quality Content in Social Media
Finding High Quality Content in Social MediaFinding High Quality Content in Social Media
Finding High Quality Content in Social Media
 
When no clicks are good news
When no clicks are good newsWhen no clicks are good news
When no clicks are good news
 
Socia Media and Digital Volunteering in Disaster Management @ DSEM 2017
Socia Media and Digital Volunteering in Disaster Management @ DSEM 2017Socia Media and Digital Volunteering in Disaster Management @ DSEM 2017
Socia Media and Digital Volunteering in Disaster Management @ DSEM 2017
 
Databeers: Big Crisis Data
Databeers: Big Crisis DataDatabeers: Big Crisis Data
Databeers: Big Crisis Data
 
Content-based link prediction
Content-based link predictionContent-based link prediction
Content-based link prediction
 
Link prediction
Link predictionLink prediction
Link prediction
 
Recommender Systems
Recommender SystemsRecommender Systems
Recommender Systems
 
Finding Dense Subgraphs
Finding Dense SubgraphsFinding Dense Subgraphs
Finding Dense Subgraphs
 
Graph Evolution Models
Graph Evolution ModelsGraph Evolution Models
Graph Evolution Models
 
Text Indexing / Inverted Indices
Text Indexing / Inverted IndicesText Indexing / Inverted Indices
Text Indexing / Inverted Indices
 
Text Summarization
Text SummarizationText Summarization
Text Summarization
 
Hierarchical Clustering
Hierarchical ClusteringHierarchical Clustering
Hierarchical Clustering
 
K-Means Algorithm
K-Means AlgorithmK-Means Algorithm
K-Means Algorithm
 
Text similarity and the vector space model
Text similarity and the vector space modelText similarity and the vector space model
Text similarity and the vector space model
 
Keynote talk: Big Crisis Data, an Open Invitation
Keynote talk: Big Crisis Data, an Open InvitationKeynote talk: Big Crisis Data, an Open Invitation
Keynote talk: Big Crisis Data, an Open Invitation
 
Social Media Mining and Retrieval
Social Media Mining and RetrievalSocial Media Mining and Retrieval
Social Media Mining and Retrieval
 
What to Expect When the Unexpected Happens: Social Media Communications Acros...
What to Expect When the Unexpected Happens: Social Media Communications Acros...What to Expect When the Unexpected Happens: Social Media Communications Acros...
What to Expect When the Unexpected Happens: Social Media Communications Acros...
 
Crisis Computing
Crisis ComputingCrisis Computing
Crisis Computing
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (12)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Bases de Datos - Parte 9/10 XML

  • 1. Sistemas de Información II Tema 9. Procesamiento de texto XML Carlos Castillo UPF – 2007 1
  • 2. Agenda XML como texto estructurado Procesamiento de XML Validación de XML con DTDs 2
  • 4. 4
  • 5. HTML Lenguaje usado para escribir páginas Web Inicialmente Estructura Actualmente Presentación 5
  • 8. Pérdida de información Página HTML <h1>Gente</h1> <dl> <dt>Perez</dt> Despliegue Extracción <dd>12345 – Calle 111</dd> <dt>González</dt> <dd>67889 – Calle 222</ddd> </dl> 8
  • 9. XML: Objetivos Describir contenido, no presentación Nuevos tags Estructuras anidadas Documentos autodescriptivos Representación textual de los datos Para almacenamiento, trasmisión “Internacionalizable” Legible 9
  • 10. Puntos fundamentales XML Información estructurada en un archivo. XML es texto plano, internacionalizable. XML es modular Crear aplicaciones cuando se necesiten XML es un formato no propietario 10
  • 11. NO son objetivos ... No es fácil de editar “a mano” No está comprimido La compresión debe ser provista externamente Ejemplo: cierre de elemento es explícito, pero como es un árbol, podría no serlo. No es directamente compatible con HTML XHTML es una aplicación XML. 11
  • 12. Texto y Árbol Un documento corresponde a un árbol A <?xml version=”1.0”?> <agenda>  <persona> P P   <nombre>Juan</nombre>   <fono>123</fono>  </persona>  <persona>   <nombre>Pedro</nombre> F N F N   <fono>234</fono>  </persona> </agenda> P 2 J 1 12
  • 13. Sintaxis elementos <persona> Tag inicial </persona> Tag final “Juan” Nodo textual <persona/> Nodo vacío 13
  • 14. Sintaxis atributos Atributos usan comillas “dobles” <e a1=”v1” a2=”v2” .. an=”vn”> ... </e> a1 .. an son identificadores no repetidos, cuyo orden NO ES conservado. Identificador es una secuencia de letras, números o '-', que comienza con una letra, de largo > 1 v1 .. vn son texto 14
  • 18. Sutilezas (newlines) <tag>n <tag>n <tag a=”1”n <tag a=”1”n b=”2”>n b=”2”>n Texton Texton Texton Texton </tag> </tag> <tag>Texto</tag>n <tag>Texto</tag>n </tag> </tag> <tag><tag a=”1”b=”2”>Texton Texto</tag><tag>Texto</tag></tag> 18
  • 19. XML Contenido 19
  • 20. Procesamiento de XML Orientado a eventos SAX – Simple API for XML Más rápido Orientado a estructura DOM Más usable 20
  • 21. Parsing SAX SAXparse( start, end, text ) Se provee de apuntadores a funciones Start( nombre_del_tag ) Ejecutado cada vez que se ve un tag End() Cada vez que se ve un tag de cierre Text( buffer ) Cada vez que se lee texto 21
  • 22. Ejemplo de parsing en SAX <p>Hola <b>mundo</b></p> saxParse(“...”,start,text,end)  text(quot;Holaquot;)  start(quot;bquot;)  text(quot;mundoquot;)  end(quot;bquot;)  end(quot;pquot;) 22
  • 23. Parsing DOM doc = DOMParse( “archivo.xml”) Se lee un árbol completo en memoria Se pueden buscar nodos Node = doc.getElementById() doc.getChild(), etc... Las funciones se llaman igual en varios lenguajes: Java, Perl, Python, C++, etc... 23
  • 24. Ejemplo de DOM en Java Extraer primer nodo “recipe” (receta) en un documento XML public static void main(String[] args) {       DOMParser p = new DOMParser();       p.parse(args[0]);       Document doc = p.getDocument();       Node n = doc.getDocumentElement().getFirstChild();       while (n!=null &&         !n.getNodeName().equals(quot;recipequot;))          {            n = n.getNextSibling();         }       PrintStream out = System.out;       out.println(quot;<?xml version=quot;1.0quot;?>quot;);       out.println(quot;<collection>quot;);       if (n!=null)         print(n, out);       out.println(quot;</collection>quot;);   } 24
  • 26. Diferentes aplicaciones de XML personas.dtd productos.dtd doc1.xml doc2.xml <?xml version=”1.0”?> <?xml version=”1.0”?> <pacientes> <lavadoras>  <paciente>  <lavadora>   <nombre>Juan</nombre>   <marca>Samsung</marca>   <apellido>Perez</apellido>   <modelo>RX­1200</modelo>   <edad>38</edad>  </lavadora>  </paciente> ... ... </lavadoras> </pacientes> 26
  • 28. Documento XML válido Se dice que un documento XML es válido  si está de acuerdo con una cierta  especificación de tipo de dato. 28
  • 29. Procesamiento doc.xml Parsing tipo.dtd Validación ... procesamiento 29
  • 30. ¿Para qué sirven las DTD? Describir un formato de datos Usar un formato común de datos Verificar los datos al intercambiarlos Mantener la consistencia 30
  • 31. Ejemplo simple DTD 1 ejemplo.dtd ok1.xml <!ELEMENT ejemplo <!DOCTYPE ejemplo    (#PCDATA)>  SYSTEM ejemplo.dtd> <ejemplo>  Este es un ejemplo. </ejemplo> ok2.xml <!DOCTYPE ejemplo  SYSTEM ejemplo.dtd> <ejemplo/> 31
  • 32. Ejemplo simple DTD 2 ejemplo.dtd <!ELEMENT ejemplo    (#PCDATA)> malo1.xml malo2.xml <!DOCTYPE ejemplo <!DOCTYPE ejemplo  SYSTEM ejemplo.dtd>  SYSTEM ejemplo.dtd> <inicioejemplo> <example>  Este es un ejemplo.  Este es un ejemplo. </finejemplo> </example> (NO ESTA BIEN FORMADO) (NO ES VÁLIDO) 32
  • 33. ¿Qué 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 33
  • 34. Contenido ELEMENT Un elemento tiene ejemplo.dtd contenido <!ELEMENT mensaje    (urgente?, asunto, ELEMENT, si solo     cuerpo)> puede contener a <!ELEMENT asunto    (#PCDATA)> otros elementos, <!ELEMENT cuerpo    (#PCDATA|cita)*> opcionalmente <!ELEMENT cita    (#PCDATA)> separados por <!ELEMENT urgente espacios en    EMPTY> blanco. 34
  • 35. Contenido TEXT Un elemento tiene ejemplo.dtd contenido TEXT, si <!ELEMENT mensaje    (urgente?, asunto, solo puede     cuerpo)> contener texto <!ELEMENT asunto    (#PCDATA)> <!ELEMENT cuerpo (PCDATA = printable    (#PCDATA|cita)*> <!ELEMENT cita character data)    (#PCDATA)> <!ELEMENT urgente    EMPTY> 35
  • 36. Contenido MIXED Un elemento tiene ejemplo.dtd contenido MIXED, <!ELEMENT mensaje    (urgente?, asunto, si puede contener     cuerpo)> texto u otros <!ELEMENT asunto    (#PCDATA)> elementos <!ELEMENT cuerpo    (#PCDATA|cita)*> <!ELEMENT cita    (#PCDATA)> <!ELEMENT urgente    EMPTY> Nota: #PCDATA debe aparecer primero en la lista ej.: “(#PCDATA|cita)” 36
  • 37. Contenido EMPTY Un elemento tiene ejemplo.dtd contenido EMPTY, <!ELEMENT mensaje    (urgente?, asunto, si no puede    cuerpo)> contener otros <!ELEMENT asunto    (#PCDATA)> elementos <!ELEMENT cuerpo    (#PCDATA|cita)*> <!ELEMENT cita    (#PCDATA)> <!ELEMENT urgente    EMPTY> 37
  • 38. Ejemplos documentos 1/4 ejemplo.dtd ok1.xml <!ELEMENT mensaje <?xml version=”1.0”?>    (urgente?, asunto, <!DOCTYPE mensaje    cuerpo)>    SYSTEM “asunto.dtd”> <!ELEMENT asunto <mensaje>    (#PCDATA)>  <urgente/> <!ELEMENT cuerpo  <asunto>    (#PCDATA|cita)*>   Agenda del curso <!ELEMENT cita  </asunto>    (#PCDATA)>  <cuerpo> <!ELEMENT urgente   <cita>    EMPTY>    Por favor enviar agenda   </cita>   Te envio la agenda ahora  </cuerpo> </mensaje> 38
  • 39. 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    (#PCDATA|cita)*>  </asunto> <!ELEMENT cita  <cuerpo>    (#PCDATA)>   Te envio la agenda ahora <!ELEMENT urgente  </cuerpo>    EMPTY> </mensaje> 39
  • 40. Ejemplos documentos 3/4 ejemplo.dtd malo1.xml <!ELEMENT mensaje <?xml version=”1.0”?>    (urgente?, asunto, <!DOCTYPE mensaje    cuerpo)>    SYSTEM “asunto.dtd”> <!ELEMENT asunto <mensaje>    (#PCDATA)>  <urgente>Si</urgente> <!ELEMENT cuerpo  <asunto/>    (#PCDATA|cita)*>  <cita>Enviar</cita> <!ELEMENT cita  <cuerpo>    (#PCDATA)>   Te envio la agenda ahora <!ELEMENT urgente  </cuerpo>    EMPTY> </mensaje> 40
  • 41. 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    (#PCDATA|cita)*>  </cuerpo> <!ELEMENT cita  <asunto>Test</asunto>    (#PCDATA)> </mensaje> <!ELEMENT urgente    EMPTY> 41
  • 42. Orden e inclusion de  elementos ejemplo.dtd <!­­ Uno o varios FirstName seguidos de       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)> 42
  • 43. Orden de elementos, ejemplo msj.dtd ok.xml <!ELEMENT mensaje <?xml version=”1.0”?>  (urgente?|asunto|cuerpo)> <!DOCTYPE mensaje <!ELEMENT asunto    SYSTEM “msj.dtd”>    (#PCDATA)> <mensaje> <!ELEMENT cuerpo  <cuerpo/>    (#PCDATA|cita)*>  <asunto/> <!ELEMENT cita </mensaje>    (#PCDATA)> <!ELEMENT urgente    EMPTY> 43
  • 44. Atributos CDATA: lavadora.dtd <!ELEMENT lavadora EMPTY> texto <!ATTLIST lavadora  carga NMTOKEN #IMPLIED NMTOKEN:  marca CDATA #IMPLIED  voltaje NMTOKENS “abc...z0123..9-_:.”   #REQUIRED> <!­­ #IMPLIED=opcional ­­> NMTOKENS: NMTOKEN + espacios ID: empezar con letra IDREF: ser un ID 44
  • 45. 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”/> 45
  • 46. Repetición de elementos biblioteca1.dtd biblioteca2.dtd <!ELEMENT bib <!ELEMENT bib  (libro|revista)+>  (libro|revista)+> <!ELEMENT libro <!ENTITY % bibelem  (titulo,autor)>  “titulo,autor”> <!ELEMENT revista <!ELEMENT libro  (titulo,autor)>  (%bibelem;) > <!ELEMENT titulo <!ELEMENT revista  (#PCDATA)>  (%bibelem;) > <!ELEMENT autor <!ELEMENT titulo  (#PCDATA)>  (#PCDATA)> <!ELEMENT autor  (#PCDATA)>   46
  • 47. 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>   47
  • 48. Resumen XML = Texto estructurado DTD = Descripción de estructura Validar XML usando DTD 48