SlideShare una empresa de Scribd logo
Lenguajes de Marcas y SGI

             UT 5: XML (I).
 Definición de esquemas y vocabularios.

       CFGS «Administración de Sistemas
            Informáticos en Red»

           CIFP Juan de Colonia (Burgos)

                David H. Martín Alonso

                 – Curso 2010/2011 –
XML (I): ESQUEMAS Y VOCABULARIOS.



                                    Contenidos



                  Introducción
                  DTD
                  Espacios de nombres
                  XML Schemas




Febrero de 2011                                  CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                    XML por fuera...
                  ●   XML se emplea para organizar
                      información de cualquier tipo.
                  ●   Muy popular, está omnipresente en
                      multitud de aplicaciones para
                      cualquier uso.
                  ●   Es un formato de texto,
                      estructurado usando etiquetas.
                  ●   Aunque tiene orígenes comunes y
                      es también muy popular en
                      Internet, no es HTML.
Febrero de 2011                                           CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                XML por dentro...



                  ●   Elementos
                  ●   Atributos
                  ●   Entidades
                  ●   Texto de contenido




Febrero de 2011                                     CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                    ¿metalenguaje?
■ Introducción           XML es solo un metalenguaje.
□ DTD
□ XSD                      • Formato general, básico, común, obligatorio.
                           • Base para lenguajes con usos reales, concretos.
                         Diversos modelos para desarrollar cada lenguaje
                                –   Gramáticas, vocabularios, etc.
                  5/43
                           • Document Type Definition (DTD).
                           • Esquemas (XMLSchema).
                           • Espacios de nombres.
                         Necesidad de corrección a los dos niveles:
                           • Documentos bien formados.
                           • Documentos válidos.




Febrero de 2011                                                           CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                                       xmllint
■ Introducción                 Utilidad de texto para «sanear» archivos XML.
□ DTD
□ XSD
                                        –   Incluido en la biblioteca «libxml» .
                                 • Dar formato.
                                 • Verificar.
                                 • Validar frente a lenguajes.
                        6/43

                               $>   xmllint --version
                               …
                               $>   xmllint --help
                               …
                               $>   xmllint --format data.xml
                               …
                               $>   xmllint --valid data.xml
                               …
                               $>   xmllint –noout --dtdvalid data.dtd data.xml
                               …
                               $>   xmllint –noout --schema schema.xsd data.xml
                               …

                  lint: soft cloth, used for protecting a cut or burn on your skin.
                   lint: soft cloth, used for protecting a cut or burn on your skin.
Febrero de 2011                                                                        CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                               Actividad I: xmllint
                                    Trabajar con xmllint para formatear y validar
                                    documentos XHTML. Retirar la definición DOCTYPE
                                    del documento y descargar a mano los archivos
                                    correspondientes para tratar de hacer la validación
                                    completamente de manera local.




                                    Nota: Alguna versión distribuida para Win32, en
                                    concreto la de MSYS no incluye soporte HTTP y eso
                                    limita la validación contra archivos de definición a
                                    través de la red. Con la opción –-versión
                                    podemos ver las características incluidas.



Febrero de 2011                                                                 CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                              DTD
□ Introducción           Document Type Definition
■ DTD
□ XSD                      • Modelo estructural del documento
                                – Elementos
                                – Atributos

                                – Descendientes, jerarquía

                                – Contenido
                  8/43
                           • Modelo clásico heredado de SGML
                                – ¡Sintaxis NO XML!
                                – Sencillo = limitado

                                – En recesión frente a esquemas, espacios de nombres...

                           • Ubicación
                                – Interno
                                – Externo

                                – Mixto

                           • Notación: <! … >
                                –   DOCTYPE, ELEMENT, ATTLIST, ENTITY

Febrero de 2011                                                                    CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                     Ejemplos DTD: DOCTYPE
□ Introducción                      <!DOCTYPE –nombre– [ –declaraciones– ]>
■ DTD
□ XSD
                          • La definición DOCTYPE precede al elemento raíz.
                          • El nombre debe ser el del elemento raíz.
                          • Las declaraciones podrán estar en un archivo
                  9/43
                            separado.

                         <?xml version="1.0" encoding="utf-8" standalone="yes"?>
                         <!DOCTYPE huérfano [
                            <!ELEMENT huérfano EMPTY>
                         ]>

                         <huérfano />




Febrero de 2011                                                               CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Ejemplos DTD: Elementos (I)
□ Introducción                      <!ELEMENT –nombre–   –contenido– >
■ DTD
□ XSD                      • Todos los elementos permitidos deben tener
                             descripción.
                           • Cada elemento debe indicar nombre y contenido.
                           • Contenidos especiales:
                  10/43
                                – EMPTY: elementos siempre vacíos.
                                – ANY: admite cualquier contenido, sean elementos o texto.




                          <?xml version="1.0" encoding="utf-8" standalone="yes"?>
                          <!DOCTYPE huérfano [
                             <!ELEMENT huérfano ANY>
                             <!ELEMENT furtivo EMPTY>
                          ]>

                          <huérfano><furtivo/></huérfano>




Febrero de 2011                                                                     CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Ejemplos DTD: Elementos (II)
□ Introducción             • Los descendientes van entre paréntesis.
■ DTD
□ XSD
                           • El operador coma « , » separa los descendientes
                             exigidos y en orden.

                          <?xml version="1.0" encoding="utf-8" standalone="yes"?>
                          <!DOCTYPE huérfano [
                  11/43      <!ELEMENT huérfano (a, b)>
                             <!ELEMENT a ANY>
                             <!ELEMENT b ANY>
                          ]>

                          <huérfano><a/><b/></huérfano>




