Sesin 2 Diseo de Vocabularios XML - PowerPoint PPT Presentation

1 / 57
About This Presentation
Title:

Sesin 2 Diseo de Vocabularios XML

Description:

xmlns:g='http://www.geog.es' g:pa s g:nombre='Francia' g:capital Par s /g:capital ... xmlns:g CDATA #FIXED 'http://www.geog.es' Valoraci n ... – PowerPoint PPT presentation

Number of Views:86
Avg rating:3.0/5.0
Slides: 58
Provided by: diUn7
Category:

less

Transcript and Presenter's Notes

Title: Sesin 2 Diseo de Vocabularios XML


1
Sesión 2Diseño de Vocabularios XML
Espacios de Nombres XML Schema Diseño de
Vocabularios
2
Espacios de Nombres
3
Problema de la Homonimia
  • Homonimia Mismo nombre con diferentes propósitos

Cómo combinar en el mismo documento estos
vocabularios?
4
Posibles Soluciónes
Asignar un nombre único a cada etiqueta... Posible
s soluciones Crear una autoridad mundial que
asigne nombres... ... o usar un mecanismo ya
existente URIs Una URI es un identificador
global único Ejemplo http//www.aulanet.uniovi.es
SOLUCIÓN Asociar a cada etiqueta una URI que
indica a qué espacio de nombres pertenece...
httpwww.bolsa.comcapital httpwww.geog.es
capital
5
Posibles soluciones
Solución fácil... Asociar a cada etiqueta una
URI
lthttp//www.bolsa.cominversionesgt
lthttp//www.geog.espaís
http//www.geog.esnombreFranciagt
lthttp//www.geog.escapitalgtParís
lt/http//www.geog.escapitalgt
lthttp//www.bolsa.comcapitalgt1200
lt/http//www.bolsa.comcapitalgt
lt/http//www.bolsa.compaísgt . .
. lt/http//www.bolsa.cominversionesgt
6
Definición
  • Solución Asociar un alias a los elementos de un
    espacio de nombres dentro de un ámbito
  • xmlnsalias define alias en el ámbito de un
    elemento

ltbinversiones xmlnsbhttp//www.bols
a.com xmlnsghttp//www.geog.esgt
ltgpaís gnombreFranciagt
ltgcapitalgtParíslt/gcapitalgt
ltbcapitalgt1200lt/bcapitalgt lt/gpaísgt . .
. lt/binversionesgt
NOTA Las URIs sólo se utilizan para que el
nombre sea único, no son enlaces, ni tienen que
contener información
7
Asignación Dinámica
  • Es posible ir asociando espacios de nombres a los
    elementos según van apareciendo

ltbinversiones xmlnsbhttp//www.bolsa.
comgt ltgpaís xmlnsghttp//www.geo
g.es gnombreFranciagt
ltgcapitalgtParíslt/gcapitalgt
ltbcapitalgt1200lt/bcapitalgt lt/gpaísgt . .
. lt/binversionesgt
8
Espacio de nombres por defecto
  • Mediante xmlns... se define un espacio de
    nombres por defecto (sin alias)

ltinversiones xmlnshttp//www.bolsa.com
gt ltgpaís xmlnsghttp//www.geog.es
gnombreFranciagt
ltgcapitalgtParíslt/gcapitalgt
ltcapitalgt1200lt/capitalgt lt/gpaísgt . .
. lt/inversionesgt
Se refiere a http//www.bolsa.com
9
Validación con DTDs
  • Posteriores a los DTDs, por tanto, los DTDs no
    dan soporte a Espacios de Nombres
  • Hay que definir los espacios de nombre usados

