SlideShare una empresa de Scribd logo
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

Más contenido relacionado

La actualidad más candente

XML con J de JDOM
XML con J de JDOMXML con J de JDOM
XML con J de JDOM12345678a
 
Fundamentos de SQL
Fundamentos de SQLFundamentos de SQL
Fundamentos de SQLcamposer
 
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 htmlEvelyncita Perea
 
Unid2 transact sql 1
Unid2  transact sql 1Unid2  transact sql 1
Unid2 transact sql 1ALEXSILVARSM
 
Sql server express edition 2012 libro
Sql server express edition 2012 libroSql server express edition 2012 libro
Sql server express edition 2012 libroOsmar 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 ValidacionesDidier Granados
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sqlJulio Pari
 
Microsoft sql server
Microsoft sql serverMicrosoft sql server
Microsoft sql serverDeisyVilchez
 
Manual intencivo de htlm
Manual intencivo de htlmManual intencivo de htlm
Manual intencivo de htlmOmar Ari
 

La actualidad más candente (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.
 

Destacado

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ísicoCarlos Castillo (ChaTo)
 
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...Carlos Castillo (ChaTo)
 
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 NewsCarlos Castillo (ChaTo)
 
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)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 relacionalCarlos Castillo (ChaTo)
 

Destacado (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
 

Similar 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
 

Más de Carlos Castillo (ChaTo)

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 MediaCarlos Castillo (ChaTo)
 
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 2017Carlos Castillo (ChaTo)
 
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 modelCarlos Castillo (ChaTo)
 
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 InvitationCarlos Castillo (ChaTo)
 
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...Carlos Castillo (ChaTo)
 

Más 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

Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfManuelCampos464987
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesPABLOCESARGARZONBENI
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respetocdraco
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docxwerito139410
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestrerafaelsalazar0615
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialEducática
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...Kevin Serna
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx44652726
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadaspqeilyn0827
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfjjfch3110
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxJohanna4222
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometriasofiasonder
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.sofiasonder
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdffrank0071
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
 

Último (20)

Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadas
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptx
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 

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