XML, DTD, Shema Subrayado
XML, DTD, Shema Subrayado
XML, DTD, Shema Subrayado
Ingeniera de la Informacin
Tabla de Contenidos
3
DTD. Declaracin de tipo (i)
5
DTD. Elemento raz
6
DTD. Contenido
7
DTD. Elementos (i)
8
DTD. Elementos (ii)
Contenido de un elemento:
EMPTY: El elemento est vaco (puede contener
atributos). Ej.: <!ELEMENT IMAGEN EMPTY>
ANY: El elemento puede almacenar cualquier tipo de
contenido. Ej.: <!ELEMENT IMAGEN ANY>
Otros elementos: Un elemento puede contener uno o
ms elementos hijos en una cierta secuencia. Ej.:
<!ELEMENT LIBRO (TITULO, AUTOR)>
#PCDATA: Texto a procesar por el parser.
Ej.: <!ELEMENT LIBRO (#PCDATA)>
Mixto: el elemento puede incluir secuencias de
caracteres opcionalmente mezcladas con elementos
hijos. <!ELEMENT LIBRO (#PCDATA | AUTOR)*>
9
DTD. Elementos (iii)
10
DTD. Elementos (iv)
11
DTD. Atributos (i)
12
DTD. Atributos (ii)
Tipo de un atributo:
Tipo cadena: CDATA
<!ATTLIST Autor Nacionalidad CDATA>
Tipo enumerado:
<!ATTLIST Pelicula Genero (Ficcion | Terror | Humor)>
Tipo simblico:
ID: valdr como identificador en el resto del documento, slo
un atributo ID por cada elemento.
IDREF, IDREFS: su valor debe coincidir con algn otro
atributo de tipo ID en el resto del documento XML. IDREFS
separa las referencias por espacio. Ej.: ID1 ID2 ID3.
ENTITY, ENTITIES: su valor debe coincidir con una o ms
entidades no analizadas.
NMTOKEN, NMTOKENS: su valor ha de ser una cadena de tipo
token. Ej.: <LIBRO ISBN=9-34532-33-81></LIBRO>
13
DTD. Atributos (iii)
Modificadores:
#REQUIRED: Este atributo debe introducirse
obligatoriamente.
Ej.: <!ATTLIST Pelicula Titulo CDATA #REQUIRED>
#IMPLIED: Indica que el atributo es opcional.
ValorPredeterminado: Si se omitiese el atributo, los
procesadores recogeran este valor por omisin. Ej.:
<!ATTLIST Pelicula Genero (Ficcion | Terror | Humor)
Humor>
<!ATTLIST Autor Nacionalidad CDATA Espanola>
#FIXED: se incluya o no se incluya el atributo, los
procesadores siempre obtendrn este mismo valor
<!ATTLIST Autor Nacionalidad CDATA #FIXED Espanyola>
14
DTD. Problemas
16
Para que sirve un XML Schema?
17
XML Schema es el sucesor de DTDs
19
XML Schema utiliza sintaxis de XML
20
Transmisin de datos sin
ambigedad
MCV1 El formato Date tomar el formato de fecha que se tiene configurado en Configuracin regional, si no recuerdo mal. Eso habra que
comprobarlo.
Maricruz Valiente; 11/03/2007
Los XML Schema son extensibles
22
No es suficiente que el XML Schema
est bien formado
<?xml version="1.0"?>
<nota>
<a>Juan</a>
<de>Susana</de>
<cabecera>Recordatorio</cabecera>
<cuerpo>Recuerda que tenemos reunin!</cuerpo>
</nota>
24
Ejemplo XML Schema
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="nota">
<xs:complexType>
<xs:sequence>
<xs:element name=a type="xs:string"/>
<xs:element name=de type="xs:string"/>
<xs:element name=cabecera type="xs:string"/>
<xs:element name=cuerpo type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
25
MCV2
Referencia a un XML Schema
<nota
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<a>Juan</a>
<de>Susana</de>
<cabecera>Recordatorio</cabecera>
<cuerpo>Recuerda que tenemos reunin!</cuerpo>
</nota>
26
Diapositiva 26
MCV2 xmlns="http://www.w3schools.com"
specifies the default namespace declaration. This declaration tells the schema-validator that all the elements used in this XML document are
declared in the "http://www.w3schools.com" namespace.
Once you have the XML Schema Instance namespace available:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" you can use the schemaLocation attribute. This attribute has two values. The first
value is the namespace to use. The second value is the location of the XML schema to use for that namespace:
xsi:schemaLocation="http://www.w3schools.com note.xsd"
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
...
...
</xs:schema>
27
Diapositiva 27
MCV3 xmlns:xs="http://www.w3.org/2001/XMLSchema"
indicates that the elements and data types used in the schema come from the "http://www.w3.org/2001/XMLSchema" namespace. It also
specifies that the elements and data types that come from the "http://www.w3.org/2001/XMLSchema" namespace should be prefixed with xs:
targetNamespace="http://www.w3schools.com"
indicates that the elements defined by this schema (note, to, from, heading, body.) come from the "http://www.w3schools.com" namespace.
xmlns="http://www.w3schools.com"
indicates that the default namespace is "http://www.w3schools.com".
elementFormDefault="qualified"
indicates that any elements used by the XML instance document which were declared in this schema must be namespace qualified.
29
XML Schema. Elementos simples (iii)
Ejemplo de XML:
<nombre>Jana</nombre>
<edad>36</edad>
<fechanacimiento>1970-03-27</fechanacimiento>
30
XML Schema. Elementos simples (iv)
31
XML Schema. Atributos (i)
32
XML Schema. Atributos (ii)
Cdigo en XML:
<apellido idioma="EN">Smith</apellido>
33
XML Schema. Atributos (iii)
34
XML Schema. Restricciones (i)
<xs:element name=edad>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
35
XML Schema. Restricciones (ii)
</xs:element>
36
Diapositiva 36
Otra alternativa:
<xs:simpleType name="TipoCoche">
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
37
XML Schema. Restricciones (iv)
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
38
XML Schema. Restricciones (v)
<xs:pattern value="[xyz]"/>
Los nicos valores permitidos son cinco dgitos comprendidos entre
0 y 9:
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
39
XML Schema. Restricciones (vi)
<xs:pattern value="([a-z][A-Z])+"/>
MCV5
<xs:element name=direccion">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
41
Diapositiva 41
MCV5 Este ejemplo define un elemento llamado direccion con una restriccin. La restriccin whiteSpace se establece a "preserve", lo cual significa
que el procesador XML NO ELIMINAR ningn carcter en blanco :
Maricruz Valiente; 11/03/2007
MCV6
<xs:element name=direccion">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value=replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Si se desea que XML elimine todos los espacios en blanco; LF, CR,
tabulaciones, los espacios de principio y de final de cadena, y los
espacios intermedios (dejando para este caso slo uno):
<xs:whiteSpace value="collapse"/>
42
Diapositiva 42
MCV6 Ejemplo 1:
Este ejemplo adems define un elemento llamado "address" con una restriccin. La restriccin whiteSpace se ha establecido a "replace", lo
que significa que el procesador de XML REEMPLAZAR todos los espacios en blanco (LF, CR, tabulaciones) por espacios:
Maricruz Valiente; 11/03/2007
XML Schema. Restricciones (ix)
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
43
XML Schema. Restricciones (x)
Restriccin Descripcin
enumeration Define una lista de valores permitidos.
Especifica el nmero mximo de decimales permitidos. Debe ser mayor o igual
fractionDigits
que cero.
Especifica el nmero exacto de caracteres o tems permitidos. Debe ser mayor
length
o igual que cero.
Especifica el lmite superior para un valor numrico (el valor debe ser inferior al
maxExclusive
nmero especificado).
Especifica el lmite superior para un valor numrico (el valor debe ser inferior o
maxInclusive
igual al nmero especificado).
Especifica el nmero mximo permitido de caracteres o de tems. Debe ser
maxLength
mayor o igual que cero.
Especifica el lmite inferior para un valor numrico (el valor debe ser superior al
minExclusive
nmero especificado).
Especifica el limite inferior para un valor numrico (el valor debe ser superior o
minInclusive
igual al nmero especificado).
Especifica el numero mnimo permitido de caracteres o de tems. Debe ser
minLength
mayor o igual que cero.
pattern Define la secuencia exacta de caracteres permitidos.
totalDigits Especifica el nmero exacto de dgitos permitidos. Debe ser mayor que cero.
Especifica como se manejan los espacios en blanco (LF, CR, tabulaciones,
whiteSpace
espacios).
44
XML Schema. Elementos
complejos (I)
<empleado>
<nombre>Juan</nombre>
<apellidos>Garca Lpez</apellidos>
</empleado>
<xs:element name=empleado">
<xs:complexType>
<xs:sequence>
<xs:element name=nombre" type="xs:string"/>
<xs:element name=apellidos" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
47
XML Schema. Elementos
complejos (iv)
2. El elemento empleado" se puede declarar directamente
nombrando el elemento :
<xs:element name=empleado" type=InfoPersona"/>
<xs:complexType name=InfoPerson a">
<xs:sequence>
<xs:element name=nombre" type="xs:string"/>
<xs:element name=apellidos" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="producto">
<xs:complexType>
<xs:attribute name=pid" type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>
<xs:complexType name=TipoProd">
<xs:attribute name="pid" type="xs:positiveInteger"/>
</xs:complexType>
50
XML Schema. Elementos
complejos con slo elementos
La etiqueta <xs:sequence> indica que los elementos
definidos deben aparecer en el orden descrito dentro del
elemento persona.
<xs:element name="persona">
<xs:complexType>
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name=apellidos" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="person">
Indicador <xs:choice> <xs:complexType>
<xs:choice>
Solo puede aparecer un <xs:element name=empleado type=Empleado/>
hijo de los descritos. <xs:element name=socio type=Socio/>
</xs:choice>
</xs:complexType>
</xs:element>
Indicador <xs:sequence>
Deben aparecer los hijos en la secuencia descrita y solo una vez.
54
XML Schema. Indicadores
de ocurrencia
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name=nombre_completo"
type="xs:string"/>
<xs:element name=nombre_hijo" type="xs:string"
maxOccurs="10" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name=InfoPersona">
<xs:sequence>
<xs:group ref=GrupoPersonas"/>
<xs:element name=pais" type="xs:string"/>
</xs:sequence>
</xs:complexType>
56
XML Schema. Indicadores
de grupos de atributos
<xs:element name=persona">
<xs:complexType>
<xs:attributeGroup ref=GrupoAtrPersonas"/>
</xs:complexType>
</xs:element>
57
XML Schema. <any> (i)
<personas xmlns="http://www.microsoft.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="http://www.microsoft.com familia.xsd
http://www.w3schools.com hijos.xsd">
<persona>
<nombre>Jana</nombre>
<apellidos>Martnez Sanz</apellidos>
<hijos>
<nombrehijo>Cecilia</nombrehijo>
</hijos>
</persona>
<persona>
<nombre>Miguel</nombre>
<apellidos>Campos Prez</apellidos>
</persona>
</personas>
59
XML Schema.
<anyAttribute> (i)
<personas xmlns="http://www.microsoft.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="http://www.microsoft.com familia.xsd
http://www.w3schools.com attributo.xsd">
<person sexo=femenino">
<nombre>Jana</nombre>
<apellidos>Martnez Sanz</apellidos>
</persona>
<persona sexo=masculino">
<nombre>Miguel</nombre>
<apellidos>Campos Prez</apellidos>
</persona>
</personas>
61
XML Schema. String
<cliente>Juan Garca</cliente>
62
XML Schema.
normalizedString
El tipo de datos normalizedString permite contener
cualquier carcter pero el procesador de XML sustituye
los LF, CR y caracteres de tabulacin por espacios.
<cliente>Juan Garca</cliente>
<cliente>Juan Garca</cliente>
Nombre Descripcin
ID Cadena de caracteres que representa un
atributo ID en XML (slo se usa con
atributos de esquema).
IDREF Cadena de caracteres que representa el
atributo IDREF en XML (slo se usa con
atributos de esquema).
language Cadena de caracteres que contiene un ID de
lenguaje vlido.
Name Cadena de caracteres que contiene un
nombre XML vlido.
NMTOKEN Cadena de caracteres que representa el
atributo NMTOKEN en XML (slo se usa con
atributos de esquema).
65
XML Schema. Fechas
Nombre Descripcin
date Define un valor para una fecha.
dateTime Define valores de fecha y hora.
duration Define intervalos de tiempo.
gDay Define una parte de una fecha: el da (DD).
gMonth Define una parte de una fecha: el mes (MM).
gMonthDay Define una parte de una fecha: el mes y el
da (MM-DD).
gYear Define una parte de una fecha: el ao
(YYYY).
gYearMonth Define una parte de una fecha: el ao y el
mes (YYYY-MM).
time Define un valor de hora.
66
XML Schema. decimal
<rendimiento>999.50</rendimiento>
<rendimiento>+999.5450</rendimiento>
<rendimiento>-999.5230</rendimiento>
<rendimiento>0</rendimiento>
<rendimiento>14</rendimiento>
67
XML Schema. integer
<coste>999</coste>
<coste>+999</coste>
<coste>-999</coste>
<coste>0</coste>
68
XML Schema. Datos
numricos
Nombre Descripcion
byte Entero de 8 bits con signo.
int Entero de 32 bits con signo.
long Entero de 64 bits con signo.
negativeInteger Entero que contiene slo valores negativos ( ..., -2, -1.).
nonNegativeInteger Entero que contiene slo valores positivos (0, 1, 2, ...).
nonPositiveInteger Entero que contiene slo valores no positivos (..., -2, -1, 0).
positiveInteger Entero que contienen slo valores positivos (1, 2, ...).
short Entero de 16 bits con signo.
unsignedLong Entero de 64 bits sin signo.
unsignedInt Entero de 32 bits sin signo.
unsignedShort Entero de 16 bits sin signo.
unsignedByte Entero de 8 bits sin signo.
69