SlideShare una empresa de Scribd logo
1 de 78
XML y XML Schema


    Programación de Red.
   Ingeniería en Informática
XML y XLM Schema
Objetivos:
 Introducción a XML, como tecnología base
  para el desarrollo de Servicios Web
 Conocer el concepto de espacio de nombres
  en el contexto de XML
 Estudiar XML Schema como mecanismo para
  la validación de documentos XML
 Ver ejemplos de utilización de estas
  herramientas como base para los Servicios
  Web
                                              2
XML y XML Schema


 XML.

 Espacios de Nombres.

 XML Schema.




                         3
XML
 ¿Qué es XML (eXtensible Markup Language)?
  XML es un metalenguaje ⇒ aplicaciones de XML
  Lenguaje de tags (similar en sintaxis a HTML)
  Estandarizado por http://www.w3.org
  Es extensible: XML no impone un conjunto de tags,
   sino sólo unas pocas normas de cómo usarlos. Los
   tags se abren y se cierran y en medio pueden tener
   otros tags anidados. Todos los documentos tienen un
   tag raíz. Los tags pueden tener atributos, etc.
  Permite escribir documentos de texto que expresan
   datos y no aspecto visual o de presentación (a
   diferencia de HTML). XSL ⇒ Presentación            4
XML
 ¿Qué es XML (eXtensible Markup Language)?
  XML es un lenguaje de marcas capaz de estructurar y definir la
   información en un documento.
  Una marca en XML ⇒ Es una etiqueta que ayuda a organizar la
   estructura de un documento y define semánticamente la
   información que identifica.
  XML no es sólo un simple lenguaje de marcado para documentos
   de páginas Web ⇒ Es una familia de tecnologías y estándares
   para la integración e interoperabilidad de aplicaciones Web
  Estructurado ⇒ Se puede modelar datos a cualquier nivel de
   complejidad, y su definición está en un DTD (Document Type Definition)
   o en XML-Schema.
  Comprobable si es válido ⇒ Cada documento se puede validar frente a
   un DTD, a un esquema XML o en su defecto, se puede declarar bien
   formado.
  Independiente del medio ⇒ Para publicar contenidos en múltiples
   formatos.
  Independiente del fabricante y la plataforma ⇒ Para poder utilizar 5
   cualquier herramienta estándar.
XML
 Razones para su utilización
  Facilidad ⇒ Fácil de entender por los humanos y fácil
     de procesar por programas informáticos
    Universal ⇒ Totalmente independiente del sistema
     operativo y del lenguaje de programación
    Versatilidad ⇒ Permite representar cualquier tipo de
     dato de una forma sencilla y sirve para datos sencillos,
     jerárquicos, estructurados, etc.
    Texto plano ⇒ Independiente de la plataforma de
     procesamiento (no binario)
    Estructuración ⇒Documento jerárquico totalmente
     estructurado, formando árboles de datos               6
XML
 Campos de aplicación
  Extracción, Intercambio e integración de información
     entre aplicaciones y sistemas heterogéneos
    Generación de vistas (HTML, WML, PDF, etc.) a partir
     de datos en documentos XML
    Configuración de aplicaciones y de servicios
    Bases de datos
    Sistemas de información geográfica (GML)
    Sistemas de información gerencial
    Etc.
                                                          7
XML
 Estructura general de un documento XML




                                           8
XML
 Formato de un documento XML
  Documento XML: Sólo contiene texto plano, puede
     ser un archivo, una secuencia de caracteres que se
     envía por un socket, etc.
    Aplicación XML: Conjunto particular de tags que
     permiten representar una determinada información (ej.:
     la información sobre datos geográficos del catastro)
    Se dice que un documento XML está bien formado
     (well-formed) si cumple con el conjunto de reglas ⇒
     construir parsers eficientes
    Distingue entre mayúsculas y minúsculas
    Seguir codificación UTF-8, UTF-16, ISO-8859-1, etc.
     ⇒ evitar la “ñ” y caracteres acentuados              9
XML
 Formato de un documento XML
  Comentarios: Empiezan con <!-- y termina con -->,
   pudiendo englobar varias líneas
  Dentro de un comentario no puede aparecer la
   secuencia “--”
  Comentarios tipo <!---- Comentario ----> no
   son válidos
  Declaración XML: <?xml version="1.0"
   encoding="ISO-8859-1" standalone="no" ?>
  version: Indica la versión de la especificación XML a
   la que es conforme el documento (valor 1.0)
  encoding: Indica la codificación de los caracteres del
   documento                                           10