lt!DOCTYPE inversiones lt!ELEMENT inversiones
(gpaís)gt lt!ELEMENT gpaís (gcapital,capital)
gt lt!ELEMENT gcapital (PCDATA)gt lt!ELEMENT
capital (PCDATA)gt lt!ATTLIST inversiones
xmlns CDATA FIXED "http//www.bolsa.com"gt lt!ATTLI
ST gpaís gnombre CDATA REQUIRED
xmlnsg CDATA FIXED "http//www.geog.es"gt gt
10
Valoración
  • Ampliamente utilizados para combinar vocabularios
  • Facilitan la incorporación de elementos no
    previstos inicialmente
  • Sintaxis extraña al principio
  • Uso de prefijos
  • URIs como elemento diferenciador...pero las URLS
    también sirven para acceder a recursos
  • Difícil combinación con DTDs

11
XML Schema
12
Lenguajes de Esquemas
  • 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.
  • DTDs un ejemplo de esquemas (con varias
    limitaciones)
  • XML Schema desarrollo posterior del W3c
  • Existen Otros
  • RELAX-NG, Schematron, etc.

13
Características de 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)

14
Limitaciones de 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.
  • No permiten especificar 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)

15
XML SchemaObjetivos de Diseño
  • Sintaxis XML
  • Soporte para Espacios de Nombres
  • Mayor expresividad
  • Restricciones numéricas
  • 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

16
Ejemplo
alumnos.xsd
ltxsschema xmlnsxs"http//www.w3.org/2001/XMLSch
ema" targetNamespace"http//www.uniovi
.es/alumnos" xmlns"http//www.uniovi.e
s/alumnos"gt ltxselement name"alumnos"gt
ltxscomplexTypegt ltxssequencegt ltxselement
name"alumno" minOccurs"1" maxOccurs"200"
type"TipoAlumno"/gt lt/xssequencegt
lt/xscomplexTypegt lt/xselementgt ltxscomplexType
name"TipoAlumno"gt ltxssequencegt
ltxselement name"nombre" type"xsstring"/gt
ltxselement name"apellidos" type"xsstring"/gt
ltxselement name"nacim" type"xsgYear"/gt
lt/xssequencegt ltxsattribute name"dni"
type"xsstring"/gt lt/xscomplexTypegt lt/xsschemagt
Elemento raíz schema y espacio de nombres
determinado
Permite especificar rangos de inclusión
Permite especificar tipos
17
Validación
alumnos.xsd
ltxsschema xmlnsxs"http//www.w3.org/2001/XMLSch
ema" targetNamespace"http//www.uniovi
.es/alumnos" xmlns"http//www.uniovi.e
s/alumnos"gt ltxselement name"alumnos"gt
ltxscomplexTypegt ltxssequencegt ltxselement
name"alumno" minOccurs"1" maxOccurs"200"
type"TipoAlumno"/gt lt/xssequencegt
lt/xscomplexTypegt lt/xselementgt ltxscomplexType
name"TipoAlumno"gt ltxssequencegt
ltxselement name"nombre" type"xsstring"/gt
ltxselement name"apellidos" type"xsstring"/gt
ltxselement name"nacim" type"xsgYear"/gt
lt/xssequencegt ltxsattribute name"dni"
type"xsinteger"/gt lt/xscomplexTypegt lt/xsschema
gt
18
Tipos Anónimos vs. con nombre
ltxselement name"alumno"gt ltxssequencegt
ltxselement name"nombre" type"xsstring"/gt
ltxselement name"apellidos" type"xsstring"/gt
lt/xssequencegt lt/xselementgt
legible
ltxselement name"alumno" type"TipoAlumno"/gt
ltxsComplexType name"TipoAlumno"gt
ltxssequencegt ltxselement name"nombre"
type"xsstring"/gt ltxselement
name"apellidos" type"xsstring"/gt
lt/xssequencegt lt/xsComplexTypegt
Reutilizable
19
Otra posibilidad Referencias
ltxselement name"alumno"gt ltxssequencegt
ltxselement name"nombre" type"xsstring"/gt
ltxselement name"apellidos" type"xsstring"/gt
lt/xssequencegt lt/xselementgt
ltxselement name"alumnos"gt ltxssequencegt
ltxselement ref"alumno" /gt lt/xssequencegt lt/xsel
ementgt
20
Agrupaciones
  • Es posible nombrar agrupaciones de elementos y de
    atributos para hacer referencias a ellas

