Title: Sesin 2 Diseo de Vocabularios XML
1Sesión 2Diseño de Vocabularios XML
Espacios de Nombres XML Schema Diseño de
Vocabularios
2Espacios de Nombres
3Problema de la Homonimia
- Homonimia Mismo nombre con diferentes propósitos
Cómo combinar en el mismo documento estos
vocabularios?
4Posibles 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
5Posibles 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
6Definició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
7Asignació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
8Espacio 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
9Validació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
10Valoració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
11XML Schema
12Lenguajes 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.
13Caracterí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)
14Limitaciones 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)
15XML 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
16Ejemplo
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
17Validació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
18Tipos 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
19Otra 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
20Agrupaciones
- 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
21Tipos 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
22Tipos 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
23Tipos 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
24Secuencias 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
25Tipos 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)
26Tipos 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)
27Jerarquía de tipos
28Facetas 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
29Enumeraciones y Restricciones
ltxssimpleType name"TipoCarrera"gt ltxsrestriction
base"xstoken"gt ltxsenumeration
value"Gestión"/gt ltxsenumeration
value"Sistemas"/gt lt/xsrestrictiongt lt/xssimpleTy
pegt
30Listas
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
31Uniones
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
32Expresiones 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
33Expresiones 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
34Tipos 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
35Tipos 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
36Tipos 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"
37Declaració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.
38Inclusió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
39Importació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
40Redefinició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
41Claves 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
42Claves 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
43Claves 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
44Referencias 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
45Valores 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
46Incluir 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
47XML 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
48Esquemas 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
49Ejercicios
- 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
50Diseño Vocabularios XML
51Diseñ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
52Orientació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
53Diseñ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
54Ejemplo de Discusión
Representación de propiedades
ltpizzagt ltnombregtMargarita lt/nombregt
ltpreciogt6lt/preciogt lt/pizzagt
ltpizza nombre"Margarita" precio6
/gt
55Ejemplo de Discusión
Representación de propiedades
ltpizzagt ltnombregtMargarita lt/nombregt
ltpreciogt6lt/preciogt lt/pizzagt
ltpizza nombre"Margarita" precio6
/gt
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
56Diseñ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