XML
 Formato de un documento XML
  encoding: Por defecto, UTF-8 (es un sistema de
   codificación de longitud variable que permite representar
   todos los caracteres Unicode. El rango de caracteres del
   ASCII estándar (7 bits) se representa con un byte ⇒ un
   documento ASCII es un documento UTF-8. Los caracteres
   128..2047 se representan con 2 bytes y el resto de
   caracteres se representan con 3 bytes
  encoding: Cuando un documento XML se crea con un
   editor ASCII de 8 bits, si el documento usa caracteres no
   estándar ASCII (128..255) (ej.: á, Ü, ñ, etc.), puede
   especificar ISO-XXXX- 1. Codificación de un byte 0..127 ⇒
   ASCII estándar 128..159 ⇒ caracteres de control 160..255
   ⇒ letras acentuadas y caracteres adicionales para
   determinados idiomas. Por ejemplo, ISO-8859-1 ⇒ Latin 1   11
XML
 Formato de un documento XML
  standalone: yes ⇒ El documento no necesita
   ningún otro. no (por defecto) ⇒ El documento requiere
   algún otro (en el ejemplo, el esquema referenciado)
  Todo documento debe tener un elemento raíz. Cuando
   se usa un esquema para validar el documento XML, se
   indica en el tag raíz. XML ⇒ datos en forma de árbol
  Entre el tag de inicio de un elemento y el de fin puede
   haber otros elementos o texto. Si contiene texto, los
   blancos forman parte de él
  A diferencia de HTML, no se puede mezclar el orden
   de los tags anidados. El primer elemento que se abre
   debe ser el último que se cierra                      12
XML
 Formato de un documento XML
  Un elemento puede tener atributos, que indican
   características (contenido y/o propósito) propias de los
   elementos. El valor del atributo tiene que ir
   entrecomillado, de la forma: atributo=“valor”, y
   para un elemento dado, un atributo sólo puede tener
   un valor
  Elemento vacío: No tiene elementos anidados ni
   texto. Puede tener atributos. Ejemplo: <tag
   atr1=“val1” atr2=“val2”></tag>, por
   comodidad, se puede usar la notación <tag
   atr11=“val1” atr2=“val2”/>
                                                         13
XML
 Formato de un documento XML
  Un documento bien formado debe cumplir dos
   condiciones siguientes: (1) las etiquetas están
   anidadas correctamente y (2) los atributos son únicos
   en un elemento
  En principio, se puede seguir la siguiente convención:
   Usar elementos para datos multivaluados o de gran
   cantidad de texto; y usar atributos en caso contrario
  Para poder incluir ciertos caracteres en el valor de un
   atributo o en el texto de un elemento, XML predefine
   las siguientes referencias a entidades: &lt; ⇒ <,
   &amp; ⇒ &, &gt; ⇒ >, &quot; ⇒ “, &apos; =>
   ‘. Por ejemplo: <tag char=“&quot;”> Si A &lt;
   B, entonces ... </tag>                                 14
XML
 Ejemplo de un documento XML




                                15
XML
 Tecnología XML
  XML Schema. Recomendación de W3C para la
   creación de esquemas para documentos XML
  RDF (Resource Definition Framework). Propuesta para
   la representación de metadatos en XML
  Hojas de estilo. Lenguajes que transforman
   documentos XML en documentos HTML, de forma que
   los documentos XML se puedan ver en un navegador.
   XSL (XML Stylesheet Language) ⇒ Lenguaje de
   transformación
  SAX (Simple API XML). Parser de documentos XML
  MathML. Aplicación de XML a matemáticas
  XPath. Define la sintaxis para identificar y referirse las
   distintas partes de un documento XML.                    16
XML
 Tecnología XML
  DOM (Document Object Model). Parser que construye
   una representación en árbol de un documento XML.
   Ofrece una visión orientada a objetos del documento
   XML en lugar de una visión de tipo abstracto de datos.
   Para ello crea una serie de interfaces que definen el
   comportamiento de cada elemento. Así se accede a la
   estructura y a los datos mediante métodos
  XLink y XPointer. Permiten añadir enlaces e
   imágenes a XML. Sin embargo, aún no son soportados
   por ningún navegador por lo que actualmente, en las
   páginas XML no se pueden mostrar imágenes o
   enlaces. La solución sería generar HTML mediante
   XSLT
                                                      17
XML
 Tecnología XML
  XQuery. Proporciona un modo flexible de consulta
   para extraer datos de los documentos en el Web.
  XML Namespaces. Describe cómo se puede asociar
   una URL con cada etiqueta y atributo de un documento
   XML.
  XML Schemas. Proporcionan un modo de definir la
   estructura, el contenido y la semántica de los
   documentos XML.
  XEncryption, XSignature y XSecurity. Tratan los
   aspectos de seguridad y autentificación en el
   intercambio de documentos XML.

                                                    18
XML
 Ventajas XML
  Es un formato estructurado. Contiene información y
   metainformación
  Ha sido diseñado específicamente para Internet.
   Soportado por visualizadores y servidores
  Numerosas herramientas de procesamiento
  Legible por personas humanas
  Admite la definición de vocabularios específicos
  Separa contenido del procesamiento y visualización
  Aumenta la seguridad mediante la validación de
   documentos
  Formato abierto, respaldado por numerosas
   organizaciones                                       19
XML
 Inconvenientes XML
  Puede requerir demasiado espacio, ancho de banda y
     tiempo de procesamiento. Documentos largos con
     mucha información redundante
    Es una sintaxis de documentos, no un lenguaje de
     programación
    Es posible crear formatos y vocabularios propietarios
    Puede fomentar la proliferación de vocabularios
     específicos
    Bueno para texto, malo para datos binarios
    Poco eficiente como lenguaje de almacenamiento de
     bases de datos                                       20
XML
 Conclusiones sobre XML
  La falta de estructura en la información en Internet incide
   negativamente en las prestaciones de la red y en las posibilidades
   de aprovechamiento de la información allí depositada
  XML es un lenguaje de marcado de documentos diseñado para
   trabajar en Internet simple, flexible y fácil de utilizar
  Hay mucho trabajo por hacer para conseguir un intercambio
   automatizado de documentos en Internet que permita el desarrollo
   de las aplicaciones ya existentes y de otras nuevas
  Enlaces de interés relativos a XML
        WWW Consortium (W3C) ⇒ www.w3.org
        Escuela W3 ⇒ www.w3schools.com
        XML.com de O'Reilly ⇒ www.xml.com
        Especificación XML 1.0 ⇒ www.w3.org/TR/REC-xml
         OASIS ⇒ www.oasis-open.org
                                                                  21
     
XML y XML Schema


 XML.

 Espacios de Nombres.

 XML Schema.




                         22
Espacios de Nombres
 Un documento XML puede hacer uso de espacios de
  nombres
 Concepto similar al de CORBA IDL y C++, paquete
  Java, etc.
 Permiten evitar conflictos de nombres cuando en un
  documento XML se usan tags de distintas aplicaciones
  XML
 Cada espacio de nombres está asociado a una URI
  (Uniform Resource Identifier) o identificador global
  único, que debe ser única. Se aconseja usar URL
  (Uniform Resource Locator). No tienen porque tener
  una existencia real (y de hecho, no suelen tenerla)
                                                    23
Espacios de Nombres
 Por ejemplo: <asignaturas
  xmlns:xsi="http://www.w3.org/2001/XMLSche
  ma-instance"
  xsi:noNamespaceSchemaLocation="http://www
  .ual.es/~acorral/Asignaturas.xsd">
 xmlns: permite especificar los elementos y los que éste
  contiene pueden usar los atributos y elementos del
  espacio de nombres asociado con la URL
  http://www.w3.org/2001/XMLSchema-instance,
  prefijándolos con xsi:
 Es la URI la que define el espacio de nombres y no el
  prefijo. Distintas documentos XML pueden usar distintos
  prefijos para referirse a un mismo espacio de nombres
                                                      24
Espacios de Nombres
 En este ejemplo usamos el espacio de nombres
  http://www.w3.org/2001/XMLSchema-
  instance para usar el atributo
  noNamespaceSchemaLocation, que permite
  especificar la ubicación del esquema que valida a un
  documento XML que no define un espacio de nombres
  propio
 Es posible ir asociando espacios de nombres a los
  elementos según van apareciendo
 Mediante xmlns=“...” se define un espacio de
  nombres por defecto (sin alias)
 Ampliamente utilizados para combinar vocabularios.
  Facilitan la incorporación de elementos no previstos
  inicialmente                                         25
XML y XML Schema


 XML.

 Espacios de Nombres.

 XML Schema.




                         26
XML Schema
 Esquema ⇒ Definición de estructura de un conjunto
    de documentos XML
   Validar ⇒ Chequear que un documento sigue un
    esquema. Principal ventaja: protección de errores.
    Otras aplicaciones: edición, compresión, etc.
   Existen varios tipos de documentos para expresar los
    tags válidos de una aplicación XML y sus restricciones
   DTD (Document Type Definition) ⇒ Un ejemplo de
    esquemas (con varias limitaciones)
   XML Schema ⇒ Desarrollo posterior del W3C (.xsd)
   Existen otros: RELAX-NG, Schematron, etc.
                                                         27
XML Schema
 Características de los DTDs
  Especifican estructura del documento: elementos,
     atributos, anidamientos, etc.
    Integridad referencial mínima (ID, IDREF)
    Mecanismo sencillo de abstracción: entidades ≈
     macros
    Inclusión de documentos externos
    Integrados en XML (Parte de la especificación)
    Sencillos de comprender (≈ Expresiones regulares)
    Semánticamente pobres
                                                         28
XML Schema
 Limitaciones de los DTDs
  La Sintaxis no es XML (difíciles de manipular)
  No soportan Espacios de Nombres
  No permiten especificar tipos de datos (por ejemplo:
   enteros, flotantes, fechas, etc. Ni secuencias no ordenadas
   ((e1,e2,e3)|(e1,e3,e2)|(e2,e1,e3)|...(e3,e2,e1))
  No hay soporte para declaraciones sensibles al contexto:
   Los elementos se definen todos a nivel de documento,
   ejemplo, contenido con el mismo nombre cuya estructura
   cambia en diferentes contextos
  Soporte limitado para referencias cruzadas, no es posible
   formar claves a partir de varios atributos o de elementos
  No son extensibles (una vez definido, no es posible añadir
   nuevos vocabularios a un DTD)                             29
XML Schema
 Los Schemas permiten
  Describir estructura
     Anidación
     Multiplicidad
     Ordenamiento

  Describir tipos
     Para velocidad de funcionamiento
     Para mejor almacenamiento
     Para búsquedas
     Para inserción de datos
     Para detectar errores
                                         30
XML Schema
 Los tipos de datos tienen en XML Schema la función
  de las clases en la POO. El usuario puede construir
  tipos de datos a partir de tipos predefinidos, agrupando
  elementos y atributos de una determinada forma y con
  mecanismos de extensión parecidos a la herencia.
 Los tipos de datos se clasifican en función de los elementos
  y atributos que contienen ⇒ Los tipos de datos pueden ser
  simples o complejos.
    Tipos simples
       Tipos predefinidos de XML: string, double, boolean, etc.
       List (lista de datos separados por espacios).
       Union (tipo de dato derivado de la unión de tipos predefinidos).
    Tipos complejos ⇒ Aquellos que tienen elementos hijos y/o
                                                                           31
     atributos.
XML Schema
 XML Schema incluye el uso de namespaces. Los
  "espacios de nombres" permiten definir elementos con
  igual nombre dentro del mismo contexto, siempre y
  cuando se anteponga un prefijo al nombre del
  elemento. El uso de namespaces también evita
  confusiones en la reutilización de código.
 Es posible agrupar atributos, haciendo más
  comprensible el uso de un grupo de aspectos de varios
  elementos distintos, pero con denominador común,
  que deben ir juntos en cada uno de estos elementos.
 Pueden tener nombre o ser anónimos. Si tienen
  nombre pueden ser reutilizados dentro del mismo
  XML Schema o por otros XML Schemas                  32
XML Schema
 Objetivos de diseño
  Sintaxis XML
  Soporte para Espacios de Nombres
  Mayor expresividad. Restricciones numéricas e
   integridad dependientes del contexto
  Tipos de datos
       Gran cantidad de tipos de datos predefinidos
       Creación de tipos de datos por el usuario
  Extensibilidad
     Inclusión/Redefinición de esquemas
     Herencia de tipos de datos
  Soporte a documentación                             33
XML Schema
                                                                                   Espacio de
 Ejemplo                                                                           nombres
 <xsd:schema targetNamespace=“http://www.ac.upc.es/aad/libro” xmlns=“http://www.w3.org/2001/XMLSchema”>
 <simpleType name=“linea”>
   <restriction base=“string”> <maxLength value=“50”/> </restriction>
 </simpleType>
 <simpleType name=“sigloXX”>
   <restriction base=“integer”>
      <minInclusive value=“1900”/> <maxInclusive value=“1999”/>
   </restriction>       Raíz
 </simpleType>
 <element name=“libro” type=“TipoLibro”/>
 <complexType name=“TipoLibro”>
   <sequence>
    <element name=“titulo” type=“linea”/>
    <element name=“autor” type=“linea”/>
    <element name=“anyo” type=“sigloXX”/>
    <element name=“precio” type=“decimal”>
         <complexType> <attribute name=“divisa” type=“string”/>
         </complexType>
    </element>
   </sequence>
   <attribute name=“isbn” type=“ID”/>
  </complexType>
 </element>
 </xsd:schema>
                                                                                                   34
XML Schema
 Ventajas al utilizar schemas
  Utilizan una gran cantidad de tipos de datos básicos
  Son extensibles ⇒ restricciones, extensiones, herencia
  Están escritos en XML
  Resulta más largo que un DTD pero a cambio:
     Mayor precisión en la definición de tipos de datos: <date
      type=“date”>1999-03-11</date> ⇒ ¿11 de marzo o 3
      de noviembre?
     La exportación e importación de datos en formato xml
      más sencilla
     Posibilidad de uso de datos complejos definidos por el
      usuario                                                35
XML Schema
 Características de XML Schema
  XML Schema cuenta con una serie de tipos
   predefinidos como son las cadenas, los enteros, etc.
  Un esquema creado con XML Schema se guarda en
   un archivo de texto con la extensión .xsd, y
   normalmente siguen el siguiente patrón




                                                          36
XML Schema
 Características de XML Schema
  El espacio de nombres del XMLSchema es xsd:
   <xsd:schema
   xmlns:xsd="http://www.w3.org/2001/XMLSchema”/>
  schemaes el elemento raíz del documento
  Un elemento (element) se define como
   <xsd:element name="nombre" type="tipo"/>
  name es  el nombre del elemento y type el tipo de datos
  Los valores más comunes de tipos de datos (type) son:
      xsd:boolean            xsd:integer
      xsd:date               xsd:string
      xsd:decimal            xsd:time
  Ej.: <xsd:element name="apellido" type="xsd:string"/> 37
XML Schema
 Características de XML Schema
  Los atributos (attribute) se declaran:
   <xsd:attribute name="name“ type="type"/>
  name y type es igual que en xsd:element
  Otros atributos:
     default="default value" ⇒ si no se especifica otro
      valor
     fixed="value" ⇒ no se puede especificar otro valor

     use="optional" ⇒ el atributo no es obligatorio (por
      defecto)
     use="required" ⇒ el atributo debe estar presente

  Ejemplo: <xsd:attribute name=“idioma"
                                                      38
   type="xsd:string"/>
XML Schema
 Definición de tipos
  De los tipos básicos pueden derivarse nuevos tipos,
   simples o complejos
     Los tipos simples son tipos (de elementos o
      atributos) que tienen sólo valores y no otros
      atributos o elementos. Se definen mediante
      xsd:simpleType
    <xsd:element name=“nombre” type=“xsd:string”/>
    <xsd:attribute name=“identificacion”
      type=“xsd:ID”/>
       Los tipos complejos pueden contener cualquier
        combinación de contenido de elementos,
        información de caracteres (texto) y atributos. Se
        definen con xsd:complexType                         39
40
XML Schema
 Tipos simples
  Para definir un tipo simple personalizado se sigue la
   sintaxis siguiente:
 <xsd:simpleType name=”nombreTipoPersonalizado”>
   <xsd:restriction base=”nombreTipoBase”>
     ... Restricciones o facetas ...
   </xsd:restriction>
 </xsd:simpleType>
  donde nombreTipoPersonalizado es el nombre del tipo
   que se quiere definir, nombreTipoBase es el tipo que se
   está tomando como base para la definición de nuestro
   tipo, y las Restricciones son cada una de las
   expresiones o reglas que definen el tipo personalizado
                                                           41
XML Schema
 Tipos simples (restricciones)
  Permiten definir un tipo simple a partir de otro,
   restringiendo los valores de este último ⇒ Las
   restricciones representan uno de los mecanismos para
   definir tipos derivados de otros tipos simples
  El tipo Genre define un tipo string enumerado, es
   decir, sus valores posibles están restringidos a uno de
   los definidos en la enumeración
  Existen muchas otras posibilidades de restricciones
       Definir un tipo derivado de un string que restringe la
        longitud máxima de sus posibles valores
       Definir un tipo derivado de un string que restringe sus
        valores mediante una expresión regular
                                                              42
XML Schema
 Tipos simples (restricciones)

  Permiten restringir el valor que se le puede dar
   a un elemento o atributo XML
  Tipos de restricciones:
       Sobre valores
       Sobre un conjunto de valores
       Sobre series de valores
       Sobre espacios en blanco
  Se pueden definir también ⇒ enumeraciones
   patrones, rangos y listas                     43
XML Schema
 Tipos simples (restricciones)
  La forma general de establecer una restricción sobre
   un valor es:
   <xsd:element name="name">      (o xsd:attribute)
     <xsd:restriction base="type">
       ... Restricciones ...
     </xsd:restriction>
   </xsd:element>
  Por ejemplo:
   <xsd:element name=“edad">
     <xsd:restriction base="xsd:integer">
       <xsd:minInclusive value="0">
       <xsd:maxInclusive value="140">
     </xsd:restriction>
   </xsd:element>                                         44
XML Schema
 Tipos simples (restricciones)
  Restringe el valor a un conjunto de valores.
   <xsd:enumeration value=”valor”/>
  Ejemplo:
     <xsd:element name=“estacion">
       <xsd:simpleType>
         <xsd:restriction base="xsd:string">
           <xsd:enumeration value=“primavera"/>
           <xsd:enumeration value=“verano"/>
           <xsd:enumeration value=“otoño"/>
           <xsd:enumeration value=“invierno"/>
         </xsd:restriction>
       </xsd:simpleType>
     </xsd:element>
                                                  45
XML Schema
 Tipos simples (restricciones)
  Para limitar el contenido del elemento XML definiendo
   las series de números y letras que se pueden usar
   patrones (pattern). <xsd:pattern
   value=”expresionRegex”/>
  Ejemplo
    <xsd:element name="letra">
      <xsd:simpleType>
        <xsd:restriction base="xs:string">
          <xsd:pattern value="[a-z]"/>
          <!-- <xsd:pattern value=“INV06d{3}"/> -->
        </xsd:restriction>
      </xsd:simpleType>
                                                  46
    </xsd:element>
XML Schema
 Tipos simples (restricciones)
  expresionRegex ⇒ indica cómo debería ser
   el formato del contenido. Lenguaje regex,
   selección de símbolos
       . (el punto) ⇒ Cualquier carácter
       d ⇒ dígito. D ⇒ No dígito
       s ⇒ espacio en blanco y salto de línea. S ⇒
        Distinto de espacio en blanco y salto de línea
       * (asterisco) ⇒ Para tener cero o más
        elementos de los precedidos por *
       | ⇒ Para elegir un valor entre varios            47
XML Schema
 Tipos simples (restricciones)

  Símbolos regex
    ? ⇒ Para tener cero o un elemento de los
     precedidos por la ?
    + ⇒ Para tener uno o más elementos de los
     precedidos por el +
    {x} ⇒ Para repetir exactamente x valores del
     elemento que precede a las llaves
    {x,} ⇒ Para repetir al menos (mínimo) x
     valores del elemento que precede a las llaves
    {x,y} ⇒ Para repetir entre x e y valores del
     elemento que precede a las llaves               48
XML Schema
 Tipos simples (restricciones)

  Restricciones sobre espacios en blanco.
   whiteSpace ⇒ dice lo que hay que hacer con
   los espacios en blanco
       value="preserve" ⇒ Mantiene los espacios
        en blanco como están
       value="replace" ⇒ Cambia los espacios en
        blanco (saltos, tab, …) por espacios
       value="collapse" ⇒ Reemplaza todas las
        secuencias de espacios en blanco por un sólo
        espacio en blanco
                                                   49
XML Schema
 Tipos simples (restricciones)
  Restricciones sobre números (rangos)
    minInclusive ⇒ Número debe ser ≥ value
    minExclusive ⇒ Número debe ser > value
    maxInclusive ⇒ Número debe ser ≤ value
    maxExclusive ⇒ Número debe ser < value
    totalDigits ⇒ Número debe tener
     exactamente value dígitos
    fractionDigits ⇒ Número no debe tener
     más de value dígitos después del punto
     decimal
                                              50
XML Schema
 Tipos simples (restricciones)

  Restricciones sobre string (rangos)
    length ⇒ El string debe contener
     exactamente value caracteres
    minLength ⇒ El string debe contener al
     menos value caracteres
    maxLength ⇒ El string no debe contener más
     de value caracteres
    pattern ⇒ El value es una expresión regular
     que el string debe cumplir
                                              51
XML Schema
 Tipos simples (restricciones)

  Ejemplos
       <xsd:pattern value=“0-[2-6][0-9]d{5}-[0-
        9x]"/>
       <xsd:pattern value=“84sd([0-
        9]|s){6}s[0-9x]"/>
       <xsd:pattern value=“d {7,8}[A-Z]"/>




                                                52
XML Schema
 Tipos simples (restricciones)
  Listas: Colecciones de datos similares a los arrays
       <xsd:list base=”tipoBase”/>
       <xsd:list base=”tipoBase”>
          ... Restricciones sobre longitud ...
        </xsd:list>
       Ejemplo
        <xsd:simpleType name=“alineacion”>
          <xsd:list base=“xsd:string"/>
          <xsd:lenght value=“5"/>
        </xsd:simpleType>


                                                         53
XML Schema
 Tipos complejos
  Elementos que contienen otros elementos hijo o que
   contienen atributos o texto
  Se suelen dividir en 4 tipos:
     Elementos vacíos ⇒ Sólo contienen atributos,
      nunca elementos o texto
     Elementos no vacíos con atributos ⇒ Contienen
      texto y posiblemente atributos
     Elementos con elementos hijos ⇒ No contienen
      texto, sólo incluyen atributos o elementos
     Elementos con elementos hijos y con “texto” o valor
      propio (mixtos) ⇒ Contienen una combinación de
      elementos, atributos y texto                     54
XML Schema
 Tipos complejos. Ejemplos

<product pid="1345"/>


<comida tipo=“postre”>helado</comida>

<empleado>
  <nombre>Manuel</nombre>
  <apellidos>Suarez</apellidos>
</empleado>

<descripcion>Sucedió el <date>03.03.99</date></descripcion>



                                                              55
XML Schema
 Tipos complejos. Sintaxis
  Se definen como:
   <xsd:element name="name" type="tipo">
     <xsd:complexType>
       ... Declaración del tipo ...
     </xsd:complexType>
   </xsd:element>
  Ejemplo:
 <xsd:element name="empleado">
   <xsd:complexType>
     <xsd:sequence>
       <xsd:element name="nombre" type="xsd:string"/>
       <xsd:element name="apellidos" type="xsd:string"/>
     </xsd:sequence>
   </xsd:complexType>
 </xsd:element>                                         56
XML Schema
 Tipos complejos. Sintaxis
  También podremos usar la siguiente sintaxis si
   queremos usar el tipo en más de un elemento:
 <xsd:element name="empleado" type="personainfo"/>
 <xsd:element name="estudiante" type="personainfo"/>
 <xsd:element name="miembro" type="personainfo"/>

 <xsd:complexType name="personainfo">
    <xsd:sequence>
        <xsd:element name="nombre" type="xsd:string"/>
        <xsd:element name="apellido" type="xsd:string"/>
    </xsd:sequence>
 </xsd:complexType>
                                                           57
XML Schema
 Tipos complejos. Extensión y restricción

  Un tipo complejo puede estar basado
   (extendido) en otro tipo complejo
   <xsd:complexType name="newType">
     <xsd:complexContent>
       <xsd:extension base=“xsd:anyType">
         ... Declaraciones de atributos ...
       </xsd:extension>
     </xsd:complexContent>
   </xsd:complexType>



                                              58
XML Schema
 Tipos complejos. Extensión y restricción
  Un tipo complejo puede estar basado en la
   restricción de otro tipo complejo
 <xsd:complexType name=”nombreTipo”>
   <xsd:simpleContent>
       <xsd:restriction base=”nombreTipoBase”>
             ... Restricciones o facetas ...
             ... Declaración de atributos ...
       </xsd:restriction>
   </xsd:simpleContent>
 </xsd:complexType>


                                                 59
XML Schema
 Tipos complejos. Extensión y restricción
  Ejemplo. Definir un tipo complejo que se adapte a la
   dirección postal, asumiendo que ya hay definido un
   tipo Dirección
 <xsd:complexType name=“DireccionPostal">
  <xsd:complexContent>
   <xsd:extension base=“tipo:Direccion">
    <sequence>
     <element name=“provincia” type=“Provincia”/>
     <element name=“codigopostal” type=“positiveInteger”/>
    </sequence>
   </xs:extension>
  </xs:complexContent>
 </xs:complexType>
                                                          60
XML Schema
 Tipos complejos. Herencia
 <xsd:element name="empleado" type="fullpersonainfo"/>
 <xsd:complexType name="personainfo">
   <xsd:sequence>
     <xsd:element name="nombre" type="xsd:string"/>
     <xsd:element name="apellido" type="xsd:string"/>
   </xsd:sequence>
 </xsd:complexType>
 <xsd:complexType name="fullpersonainfo">
   <xsd:complexContent>
     <xsd:extension base="personainfo">
       <xsd:sequence>
         <xsd:element name="direccion" type="xsd:string"/>
         <xsd:element name="ciudad" type="xsd:string"/>
         <xsd:element name="pais" type="xsd:string"/>
       </xsd:sequence>
     </xsd:extension>
   </xsd:complexContent>                                61
 </xsd:complexType>
XML Schema
 Tipos complejos. Elementos vacíos
  Los elementos vacíos (con atributos) son “complejos”
 <xsd:attribute nombre=”nombreAtributo” type=”tipoBasico”>
    ... Restricciones ...
 </xsd:attribute>
  Ejemplo
 <xsd:element name="producto">
   <xsd:complexType>
     <xsd:attribute name="prodid"
       type="xsd:positiveInteger"/>
   </xsd:complexType>
 </xsd:element>
                                                       62
XML Schema
 Tipos complejos. Elementos mixtos
  Pueden contener texto y elementos
  Se añade mixed="true" al elemento xsd:complexType
  El texto no se menciona en el elemento, y puede ir en
   cualquier sitio (básicamente se ignora)
 <xsd:complexType name="paragraph" mixed="true">
  <xsd:sequence>
   <xsd:element name="someName” type="xsd:anyType"/>
  </xsd:sequence>
 </xsd:complexType>


                                                       63
XML Schema
 Tipos complejos. Indicadores

  De Orden:
      En un determinado orden o secuencia:
       sequence
      Pudiendo el autor del documento escoger
       alguno de los elementos del grupo: choice
      Dar al autor total libertad tanto respecto al
       orden como a la selección de elementos: all
  De ocurrencias: cardinalidades ⇒ minOccurs y
   maxOccurs
                                                       64
XML Schema
 Tipos complejos. xsd:sequence

  Es un “compositor” que define una secuencia
   ordenada de elementos
 <xsd:element name="persona">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element name="nombre" type="xsd:string"/>
    <xsd:element name="apellido" type="xsd:string"/>
    <xsd:element name=“edad" type="xsd:int"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>

                                                       65
XML Schema
 Tipos complejos. xsd:choice
  Elementos que contienen alternativa de
   elementos, en los que sólo puede aparecer
   uno de ellos
 <xsd:element name=“transporte">
  <xsd:complexType>
   <xsd:choice>
    <xsd:element name="tren" type="xsd:string"/>
    <xsd:element name="avion" type="xsd:string"/>
    <xsd:element name="coche" type="xsd:string"/>
   </xsd:choice>
  </xsd:complexType>
 </xsd:element>
                                                    66
XML Schema
 Tipos complejos. xsd:all

  Permite a los elementos aparecer en cualquier
   orden
 <xsd:element name="persona">
  <xsd:complexType>
   <xsd:all>
    <xsd:element name="nombre" type="xsd:string"/>
    <xsd:element name="apellidos" type="xsd:string"/>
   </xsd:all>
  </xsd:complexType>
 </xsd:element>


                                                        67
XML Schema
 Tipos complejos. minOccurs y maxOccurs
  Se utilizan para indicar el número máximo y mínimo de
     veces que puede aparecer un elemento hijo de un
     elemento complejo
    minOccurs = 0: Opcionalidad
    maxOccurs = unbounded: no existe valor límite




                                                       68
XML Schema
 Tipos complejos. Comentarios

  annotation     ⇒ Mecanismo para documentar
     los componentes de un esquema, haciendo
     una función similar a los comentarios
    appinfo ⇒ Proporciona información a otras
     aplicaciones, lo que supone un procesamiento
     externo al propio documento
    documentation ⇒ Texto o referencia a texto
     dentro del elemento annotation
                                               69
XML Schema
 Tipos complejos. Comentarios
 <xsd:complexType name=“elemento”>
   <xsd:annotation>
      <xsd:documentation>
           ... este elemento es ...
      </xsd:documentation>
   </xsd:annotation>
 </xsd:complexType>



                                      70
XML Schema
 Ejemplo XML Schema (1)
 <xsd:complexType name=“vehiculo”>
  <xsd:sequence>
   <xsd:element name="nruedas" type="xsd:integer"/>
   <xsd:element name=“caballos" type="xsd:integer"/>
   <xsd:element name=“marca" type="xsd:string"/>
   <xsd:element name=“combustible" type=“combisList"/>
  </xsd:sequence>
  <xsd:attribute name=“identificador” type=“xsd:string”>
 </xsd:complexType>
 <xsd:simpleType name=“combusList” type=“xsd:string”>
  <xsd:enumeration value=“gasoleo"/>
  <xsd:enumeration value=“sin plomo 95"/>
  <xsd:enumeration value=“sin plomo 98"/>
 </xsd:simpleType>
 <xsd:complexType name=“coche">
  <xsd:complexContent>
   <xsd:extension base=“vehiculo">
    <xsd:element name=“plazas" type="xsd:integer"/>
    <xsd:element name=“velocidadMax" type="xsd:decimal"/>
   </xsd:extension>
  </xsd:complexContent>                                     71
 </xsd:complexType>
XML Schema
 Ejemplo XML Schema (1)
 <xsd:complexType name=“camion">
  <xsd:complexContent>
   <xsd:extension base=“vehiculo">
    <xsd:element name=“pma" type="xsd:integer"/>
    <xsd:element name=“autonomia" type="xsd:float"/>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

 Utilización de estos tipos
 <camion identificador=“BSX6541”>
  <nruedas>10</nruedas>
  <caballos>800</caballos>
  <marca>VOLVO</marca>
  <combustible>gasoleo</combustible>
  <pma>45800</pma>
  <autonomia>2345.66</autonomia>
                                                       72
 </camion>
XML Schema
 Ejemplo XML Schema (2)
 <xsd:element name=“alumno”>
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element name="nombre" type="xsd:string"/>
    <xsd:element name="apellidos" type="xsd:string"/>
    <xsd:element name="nacim" type="xsd:gYear” minOccurs="0“
    maxOccurs="1"/>
   </xs:sequence>
   <xs:attribute name="dni" type="xsd:integer"/>
  </xs:complexType>
 </xs:element>

 Utilización de estos tipos
 <alumno dni="9399390">
  <nombre>Juan</nombre>
  <apellidos>García García</apellidos>
  <nacim>1985</nacim>
                                                               73
 </alumno>
XML Schema
 Ejemplo XML Schema (3)
 <?xml version=”1.0”?>
 <schema xmlns=”http://www.w3.org/2001/XMLSchema”
  targetNS=”http://ejemplo.com/Cliente.xsd”
  xmlns:tns=”http://ejemplo.com/Cliente.xsd”>
  <element name=”cliente” type=”TipoCliente”/>
   <complexType name=”TipoCliente”>
    <sequence>
     <element name=”nombre”>
      <simpleType>
       <restriction base=”string”>
        <maxLength value=”40”/>
       </restriction>
      </simpleType>
     </element>
     <element name=”NIF” type=”tns:TipoNIF”/>
     <element name=”direccion” type=”string”/>
     <element name=”telefono” type=”tns:TipoTelefono”/>
     <element name=”gastoTotal” type=”decimal”>           74
    </sequence>
XML Schema
 Ejemplo XML Schema (3)
  <attribute name=”id”>
     <simpleType>
      <restriction base=”string”>
       <pattern value=”/d{8}-[A-Z]{4}”/>
      </restriction>
     </simpleType>
    </attribute>     Esquema para los clientes de un comercio
   </complexType>
   <simpleType name=”TipoNIF”>
    <restriction base=”string”>
     <pattern value=”/d{8}-[A-Z]{1}”/>
    </restriction>
   </simpleType>
   <simpleType name=”TipoTelefono”>
    <restriction base=”integer”>
     <pattern value=”/d{9}”/>
   </restriction>
  <simpleType>                                            75
 </schema>
XML Schema
 Otras características de XML Schema

  Agrupaciones (xsd:group) ⇒ Es posible
   nombrar agrupaciones de elementos y
   atributos para hacer referencias a ellas
  Uniones (xsd:union) ⇒ Como conocemos a
   las uniciones
  Tipos abstractos (abstract=“true”) ⇒ tipo
   abstracto que no puede usarse directamente
  Inclusión de esquemas (xsd:include) ⇒ incluir
   elementos de otros esquemas (mismo names.)
                                              76
XML Schema
 Otras características de XML Schema

  Importación de esquemas (xsd:import) ⇒
   incluir elementos de otros esquemas con
   distintos espacios de nombres (namespaces)
  Redefinición de esquemas (xsd:redefine) ⇒
   similar a include pero permite modificar los
   elementos incluidos
  Indicar que un elemento es único (xsd:unique)
   ⇒ también para atributos y combinac. (atr-ele)
  Indicar unicidad y clave (xsd:key)
                                               77
XML Schema
 Otras características de XML Schema
  Indicar referencias a claves (xsd:keyref) ⇒ especifica
   que debe hacer referencia a una clave (claves
   externas)
  Valores nulos (empty (sin contenido) xsd:nil=“true”
   (no hay valor)). Para indicar que un elemento puede
   ser nulo sin estar vacío (nillable=“true”)
  any ⇒ indica cualquier contenido de un determinado
   espacio de nombres
  anyAttribute ⇒ indica cualquier atributo de un
   espacio de nombres
  ...                                                 78

Más contenido relacionado

La actualidad más candente

Xml query language and navigation
Xml query language and navigationXml query language and navigation
Xml query language and navigationRaghu nath
 
HISTORIA DE LAS BASES DE DATOS
HISTORIA DE LAS BASES DE DATOSHISTORIA DE LAS BASES DE DATOS
HISTORIA DE LAS BASES DE DATOSdfgdfgs
 
Unidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de DatosUnidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de Datoshugodanielgd
 
Fundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - IntroducciónFundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - IntroducciónManuel Padilla
 
Manual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambasManual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambasMoposita1994
 
Functional dependancy
Functional dependancyFunctional dependancy
Functional dependancyVisakh V
 
Elementos básicos de modelo entidad relación
Elementos básicos de modelo entidad relaciónElementos básicos de modelo entidad relación
Elementos básicos de modelo entidad relaciónCam Bandini
 
Normalization in Database
Normalization in DatabaseNormalization in Database
Normalization in DatabaseRoshni Singh
 
Archivo secuencial indexado
Archivo secuencial indexadoArchivo secuencial indexado
Archivo secuencial indexadoTortuly
 
SQL Queries Information
SQL Queries InformationSQL Queries Information
SQL Queries InformationNishant Munjal
 
Diagramas Analisis
Diagramas AnalisisDiagramas Analisis
Diagramas Analisisinnovalabcun
 
Functional dependencies in Database Management System
Functional dependencies in Database Management SystemFunctional dependencies in Database Management System
Functional dependencies in Database Management SystemKevin Jadiya
 
Presentacion i c m p
Presentacion i c m pPresentacion i c m p
Presentacion i c m pJairo Rosas
 

La actualidad más candente (20)

Xml query language and navigation
Xml query language and navigationXml query language and navigation
Xml query language and navigation
 
HISTORIA DE LAS BASES DE DATOS
HISTORIA DE LAS BASES DE DATOSHISTORIA DE LAS BASES DE DATOS
HISTORIA DE LAS BASES DE DATOS
 
NORMALIZACIÓN
NORMALIZACIÓN  NORMALIZACIÓN
NORMALIZACIÓN
 
Unidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de DatosUnidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de Datos
 
MongoDB: la BBDD NoSQL más popular del mercado
MongoDB: la BBDD NoSQL más popular del mercadoMongoDB: la BBDD NoSQL más popular del mercado
MongoDB: la BBDD NoSQL más popular del mercado
 
Fundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - IntroducciónFundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - Introducción
 
Manual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambasManual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambas
 
Functional dependancy
Functional dependancyFunctional dependancy
Functional dependancy
 
Elementos básicos de modelo entidad relación
Elementos básicos de modelo entidad relaciónElementos básicos de modelo entidad relación
Elementos básicos de modelo entidad relación
 
Normalization in Database
Normalization in DatabaseNormalization in Database
Normalization in Database
 
Modelos de datos
Modelos de datosModelos de datos
Modelos de datos
 
Fundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sqlFundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sql
 
Archivo secuencial indexado
Archivo secuencial indexadoArchivo secuencial indexado
Archivo secuencial indexado
 
Data models
Data modelsData models
Data models
 
SQL Queries Information
SQL Queries InformationSQL Queries Information
SQL Queries Information
 
MYSQL
MYSQLMYSQL
MYSQL
 
Diagramas Analisis
Diagramas AnalisisDiagramas Analisis
Diagramas Analisis
 
Functional dependencies in Database Management System
Functional dependencies in Database Management SystemFunctional dependencies in Database Management System
Functional dependencies in Database Management System
 
DIRECCIONAMIENTO IP: IPv4 y IPv6
DIRECCIONAMIENTO  IP: IPv4 y IPv6DIRECCIONAMIENTO  IP: IPv4 y IPv6
DIRECCIONAMIENTO IP: IPv4 y IPv6
 
Presentacion i c m p
Presentacion i c m pPresentacion i c m p
Presentacion i c m p
 

Destacado (17)

Apuntes de XSD
Apuntes de XSDApuntes de XSD
Apuntes de XSD
 
Ejercicios de XSD
Ejercicios de XSDEjercicios de XSD
Ejercicios de XSD
 
XML Schema
XML SchemaXML Schema
XML Schema
 
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogYahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
 
Xml 215-presentation
Xml 215-presentationXml 215-presentation
Xml 215-presentation
 
Xml Presentation-1
Xml Presentation-1Xml Presentation-1
Xml Presentation-1
 
Xml Presentation-3
Xml Presentation-3Xml Presentation-3
Xml Presentation-3
 
XML Schema (W3C)
XML Schema (W3C)XML Schema (W3C)
XML Schema (W3C)
 
XML Schema
XML SchemaXML Schema
XML Schema
 
XML.ppt
XML.pptXML.ppt
XML.ppt
 
XML and DTD
XML and DTDXML and DTD
XML and DTD
 
Xml
XmlXml
Xml
 
XML, DTD & XSD Overview
XML, DTD & XSD OverviewXML, DTD & XSD Overview
XML, DTD & XSD Overview
 
Introduction to xml
Introduction to xmlIntroduction to xml
Introduction to xml
 
Introduction to XML
Introduction to XMLIntroduction to XML
Introduction to XML
 
XML - What is XML?
XML - What is XML?XML - What is XML?
XML - What is XML?
 
Xml
XmlXml
Xml
 

Similar a Tema 2 (20)

Xml json yaml
Xml json yamlXml json yaml
Xml json yaml
 
Android de la A a la Z - Unidad 5
Android de la A a la Z - Unidad 5Android de la A a la Z - Unidad 5
Android de la A a la Z - Unidad 5
 
Xml presentacin
Xml presentacinXml presentacin
Xml presentacin
 
Fundamentos XML
Fundamentos XMLFundamentos XML
Fundamentos XML
 
Xml
XmlXml
Xml
 
Trabajo xml
Trabajo xmlTrabajo xml
Trabajo xml
 
Xml
XmlXml
Xml
 
Introduccion al xml
Introduccion al  xmlIntroduccion al  xml
Introduccion al xml
 
Xml
XmlXml
Xml
 
XML
XMLXML
XML
 
Lenguaje XML
Lenguaje XMLLenguaje XML
Lenguaje XML
 
Introxml
IntroxmlIntroxml
Introxml
 
Colima2000
Colima2000Colima2000
Colima2000
 
Lenguajes de marcas
Lenguajes de marcasLenguajes de marcas
Lenguajes de marcas
 
Diferencias entre XML y HTML
Diferencias entre XML y HTMLDiferencias entre XML y HTML
Diferencias entre XML y HTML
 
Toala Miguel 2C3
Toala Miguel 2C3Toala Miguel 2C3
Toala Miguel 2C3
 
Xml
XmlXml
Xml
 
Guía+básica+de+características+de+archivos+.pdf
Guía+básica+de+características+de+archivos+.pdfGuía+básica+de+características+de+archivos+.pdf
Guía+básica+de+características+de+archivos+.pdf
 
Steven Toala 2c3
Steven Toala 2c3Steven Toala 2c3
Steven Toala 2c3
 
Html&xml
Html&xmlHtml&xml
Html&xml
 

Más de avalver2

Más de avalver2 (7)

Tema 3 0
Tema 3 0Tema 3 0
Tema 3 0
 
Tema 3 3
Tema 3 3Tema 3 3
Tema 3 3
 
Tema 3 2
Tema 3 2Tema 3 2
Tema 3 2
 
Tema 3 0
Tema 3 0Tema 3 0
Tema 3 0
 
Tema 3 1
Tema 3 1Tema 3 1
Tema 3 1
 
Tema 1
Tema 1Tema 1
Tema 1
 
02 instrucciones
02   instrucciones02   instrucciones
02 instrucciones
 

Último

Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 

Último (20)

Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 

Tema 2

  • 1. XML y XML Schema Programación de Red. Ingeniería en Informática
  • 2. XML y XLM Schema Objetivos:  Introducción a XML, como tecnología base para el desarrollo de Servicios Web  Conocer el concepto de espacio de nombres en el contexto de XML  Estudiar XML Schema como mecanismo para la validación de documentos XML  Ver ejemplos de utilización de estas herramientas como base para los Servicios Web 2
  • 3. XML y XML Schema  XML.  Espacios de Nombres.  XML Schema. 3
  • 4. XML  ¿Qué es XML (eXtensible Markup Language)?  XML es un metalenguaje ⇒ aplicaciones de XML  Lenguaje de tags (similar en sintaxis a HTML)  Estandarizado por http://www.w3.org  Es extensible: XML no impone un conjunto de tags, sino sólo unas pocas normas de cómo usarlos. Los tags se abren y se cierran y en medio pueden tener otros tags anidados. Todos los documentos tienen un tag raíz. Los tags pueden tener atributos, etc.  Permite escribir documentos de texto que expresan datos y no aspecto visual o de presentación (a diferencia de HTML). XSL ⇒ Presentación 4
  • 5. XML  ¿Qué es XML (eXtensible Markup Language)?  XML es un lenguaje de marcas capaz de estructurar y definir la información en un documento.  Una marca en XML ⇒ Es una etiqueta que ayuda a organizar la estructura de un documento y define semánticamente la información que identifica.  XML no es sólo un simple lenguaje de marcado para documentos de páginas Web ⇒ Es una familia de tecnologías y estándares para la integración e interoperabilidad de aplicaciones Web  Estructurado ⇒ Se puede modelar datos a cualquier nivel de complejidad, y su definición está en un DTD (Document Type Definition) o en XML-Schema.  Comprobable si es válido ⇒ Cada documento se puede validar frente a un DTD, a un esquema XML o en su defecto, se puede declarar bien formado.  Independiente del medio ⇒ Para publicar contenidos en múltiples formatos.  Independiente del fabricante y la plataforma ⇒ Para poder utilizar 5 cualquier herramienta estándar.
  • 6. XML  Razones para su utilización  Facilidad ⇒ Fácil de entender por los humanos y fácil de procesar por programas informáticos  Universal ⇒ Totalmente independiente del sistema operativo y del lenguaje de programación  Versatilidad ⇒ Permite representar cualquier tipo de dato de una forma sencilla y sirve para datos sencillos, jerárquicos, estructurados, etc.  Texto plano ⇒ Independiente de la plataforma de procesamiento (no binario)  Estructuración ⇒Documento jerárquico totalmente estructurado, formando árboles de datos 6
  • 7. XML  Campos de aplicación  Extracción, Intercambio e integración de información entre aplicaciones y sistemas heterogéneos  Generación de vistas (HTML, WML, PDF, etc.) a partir de datos en documentos XML  Configuración de aplicaciones y de servicios  Bases de datos  Sistemas de información geográfica (GML)  Sistemas de información gerencial  Etc. 7
  • 8. XML  Estructura general de un documento XML 8
  • 9. XML  Formato de un documento XML  Documento XML: Sólo contiene texto plano, puede ser un archivo, una secuencia de caracteres que se envía por un socket, etc.  Aplicación XML: Conjunto particular de tags que permiten representar una determinada información (ej.: la información sobre datos geográficos del catastro)  Se dice que un documento XML está bien formado (well-formed) si cumple con el conjunto de reglas ⇒ construir parsers eficientes  Distingue entre mayúsculas y minúsculas  Seguir codificación UTF-8, UTF-16, ISO-8859-1, etc. ⇒ evitar la “ñ” y caracteres acentuados 9
  • 10. XML  Formato de un documento XML  Comentarios: Empiezan con <!-- y termina con -->, pudiendo englobar varias líneas  Dentro de un comentario no puede aparecer la secuencia “--”  Comentarios tipo <!---- Comentario ----> no son válidos  Declaración XML: <?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?>  version: Indica la versión de la especificación XML a la que es conforme el documento (valor 1.0)  encoding: Indica la codificación de los caracteres del documento 10
  • 11. XML  Formato de un documento XML  encoding: Por defecto, UTF-8 (es un sistema de codificación de longitud variable que permite representar todos los caracteres Unicode. El rango de caracteres del ASCII estándar (7 bits) se representa con un byte ⇒ un documento ASCII es un documento UTF-8. Los caracteres 128..2047 se representan con 2 bytes y el resto de caracteres se representan con 3 bytes  encoding: Cuando un documento XML se crea con un editor ASCII de 8 bits, si el documento usa caracteres no estándar ASCII (128..255) (ej.: á, Ü, ñ, etc.), puede especificar ISO-XXXX- 1. Codificación de un byte 0..127 ⇒ ASCII estándar 128..159 ⇒ caracteres de control 160..255 ⇒ letras acentuadas y caracteres adicionales para determinados idiomas. Por ejemplo, ISO-8859-1 ⇒ Latin 1 11
  • 12. XML  Formato de un documento XML  standalone: yes ⇒ El documento no necesita ningún otro. no (por defecto) ⇒ El documento requiere algún otro (en el ejemplo, el esquema referenciado)  Todo documento debe tener un elemento raíz. Cuando se usa un esquema para validar el documento XML, se indica en el tag raíz. XML ⇒ datos en forma de árbol  Entre el tag de inicio de un elemento y el de fin puede haber otros elementos o texto. Si contiene texto, los blancos forman parte de él  A diferencia de HTML, no se puede mezclar el orden de los tags anidados. El primer elemento que se abre debe ser el último que se cierra 12
  • 13. XML  Formato de un documento XML  Un elemento puede tener atributos, que indican características (contenido y/o propósito) propias de los elementos. El valor del atributo tiene que ir entrecomillado, de la forma: atributo=“valor”, y para un elemento dado, un atributo sólo puede tener un valor  Elemento vacío: No tiene elementos anidados ni texto. Puede tener atributos. Ejemplo: <tag atr1=“val1” atr2=“val2”></tag>, por comodidad, se puede usar la notación <tag atr11=“val1” atr2=“val2”/> 13
  • 14. XML  Formato de un documento XML  Un documento bien formado debe cumplir dos condiciones siguientes: (1) las etiquetas están anidadas correctamente y (2) los atributos son únicos en un elemento  En principio, se puede seguir la siguiente convención: Usar elementos para datos multivaluados o de gran cantidad de texto; y usar atributos en caso contrario  Para poder incluir ciertos caracteres en el valor de un atributo o en el texto de un elemento, XML predefine las siguientes referencias a entidades: &lt; ⇒ <, &amp; ⇒ &, &gt; ⇒ >, &quot; ⇒ “, &apos; => ‘. Por ejemplo: <tag char=“&quot;”> Si A &lt; B, entonces ... </tag> 14
  • 15. XML  Ejemplo de un documento XML 15
  • 16. XML  Tecnología XML  XML Schema. Recomendación de W3C para la creación de esquemas para documentos XML  RDF (Resource Definition Framework). Propuesta para la representación de metadatos en XML  Hojas de estilo. Lenguajes que transforman documentos XML en documentos HTML, de forma que los documentos XML se puedan ver en un navegador. XSL (XML Stylesheet Language) ⇒ Lenguaje de transformación  SAX (Simple API XML). Parser de documentos XML  MathML. Aplicación de XML a matemáticas  XPath. Define la sintaxis para identificar y referirse las distintas partes de un documento XML. 16
  • 17. XML  Tecnología XML  DOM (Document Object Model). Parser que construye una representación en árbol de un documento XML. Ofrece una visión orientada a objetos del documento XML en lugar de una visión de tipo abstracto de datos. Para ello crea una serie de interfaces que definen el comportamiento de cada elemento. Así se accede a la estructura y a los datos mediante métodos  XLink y XPointer. Permiten añadir enlaces e imágenes a XML. Sin embargo, aún no son soportados por ningún navegador por lo que actualmente, en las páginas XML no se pueden mostrar imágenes o enlaces. La solución sería generar HTML mediante XSLT 17
  • 18. XML  Tecnología XML  XQuery. Proporciona un modo flexible de consulta para extraer datos de los documentos en el Web.  XML Namespaces. Describe cómo se puede asociar una URL con cada etiqueta y atributo de un documento XML.  XML Schemas. Proporcionan un modo de definir la estructura, el contenido y la semántica de los documentos XML.  XEncryption, XSignature y XSecurity. Tratan los aspectos de seguridad y autentificación en el intercambio de documentos XML. 18
  • 19. XML  Ventajas XML  Es un formato estructurado. Contiene información y metainformación  Ha sido diseñado específicamente para Internet. Soportado por visualizadores y servidores  Numerosas herramientas de procesamiento  Legible por personas humanas  Admite la definición de vocabularios específicos  Separa contenido del procesamiento y visualización  Aumenta la seguridad mediante la validación de documentos  Formato abierto, respaldado por numerosas organizaciones 19
  • 20. XML  Inconvenientes XML  Puede requerir demasiado espacio, ancho de banda y tiempo de procesamiento. Documentos largos con mucha información redundante  Es una sintaxis de documentos, no un lenguaje de programación  Es posible crear formatos y vocabularios propietarios  Puede fomentar la proliferación de vocabularios específicos  Bueno para texto, malo para datos binarios  Poco eficiente como lenguaje de almacenamiento de bases de datos 20
  • 21. XML  Conclusiones sobre XML  La falta de estructura en la información en Internet incide negativamente en las prestaciones de la red y en las posibilidades de aprovechamiento de la información allí depositada  XML es un lenguaje de marcado de documentos diseñado para trabajar en Internet simple, flexible y fácil de utilizar  Hay mucho trabajo por hacer para conseguir un intercambio automatizado de documentos en Internet que permita el desarrollo de las aplicaciones ya existentes y de otras nuevas  Enlaces de interés relativos a XML  WWW Consortium (W3C) ⇒ www.w3.org  Escuela W3 ⇒ www.w3schools.com  XML.com de O'Reilly ⇒ www.xml.com  Especificación XML 1.0 ⇒ www.w3.org/TR/REC-xml OASIS ⇒ www.oasis-open.org 21 
  • 22. XML y XML Schema  XML.  Espacios de Nombres.  XML Schema. 22
  • 23. Espacios de Nombres  Un documento XML puede hacer uso de espacios de nombres  Concepto similar al de CORBA IDL y C++, paquete Java, etc.  Permiten evitar conflictos de nombres cuando en un documento XML se usan tags de distintas aplicaciones XML  Cada espacio de nombres está asociado a una URI (Uniform Resource Identifier) o identificador global único, que debe ser única. Se aconseja usar URL (Uniform Resource Locator). No tienen porque tener una existencia real (y de hecho, no suelen tenerla) 23
  • 24. Espacios de Nombres  Por ejemplo: <asignaturas xmlns:xsi="http://www.w3.org/2001/XMLSche ma-instance" xsi:noNamespaceSchemaLocation="http://www .ual.es/~acorral/Asignaturas.xsd">  xmlns: permite especificar los elementos y los que éste contiene pueden usar los atributos y elementos del espacio de nombres asociado con la URL http://www.w3.org/2001/XMLSchema-instance, prefijándolos con xsi:  Es la URI la que define el espacio de nombres y no el prefijo. Distintas documentos XML pueden usar distintos prefijos para referirse a un mismo espacio de nombres 24
  • 25. Espacios de Nombres  En este ejemplo usamos el espacio de nombres http://www.w3.org/2001/XMLSchema- instance para usar el atributo noNamespaceSchemaLocation, que permite especificar la ubicación del esquema que valida a un documento XML que no define un espacio de nombres propio  Es posible ir asociando espacios de nombres a los elementos según van apareciendo  Mediante xmlns=“...” se define un espacio de nombres por defecto (sin alias)  Ampliamente utilizados para combinar vocabularios. Facilitan la incorporación de elementos no previstos inicialmente 25
  • 26. XML y XML Schema  XML.  Espacios de Nombres.  XML Schema. 26
  • 27. XML Schema  Esquema ⇒ Definición de estructura de un conjunto de documentos XML  Validar ⇒ Chequear que un documento sigue un esquema. Principal ventaja: protección de errores. Otras aplicaciones: edición, compresión, etc.  Existen varios tipos de documentos para expresar los tags válidos de una aplicación XML y sus restricciones  DTD (Document Type Definition) ⇒ Un ejemplo de esquemas (con varias limitaciones)  XML Schema ⇒ Desarrollo posterior del W3C (.xsd)  Existen otros: RELAX-NG, Schematron, etc. 27
  • 28. XML Schema  Características de los DTDs  Especifican estructura del documento: elementos, atributos, anidamientos, etc.  Integridad referencial mínima (ID, IDREF)  Mecanismo sencillo de abstracción: entidades ≈ macros  Inclusión de documentos externos  Integrados en XML (Parte de la especificación)  Sencillos de comprender (≈ Expresiones regulares)  Semánticamente pobres 28
  • 29. XML Schema  Limitaciones de los DTDs  La Sintaxis no es XML (difíciles de manipular)  No soportan Espacios de Nombres  No permiten especificar tipos de datos (por ejemplo: enteros, flotantes, fechas, etc. Ni secuencias no ordenadas ((e1,e2,e3)|(e1,e3,e2)|(e2,e1,e3)|...(e3,e2,e1))  No hay soporte para declaraciones sensibles al contexto: Los elementos se definen todos a nivel de documento, ejemplo, contenido con el mismo nombre cuya estructura cambia en diferentes contextos  Soporte limitado para referencias cruzadas, no es posible formar claves a partir de varios atributos o de elementos  No son extensibles (una vez definido, no es posible añadir nuevos vocabularios a un DTD) 29
  • 30. XML Schema  Los Schemas permiten  Describir estructura  Anidación  Multiplicidad  Ordenamiento  Describir tipos  Para velocidad de funcionamiento  Para mejor almacenamiento  Para búsquedas  Para inserción de datos  Para detectar errores 30
  • 31. XML Schema  Los tipos de datos tienen en XML Schema la función de las clases en la POO. El usuario puede construir tipos de datos a partir de tipos predefinidos, agrupando elementos y atributos de una determinada forma y con mecanismos de extensión parecidos a la herencia.  Los tipos de datos se clasifican en función de los elementos y atributos que contienen ⇒ Los tipos de datos pueden ser simples o complejos.  Tipos simples  Tipos predefinidos de XML: string, double, boolean, etc.  List (lista de datos separados por espacios).  Union (tipo de dato derivado de la unión de tipos predefinidos).  Tipos complejos ⇒ Aquellos que tienen elementos hijos y/o 31 atributos.
  • 32. XML Schema  XML Schema incluye el uso de namespaces. Los "espacios de nombres" permiten definir elementos con igual nombre dentro del mismo contexto, siempre y cuando se anteponga un prefijo al nombre del elemento. El uso de namespaces también evita confusiones en la reutilización de código.  Es posible agrupar atributos, haciendo más comprensible el uso de un grupo de aspectos de varios elementos distintos, pero con denominador común, que deben ir juntos en cada uno de estos elementos.  Pueden tener nombre o ser anónimos. Si tienen nombre pueden ser reutilizados dentro del mismo XML Schema o por otros XML Schemas 32
  • 33. XML Schema  Objetivos de diseño  Sintaxis XML  Soporte para Espacios de Nombres  Mayor expresividad. Restricciones numéricas e integridad dependientes del contexto  Tipos de datos  Gran cantidad de tipos de datos predefinidos  Creación de tipos de datos por el usuario  Extensibilidad  Inclusión/Redefinición de esquemas  Herencia de tipos de datos  Soporte a documentación 33
  • 34. XML Schema Espacio de  Ejemplo nombres <xsd:schema targetNamespace=“http://www.ac.upc.es/aad/libro” xmlns=“http://www.w3.org/2001/XMLSchema”> <simpleType name=“linea”> <restriction base=“string”> <maxLength value=“50”/> </restriction> </simpleType> <simpleType name=“sigloXX”> <restriction base=“integer”> <minInclusive value=“1900”/> <maxInclusive value=“1999”/> </restriction> Raíz </simpleType> <element name=“libro” type=“TipoLibro”/> <complexType name=“TipoLibro”> <sequence> <element name=“titulo” type=“linea”/> <element name=“autor” type=“linea”/> <element name=“anyo” type=“sigloXX”/> <element name=“precio” type=“decimal”> <complexType> <attribute name=“divisa” type=“string”/> </complexType> </element> </sequence> <attribute name=“isbn” type=“ID”/> </complexType> </element> </xsd:schema> 34
  • 35. XML Schema  Ventajas al utilizar schemas  Utilizan una gran cantidad de tipos de datos básicos  Son extensibles ⇒ restricciones, extensiones, herencia  Están escritos en XML  Resulta más largo que un DTD pero a cambio:  Mayor precisión en la definición de tipos de datos: <date type=“date”>1999-03-11</date> ⇒ ¿11 de marzo o 3 de noviembre?  La exportación e importación de datos en formato xml más sencilla  Posibilidad de uso de datos complejos definidos por el usuario 35
  • 36. XML Schema  Características de XML Schema  XML Schema cuenta con una serie de tipos predefinidos como son las cadenas, los enteros, etc.  Un esquema creado con XML Schema se guarda en un archivo de texto con la extensión .xsd, y normalmente siguen el siguiente patrón 36
  • 37. XML Schema  Características de XML Schema  El espacio de nombres del XMLSchema es xsd: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema”/>  schemaes el elemento raíz del documento  Un elemento (element) se define como <xsd:element name="nombre" type="tipo"/>  name es el nombre del elemento y type el tipo de datos  Los valores más comunes de tipos de datos (type) son: xsd:boolean xsd:integer xsd:date xsd:string xsd:decimal xsd:time  Ej.: <xsd:element name="apellido" type="xsd:string"/> 37
  • 38. XML Schema  Características de XML Schema  Los atributos (attribute) se declaran: <xsd:attribute name="name“ type="type"/>  name y type es igual que en xsd:element  Otros atributos:  default="default value" ⇒ si no se especifica otro valor  fixed="value" ⇒ no se puede especificar otro valor  use="optional" ⇒ el atributo no es obligatorio (por defecto)  use="required" ⇒ el atributo debe estar presente  Ejemplo: <xsd:attribute name=“idioma" 38 type="xsd:string"/>
  • 39. XML Schema  Definición de tipos  De los tipos básicos pueden derivarse nuevos tipos, simples o complejos  Los tipos simples son tipos (de elementos o atributos) que tienen sólo valores y no otros atributos o elementos. Se definen mediante xsd:simpleType <xsd:element name=“nombre” type=“xsd:string”/> <xsd:attribute name=“identificacion” type=“xsd:ID”/>  Los tipos complejos pueden contener cualquier combinación de contenido de elementos, información de caracteres (texto) y atributos. Se definen con xsd:complexType 39
  • 40. 40
  • 41. XML Schema  Tipos simples  Para definir un tipo simple personalizado se sigue la sintaxis siguiente: <xsd:simpleType name=”nombreTipoPersonalizado”> <xsd:restriction base=”nombreTipoBase”> ... Restricciones o facetas ... </xsd:restriction> </xsd:simpleType>  donde nombreTipoPersonalizado es el nombre del tipo que se quiere definir, nombreTipoBase es el tipo que se está tomando como base para la definición de nuestro tipo, y las Restricciones son cada una de las expresiones o reglas que definen el tipo personalizado 41
  • 42. XML Schema  Tipos simples (restricciones)  Permiten definir un tipo simple a partir de otro, restringiendo los valores de este último ⇒ Las restricciones representan uno de los mecanismos para definir tipos derivados de otros tipos simples  El tipo Genre define un tipo string enumerado, es decir, sus valores posibles están restringidos a uno de los definidos en la enumeración  Existen muchas otras posibilidades de restricciones  Definir un tipo derivado de un string que restringe la longitud máxima de sus posibles valores  Definir un tipo derivado de un string que restringe sus valores mediante una expresión regular 42
  • 43. XML Schema  Tipos simples (restricciones)  Permiten restringir el valor que se le puede dar a un elemento o atributo XML  Tipos de restricciones:  Sobre valores  Sobre un conjunto de valores  Sobre series de valores  Sobre espacios en blanco  Se pueden definir también ⇒ enumeraciones patrones, rangos y listas 43
  • 44. XML Schema  Tipos simples (restricciones)  La forma general de establecer una restricción sobre un valor es: <xsd:element name="name"> (o xsd:attribute) <xsd:restriction base="type"> ... Restricciones ... </xsd:restriction> </xsd:element>  Por ejemplo: <xsd:element name=“edad"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0"> <xsd:maxInclusive value="140"> </xsd:restriction> </xsd:element> 44
  • 45. XML Schema  Tipos simples (restricciones)  Restringe el valor a un conjunto de valores. <xsd:enumeration value=”valor”/>  Ejemplo: <xsd:element name=“estacion"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value=“primavera"/> <xsd:enumeration value=“verano"/> <xsd:enumeration value=“otoño"/> <xsd:enumeration value=“invierno"/> </xsd:restriction> </xsd:simpleType> </xsd:element> 45
  • 46. XML Schema  Tipos simples (restricciones)  Para limitar el contenido del elemento XML definiendo las series de números y letras que se pueden usar patrones (pattern). <xsd:pattern value=”expresionRegex”/>  Ejemplo <xsd:element name="letra"> <xsd:simpleType> <xsd:restriction base="xs:string"> <xsd:pattern value="[a-z]"/> <!-- <xsd:pattern value=“INV06d{3}"/> --> </xsd:restriction> </xsd:simpleType> 46 </xsd:element>
  • 47. XML Schema  Tipos simples (restricciones)  expresionRegex ⇒ indica cómo debería ser el formato del contenido. Lenguaje regex, selección de símbolos  . (el punto) ⇒ Cualquier carácter  d ⇒ dígito. D ⇒ No dígito  s ⇒ espacio en blanco y salto de línea. S ⇒ Distinto de espacio en blanco y salto de línea  * (asterisco) ⇒ Para tener cero o más elementos de los precedidos por *  | ⇒ Para elegir un valor entre varios 47
  • 48. XML Schema  Tipos simples (restricciones)  Símbolos regex  ? ⇒ Para tener cero o un elemento de los precedidos por la ?  + ⇒ Para tener uno o más elementos de los precedidos por el +  {x} ⇒ Para repetir exactamente x valores del elemento que precede a las llaves  {x,} ⇒ Para repetir al menos (mínimo) x valores del elemento que precede a las llaves  {x,y} ⇒ Para repetir entre x e y valores del elemento que precede a las llaves 48
  • 49. XML Schema  Tipos simples (restricciones)  Restricciones sobre espacios en blanco. whiteSpace ⇒ dice lo que hay que hacer con los espacios en blanco  value="preserve" ⇒ Mantiene los espacios en blanco como están  value="replace" ⇒ Cambia los espacios en blanco (saltos, tab, …) por espacios  value="collapse" ⇒ Reemplaza todas las secuencias de espacios en blanco por un sólo espacio en blanco 49
  • 50. XML Schema  Tipos simples (restricciones)  Restricciones sobre números (rangos)  minInclusive ⇒ Número debe ser ≥ value  minExclusive ⇒ Número debe ser > value  maxInclusive ⇒ Número debe ser ≤ value  maxExclusive ⇒ Número debe ser < value  totalDigits ⇒ Número debe tener exactamente value dígitos  fractionDigits ⇒ Número no debe tener más de value dígitos después del punto decimal 50
  • 51. XML Schema  Tipos simples (restricciones)  Restricciones sobre string (rangos)  length ⇒ El string debe contener exactamente value caracteres  minLength ⇒ El string debe contener al menos value caracteres  maxLength ⇒ El string no debe contener más de value caracteres  pattern ⇒ El value es una expresión regular que el string debe cumplir 51
  • 52. XML Schema  Tipos simples (restricciones)  Ejemplos  <xsd:pattern value=“0-[2-6][0-9]d{5}-[0- 9x]"/>  <xsd:pattern value=“84sd([0- 9]|s){6}s[0-9x]"/>  <xsd:pattern value=“d {7,8}[A-Z]"/> 52
  • 53. XML Schema  Tipos simples (restricciones)  Listas: Colecciones de datos similares a los arrays  <xsd:list base=”tipoBase”/>  <xsd:list base=”tipoBase”> ... Restricciones sobre longitud ... </xsd:list>  Ejemplo <xsd:simpleType name=“alineacion”> <xsd:list base=“xsd:string"/> <xsd:lenght value=“5"/> </xsd:simpleType> 53
  • 54. XML Schema  Tipos complejos  Elementos que contienen otros elementos hijo o que contienen atributos o texto  Se suelen dividir en 4 tipos:  Elementos vacíos ⇒ Sólo contienen atributos, nunca elementos o texto  Elementos no vacíos con atributos ⇒ Contienen texto y posiblemente atributos  Elementos con elementos hijos ⇒ No contienen texto, sólo incluyen atributos o elementos  Elementos con elementos hijos y con “texto” o valor propio (mixtos) ⇒ Contienen una combinación de elementos, atributos y texto 54
  • 55. XML Schema  Tipos complejos. Ejemplos <product pid="1345"/> <comida tipo=“postre”>helado</comida> <empleado> <nombre>Manuel</nombre> <apellidos>Suarez</apellidos> </empleado> <descripcion>Sucedió el <date>03.03.99</date></descripcion> 55
  • 56. XML Schema  Tipos complejos. Sintaxis  Se definen como: <xsd:element name="name" type="tipo"> <xsd:complexType> ... Declaración del tipo ... </xsd:complexType> </xsd:element>  Ejemplo: <xsd:element name="empleado"> <xsd:complexType> <xsd:sequence> <xsd:element name="nombre" type="xsd:string"/> <xsd:element name="apellidos" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> 56
  • 57. XML Schema  Tipos complejos. Sintaxis  También podremos usar la siguiente sintaxis si queremos usar el tipo en más de un elemento: <xsd:element name="empleado" type="personainfo"/> <xsd:element name="estudiante" type="personainfo"/> <xsd:element name="miembro" type="personainfo"/> <xsd:complexType name="personainfo"> <xsd:sequence> <xsd:element name="nombre" type="xsd:string"/> <xsd:element name="apellido" type="xsd:string"/> </xsd:sequence> </xsd:complexType> 57
  • 58. XML Schema  Tipos complejos. Extensión y restricción  Un tipo complejo puede estar basado (extendido) en otro tipo complejo <xsd:complexType name="newType"> <xsd:complexContent> <xsd:extension base=“xsd:anyType"> ... Declaraciones de atributos ... </xsd:extension> </xsd:complexContent> </xsd:complexType> 58
  • 59. XML Schema  Tipos complejos. Extensión y restricción  Un tipo complejo puede estar basado en la restricción de otro tipo complejo <xsd:complexType name=”nombreTipo”> <xsd:simpleContent> <xsd:restriction base=”nombreTipoBase”> ... Restricciones o facetas ... ... Declaración de atributos ... </xsd:restriction> </xsd:simpleContent> </xsd:complexType> 59
  • 60. XML Schema  Tipos complejos. Extensión y restricción  Ejemplo. Definir un tipo complejo que se adapte a la dirección postal, asumiendo que ya hay definido un tipo Dirección <xsd:complexType name=“DireccionPostal"> <xsd:complexContent> <xsd:extension base=“tipo:Direccion"> <sequence> <element name=“provincia” type=“Provincia”/> <element name=“codigopostal” type=“positiveInteger”/> </sequence> </xs:extension> </xs:complexContent> </xs:complexType> 60
  • 61. XML Schema  Tipos complejos. Herencia <xsd:element name="empleado" type="fullpersonainfo"/> <xsd:complexType name="personainfo"> <xsd:sequence> <xsd:element name="nombre" type="xsd:string"/> <xsd:element name="apellido" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="fullpersonainfo"> <xsd:complexContent> <xsd:extension base="personainfo"> <xsd:sequence> <xsd:element name="direccion" type="xsd:string"/> <xsd:element name="ciudad" type="xsd:string"/> <xsd:element name="pais" type="xsd:string"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> 61 </xsd:complexType>
  • 62. XML Schema  Tipos complejos. Elementos vacíos  Los elementos vacíos (con atributos) son “complejos” <xsd:attribute nombre=”nombreAtributo” type=”tipoBasico”> ... Restricciones ... </xsd:attribute>  Ejemplo <xsd:element name="producto"> <xsd:complexType> <xsd:attribute name="prodid" type="xsd:positiveInteger"/> </xsd:complexType> </xsd:element> 62
  • 63. XML Schema  Tipos complejos. Elementos mixtos  Pueden contener texto y elementos  Se añade mixed="true" al elemento xsd:complexType  El texto no se menciona en el elemento, y puede ir en cualquier sitio (básicamente se ignora) <xsd:complexType name="paragraph" mixed="true"> <xsd:sequence> <xsd:element name="someName” type="xsd:anyType"/> </xsd:sequence> </xsd:complexType> 63
  • 64. XML Schema  Tipos complejos. Indicadores  De Orden:  En un determinado orden o secuencia: sequence  Pudiendo el autor del documento escoger alguno de los elementos del grupo: choice  Dar al autor total libertad tanto respecto al orden como a la selección de elementos: all  De ocurrencias: cardinalidades ⇒ minOccurs y maxOccurs 64
  • 65. XML Schema  Tipos complejos. xsd:sequence  Es un “compositor” que define una secuencia ordenada de elementos <xsd:element name="persona"> <xsd:complexType> <xsd:sequence> <xsd:element name="nombre" type="xsd:string"/> <xsd:element name="apellido" type="xsd:string"/> <xsd:element name=“edad" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </xsd:element> 65
  • 66. XML Schema  Tipos complejos. xsd:choice  Elementos que contienen alternativa de elementos, en los que sólo puede aparecer uno de ellos <xsd:element name=“transporte"> <xsd:complexType> <xsd:choice> <xsd:element name="tren" type="xsd:string"/> <xsd:element name="avion" type="xsd:string"/> <xsd:element name="coche" type="xsd:string"/> </xsd:choice> </xsd:complexType> </xsd:element> 66
  • 67. XML Schema  Tipos complejos. xsd:all  Permite a los elementos aparecer en cualquier orden <xsd:element name="persona"> <xsd:complexType> <xsd:all> <xsd:element name="nombre" type="xsd:string"/> <xsd:element name="apellidos" type="xsd:string"/> </xsd:all> </xsd:complexType> </xsd:element> 67
  • 68. XML Schema  Tipos complejos. minOccurs y maxOccurs  Se utilizan para indicar el número máximo y mínimo de veces que puede aparecer un elemento hijo de un elemento complejo  minOccurs = 0: Opcionalidad  maxOccurs = unbounded: no existe valor límite 68
  • 69. XML Schema  Tipos complejos. Comentarios  annotation ⇒ Mecanismo para documentar los componentes de un esquema, haciendo una función similar a los comentarios  appinfo ⇒ Proporciona información a otras aplicaciones, lo que supone un procesamiento externo al propio documento  documentation ⇒ Texto o referencia a texto dentro del elemento annotation 69
  • 70. XML Schema  Tipos complejos. Comentarios <xsd:complexType name=“elemento”> <xsd:annotation> <xsd:documentation> ... este elemento es ... </xsd:documentation> </xsd:annotation> </xsd:complexType> 70
  • 71. XML Schema  Ejemplo XML Schema (1) <xsd:complexType name=“vehiculo”> <xsd:sequence> <xsd:element name="nruedas" type="xsd:integer"/> <xsd:element name=“caballos" type="xsd:integer"/> <xsd:element name=“marca" type="xsd:string"/> <xsd:element name=“combustible" type=“combisList"/> </xsd:sequence> <xsd:attribute name=“identificador” type=“xsd:string”> </xsd:complexType> <xsd:simpleType name=“combusList” type=“xsd:string”> <xsd:enumeration value=“gasoleo"/> <xsd:enumeration value=“sin plomo 95"/> <xsd:enumeration value=“sin plomo 98"/> </xsd:simpleType> <xsd:complexType name=“coche"> <xsd:complexContent> <xsd:extension base=“vehiculo"> <xsd:element name=“plazas" type="xsd:integer"/> <xsd:element name=“velocidadMax" type="xsd:decimal"/> </xsd:extension> </xsd:complexContent> 71 </xsd:complexType>
  • 72. XML Schema  Ejemplo XML Schema (1) <xsd:complexType name=“camion"> <xsd:complexContent> <xsd:extension base=“vehiculo"> <xsd:element name=“pma" type="xsd:integer"/> <xsd:element name=“autonomia" type="xsd:float"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> Utilización de estos tipos <camion identificador=“BSX6541”> <nruedas>10</nruedas> <caballos>800</caballos> <marca>VOLVO</marca> <combustible>gasoleo</combustible> <pma>45800</pma> <autonomia>2345.66</autonomia> 72 </camion>
  • 73. XML Schema  Ejemplo XML Schema (2) <xsd:element name=“alumno”> <xsd:complexType> <xsd:sequence> <xsd:element name="nombre" type="xsd:string"/> <xsd:element name="apellidos" type="xsd:string"/> <xsd:element name="nacim" type="xsd:gYear” minOccurs="0“ maxOccurs="1"/> </xs:sequence> <xs:attribute name="dni" type="xsd:integer"/> </xs:complexType> </xs:element> Utilización de estos tipos <alumno dni="9399390"> <nombre>Juan</nombre> <apellidos>García García</apellidos> <nacim>1985</nacim> 73 </alumno>
  • 74. XML Schema  Ejemplo XML Schema (3) <?xml version=”1.0”?> <schema xmlns=”http://www.w3.org/2001/XMLSchema” targetNS=”http://ejemplo.com/Cliente.xsd” xmlns:tns=”http://ejemplo.com/Cliente.xsd”> <element name=”cliente” type=”TipoCliente”/> <complexType name=”TipoCliente”> <sequence> <element name=”nombre”> <simpleType> <restriction base=”string”> <maxLength value=”40”/> </restriction> </simpleType> </element> <element name=”NIF” type=”tns:TipoNIF”/> <element name=”direccion” type=”string”/> <element name=”telefono” type=”tns:TipoTelefono”/> <element name=”gastoTotal” type=”decimal”> 74 </sequence>
  • 75. XML Schema  Ejemplo XML Schema (3) <attribute name=”id”> <simpleType> <restriction base=”string”> <pattern value=”/d{8}-[A-Z]{4}”/> </restriction> </simpleType> </attribute> Esquema para los clientes de un comercio </complexType> <simpleType name=”TipoNIF”> <restriction base=”string”> <pattern value=”/d{8}-[A-Z]{1}”/> </restriction> </simpleType> <simpleType name=”TipoTelefono”> <restriction base=”integer”> <pattern value=”/d{9}”/> </restriction> <simpleType> 75 </schema>
  • 76. XML Schema  Otras características de XML Schema  Agrupaciones (xsd:group) ⇒ Es posible nombrar agrupaciones de elementos y atributos para hacer referencias a ellas  Uniones (xsd:union) ⇒ Como conocemos a las uniciones  Tipos abstractos (abstract=“true”) ⇒ tipo abstracto que no puede usarse directamente  Inclusión de esquemas (xsd:include) ⇒ incluir elementos de otros esquemas (mismo names.) 76
  • 77. XML Schema  Otras características de XML Schema  Importación de esquemas (xsd:import) ⇒ incluir elementos de otros esquemas con distintos espacios de nombres (namespaces)  Redefinición de esquemas (xsd:redefine) ⇒ similar a include pero permite modificar los elementos incluidos  Indicar que un elemento es único (xsd:unique) ⇒ también para atributos y combinac. (atr-ele)  Indicar unicidad y clave (xsd:key) 77
  • 78. XML Schema  Otras características de XML Schema  Indicar referencias a claves (xsd:keyref) ⇒ especifica que debe hacer referencia a una clave (claves externas)  Valores nulos (empty (sin contenido) xsd:nil=“true” (no hay valor)). Para indicar que un elemento puede ser nulo sin estar vacío (nillable=“true”)  any ⇒ indica cualquier contenido de un determinado espacio de nombres  anyAttribute ⇒ indica cualquier atributo de un espacio de nombres  ... 78