ltxsgroup name"nombApell"gt ltxssequencegt
ltxselement name"nombre" type"xsstring"/gt
ltxselement name"apellidos" type"xsstring"/gt
lt/xssequencegt lt/xsgroupgt
ltxscomplexType name"TipoAlumno"gt ltxsgroup
ref"nombApell" /gt ltxselement name"carrera"
type"xsstring"/gt lt/xscomplexTypegt
21
Tipos Complejos Secuencia
  • Tipos Complejos Son tipos que pueden contener
    elementos o atributos
  • Construcción básica mediante enumeración de
    elementos

ltxscomplexType name"TipoAlumno"gt
ltxssequencegt ltxselement name"nombre"
type"xsstring"/gt ltxselement
name"apellidos" type"xsstring"/gt
ltxselement name"nacim" type"xsgYear"
minOccurs"0" maxOccurs"1"/gt
lt/xssequencegt ltxsattribute name"dni"
type"xsinteger"/gt lt/xscomplexTypegt
ltalumno dni"9399390"gt ltnombregtJuanlt/nombregt
ltapellidosgtGarcía Garcíalt/apellidosgt
ltnacimgt1985lt/nacimgt lt/alumnogt
22
Tipos ComplejosAlternativa
  • choice Representa alternativas
  • OJO Es una o-exclusiva

ltxscomplexType name"Transporte"gt
ltxschoicegt ltxselement name"coche"
type"xsstring"/gt ltxselement name"tren"
type"xsstring"/gt ltxselement name"avión"
type"xsstring"/gt lt/xschoicegt
lt/xscomplexTypegt
lttransportegt ltcochegtRenault R23lt/cochegt lt/transpor
tegt
23
Tipos Complejos Contenido Mixto
  • El contenido Mixto permite mezclar texto con
    elementos

ltxscomplexType name"TCom" mixed"true"gt
ltxschoice minOccurs"0" maxOccurs"unbounded"gt
ltxselement name"emph" type"xsstring"/gt
lt/xschoicegt lt/xscomplexTypegt ltxselement
name"comentarios" type"TCom" /gt
ltcomentariosgt Es un poco ltemphgtlistillolt/emphgt lt/
comentariosgt
24
Secuencias no ordenadas
  • all Todos los elementos en cualquier orden
  • En DTDs requería enumerar las combinaciones
  • (A,B,C)(A,C,B)...(C,B,A)

ltxscomplexType name"TipoLibro"gt ltxsallgt
ltxselement name"autor" type"xsstring"/gt
ltxselement name"título" type"xsstring"/gt
lt/xsallgt lt/xscomplexTypegt ltxselement
name"libro" type"TipoLibro" /gt
ltlibrogt ltautorgtJuanita la Localt/autorgt
lttítulogtNo estoy localt/títulogt lt/librogt
ltlibrogt lttítulogtEl kigotelt/títulogt
ltautorgtCerbanteslt/autorgt lt/librogt
25
Tipos Simples
  • Los tipos simples son lo que no pueden contener
    elementos o atributos
  • Son los valores de atributos o el contenido de
    elementos básicos
  • Pueden ser
  • Predefinidos o built-in (Definidos en la
    especificación)
  • Primitivos
  • Derivados
  • Definidos por el usuario (a partir de tipos
    predefinidos)

26
Tipos Primitivos
  • string
  • boolean
  • number, float, double
  • duration, dateTime, time, date, gYearMonth,
    gYear, gMonthDay, gDay, gMonth
  • hexBinary, base64Binary
  • anyURI
  • QName Nombre cualificado con espacio de nombres
  • NOTATION Notación binaria (similar a DTD)

