Académique Documents
Professionnel Documents
Culture Documents
I f
Informacin
i para Internet
I
3. Conceptos bsicos de
Schemas y documentos XML
Documentos validados
Un documento validado es un documento bien formado en el que sus elementos
cumplen una serie de reglas.
reglas
Esas normas pueden regular el nmero, nombre u orden de los elementos o atributos o el
contenido de los mismos.
XML presenta dos mecanismos para asegurar esas reglas:
9 Definicin del tipo de documento (DTD).
9 Esquemas XML
XML.
Estas operaciones
p
se podran
p
realizar mediante programacin
p g
de las
aplicaciones:
Ejemplos:
Se utiliza para DTD utilizadas ampliamente y permiten que determinadas aplicaciones la utilicen ya que
las tienen implementadas de antemano.
Definicin de elementos
Permite especificar el nombre de una etiqueta y su contenido.
<!ELEMENT nombre contenido>
Contenido:
Contenido
d
Si ifi d
Significado
l
Ejemplo
#PCDATA
subelementos,
b l
es d
decir
i una lilista d
de
<!ELEMENT
!
empleado
l d (
(nombre,dni)>
b
d i)
elementos hijos.
EMPTY
ANY
Mixto
<!ELEMENT
<!ELEMENT
<!ELEMENT
!
<!ELEMENT
alumno (expediente,apellidos,nombre)>
expediente (#PCDATA)>
apellidos
i
(#PCDATA)>
#
nombre (#PCDATA)>
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
alumno (expediente,nombre_completo)>
expediente (#PCDATA)>
nombre_completo (apellidos,nombre)>
apellidos (#PCDATA)>
nombre (#PCDATA)>
Significado
Uso obligatorio y mltiple. Permite la existencia de varios elementos de este tipo dentro del elemento
padre, pero es necesario que al menos exista uno.
Uso opcional y mltiple. Pueden aparecer una o varias ocurrencias del elemento hijo.
Opcional y nico. Puede existir una o ninguna ocurrencia de este elemento dentro del elemento hijo.
Equivalente a OR. Da la opcin de utilizar un nico elemento entre dos opciones que aparecern
separadas por la barra.
alumnos (alumno+)>
alumno (expediente,nombre_completo)>
expediente (#PCDATA)>
nombre_completo (primer_apellido,segundo_apellido?,nombre)>
primer_apellido (#PCDATA)>
segundo
g
_apellido
p
(#PCDATA)>
(
)
nombre (#PCDATA)>
Atributos
Permiten incluir informacin adicional sobre un elemento, es
decir, metainformacin.
Representan las propiedades de un objeto.
No pueden contener subatributos ni cualquier otro elemento.
Se utilizan para incluir texto significativo pero con poca informacin,
muy especfica y desestructurada.
Atributos (II)
Tipos de atributos.
Determina el tipo de informacin que puede contener.
Tipo
Significado
( l 1| l 2|
(valor1|valor2|...)
)
P d tomar
Puede
t
ell valor
l de
d alguna
l
d las
de
l opciones
i
separadas
d por barras
b
CDATA
Cadena
ID
IDREF
Referencia
f
a un ID definido
d f d en algn
l otro lugar
l
d l documento
del
d
IDREFS
ENTITY
ENTITIES
Li t de
Lista
d entidades
tid d separadas
d por espacios
i
NMTOKEN
NMTOKENS
NOTATION
N b de
Nombre
d una notacin
i definida
d fi id en la
l DTD.
DTD
10
Atributos (III)
Tipo
p CDATA.
Cualquier valor de texto Unicode.
No se admitiran entidades de texto (por ejemplo <).
Identificador: ID.
Slo puede haber un atributo de tipo ID por elemento.
El contenido debe ser un nombre XML vlido (debe comenzar
por un carcter).
Se utiliza para referenciar unvocamente un elemento de la DTD.
11
Atributos (IV)
Tipos
p IDREF,, IDREFS.
El atributo hace referencia al valor de un atributo ID de algn otro
elemento.
Si la referencia es a un nico objeto,
objeto se utiliza IDREF,
IDREF si son varios
IDREFS.
<catalogo>
<persona idPersona=MCS rol = Autor>
Miguel de Cervantes Saavedra
</persona>
<persona idPersona=WS rol = Autor>
William Shakespeare
</persona>
<libro autor =MCS WS>
La obra imposible de Cervantes y
Shakespeare
</libro>
</catalogo>
<!ELEMENT
<!ELEMENT
<!ATTLIST
<!ATTLIST
catalogo (persona+,libro+)>
persona (#PCDATA)>
persona idPersona ID rol (autor|ilustrador)>
libro autor IDREFS ilustrador IDREFS>
12
Atributos (V)
Tipo NMTOKEN, NMTOKENS.
Intermedio entre un CDATA y un ID.
Limita el valor del contenido permitiendo nicamente el uso de
los caracteres vlidos en un nombre XML.
9 Caracteres alfanumricos, ideogramas, el punto, los dos puntos, el
guin y el guin bajo.
9 A diferencia de un nombre XML pueden comenzar por cualquier
carcter.
carcter
Herencia de SGML.
NMTOKENS sera una lista de NMTOKEN separada por comas.
ENTITY,
ENTITY ENTITIES,
ENTITIES NOTATION.
NOTATION
Hacen referencia a una entidad, una lista de entidades o una
notacin definida en la DTD.
13
Atributos (VI)
Predeterminados de atributos.
Permiten indicar si un atributo es o no opcional y el proceso que se
debe hacer en caso de que no se encuentre.
Predeterminado
Descripcin
#REQUIRED
#IMPLIED
El atributo es opcional
#FIXED valorPredeterminado
valorPredeterminado
14
Atributos (VII)
#IMPLIED
<!ATTLIST unElemento suAtributo CDATA #IMPLIED>
<unElemento suAtributo=cualquiera>Un valor</unElemento>
<unElemento>Otro valor</unElemento>
<unElemento suAtributo=
.otros caracteres>Un valor
mas</unElemento>
#REQUIRED
<!ATTLIST unElemento suAtributo (valor1|valor2) #REQUIRED>
<unElemento suAtributo=valor1>Un valor</unElemento>
<unElemento>Otro valor</unElemento> <!
<!-- esto no es vlido -->
>
<unElemento suAtributo= valor2>Un valor mas</unElemento>
15
Atributos (VIII)
#FIXED valorPredeterminado
<!ATTLIST unElemento suAtributo CDATA #FIXED valorFijo>
<unElemento suAtributo=valorFijo>Un valor</unElemento>
<unElemento>Otro valor</unElemento> <!-<!
esto no es vlido -->
>
<!-- esto no es vlido -->
<unElemento suAtributo= Otro valor>Un valor mas</unElemento>
valorPredeterminado
<!ATTLIST unElemento suAtributo (valor1|valor2) valor1>
<unElemento suAtributo=valor2>Un valor</unElemento>
<unElemento>Otro valor</unElemento> <! suAtributo toma valor1 -->
16
<!ELEMENT
!
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ATTLIST
<!ATTLIST
alumnos
l
(
(alumno+)>
l
)
alumno (nombre_completo, notas?)>
nombre_completo (primer_apellido,segundo_apellido?,nombre)>
primer_apellido (#PCDATA)>
segundo_apellido (#PCDATA)>
nombre (#PCDATA)>
notas (asignatura)>
asignatura (examen, calificacin)>
examen EMPTY>
calificacin (#PCDATA)>
alumno expediente CDATA #REQUIRED>
asignatura
cdigo IDREF #REQUIRED
denominacin CDATA #REQUIRED>
<!ATTLIST examen
fecha NMTOKEN #REQUIRED
veces_matriculada
t i l d NMTOKEN #REQUIRED
numero_convocatoria NMTOKEN #REQUIRED>
17
18
Ejemplos
Realizar una DTD p
para el almacenamiento de CD
musicales con las especificaciones detalladas en el
ejemplo del tema 2.
Disear
Di una DTD que sirva
i
de
d soporte
t para las
l
especificaciones de la prctica 1.
Comprobar los documentos de instancia utilizando un
validador que admita DTD como XML Validation
(www.xmlvalidation.com).
19
Esquemas XML
Un Esquema XML es un documento XML que contiene un descripcin formal de
la estructura de un documento XML valido
valido.
Un Esquema de Lenguaje de Esquemas del W3C es un esquema XML escrito en una
determinada sintaxis recomendada por el W3C.
Esquemas
N permite
No
it ell uso d
de llos espacios
i d
de nombres
b
(Namespaces)
No permite la herencia.
Permite la herencia.
20
DTD
Esquemas
21
Esquemas XML
Ejemplo
j
p de DTD y Schema
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ATTLIST
<!ATTLIST
<!ATTLIST
Temperaturas (Ciudades+)>
Ciudades (Ciudad+)>
(
)
Ciudad (Nombre,Dia,Hora,TemperaturaActual,TemperaturaMaxima,TemperaturaMinima)>
Nombre (#PCDATA)>
Dia (#PCDATA)>
Hora (#PCDATA)>
TemperaturaActual (#PCDATA)>
TemperaturaMaxima (#PCDATA)>
TemperaturaMinima (#PCDATA)>
TemperaturaActual unidad (Farenheit|Celsius) #REQUIRED>
TemperaturaMaxima unidad (Farenheit|Celsius) #REQUIRED>
TemperaturaMinima unidad (Farenheit|Celsius) #REQUIRED>
22
Esquemas XML
Ejemplo
j
p de DTD y Schema (
(II)
)
<?xml version="1.0" encoding="iso-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Temperaturas">
p
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="Ciudades" />
</xs:sequence>
</xs:complexType>
</xs:element>
/xs:element
<xs:element name="Ciudades">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" ref="Ciudad" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Ciudad">
<xs:complexType>
<xs:sequence>
<xs:element ref="Nombre" />
<xs:element ref="Dia"
ref "Dia" />
<xs:element ref="Hora" />
<xs:element ref="TemperaturaActual" />
<xs:element ref="TemperaturaMaxima" />
<xs:element ref="TemperaturaMinima" />
</xs:sequence>
</xs:complexType>
/
l
</xs:element>
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Facultad de Informtica, 2008
23
Esquemas XML
Ejemplo
j
p de DTD y Schema (
(III)
)
<xs:element name="Nombre" type="xs:string" />
<xs:element name="Dia" type="xs:date" />
<xs:element name="Hora" type="xs:time" />
<xs:element name="TemperaturaActual" type="Temperatura" />
<xs:element name="TemperaturaMaxima" type="Temperatura" />
<xs:element name="TemperaturaMinima" type="Temperatura" />
<xs:complexType name="Temperatura">
<xs:simpleContent>
p
<xs:extension base="xs:decimal">
<xs:attribute name="unidad" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Farenheit" />
<xs:enumeration value
value="Celsius"
Celsius />
<xs:enumeration value="Kelvin" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
24
Prologo
g del esquema.
q
Elementos del esquema.
Declaracin XML.
Declaracin del elemento schema con el espacio de nombres al que hace referencia.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
xmlns:xs "http://www w3 org/2001/XMLSchema">
Declaracin
XML
Prlogo
Declaracin
del schema
Elementos
25
Espacios de nombre
Permiten indicar a un analizador XML que vocabulario utilizar cuando analice un
d
documento.
t
26
Prefijos.
Para utilizar un elemento de un espacio
p
de nombre concreto hayy que
q utilizar
el nombre cualificado del elemento.
Ese nombre est formado por:
9 Un prefijo que identifica el espacio de nombre.
9 El carcter dos puntos (:)
(:).
9 El nombre de la etiqueta (parte local del nombre cualificado).
El nombre
b local
l
l no puede
d utilizar
tili
ell carcter
t dos
d puntos.
t
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Facultad de Informtica, 2008
27
28
29
30
Algunos
g
elementos se encuentran en otro espacio
p
de nombre,,
por lo que el prembulo del esquema tambin suele incluir el
espacio de nombres situado en
http://www.w3.org/XMLSchema-instance.
9 Es comn aadir tambin este espacio de nombres.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
31
elementFormDefault.
attributeFormDefault.
32
Asociacin de un documento a un
esquema
q
Asociacin de los elementos no incluidos en ningn espacio de
nombres.
nombres
33
Asociacin de un documento a un
esquema
q
(
(II)
)
Asociacin de los elementos asociados a un determinado espacio de nombre.
9 Hayy q
que incluir un espacio
p
de nombre seguido
g
de un URL de la ubicacin del esquema
q
a partir
p
del espacio de nombre.
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<Temperaturas xmlns="http://www.colimbo.net/Temperaturas"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.colimbo.net/Temperaturas
http://www colimbo net/Pruebas/schema/Temperaturas xsd">
http://www.colimbo.net/Pruebas/schema/Temperaturas.xsd
>
<Ciudades>
<Ciudad>
<Nombre>Madrid</Nombre>
<Dia>2008-09-05</Dia>
<Hora>11:52:10</Hora>
<TemperaturaActual unidad
unidad="Celsius">22</TemperaturaActual>
Celsius >22</TemperaturaActual>
<TemperaturaMaxima unidad="Celsius">25</TemperaturaMaxima>
<TemperaturaMinima unidad="Celsius">19</TemperaturaMinima>
</Ciudad>
</Temperaturas>
Se dispone de dos vocabularios distintos. xsi para el espacio de nombres de XML para instancias
(XML Schema namespace for instances) y otro para las temperaturas.
34
Declaracin de elementos
Un esquema XML est compuesto bsicamente por elementos
anidados y xs:element.
Declaracin de elementos.
El elemento xs:element declara un elemento del esquema.
9 Cmo mnimo deber tener el atributo name.
9 Para los elementos hoja, habr que especificar el tipo de dato mediante
el atributo type.
o El atributo type permite indicar el tipo de dato del elemento.
<?xml version="1.0" encoding="iso-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name
name="nombre
nombre_completo
completo" type
type="xs:string"
xs:string />
</xs:schema>
<?xml version="1.0" encoding="iso-8859-1" ?>
<nombre_completo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
p
xsi:noNamespaceSchemaLocation="Universidad.xsd">
Juan Mara Lpez Herranz
</nombre_completo>
Universidad Pontificia de Salamanca (Campus Madrid)
Luis Rodrguez Baena, Facultad de Informtica, 2008
35
Tipos de datos
Los esquemas
q
XML permiten
p
dos tipos
p de contenido:
Contenido simple.
9 No puede contener elementos anidados.
Contenido complejo.
p j
9 Pueden contener elementos anidados y atributos.
Tipos derivados.
9 Se definen en base a otros tipos.
9 Se pueden considerar subtipos de los tipos primitivos.
36
37
38
DESCRIPCIN
Nmero decimal de precisin arbitraria
Nmero entero
<0
0
>0
0
De 9223372036854775808 a
9223372036854775807
De 2147483648 a 2147483647
De 32768
32768 a 32767
De 128 a 127
De 18446744073709551615
De 65535
De 4294967295
De 255
FORMATO
7 08
7,08
float
double
12 56E3 12
12.56E3,
12, 12560
12560, 0,
0 0
0, INF,
INF INF
INF, NaN
39
TIPO
date
dateTime
duration
gDay
gMonth
gMonthDay
gYear
gYearMonth
time
DESCRIPCIN
Fecha
Fecha y hora
Duracin respecto iso 8601
Da
Mes
Mes y da
Ao
Ao y mes
Hora
FORMATO
YYYYMMDD
YYYYMMDD hh:mm:ss
PnYnMnDTnHnMnS
DD (3 guiones)
MM (2 guiones)
MMDD (2 guiones)
YYYY
YYYYMM
hh:mm:ss.sss
40
DESCRIPCIN
FORMATO
string
Caracteres
"cadena"
normalizedString
token
Qname
name
NCName
Nombre no calificado
ID
IDREF
IDREFS
ENTITY
l
all atributo
b
ENTITY de
d lla DTD
Equivalente
ENTITIES
NMTOKEN
NMTOKENS
NOTATION
DESCRIPCIN
FORMATO
hexBinary
boolean
true, false, 1, 0
anyURI
Referencia URI
language
"http://www.w3.org"
41
Tipos complejos
XML tambin permite definir nuevos tipos de datos.
La declaracin xs:simpleType permite definir nuevos tipos de datos no
divisibles en unidades ms pequeas a partir de tipos de datos existentes.
La declaracin xs:complexType permite definir tipos de datos complejos.
9 Se trata
a a de
d tipos
po de
d datos
da o compuestos
o pu o de
d otros
o o ms
simples.
p
9 Es un mecanismo similar a las estructuras de otros lenguajes de programacin.
42
Tipos complejos:
xs:sequence
q
Indica que los elementos hijos deben aparecer en dicha posicin en el documento de
instancia.
<?xml version="1.0" encoding="iso-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="alumno">
<xs:complexType>
<xs:sequence>
<xs:element name="expediente"
name "expediente" type="xs:string"
type "xs:string" />
<xs:element name="nombre_completo">
<xs:complexType>
<xs:sequence>
<xs:element name="primer_apellido" type="xs:string" />
<xs:element name="segundo_apellido" type="xs:string" />
yp
g
<xs:element name="nombre" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<?xml version="1.0" encoding="iso-8859-1" ?>
</xs:element>
<alumno xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
</xs:schema>
/
h
xsi:noNamespaceSchemaLocation="Universidad.xsd">
i
h
i
i
id d
d
<expediente>041035</expediente>
<nombre_completo>
<primer_apellido>Lpez</primer_apellido>
<segundo_apellido>Herranz</segundo_apellido>
<nombre>Juan Mara</nombre>
</nombre completo>
</nombre_completo>
</alumno>
43
Tipos complejos:
xs:all
Indica que los elementos hijos deben aparecer en el documento aunque en cualquier
orden.
<?xml version="1.0" encoding="iso-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="alumno">
<xs:complexType>
<xs:sequence>
<xs:element name="expediente"
name "expediente" type="xs:string"
type "xs:string" />
<xs:element name="nombre_completo">
<xs:complexType>
<xs:all>
<xs:element name="primer_apellido" type="xs:string" />
<xs:element name="segundo_apellido" type="xs:string" />
yp
g /
<xs:element name="nombre" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<?xml version="1.0" encoding="iso-8859-1" ?>
</xs:element>
<alumno xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
</xs:schema>
/
h
xsi:noNamespaceSchemaLocation="Universidad/Universidad.xsd">
i
h
i
i
id d/ i
id d
d
<expediente>041035</expediente>
<nombre_completo>
<segundo_apellido>Herranz</segundo_apellido>
<nombre>Juan Mara</nombre>
<primer_apellido>Lpez</primer_apellido>
</nombre completo>
</nombre_completo>
</alumno>
44
Tipos complejos:
xs:choice
45
Tipos complejos:
xs:group
g
p
46
Tipos complejos:
xs:group
g
p(
(II)
)
47
Tipos complejos:
xs:any
y
48
Tipos complejos:
Control de la cardinalidad
Tanto element como sequence o choice admiten atributos que
permiten establecer la cardinalidad de los elementos
elementos.
minOccurs="enteroNoNegativo".
maxOccurs="enteroNoNegativo | unbounded".
9 Permite
P
it establecer
t bl
ell nmero
mximo
i
de
d ocurrencias
i del
d l elemento.
l
t
Ejemplos:
j p
9 Siempre
Si
debe
d b existir
i ti un elemento
l
t expediente
di
.
<xs:element name="segundo_apellido" type="xs:string" minOccurs="0"
maxOccurs="1"/>
49
Tipos complejos:
50
Tipos complejos:
51