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

LM-UT5: DTD, XML Schema

  • 1.
    Lenguajes de Marcasy 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): ESQUEMASY VOCABULARIOS. Contenidos Introducción DTD Espacios de nombres XML Schemas Febrero de 2011 CIFP Juan de Colonia
  • 3.
    XML (I): ESQUEMASY 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): ESQUEMASY VOCABULARIOS. XML por dentro... ● Elementos ● Atributos ● Entidades ● Texto de contenido Febrero de 2011 CIFP Juan de Colonia
  • 5.
    XML (I): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY 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): ESQUEMASY VOCABULARIOS. ¿Dudas o cuestiones? Febrero de 2011 CIFP Juan de Colonia