27
Jerarquía de tipos
28
Facetas de Tipos
  • Facetas fundamentales
  • equal Igualdad entre valores de un tipo de datos
  • ordered Relaciones de orden entre valores
  • bounded Límites inferiores y superiores para
    valores
  • cardinality Define si es finito o infinito
    (contable, no contable)
  • numeric Define si es numérico o no
  • Facetas de restricción
  • length, minlength, maxlength Longitud del tipo
    de datos
  • pattern Restricciones sobre valores mediante
    expresiones regulares
  • enumeration Restringe a una determinada
    enumeración de valores
  • whitespace Define política de tratamiento de
    espacios (preserve/replace, collapse)
  • (max/min)(in/ex)clusive Límites
    superiores/inferiores del tipo de datos
  • totaldigits, fractionDigits número de dígitos
    totales y decimales

29
Enumeraciones y Restricciones
  • Enumeración

ltxssimpleType name"TipoCarrera"gt ltxsrestriction
base"xstoken"gt ltxsenumeration
value"Gestión"/gt ltxsenumeration
value"Sistemas"/gt lt/xsrestrictiongt lt/xssimpleTy
pegt
30
Listas
ltxssimpleType name"ComponentesRGB"gt ltxslist
itemType"ComponenteRGB"/gt lt/xssimpleTypegt ltxss
impleType name"ComponenteRGB"gt ltxsrestriction
base"xsnonNegativeInteger"gt ltxsmaxInclusive
value"255" /gt lt/xsrestrictiongt lt/xssimpleTypegt
ltcolorgt255 255 0lt/colorgt
31
Uniones
ltxssimpleType name"TipoNota"gt ltxsuniongt
ltxssimpleTypegt ltxsrestriction
base"xsfloat"gt ltxsmaxInclusive
value"10" /gt ltxsminInclusive value"0"
/gt lt/xsrestrictiongt lt/xssimpleTypegt
ltxssimpleTypegt ltxsrestriction
base"xsstring"gt ltxsenumeration value"No
presentado" /gt lt/xsrestrictiongt
lt/xssimpleTypegt lt/xsuniongt lt/xssimpleTypegt ltxs
element name"nota" type"TipoNota" /gt
ltnotagt 5.75 lt/notagt
ltnotagt No presentado lt/notagt
32
Expresiones regulares
  • Ejemplos de expresiones regulares

ltxssimpleType name"NIF"gt ltxsrestriction
base"xstoken"gt ltxspattern
value"\d7,8A-Z" /gt lt/xsrestrictiongt lt/xssi
mpleTypegt ltxselement name"nif" type"NIF" /gt
ltnifgt9394173Jlt/nifgt
ltnifgt11079845Mlt/nifgt
Expresión
Posibles valores
Elemento 2 b, ab, aab, aaab, xb, yb, zb b,
ab ab, aab, aaab, ax, bx, cx
Elemento \d ab xyzb a?b ab a-cx
33
Expresiones Regulares
  • a-cx
  • 0-9x
  • \Dx
  • (pa)2rucha
  • .abc
  • (ab)x
  • a1,3x
  • \n
  • \pLu
  • \pSc
  • ax, bx, cx
  • Carácter ? dígito seguido de x
  • Carácter ? dígito seguido de x
  • paparucha
  • Cualquier carácter (1) seguido de abc
  • ax, bx, aax, bbx, abx, bax,...
  • ax, aax, aaax
  • Salto de línea
  • Letra mayúscula
  • Símbolo de moneda

34
Tipos Derivados por Extensión
  • Similar a las subclases de POO Añadir elementos
    a un tipo base

ltxscomplexType name"Figura" gt ltxsattribute
name"color" type"Color"/gt lt/xscomplexTypegt ltx
scomplexType name"Rectángulo"gt
ltxscomplexContentgt ltxsextension
base"Figura"gt ltxsattribute name"base"
type"xsfloat" /gt ltxsattribute name"altura"
type"xsfloat" /gt lt/xsextensiongt
lt/xscomplexContentgt lt/xscomplexTypegt ltxscomple
xType name"Círculo"gt ...similar pero incluyendo
el radio lt/xscomplexTypegt
35
Tipos Derivados por Extensión
  • Los tipos derivados pueden utilizarse en los
    mismos sitios que la clase base