Febrero de 2011                                                            CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Ejemplos DTD: Elementos (III)
□ Introducción                  – El operador « | » separa descendientes alternativos.
■ DTD                           – Los paréntesis « () » permiten crear subgrupos.
□ XSD                           – Los elementos (o subgrupos) pueden ser opcionales

                                  « ? » señala componentes opcionales.
                                  « * » permite varios componentes opcionales.
                                  « + » exige uno o más componentes.
                                – #PCDATA se emplea para contenido textual.
                  12/43



                          <!DOCTYPE padre [
                             <!ELEMENT padre ( hijo+ ) >
                             <!ELEMENT hijo ( #PCDATA | a | b )* >
                             <!ELEMENT a ANY>
                             <!ELEMENT b ANY>
                          ]>

                          <padre>
                          <hijo />
                          <hijo><a/></hijo><hijo><b/></hijo>
                          <hijo><a/><b/></hijo><hijo><b/><a/></hijo>
                          <hijo><b/>1<a/>2<b/>¡Hola mundo!<b/>4<b/>5<b/></hijo>
                          </padre>
Febrero de 2011                                                                      CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Ejemplos DTD: Elementos (IV)
□ Introducción
■ DTD
□ XSD
                             <!ELEMENT table
                                (caption?, (col*|colgroup*), thead?, tfoot?,
                                (tbody+|tr+))>
                             <!ELEMENT caption %Inline;>
                  13/43      <!ELEMENT thead    (tr)+>
                             <!ELEMENT tfoot    (tr)+>
                             <!ELEMENT tbody    (tr)+>
                             <!ELEMENT colgroup (col)*>
                             <!ELEMENT col      EMPTY>
                             <!ELEMENT tr       (th|td)+>
                             <!ELEMENT th       %Flow;>
                             <!ELEMENT td       %Flow;>




Febrero de 2011                                                           CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                    <!DOCTYPE ...>
□ Introducción            DTD internos
■ DTD
                                    <!DOCTYPE elemento0 [ <!ELEMENT elemento0 ANY> ]>
□ XSD

                          DTD externos
                                –   Con prólogo donde se indica la codificación:
                                    <?xml version="1.0" encoding="utf-8"?>
                  14/43     • Basados en URI
                                    <!DOCTYPE elemento0 SYSTEM "dtd0.dtd">
                            • Basados en identificador
                                – Si está almacenado no requiere descarga.
                                – URI opcional.

                                  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
                                    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

                          DTD mixtos
                                    <!DOCTYPE elemento1 SYSTEM "dtd0.dtd" [
                                       <!ELEMENT extra ANY>
                                    ]>
Febrero de 2011                                                                    CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Actividad II: diseño de DTD
                                    Diseñar un DTD para almacenar libros, permitiendo la
                                     incorporación   de   los   bloques   o   simplemente
                                     capítulos que lo componen.
                                    <libro>
                                    <título>Egolatría</título>
                                    <autor>Yo mismo</autor>
                                    <autor>Conmigo mismo</autor>
                                    <bloque>
                                    <título>Yo</título>
                                    <capítulo><título>El Yo</título></capítulo>
                                    <capítulo><título>Mí</título></capítulo>
                                    <capítulo><título>Menda</título></capítulo>
                                    </bloque>
                                    <bloque>
                                    <título>Lo demás</título>
                                    <capítulo><título>La Nada</título></capítulo>
                                    <capítulo><título>El vacío</título></capítulo>
                                    </bloque>
                                    </libro>

Febrero de 2011                                                                   CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Actividad III: codificación DTD
                                    Con el archivo DTD del ejercicio anterior. Convertirlo
                                    a   codificación   Windows-1252    y   comprobar         la
                                    necesidad de indicar la codificación en la declaración
                                    de XML en el prólogo.

                                    Probar si es compatible un documento XML en UTF-8
                                    con un DTD en la codificación de Windows española.




Febrero de 2011                                                                   CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                      Actividad V: CSS y XML
                                    Buscar información sobre cómo enlazar XML con
                                    CSS y preparar una hoja de estilos para el
                                    documento del libro.

                                    Es conveniente aplicar el formato “display: block;” a
                                    los elementos definidos para visualizarlos en líneas
                                    separadas.

                                       http://www.w3schools.com/Xml/xml_display.asp




Febrero de 2011                                                                  CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                     Ejemplos DTD: Atributos (I)
□ Introducción                      <!ATTLIST –elemento– –nombre– –tipo– –opcionalidad– >
■ DTD
□ XSD
                          nombre + tipo + opcionalidad
                            • Tipos: restricciones sobre los valores admisibles.
                            • Opcionalidad:
                  18/43         – Atributos obligatorios/opcionales
                                – Valores por defecto

                            • Hay dos nombres reservados, de uso habitual.
                                – Idioma (BCP 47) del elemento xml:lang
                                – Preservar el espaciado xml:space

                                – Aún requieren declaración para ser usados.

                                  <!ATTLIST ejemplo
                                       xml:lang CDATA "es-ES"
                                       xml:space (default|preserve) "preserve" >




Febrero de 2011                                                                  CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                   Ejemplos DTD: Atributos (II)
□ Introducción            • Tipos: restricciones sobre los valores admisibles
■ DTD                           –   CDATA: general, texto no procesado.
□ XSD
                                    ID: identificador de elementos, único.
                                    IDREF, IDREFS: referencia a un identificador existente.
                                    NMTOKEN, NMTOKENS: palabras, nombres válidos.
                                    ENTITY, ENTITIES: nombre de entidad definida antes.
                  19/43
                                    Enumeración de valores permitidos: (a1|a2|b1|c2)
                          • Opcionalidad y valores por defecto
                                – #REQUIRED: obligatorio
                                – #IMPLIED: opcional

                                – Opcional con valor por defecto: "valor"

                                – Opcional, valor por defecto y obligado: #FIXED "valor"

                                        <!ELEMENT   e0 ANY >
                                        <!ATTLIST   e0
                                            id      ID         #REQUIRED
                                            refs    IDREFS     #IMPLIED
                                            a0      CDATA      #IMPLIED
                                            a1      CDATA      "220V"
                                            a2      CDATA      #FIXED "siempre"
                                            a3      (pc|mac)   #REQUIRED >
Febrero de 2011                                                                        CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Ejemplos DTD: Atributos (III)
□ Introducción
■ DTD
□ XSD




                                    <!DOCTYPE padre [
                  20/43
                                       <!ELEMENT padre (hijo+) >
                                       <!ELEMENT hijo EMPTY >
                                       <!ATTLIST hijo
                                           id ID #REQUIRED
                                           a0 CDATA #REQUIRED
                                           rel IDREF #IMPLIED
                                       >
                                    ]>

                                    <padre>
                                    <hijo id="c6" a0="eso" rel="c7"/>
                                    <hijo id="c7" a0="eso"/>
                                    </padre>


Febrero de 2011                                                    CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                     Actividad V: Diseño DTD
                                    Diseñar un modelo de documento DTD para la
                                    información de los horarios de los alumnos aplicando
                                    las posibilidades explicadas hasta el momento. Ej.:
                                    empleando identificadores únicos para los módulos.




Febrero de 2011                                                                 CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                         Entidades
□ Introducción                      <!ENTITY –nombre– –definición– >
■ DTD
□ XSD
                          Constantes, valores reutilizables
                          Varios tipos
                            • Internas / externas
                  22/43
                                – Internas. Ej.: <!ENTITY HMundo "Hola mundo">
                                – Externas.

                                  Ej.: <!ENTITY ENT0 SYSTEM "algo.ent">
                                  Ej.: <!ENTITY % HTMLlat1 PUBLIC
                                       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
                                       "xhtml-lat1.ent">
                            • Generales (&nombre;) / de parámetros (%nombre;)
                                –   De parámetros, para usar en el propio DTD:
                                    Ej.: <!ENTITY % comunes "id ID #IMPLIED">
                          Predefinidas:
                                    &lt; – &gt; – &amp; – &apos; – &quot;
Febrero de 2011                                                              CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                          Ejemplos DTD: Entidades
□ Introducción                  <?xml version="1.0" encoding="utf-8"?>
■ DTD                           <!ENTITY % contenido "(#PCDATA|p)*">
□ XSD                           <!ELEMENT html (head,body)>
                                <!ELEMENT head (title)>
                                <!ELEMENT body %contenido;>
                                <!ELEMENT title (#PCDATA)>
                                <!ELEMENT p %contenido;>
                  23/43



                          <?xml version="1.0" encoding="utf-8"?>
                          <!ENTITY % ENT0 SYSTEM "htmltrucado.ent">
                          %ENT0;
                          <!ELEMENT html (head,body)>
                          <!ELEMENT head (title)>
                          <!ELEMENT body %contenido;>
                          <!ELEMENT title (#PCDATA)>
                          <!ELEMENT p %contenido;>
                             <?xml version="1.0" encoding="utf-8"?>
                             <!ENTITY % contenido "(#PCDATA|p)*">
                             <!ENTITY firma "<p>DHMA2011</p>">


Febrero de 2011                                                          CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                           Espacios de nombres
□ Introducción            XML Namespaces – xmlns
□ DTD
■ XSD                      • Espacios de nombres.
                           • Permiten la coexistencia de escenarios
                                – Combinación de elementos en el mismo archivo.
                                – Definiciones separadas

                  24/43    • Se identifican mediante un nombre, un URI
                                – ATENCIÓN: no es una dirección web, sólo un nombre.
                                – Puede no estar disponible si tratamos de acceder a él.

                                  Atributo xmlns. Heredado por los elementos hijo.
                           • Espacio de nombres por defecto
                                    <html xmlns="http://www.w3.org/1999/xhtml">
                           • Espacios alternativos, identificados con prefijo
                                    <padre
                                    xmlns:svg="http://www.w3.org/2000/svg">
                                    …
                                    <svg:ellipse cx="2cm" cy="4cm"
                                    rx="2cm" ry="1cm" />
Febrero de 2011                                                                      CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                      Usando espacios de nombres
                  ●   En un mismo documento XML pueden coexistir varios
                      vocabularios/gramáticas que llamamos «espacios de
                      nombres» .
                  ●   Cada espacio de nombres se identifica mediante un nombre
                      único, con formato URI, que generalmente no devuelve
                      ninguna página.
                  ●   Se selecciona con el atributo «xmlns» y afecta
                      a todos los nodos hijo.
                  ●   Se le puede asignar un prefijo para identificar
                      solo a algunos elementos
                  <padre xmlns:prefijo="…">
                  <prefijo:nombre> … </prefijo:nombre>

Febrero de 2011                                                            CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                    Esquemas XML (I)
□ Introducción                XML Schema Definition Language (XSD)
□ DTD
■ XSD
                                     –   Confusión con el nombre genérico: Esquema XML
                                • Modelo estructural del documento
                                     – Nombre adoptado de las bases de datos
                                     – Conjunto   de restricciones de estructura y contenido
                                       verificables por medios automáticos.
                                • Mejoras sobre DTD
                      26/43



                                     – Formato XML  los esquemas son validables por separado
                                     – Mejoras en tipaje: aplicable también al contenido

                                     – Mejoras en tipaje: más tipos y permite ampliarlos 

                                       + permite una validación más estricta
                                       + mejora la comunicación entre aplicaciones, rigor en datos
                                     – Soporte para espacios de nombres  reutilización

                                     – Muy completo ≠ sencillo


                  ... the syntax of XML Schema was obviously produced by someone who grew up at the
                   ... the syntax of XML Schema was obviously produced by someone who grew up at the
                  bottom of a deep well in the middle of a dark, wasteful moor where he was tortured daily by
                   bottom of a deep well in the middle of a dark, wasteful moor where he was tortured daily by
                  abusive giant squirrels and wishes to share his pain with the world.
                   abusive giant squirrels and wishes to share his pain with the world.
                                                                         Robin Berjon (co-author SVG 1.1 spec)
                                                                         Robin Berjon (co-author SVG 1.1 spec)
Febrero de 2011                                                                                      CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                              Esquemas XML (II)
□ Introducción            Objetos:                   Tipos predefinidos:
□ DTD
■ XSD
                                    element               – string
                                    attribute             – decimal

                                    simpleType            – float

                                    complexType           – date

                                    group                 –…
                  27/43
                                    attributeGroup

                          Compositores
                                    sequence
                                    choice
                                    all




Febrero de 2011                                                        CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                      Ejemplos XSD: Elementos
□ Introducción            <xs:element name="título" type="xs:string"/>
□ DTD                     <xs:element name="autor" type="xs:string"/>
■ XSD


                          <xs:element name="capítulo">
                             <xs:complexType>
                                 <xs:sequence>
                  28/43             <xs:element ref="título"/>
                                 </xs:sequence>
                             </xs:complexType>
                          </xs:element>


                          <xs:element name="bloque">
                             <xs:complexType>
                                 <xs:sequence>
                                    <xs:element ref="título"/>
                                    <xs:element ref="capítulo"
                                        minOccurs="1" maxOccurs="unbounded"/>
                                 </xs:sequence>
                             </xs:complexType>
                          </xs:element>
Febrero de 2011                                                             CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                   El esquema XSD
□ Introducción                • Elemento raíz del esquema: schema                            XSD
□ DTD
                             <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
■ XSD
                                targetNamespace="http://www.mio.es/xsd1"
                                xmlns="http://www.mio.es/xsd1">              Vocabulario
                               ...                                          XML Schema
                             </schema>                          Vocabulario
                                                                          definido
                     29/43
                              • Espacio de nombres del propio XML Schema.
                                  – Nombres con prefijo
                                  – Elementos de XML Schema para construir las definiciones.

                              • Espacio de nombres objeto de la definición.
                                  – Nombres sin prefijo
                                  – Permite referencias entre elementos propios de forma clara.


                                                                        Vocabulario          XML
                  <raíz xmlns="http://www.mio.es/xsd1"                    a usar
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     xsi:schemaLocation="http://www.mio.es/xsd1 xsdlibros.xsd">
                     ...
                  </raíz>                                   Localización
                                                                   del vocabulario
Febrero de 2011                                                                       CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                          xs – xsi
□ Introducción            Usamos dos especificaciones estándar.
□ DTD
■ XSD
                                – XML Schema: dos espacios de nombres implicados.
                                – Prefijos estándar, ampliamente utilizados pero cambiables.



                            • Schema Namespace
                                – Nombre: http://www.w3.org/2001/XMLSchema
                  30/43
                                – En el archivo XSD que contiene las definiciones.

                                – Habitualmente usa los prefijos xs: o xsd:

                                – Elementos XML Schema para construir las definiciones.



                            • Schema Instance Namespace
                                – Nombre: http://www.w3.org/2001/XMLSchema-instance
                                – En el archivo que contiene el documento XML con datos.

                                – Habitualmente usa el prefijo xsi:

                                – Localización de archivos XSD.

                                – Opcional y muy reducido.

                                  Solo schemaLocation y noNamespaceSchemaLocation
Febrero de 2011                                                                      CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                    Elementos XSD
□ Introducción            • Elementos globales
□ DTD                           – Hijos directos de <schema … >
■ XSD
                                – Definidos con <element … >

                                – Incorporación directa y obligatoria al espacio.

                                – Atributo name para darle nombre y type para el tipo.


                          <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" … >
                  31/43
                              <xs:element name="título" type="xs:string"/>
                              <xs:element name="libro" type="grupo"/>
                              ...

                                –   Se pueden reutilizar/referenciar posteriormente
                              <xs:complexType name="grupo">
                                  <xs:sequence>
                                      <xs:element ref="título"/>
                                  </xs:sequence>
                              </xs:complexType>
                          </xs:schema>

                                – Tipos complejos: definición en elemento o separada.
                                – Repeticiones: minOccurs="1" maxOccurs="unbounded"

Febrero de 2011                                                                       CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Ejemplos XSD: Elementos (II)
□ Introducción            <?xml version="1.0" encoding="utf-8"?>
                          <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
□ DTD                          targetNamespace="http://www.mio.es/xsd2" xmlns="http://www.mio.es/xsd2">
                          <xs:element name="título" type="xs:string"/>
■ XSD                     <xs:element name="autor" type="xs:string"/>
                          <xs:element name="capítulo">
                               <xs:complexType>
                                    <xs:sequence>
                                         <xs:element ref="título"/>
                                    </xs:sequence>
                               </xs:complexType>
                          </xs:element>
                  32/43
                          <xs:element name="bloque">
                               <xs:complexType>
                                    <xs:sequence>
                                         <xs:element ref="título"/>
                                         <xs:element ref="capítulo" minOccurs="1" maxOccurs="unbounded"/>
                                    </xs:sequence>
                               </xs:complexType>
                          </xs:element>
                          <xs:element name="libro">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element ref="título"/>
                                <xs:element ref="autor" minOccurs="1" maxOccurs="unbounded"/>
                                <xs:choice>
                                    <xs:element ref="bloque" minOccurs="1" maxOccurs="unbounded"/>
                                    <xs:element ref="capítulo" minOccurs="1" maxOccurs="unbounded"/>
                                 </xs:choice>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          </xs:schema>

Febrero de 2011                                                                                   CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                    Atributos XSD
□ Introducción             • Atributos globales
□ DTD                           – Hijos directos de <schema … >
■ XSD
                                – Definidos con <attribute … >

                                – Atributo name para darle nombre y type para el tipo.

                                – use="required" o use="optional"

                                  con default="…"
                  33/43

                          <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" … >
                              <xs:attribute name="cód" type="xs:decimal"/>
                              ...


                                – Se pueden referenciar posteriormente
                                – Van al final (tras sequence/choice/all)


                              <xs:complexType name="codificado">
                                     ...
                                     <xs:attribute ref="cód" use="required"/>
                              </xs:complexType>
                          </xs:schema>



Febrero de 2011                                                                     CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Actividad VI: Tipos simples
                                    Buscar en las referencias los tipos de datos simples
                                    predefinidos y ponerlos a prueba.
                                       W3Schools
                                       Dankert, E.
                                       XML Schema Tutorial




Febrero de 2011                                                                 CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  simpleType vs. complexType
□ Introducción             • Tenemos tipos predefinidos que podemos adaptar
□ DTD                           – restriction / extension
■ XSD
                                – Sobre el tipo indicado con base="…"

                                – También se pueden aplicar a los nuevos tipos creados.

                                – Definiciones globales con nombre, reutilizables.

                                – Definiciones locales sin nombre, en elementos y atributos.

                  35/43
                           • simpleType
                                –   Aplicables a texto: válido para contenido o atributos
                           • complexType
                                –   Cuando hay atributos, elementos hijo o contenido mixto.

                          <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" … >
                            <xs:simpleType name="díasemana">
                              <xs:restriction base="xsd:string">
                                <xs:enumeration value="miércoles"/>
                                <xs:enumeration value="viernes"/>
                              </xs:restriction>
                            </xs:simpleType>
                            <xs:element name="jornada" type="díasemana"/>
                          </schema>
Febrero de 2011                                                                             CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                            Ejemplos XSD: Tipos
□ Introducción            <?xml version="1.0" encoding="utf-8"?>
□ DTD                     <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
■ XSD                        targetNamespace="http://www.mio.es/xsd3"
                             xmlns="http://www.mio.es/xsd3">

                            <xs:simpleType name="díasemana">
                              <xs:restriction base="xs:string">
                                <xs:enumeration value="miércoles"/>
                  36/43
                                <xs:enumeration value="viernes"/>
                              </xs:restriction>
                            </xs:simpleType>
                            <xs:element name="jornada" type="díasemana"/>
                            <xs:element name="clase">
                             <xs:complexType>
                                 <xs:sequence>
                                    <xs:element ref="jornada" />
                                 </xs:sequence>
                             </xs:complexType>
                            </xs:element>
                          </xs:schema>



Febrero de 2011                                                             CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                      Actividad VII: esquemas
                                    Reconstruir el ejemplo anterior para que <jornada>
                                    sea un elemento vacío con dos atributos día1 y
                                    día2 donde indiquemos el día de la semana.



                                    Rehacer alguno de los ejercicios de diseño de DTD
                                    realizados   empleando   ahora   esquemas         XML
                                    Schema.




Febrero de 2011                                                                  CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Definiciones globales y locales
□ Introducción             • Globales: definiciones en primer nivel, en schema.
□ DTD
                               – Nombre obligatorio name="…", también para tipos.
■ XSD
                               – Reutilizables usando ref="…" o type="…"


                           • Locales: definiciones dentro de otras definiciones
                                –   Permite omitir nombres si no es elemento ni atributo.
                   38/43   • Se pueden construir esquemas alternativos con unas
                             y otras.
                           • Calificación: prefijos obligatorios o no.
                                – Por defecto los elementos y atributos locales no requieren
                                   calificación por prefijo, se identifican por el contexto.
                                – Incompatible con espacio de nombres por defecto.

                                – Se puede forzar el uso del prefijo

                                  elementFormDefault="qualified"
                                  attributeFormDefault="qualified"




Febrero de 2011                                                                         CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Actividad VIII: otros modelos
                                    Existen   otros   lenguajes     para   especificar      las
                                    características de documentos XML. Relax NG es
                                    uno de los más citados con una sintaxis más sencilla
                                    que XML Schema. Buscar información sobre él y
                                    construir y validar ejemplos.




Febrero de 2011                                                                     CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                  Actividad IX: SVG y MathML
                                    Familiarizarse con los lenguajes SVG y MathML.
                                    Aprovechar la actividad para revisar conceptos
                                    básicos sobre formatos de imágenes y resoluciones
                                    e introducir el uso de la aplicación de diseño gráfico
                                    Inkscape, pero sin perder nunca de vista la parte
                                    técnica analizando el código XML/SVG/CSS.




Febrero de 2011                                                                   CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                       Referencias
                  W3C Recommendation (2008, W3C) XExtensible Markup Language
                  http://www.w3.org/TR/xml/
                  W3Schools (WWW) DTD Tutorial
                  http://www.w3schools.com/DTD/
                  W3Schools (WWW) XML Schema Tutorial
                  http://www.w3schools.com/Schema/
                  Boulanger, T. y Lecomte, S. (2009, ENI). XML práctico: bases esenciales,
                  conceptos y casos prácticos. ISBN: 978-2-7460-4958-1.
                  Dankert, E. (2005, edankert...) XML Grammars.
                  http://www.edankert.com/grammars/
                  Webucator (2009) XML Schema Tutorial.
                  http://www.learn-xml-schema-tutorial.com/
                  Wilde, E. (2010, UC Berkeley) XML Foundations –INFO 242 (CCN 42593)– .
                  http://dret.net/lectures/xml-fall10/


                                      Bibliografía actualizada en delicious:
                                    http://www.delicious.com/dhmartin/LM-ASIR



Febrero de 2011                                                                      CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                                        Licencia




                  Este material está disponible bajo una Licencia Creative Commons,
                           http://creativecommons.org/licenses/by-nc-sa/3.0/es/




Febrero de 2011                                                                   CIFP Juan de Colonia
XML (I): ESQUEMAS Y VOCABULARIOS.



                         ¿Dudas o cuestiones?




Febrero de 2011                                 CIFP Juan de Colonia

Más contenido relacionado

PDF
What is Dictionary In Python? Python Dictionary Tutorial | Edureka
PDF
Introduction to Recursion (Python)
PPTX
PDF
Transforming xml with XSLT
PPT
Regular Expressions
PPTX
ER-MODEL WITH DBMS.pptx
DOCX
Algoritmos divide y vencerás
What is Dictionary In Python? Python Dictionary Tutorial | Edureka
Introduction to Recursion (Python)
Transforming xml with XSLT
Regular Expressions
ER-MODEL WITH DBMS.pptx
Algoritmos divide y vencerás

La actualidad más candente (20)

PPTX
Dictionary in python
PDF
Facebook Open Graph API and How To Use It
PDF
Data tidying with tidyr meetup
PPT
ETL Testing Training Presentation
PDF
Python Sequence | Python Lists | Python Sets & Dictionary | Python Strings | ...
PPTX
Database connectivity in asp.net
PPTX
pointer-to-object-.pptx
PPS
Xml dtd
PDF
Python Flow Control
PDF
Function arguments In Python
PPTX
Linked List data structure
PPTX
XML, DTD & XSD Overview
PPTX
Generators In Python
PDF
javascript objects
PPTX
Css position
PDF
MySQL Tutorial For Beginners | Relational Database Management System | MySQL ...
PPTX
XML Introduction
PDF
4 pillars of OOPS CONCEPT
Dictionary in python
Facebook Open Graph API and How To Use It
Data tidying with tidyr meetup
ETL Testing Training Presentation
Python Sequence | Python Lists | Python Sets & Dictionary | Python Strings | ...
Database connectivity in asp.net
pointer-to-object-.pptx
Xml dtd
Python Flow Control
Function arguments In Python
Linked List data structure
XML, DTD & XSD Overview
Generators In Python
javascript objects
Css position
MySQL Tutorial For Beginners | Relational Database Management System | MySQL ...
XML Introduction
4 pillars of OOPS CONCEPT
Publicidad

Similar a LM-UT5: DTD, XML Schema (20)

PDF
PPT
XML de A a Z
PDF
Bases de Datos - Parte 9/10 XML
DOCX
Omar unidad 07 base de datos
PDF
Introducción a XML Schema para el que quiera aprender algo
PDF
Introduccion al xml
PPT
PPT
Presentación muy chula ApéndiceTecnologíaXML.ppt
PPTX
Diferencias entre XML y HTML
PPT
PPTX
Lenguajes de marcas
PPT
PDF
Datos En La Web - Clase 1
PPT
Introducción a XML
XML de A a Z
Bases de Datos - Parte 9/10 XML
Omar unidad 07 base de datos
Introducción a XML Schema para el que quiera aprender algo
Introduccion al xml
Presentación muy chula ApéndiceTecnologíaXML.ppt
Diferencias entre XML y HTML
Lenguajes de marcas
Datos En La Web - Clase 1
Introducción a XML
Publicidad

Más de David Martin (19)

PDF
PLE UT10
PDF
Taller: «Gráficos en el Aula»
PDF
IW-UTXX: Programación web en PHP con bases de datos
PDF
LM-UT8: Sistemas de Gestión empresarial
PDF
LM-UT7: Almacenamiento XML
PDF
LM-UT6: Transformaciones XML
PDF
LM-UT3: CSS
PDF
LM-UT2: HTML
PDF
LM-UT1: Lenguajes de marcas
PDF
LM-UT4: Sindicación de contenidos
ODP
Inkscape
PDF
La Aldea Global
PDF
Plataformas web
PDF
Ple Ut8
PDF
Burgo Red
PDF
Ethnet
PDF
Ociburgo
PDF
Fundicar
PDF
Eth100
PLE UT10
Taller: «Gráficos en el Aula»
IW-UTXX: Programación web en PHP con bases de datos
LM-UT8: Sistemas de Gestión empresarial
LM-UT7: Almacenamiento XML
LM-UT6: Transformaciones XML
LM-UT3: CSS
LM-UT2: HTML
LM-UT1: Lenguajes de marcas
LM-UT4: Sindicación de contenidos
Inkscape
La Aldea Global
Plataformas web
Ple Ut8
Burgo Red
Ethnet
Ociburgo
Fundicar
Eth100

Último (20)

DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
PPTX
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
DOCX
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
ciencias-1.pdf libro cuarto basico niños
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
V UNIDAD - SEGUNDO GRADO. del mes de agosto
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
biología es un libro sobre casi todo el tema de biología
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
DI, TEA, TDAH.pdf guía se secuencias didacticas
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
ciencias-1.pdf libro cuarto basico niños
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula

LM-UT5: DTD, XML Schema

  • 1. Lenguajes de Marcas y SGI UT 5: XML (I). Definición de esquemas y vocabularios. CFGS «Administración de Sistemas Informáticos en Red» CIFP Juan de Colonia (Burgos) David H. Martín Alonso – Curso 2010/2011 –
  • 2. XML (I): ESQUEMAS Y VOCABULARIOS. Contenidos Introducción DTD Espacios de nombres XML Schemas Febrero de 2011 CIFP Juan de Colonia
  • 3. XML (I): ESQUEMAS Y VOCABULARIOS. XML por fuera... ● XML se emplea para organizar información de cualquier tipo. ● Muy popular, está omnipresente en multitud de aplicaciones para cualquier uso. ● Es un formato de texto, estructurado usando etiquetas. ● Aunque tiene orígenes comunes y es también muy popular en Internet, no es HTML. Febrero de 2011 CIFP Juan de Colonia
  • 4. XML (I): ESQUEMAS Y VOCABULARIOS. XML por dentro... ● Elementos ● Atributos ● Entidades ● Texto de contenido Febrero de 2011 CIFP Juan de Colonia
  • 5. XML (I): ESQUEMAS Y VOCABULARIOS. ¿metalenguaje? ■ Introducción XML es solo un metalenguaje. □ DTD □ XSD • Formato general, básico, común, obligatorio. • Base para lenguajes con usos reales, concretos. Diversos modelos para desarrollar cada lenguaje – Gramáticas, vocabularios, etc. 5/43 • Document Type Definition (DTD). • Esquemas (XMLSchema). • Espacios de nombres. Necesidad de corrección a los dos niveles: • Documentos bien formados. • Documentos válidos. Febrero de 2011 CIFP Juan de Colonia
  • 6. XML (I): ESQUEMAS Y VOCABULARIOS. xmllint ■ Introducción Utilidad de texto para «sanear» archivos XML. □ DTD □ XSD – Incluido en la biblioteca «libxml» . • Dar formato. • Verificar. • Validar frente a lenguajes. 6/43 $> xmllint --version … $> xmllint --help … $> xmllint --format data.xml … $> xmllint --valid data.xml … $> xmllint –noout --dtdvalid data.dtd data.xml … $> xmllint –noout --schema schema.xsd data.xml … lint: soft cloth, used for protecting a cut or burn on your skin. lint: soft cloth, used for protecting a cut or burn on your skin. Febrero de 2011 CIFP Juan de Colonia
  • 7. XML (I): ESQUEMAS Y VOCABULARIOS. Actividad I: xmllint Trabajar con xmllint para formatear y validar documentos XHTML. Retirar la definición DOCTYPE del documento y descargar a mano los archivos correspondientes para tratar de hacer la validación completamente de manera local. Nota: Alguna versión distribuida para Win32, en concreto la de MSYS no incluye soporte HTTP y eso limita la validación contra archivos de definición a través de la red. Con la opción –-versión podemos ver las características incluidas. Febrero de 2011 CIFP Juan de Colonia
  • 8. XML (I): ESQUEMAS Y VOCABULARIOS. DTD □ Introducción Document Type Definition ■ DTD □ XSD • Modelo estructural del documento – Elementos – Atributos – Descendientes, jerarquía – Contenido 8/43 • Modelo clásico heredado de SGML – ¡Sintaxis NO XML! – Sencillo = limitado – En recesión frente a esquemas, espacios de nombres... • Ubicación – Interno – Externo – Mixto • Notación: <! … > – DOCTYPE, ELEMENT, ATTLIST, ENTITY Febrero de 2011 CIFP Juan de Colonia
  • 9. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos DTD: DOCTYPE □ Introducción <!DOCTYPE –nombre– [ –declaraciones– ]> ■ DTD □ XSD • La definición DOCTYPE precede al elemento raíz. • El nombre debe ser el del elemento raíz. • Las declaraciones podrán estar en un archivo 9/43 separado. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!DOCTYPE huérfano [ <!ELEMENT huérfano EMPTY> ]> <huérfano /> Febrero de 2011 CIFP Juan de Colonia
  • 10. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos DTD: Elementos (I) □ Introducción <!ELEMENT –nombre– –contenido– > ■ DTD □ XSD • Todos los elementos permitidos deben tener descripción. • Cada elemento debe indicar nombre y contenido. • Contenidos especiales: 10/43 – EMPTY: elementos siempre vacíos. – ANY: admite cualquier contenido, sean elementos o texto. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!DOCTYPE huérfano [ <!ELEMENT huérfano ANY> <!ELEMENT furtivo EMPTY> ]> <huérfano><furtivo/></huérfano> Febrero de 2011 CIFP Juan de Colonia
  • 11. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos DTD: Elementos (II) □ Introducción • Los descendientes van entre paréntesis. ■ DTD □ XSD • El operador coma « , » separa los descendientes exigidos y en orden. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!DOCTYPE huérfano [ 11/43 <!ELEMENT huérfano (a, b)> <!ELEMENT a ANY> <!ELEMENT b ANY> ]> <huérfano><a/><b/></huérfano> Febrero de 2011 CIFP Juan de Colonia
  • 12. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos DTD: Elementos (III) □ Introducción – El operador « | » separa descendientes alternativos. ■ DTD – Los paréntesis « () » permiten crear subgrupos. □ XSD – Los elementos (o subgrupos) pueden ser opcionales « ? » señala componentes opcionales. « * » permite varios componentes opcionales. « + » exige uno o más componentes. – #PCDATA se emplea para contenido textual. 12/43 <!DOCTYPE padre [ <!ELEMENT padre ( hijo+ ) > <!ELEMENT hijo ( #PCDATA | a | b )* > <!ELEMENT a ANY> <!ELEMENT b ANY> ]> <padre> <hijo /> <hijo><a/></hijo><hijo><b/></hijo> <hijo><a/><b/></hijo><hijo><b/><a/></hijo> <hijo><b/>1<a/>2<b/>¡Hola mundo!<b/>4<b/>5<b/></hijo> </padre> Febrero de 2011 CIFP Juan de Colonia
  • 13. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos DTD: Elementos (IV) □ Introducción ■ DTD □ XSD <!ELEMENT table (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))> <!ELEMENT caption %Inline;> 13/43 <!ELEMENT thead (tr)+> <!ELEMENT tfoot (tr)+> <!ELEMENT tbody (tr)+> <!ELEMENT colgroup (col)*> <!ELEMENT col EMPTY> <!ELEMENT tr (th|td)+> <!ELEMENT th %Flow;> <!ELEMENT td %Flow;> Febrero de 2011 CIFP Juan de Colonia
  • 14. XML (I): ESQUEMAS Y VOCABULARIOS. <!DOCTYPE ...> □ Introducción DTD internos ■ DTD <!DOCTYPE elemento0 [ <!ELEMENT elemento0 ANY> ]> □ XSD DTD externos – Con prólogo donde se indica la codificación: <?xml version="1.0" encoding="utf-8"?> 14/43 • Basados en URI <!DOCTYPE elemento0 SYSTEM "dtd0.dtd"> • Basados en identificador – Si está almacenado no requiere descarga. – URI opcional. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> DTD mixtos <!DOCTYPE elemento1 SYSTEM "dtd0.dtd" [ <!ELEMENT extra ANY> ]> Febrero de 2011 CIFP Juan de Colonia
  • 15. XML (I): ESQUEMAS Y VOCABULARIOS. Actividad II: diseño de DTD Diseñar un DTD para almacenar libros, permitiendo la incorporación de los bloques o simplemente capítulos que lo componen. <libro> <título>Egolatría</título> <autor>Yo mismo</autor> <autor>Conmigo mismo</autor> <bloque> <título>Yo</título> <capítulo><título>El Yo</título></capítulo> <capítulo><título>Mí</título></capítulo> <capítulo><título>Menda</título></capítulo> </bloque> <bloque> <título>Lo demás</título> <capítulo><título>La Nada</título></capítulo> <capítulo><título>El vacío</título></capítulo> </bloque> </libro> Febrero de 2011 CIFP Juan de Colonia
  • 16. XML (I): ESQUEMAS Y VOCABULARIOS. Actividad III: codificación DTD Con el archivo DTD del ejercicio anterior. Convertirlo a codificación Windows-1252 y comprobar la necesidad de indicar la codificación en la declaración de XML en el prólogo. Probar si es compatible un documento XML en UTF-8 con un DTD en la codificación de Windows española. Febrero de 2011 CIFP Juan de Colonia
  • 17. XML (I): ESQUEMAS Y VOCABULARIOS. Actividad V: CSS y XML Buscar información sobre cómo enlazar XML con CSS y preparar una hoja de estilos para el documento del libro. Es conveniente aplicar el formato “display: block;” a los elementos definidos para visualizarlos en líneas separadas. http://www.w3schools.com/Xml/xml_display.asp Febrero de 2011 CIFP Juan de Colonia
  • 18. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos DTD: Atributos (I) □ Introducción <!ATTLIST –elemento– –nombre– –tipo– –opcionalidad– > ■ DTD □ XSD nombre + tipo + opcionalidad • Tipos: restricciones sobre los valores admisibles. • Opcionalidad: 18/43 – Atributos obligatorios/opcionales – Valores por defecto • Hay dos nombres reservados, de uso habitual. – Idioma (BCP 47) del elemento xml:lang – Preservar el espaciado xml:space – Aún requieren declaración para ser usados. <!ATTLIST ejemplo xml:lang CDATA "es-ES" xml:space (default|preserve) "preserve" > Febrero de 2011 CIFP Juan de Colonia
  • 19. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos DTD: Atributos (II) □ Introducción • Tipos: restricciones sobre los valores admisibles ■ DTD – CDATA: general, texto no procesado. □ XSD ID: identificador de elementos, único. IDREF, IDREFS: referencia a un identificador existente. NMTOKEN, NMTOKENS: palabras, nombres válidos. ENTITY, ENTITIES: nombre de entidad definida antes. 19/43 Enumeración de valores permitidos: (a1|a2|b1|c2) • Opcionalidad y valores por defecto – #REQUIRED: obligatorio – #IMPLIED: opcional – Opcional con valor por defecto: "valor" – Opcional, valor por defecto y obligado: #FIXED "valor" <!ELEMENT e0 ANY > <!ATTLIST e0 id ID #REQUIRED refs IDREFS #IMPLIED a0 CDATA #IMPLIED a1 CDATA "220V" a2 CDATA #FIXED "siempre" a3 (pc|mac) #REQUIRED > Febrero de 2011 CIFP Juan de Colonia
  • 20. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos DTD: Atributos (III) □ Introducción ■ DTD □ XSD <!DOCTYPE padre [ 20/43 <!ELEMENT padre (hijo+) > <!ELEMENT hijo EMPTY > <!ATTLIST hijo id ID #REQUIRED a0 CDATA #REQUIRED rel IDREF #IMPLIED > ]> <padre> <hijo id="c6" a0="eso" rel="c7"/> <hijo id="c7" a0="eso"/> </padre> Febrero de 2011 CIFP Juan de Colonia
  • 21. XML (I): ESQUEMAS Y VOCABULARIOS. Actividad V: Diseño DTD Diseñar un modelo de documento DTD para la información de los horarios de los alumnos aplicando las posibilidades explicadas hasta el momento. Ej.: empleando identificadores únicos para los módulos. Febrero de 2011 CIFP Juan de Colonia
  • 22. XML (I): ESQUEMAS Y VOCABULARIOS. Entidades □ Introducción <!ENTITY –nombre– –definición– > ■ DTD □ XSD Constantes, valores reutilizables Varios tipos • Internas / externas 22/43 – Internas. Ej.: <!ENTITY HMundo "Hola mundo"> – Externas. Ej.: <!ENTITY ENT0 SYSTEM "algo.ent"> Ej.: <!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "xhtml-lat1.ent"> • Generales (&nombre;) / de parámetros (%nombre;) – De parámetros, para usar en el propio DTD: Ej.: <!ENTITY % comunes "id ID #IMPLIED"> Predefinidas: &lt; – &gt; – &amp; – &apos; – &quot; Febrero de 2011 CIFP Juan de Colonia
  • 23. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos DTD: Entidades □ Introducción <?xml version="1.0" encoding="utf-8"?> ■ DTD <!ENTITY % contenido "(#PCDATA|p)*"> □ XSD <!ELEMENT html (head,body)> <!ELEMENT head (title)> <!ELEMENT body %contenido;> <!ELEMENT title (#PCDATA)> <!ELEMENT p %contenido;> 23/43 <?xml version="1.0" encoding="utf-8"?> <!ENTITY % ENT0 SYSTEM "htmltrucado.ent"> %ENT0; <!ELEMENT html (head,body)> <!ELEMENT head (title)> <!ELEMENT body %contenido;> <!ELEMENT title (#PCDATA)> <!ELEMENT p %contenido;> <?xml version="1.0" encoding="utf-8"?> <!ENTITY % contenido "(#PCDATA|p)*"> <!ENTITY firma "<p>DHMA2011</p>"> Febrero de 2011 CIFP Juan de Colonia
  • 24. XML (I): ESQUEMAS Y VOCABULARIOS. Espacios de nombres □ Introducción XML Namespaces – xmlns □ DTD ■ XSD • Espacios de nombres. • Permiten la coexistencia de escenarios – Combinación de elementos en el mismo archivo. – Definiciones separadas 24/43 • Se identifican mediante un nombre, un URI – ATENCIÓN: no es una dirección web, sólo un nombre. – Puede no estar disponible si tratamos de acceder a él. Atributo xmlns. Heredado por los elementos hijo. • Espacio de nombres por defecto <html xmlns="http://www.w3.org/1999/xhtml"> • Espacios alternativos, identificados con prefijo <padre xmlns:svg="http://www.w3.org/2000/svg"> … <svg:ellipse cx="2cm" cy="4cm" rx="2cm" ry="1cm" /> Febrero de 2011 CIFP Juan de Colonia
  • 25. XML (I): ESQUEMAS Y VOCABULARIOS. Usando espacios de nombres ● En un mismo documento XML pueden coexistir varios vocabularios/gramáticas que llamamos «espacios de nombres» . ● Cada espacio de nombres se identifica mediante un nombre único, con formato URI, que generalmente no devuelve ninguna página. ● Se selecciona con el atributo «xmlns» y afecta a todos los nodos hijo. ● Se le puede asignar un prefijo para identificar solo a algunos elementos <padre xmlns:prefijo="…"> <prefijo:nombre> … </prefijo:nombre> Febrero de 2011 CIFP Juan de Colonia
  • 26. XML (I): ESQUEMAS Y VOCABULARIOS. Esquemas XML (I) □ Introducción XML Schema Definition Language (XSD) □ DTD ■ XSD – Confusión con el nombre genérico: Esquema XML • Modelo estructural del documento – Nombre adoptado de las bases de datos – Conjunto de restricciones de estructura y contenido verificables por medios automáticos. • Mejoras sobre DTD 26/43 – Formato XML  los esquemas son validables por separado – Mejoras en tipaje: aplicable también al contenido – Mejoras en tipaje: más tipos y permite ampliarlos  + permite una validación más estricta + mejora la comunicación entre aplicaciones, rigor en datos – Soporte para espacios de nombres  reutilización – Muy completo ≠ sencillo ... the syntax of XML Schema was obviously produced by someone who grew up at the ... the syntax of XML Schema was obviously produced by someone who grew up at the bottom of a deep well in the middle of a dark, wasteful moor where he was tortured daily by bottom of a deep well in the middle of a dark, wasteful moor where he was tortured daily by abusive giant squirrels and wishes to share his pain with the world. abusive giant squirrels and wishes to share his pain with the world. Robin Berjon (co-author SVG 1.1 spec) Robin Berjon (co-author SVG 1.1 spec) Febrero de 2011 CIFP Juan de Colonia
  • 27. XML (I): ESQUEMAS Y VOCABULARIOS. Esquemas XML (II) □ Introducción Objetos: Tipos predefinidos: □ DTD ■ XSD element – string attribute – decimal simpleType – float complexType – date group –… 27/43 attributeGroup Compositores sequence choice all Febrero de 2011 CIFP Juan de Colonia
  • 28. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos XSD: Elementos □ Introducción <xs:element name="título" type="xs:string"/> □ DTD <xs:element name="autor" type="xs:string"/> ■ XSD <xs:element name="capítulo"> <xs:complexType> <xs:sequence> 28/43 <xs:element ref="título"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="bloque"> <xs:complexType> <xs:sequence> <xs:element ref="título"/> <xs:element ref="capítulo" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> Febrero de 2011 CIFP Juan de Colonia
  • 29. XML (I): ESQUEMAS Y VOCABULARIOS. El esquema XSD □ Introducción • Elemento raíz del esquema: schema XSD □ DTD <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" ■ XSD targetNamespace="http://www.mio.es/xsd1" xmlns="http://www.mio.es/xsd1"> Vocabulario ... XML Schema </schema> Vocabulario definido 29/43 • Espacio de nombres del propio XML Schema. – Nombres con prefijo – Elementos de XML Schema para construir las definiciones. • Espacio de nombres objeto de la definición. – Nombres sin prefijo – Permite referencias entre elementos propios de forma clara. Vocabulario XML <raíz xmlns="http://www.mio.es/xsd1" a usar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mio.es/xsd1 xsdlibros.xsd"> ... </raíz> Localización del vocabulario Febrero de 2011 CIFP Juan de Colonia
  • 30. XML (I): ESQUEMAS Y VOCABULARIOS. xs – xsi □ Introducción Usamos dos especificaciones estándar. □ DTD ■ XSD – XML Schema: dos espacios de nombres implicados. – Prefijos estándar, ampliamente utilizados pero cambiables. • Schema Namespace – Nombre: http://www.w3.org/2001/XMLSchema 30/43 – En el archivo XSD que contiene las definiciones. – Habitualmente usa los prefijos xs: o xsd: – Elementos XML Schema para construir las definiciones. • Schema Instance Namespace – Nombre: http://www.w3.org/2001/XMLSchema-instance – En el archivo que contiene el documento XML con datos. – Habitualmente usa el prefijo xsi: – Localización de archivos XSD. – Opcional y muy reducido. Solo schemaLocation y noNamespaceSchemaLocation Febrero de 2011 CIFP Juan de Colonia
  • 31. XML (I): ESQUEMAS Y VOCABULARIOS. Elementos XSD □ Introducción • Elementos globales □ DTD – Hijos directos de <schema … > ■ XSD – Definidos con <element … > – Incorporación directa y obligatoria al espacio. – Atributo name para darle nombre y type para el tipo. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" … > 31/43 <xs:element name="título" type="xs:string"/> <xs:element name="libro" type="grupo"/> ... – Se pueden reutilizar/referenciar posteriormente <xs:complexType name="grupo"> <xs:sequence> <xs:element ref="título"/> </xs:sequence> </xs:complexType> </xs:schema> – Tipos complejos: definición en elemento o separada. – Repeticiones: minOccurs="1" maxOccurs="unbounded" Febrero de 2011 CIFP Juan de Colonia
  • 32. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos XSD: Elementos (II) □ Introducción <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" □ DTD targetNamespace="http://www.mio.es/xsd2" xmlns="http://www.mio.es/xsd2"> <xs:element name="título" type="xs:string"/> ■ XSD <xs:element name="autor" type="xs:string"/> <xs:element name="capítulo"> <xs:complexType> <xs:sequence> <xs:element ref="título"/> </xs:sequence> </xs:complexType> </xs:element> 32/43 <xs:element name="bloque"> <xs:complexType> <xs:sequence> <xs:element ref="título"/> <xs:element ref="capítulo" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="libro"> <xs:complexType> <xs:sequence> <xs:element ref="título"/> <xs:element ref="autor" minOccurs="1" maxOccurs="unbounded"/> <xs:choice> <xs:element ref="bloque" minOccurs="1" maxOccurs="unbounded"/> <xs:element ref="capítulo" minOccurs="1" maxOccurs="unbounded"/> </xs:choice> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> Febrero de 2011 CIFP Juan de Colonia
  • 33. XML (I): ESQUEMAS Y VOCABULARIOS. Atributos XSD □ Introducción • Atributos globales □ DTD – Hijos directos de <schema … > ■ XSD – Definidos con <attribute … > – Atributo name para darle nombre y type para el tipo. – use="required" o use="optional" con default="…" 33/43 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" … > <xs:attribute name="cód" type="xs:decimal"/> ... – Se pueden referenciar posteriormente – Van al final (tras sequence/choice/all) <xs:complexType name="codificado"> ... <xs:attribute ref="cód" use="required"/> </xs:complexType> </xs:schema> Febrero de 2011 CIFP Juan de Colonia
  • 34. XML (I): ESQUEMAS Y VOCABULARIOS. Actividad VI: Tipos simples Buscar en las referencias los tipos de datos simples predefinidos y ponerlos a prueba. W3Schools Dankert, E. XML Schema Tutorial Febrero de 2011 CIFP Juan de Colonia
  • 35. XML (I): ESQUEMAS Y VOCABULARIOS. simpleType vs. complexType □ Introducción • Tenemos tipos predefinidos que podemos adaptar □ DTD – restriction / extension ■ XSD – Sobre el tipo indicado con base="…" – También se pueden aplicar a los nuevos tipos creados. – Definiciones globales con nombre, reutilizables. – Definiciones locales sin nombre, en elementos y atributos. 35/43 • simpleType – Aplicables a texto: válido para contenido o atributos • complexType – Cuando hay atributos, elementos hijo o contenido mixto. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" … > <xs:simpleType name="díasemana"> <xs:restriction base="xsd:string"> <xs:enumeration value="miércoles"/> <xs:enumeration value="viernes"/> </xs:restriction> </xs:simpleType> <xs:element name="jornada" type="díasemana"/> </schema> Febrero de 2011 CIFP Juan de Colonia
  • 36. XML (I): ESQUEMAS Y VOCABULARIOS. Ejemplos XSD: Tipos □ Introducción <?xml version="1.0" encoding="utf-8"?> □ DTD <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" ■ XSD targetNamespace="http://www.mio.es/xsd3" xmlns="http://www.mio.es/xsd3"> <xs:simpleType name="díasemana"> <xs:restriction base="xs:string"> <xs:enumeration value="miércoles"/> 36/43 <xs:enumeration value="viernes"/> </xs:restriction> </xs:simpleType> <xs:element name="jornada" type="díasemana"/> <xs:element name="clase"> <xs:complexType> <xs:sequence> <xs:element ref="jornada" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> Febrero de 2011 CIFP Juan de Colonia
  • 37. XML (I): ESQUEMAS Y VOCABULARIOS. Actividad VII: esquemas Reconstruir el ejemplo anterior para que <jornada> sea un elemento vacío con dos atributos día1 y día2 donde indiquemos el día de la semana. Rehacer alguno de los ejercicios de diseño de DTD realizados empleando ahora esquemas XML Schema. Febrero de 2011 CIFP Juan de Colonia
  • 38. XML (I): ESQUEMAS Y VOCABULARIOS. Definiciones globales y locales □ Introducción • Globales: definiciones en primer nivel, en schema. □ DTD – Nombre obligatorio name="…", también para tipos. ■ XSD – Reutilizables usando ref="…" o type="…" • Locales: definiciones dentro de otras definiciones – Permite omitir nombres si no es elemento ni atributo. 38/43 • Se pueden construir esquemas alternativos con unas y otras. • Calificación: prefijos obligatorios o no. – Por defecto los elementos y atributos locales no requieren calificación por prefijo, se identifican por el contexto. – Incompatible con espacio de nombres por defecto. – Se puede forzar el uso del prefijo elementFormDefault="qualified" attributeFormDefault="qualified" Febrero de 2011 CIFP Juan de Colonia
  • 39. XML (I): ESQUEMAS Y VOCABULARIOS. Actividad VIII: otros modelos Existen otros lenguajes para especificar las características de documentos XML. Relax NG es uno de los más citados con una sintaxis más sencilla que XML Schema. Buscar información sobre él y construir y validar ejemplos. Febrero de 2011 CIFP Juan de Colonia
  • 40. XML (I): ESQUEMAS Y VOCABULARIOS. Actividad IX: SVG y MathML Familiarizarse con los lenguajes SVG y MathML. Aprovechar la actividad para revisar conceptos básicos sobre formatos de imágenes y resoluciones e introducir el uso de la aplicación de diseño gráfico Inkscape, pero sin perder nunca de vista la parte técnica analizando el código XML/SVG/CSS. Febrero de 2011 CIFP Juan de Colonia
  • 41. XML (I): ESQUEMAS Y VOCABULARIOS. Referencias W3C Recommendation (2008, W3C) XExtensible Markup Language http://www.w3.org/TR/xml/ W3Schools (WWW) DTD Tutorial http://www.w3schools.com/DTD/ W3Schools (WWW) XML Schema Tutorial http://www.w3schools.com/Schema/ Boulanger, T. y Lecomte, S. (2009, ENI). XML práctico: bases esenciales, conceptos y casos prácticos. ISBN: 978-2-7460-4958-1. Dankert, E. (2005, edankert...) XML Grammars. http://www.edankert.com/grammars/ Webucator (2009) XML Schema Tutorial. http://www.learn-xml-schema-tutorial.com/ Wilde, E. (2010, UC Berkeley) XML Foundations –INFO 242 (CCN 42593)– . http://dret.net/lectures/xml-fall10/ Bibliografía actualizada en delicious: http://www.delicious.com/dhmartin/LM-ASIR Febrero de 2011 CIFP Juan de Colonia
  • 42. XML (I): ESQUEMAS Y VOCABULARIOS. Licencia Este material está disponible bajo una Licencia Creative Commons, http://creativecommons.org/licenses/by-nc-sa/3.0/es/ Febrero de 2011 CIFP Juan de Colonia
  • 43. XML (I): ESQUEMAS Y VOCABULARIOS. ¿Dudas o cuestiones? Febrero de 2011 CIFP Juan de Colonia