ltxselement name"figuras"gt
ltxscomplexTypegt ltxssequencegt ltxselement
name"figura" type"Figura"
maxOccurs"unbounded" /gt lt/xssequencegt
lt/xscomplexTypegt lt/xselementgt
ltfigurasgt ltfigura base"23" altura"3"
xsitype"Rectángulo" /gt ltfigura radio"3"
xsitype"Círculo" /gt lt/figurasgt
Es necesario especificar el tipo mediante xsitype
36
Tipos Abstractos
  • Mediante abstract"true" se declara un tipo como
    abstracto.
  • Ese tipo no puede usarse directamente

ltxscomplexType name"Figura" abstract"true"gt
ltxsattribute name"color" type"Color"/gt
lt/xscomplexTypegt
También es posible limitar la derivación de
tipos final"restriction"
37
Declaración de Atributos
ltxscomplexType name"Círculo"gt ltxsattribute
name"radio" type"xsfloat"
use"required" /gt ltxsattribute
name"color" type"Color"
default"255 0 0"/gt ltxsattribute
name"tipo" type"xsstring"
fixed"jpeg" /gt lt/xscomplexTypegt
Por defecto los atributos son opcionales. Indicar
que son obligatorios use"required"
Valor por defecto de un atributo. Podría
definirse otro valor.
Valor fijo de un atributo. Si no se define, se
utiliza ése. Si se define, debe coincidir.
38
Inclusión de Esquemas
  • include permite incluir elementos de otros
    esquemas
  • Los elementos deben estar en el mismo espacio de
    nombres
  • Es como si se hubiesen tecleado todos en un mismo
    fichero

39
Importación de Esquemas
  • import permite incluir elementos de otros
    esquemas con distintos espacios de nombres

Espacio de nombres P
Espacio de nombres A
Profes.xsd
Alumnos.xsd
ltxsdschema gt ltxsdimport namespace"A"
schemaLocation"Alumnos.xsd"/gt ltxsdimport
namespace"P" schemaLocation"Profes.xsd"/gt
lt/xsdschemagt
Universidad.xsd
40
Redefinición de Esquemas
  • redefine es similar a include pero permite
    modificar los elementos incluidos.

Alumnos.xsd
Añade el elemento nota
ltxsredefine schemaLocation"Alumnos.xsd"gt
ltxscomplexType name"TipoAlumno"gt
ltxscomplexContentgt ltxsextension
base"TipoAlumno"gt ltxssequencegt
ltxselement name"nota" type"Nota" /gt
lt/xssequencegt lt/xsextensiongt
lt/xscomplexContentgt lt/xscomplexTypegt lt/xsred
efinegt
AlumnosConNotas.xsd
41
Claves y Unicidad
  • Los DTDs proporcionaban el atributo ID para
    marcar la unicidad (un valor ID era único en todo
    el documento)
  • XML Schema tiene más posibilidades
  • Indicar que un elemento es único (unique)
  • Definir atributos únicos
  • Definir combinaciones de elementos y atributos
    como únicos
  • Distinción entre unicidad y claves (key)
  • Clave además de ser único, debe existir y no
    puede ser nulo.
  • Declarar el rango de un documento en el que algo
    es único

42
Claves y Unicidad
ltxscomplexType name"Alumnos"gt ltxssequencegt
ltxselement name"Alumno" type"TipoAlumno"/gt
lt/xssequencegt ltxskey name"DNI"gt
ltxsselector xpath"aalumno"/gt ltxsfield
xpath"adni"/gt lt/xskeygt lt/xscomplexTypegt
Es necesario incluir el espacio de nombres (XPath)
La clave puede formarse para atributos y elementos
43
Claves y Unicidad
ltxscomplexType name"Alumnos"gt ltxssequencegt
ltxselement name"Alumno" type"TipoAlumno"/gt
lt/xssequencegt ltxsunique name"DNI"gt
ltxsselector xpath"aalumno"/gt ltxsfield
xpath"adni"/gt lt/xsuniquegt lt/xscomplexTypegt
Unique especifica que debe ser único, pero podría
no existir
44
Referencias a Claves
keyref especifica que debe hacer referencia a una
clave (Claves Externas)
ltxselement name"clase"gt ltxssequencegt
ltxselement name"alumnos" ... ltxselement
name"delegado" ... lt/xssequencegt ltxskey
name"DNI"gt ltxsselector xpath"aalumnos/aalumn
o"/gt ltxsfield xpath"adni"/gt lt/xskeygt ltxskey
ref name"Delegado" refer"DNI"gt ltxsselector
xpath"adelegado"/gt ltxsfield
xpath"adni"/gt lt/xskeyrefgt
45
Valores Nulos
  • Indicar que un elemento puede ser nulo sin estar
    vacío.
  • Vacío (Empty) Un elemento sin contenido
  • Nulo (Nil) Un elemento que indica que no hay
    valor

ltxsdelement name"Persona"gt ltxsdcomplexTypegt
ltxsdelement name"nombre" type"xsdNMTOKEN"/gt
ltxsdelement name"primerApell"
type"xsdNMTOKEN"/gt ltxsdelement
name"segundoApell" type"xsdNMTOKEN"
nillable"true"/gt
lt/xsdcomplexTypegt lt/xsdelementgt
ltpersonagt ltnombregtJohnlt/nombregt
ltprimerApellgtSmithlt/primerApellgt
ltsegundoApell xsinil"true"/gt lt/personagt
46
Incluir cualquier contenido...
  • any indica cualquier contenido de un determinado
    espacio de nombres
  • anyAttribute cualquier atributo de un espacio de
    nombres

ltxscomplexType name"Comentario"gt
ltxssequencegt ltxsany namespace"http//www.w3.o
rg/1999/xhtml" minOccurs"1"
processContents"skip" /gt lt/xssequencegt
ltxsanyAttribute namespace"http//www.w3.o
rg/1999/xhtml"/gt lt/xscomplexTypegt
ltcomentariosgt lthtmlpgtEs un
lthtmlemphgtListillolt/htmlemphgt
lt/htmlpgt lt/comentariosgt
47
XML SchemaLimitaciones
  • No soporta entidades. Mecanismo para crear macros
  • lt!ENTITY texto "Esto texto se repite muchas
    veces" gt
  • Es necesario seguir usando los DTDs ?
  • Lenguaje de Restricciones limitado
  • Ejemplo Verificar valor total suma de valores
    parciales?
  • Sensibilidad al contexto limitada
  • Por ejemplo Especificar que el contenido depende
    del valor de un atributo
  • lttransporte tipo"coche"gt ...lt/transportegt
  • lttransporte tipo"avión"gt ...lt/transportegt
  • Tamaño de archivos XML Schema puede ser excesivo
  • Legibilidad de las especificaciones...XML no
    siempre es legible
  • Complejidad de la especificación
  • Muchas situaciones/combinaciones excepcionales

48
Esquemas XMLOtras técnicas
  • Relax NG. Desarrollado por OASIS a partir de TREX
    y RELAX
  • Soporta mayor número de restricciones y
    gramáticas ambigüas
  • Incluye una sintaxis abreviada (no XML)
  • Schematron
  • Utiliza un modelo basado en reglas (en vez de
    gramáticas)
  • Asocia reglas de validación a expresiones XPath
  • Puede expresar restricciones arbitrarias
  • Lenguajes para XML (Encaje de patrones con
    expresiones Regulares)
  • XDuce, CDuce, HydroJ

49
Ejercicios
  • Creación ficheros XML y validación mediante
    Esquemas
  • Herramientas
  • xsv (http//www.ltg.ed.ac.uk/ht/xsv-status.html)
  • Herramienta desarrollada en Python
  • Funcionamiento a través de Web o en línea de
    comandos
  • Salida en formato XML (difícil de leer al
    principio)
  • Xerces (Apache)
  • Librerías XML en Java y C
  • Contiene diversas utilidades de prueba
  • Ejemplo SAXCount cuenta el número de elementos
    pero también valida el Schema

SAXCount -valways -s -n fichero.xml
50
Diseño Vocabularios XML
51
Diseño Vocabularios XML
  • Separación tradicional de dos mundos
  • Sistemas orientados a Datos
  • Información uniforme y fuertemente estructurada
    (ej. Tablas)
  • Mucha cantidad de información repetida
  • Objetivo Procesamiento eficiente (Almacenes de
    datos)
  • Sistemas orientados a Documentación
  • Información poco uniforme y entrelazada (ej.
    Libros)
  • No existe un patrón uniforme
  • Objetivo Comunicación, Presentación (Mensajes)
  • Se podría añadir un tercer mundo
  • Programación Orientada a Objetos
  • Propuestas para añadir capacidad de programación
    a documentos
  • XML Información semi-estructurada (Lugar
    intermedio)
  • Estructuras jerárquicas entrelazadas

52
Orientación del esquemaDatos vs. Documentos
ltfacturagt ltemisióngt23-2-2006lt/emisióngt
ltenvíogt3-3-2006lt/envíogt ltdireccióngt
ltnombregtLuis Carolt/nombregt ltcallegtUríalt/callegt
ltnumerogt2lt/numerogt ltciudadgtGijónlt/ciudadgt
ltcpgt33021lt/cpgt lt/direccióngt lttlfnogt985102012lt/t
lfnogt lt/facturagt
ltnota fecha23-2-2006gt ltdegtJuan Lopezlt/degt
ltparagtLuis Carolt/paragt ltasuntogtEncargolt/asuntogt
ltmsggt Necesito darte el encargo. Puedes
enviarme un correo a ltemailgtcaro_at_gijon.comlt/ema
ilgt o me llamas al lttlfnogt985102012lt/tlfnogt
lt/msggt lt/notagt
Orientado a Datos
Orientado a Documentos
53
Diseño Vocabularios XML
  • Características a tener en cuenta
  • Tamaño de documentos
  • Facilidad de escritura
  • Facilidad de procesamiento
  • Flexibilidad (ej. HTML es muy flexible, Bases de
    Datos menos)
  • Consistencia Evitar características incoherentes
  • Nivel de abstracción Buscar término medio en
    nivel de detalle
  • ltfechagt10 Marzo 2003lt/fechagt
  • ltfechagtltdíagt10lt/diagtltmesgtMarzolt/mesgtltañogt2003lt/año
    gtlt/fechagt
  • Patrones de diseño
  • www.xmlpatterns.com

54
Ejemplo de Discusión
Representación de propiedades
ltpizzagt ltnombregtMargarita lt/nombregt
ltpreciogt6lt/preciogt lt/pizzagt
ltpizza nombre"Margarita" precio6
/gt
  • Atributos o Elementos?

55
Ejemplo de Discusión
Representación de propiedades
ltpizzagt ltnombregtMargarita lt/nombregt
ltpreciogt6lt/preciogt lt/pizzagt
ltpizza nombre"Margarita" precio6
/gt
  • Atributos o Elementos?

En los DTDs Pueden incluirse restricciones
sobre su valor Ej. valor si o no Pueden
definirse valores por defecto Pueden validarse
los valores ID e IDREF Pueden definirse
restricciones sobre espacios en blanco
(NMTOKENS) Ocupan menos espacio Más fáciles de
procesar (SAX y DOM) Acceso a entidades externas
(datos binarios)
Soportan valores arbitrariamente complejos y
repetidos Establecen un orden Soportan atributos
de atributos Mayor flexibilidad ante
modificaciones
56
Diseño Vocabularios En resumen...
...Aparición de una nueva torre de Babel...
  • Algunos Consejos
  • Estudiar dominio de la Aplicación (ver estándares
    ya definidos!!!)
  • Considerar futuras ampliaciones (extensibilidad)
  • Validar antes de que sea tarde
  • Usar espacios de nombres
  • etc. etc.

57
  • Fin
Write a Comment
User Comments (0)
About PowerShow.com