Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso 2008 / 09
Tabla de Contenidos
Diseño Basado en Componentes Plantillas de validación de documentos XML
– DTD
Declaración de tipos
Elemento raíz
Elementos
DTD y
Atributos
XML Schema – XML Schema
Elemento raíz
Elementos simples
Ingeniería Informática Elementos complejos
Universidad Carlos III de Madrid Restricciones
Diseño Basado en Componentes. Tipos de datos
Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
1
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
2
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
3
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
4
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
XML Schema soporta tipos de datos XML Schema utiliza sintaxis de XML
La característica mas importante de los XML Otra característica importante de los XML
Schemas es que soportan tipos de datos. Schemas es que están escritos en XML.
Los tipos de datos permiten: Beneficios:
– describir qué elementos están permitidos – No hay necesidad de aprender un lenguaje nuevo.
– Se puede utilizar un editor de XML para editar el XML
– validar si los datos son correctos
Schema.
– trabajar con los datos de una base de datos – Se puede utilizar un procesador de XML para procesar un
– definir Facets (restricciones) XML Schema.
– definir patrones de datos (formatos) – Se puede manipular un XML Schema utilizando XML
– convertir datos considerando diferentes tipos de datos DOM.
– Se puede transformar un XML Schema utilizando XSLT.
5
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
6
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
7
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
XML Schema. Elementos simples (ii) XML Schema. Elementos simples (iii)
La sintaxis de un elemento simple es: Ejemplo de XML:
<xs:element name="xxx" type="yyy"/> <nombre>Jana</nombre>
<edad>36</edad>
donde xxx es el nombre del elemento e yyy es el tipo de <fechanacimiento>1970-03-27</fechanacimiento>
datos del elemento.
Los tipos de datos más comunes en XML Schema son: Ejemplo de XML Schema:
– xs:string
– xs:decimal
<xs:element name=“nombre” type="xs:string"/>
– xs:integer <xs:element name=“edad” type="xs:integer"/>
– xs:boolean <xs:element name=“fechanacimiento” type="xs:date"/>
– xs:date
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
8
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
9
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Los únicos valores permitidos son tres letras de la ‘a’ a la ‘z’ escritas Los únicos valores permitidos son una o más ocurrencias de dos
en mayúscula o en minúscula: letras. En cada par de letras, la primera irá en minúscula y la
<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> segunda en mayúscula. Por ejemplo, "sToP" sería validado por el
patrón, pero no "Stop“, "STOP“ ó "stop":
El único valor permitido es una de las siguientes letras: ‘x’, ‘y’, o ‘z’:
<xs:pattern value="([a-z][A-Z])+"/>
<xs:pattern value="[xyz]"/>
Los únicos valores permitidos son exactamente ocho caracteres,
Los únicos valores permitidos son cinco dígitos comprendidos entre donde esos caracteres pueden ser letras minúsculas, letras
‘0’ y ‘9’: mayúsculas o un dígito del 0 al 9:
10
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
<xs:whiteSpace value="collapse"/>
</xs:element>
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
11
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
XML Schema. Elementos complejos (I) XML Schema. Elementos complejos (ii)
Elemento XML complejo vacío:
Un elemento complejo es un elemento XML que
<producto pid="1345"/>
puede tener más elementos y/o atributos.
Elemento XML complejo que contiene sólo otros elementos :
.
Hay cuatro clases de elementos complejos:
<empleado>
- Elementos vacíos. <nombre>Juan</nombre>
<apellidos>García López</apellidos>
- Elementos que contienen otros elementos. </empleado>
- Elementos que contienen sólo texto. Elemento XML complejo que contiene sólo texto:
- Elementos que contienen ambos: otros <comida tipoC=“postre”>Helado</comida>
elementos y texto. Elemento XML complejo que contiene ambos (texto y otros
elementos): <carta>
Estimado Sr.<nombre>Juan García</nombre>.
Nota: Cada uno de estos elementos pueden Su pedido <pedidoid>1032</pedidoid>
será enviado el <fechaenv>2007-03-25</fechaenv>.
contener atributos. </carta>
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
XML Schema. Elementos complejos (iii) XML Schema. Elementos complejos (iv)
2. El elemento "empleado" puede tener un tipo de atributo
Se puede definir un elemento complejo en XML que hace referencia al nombre del tipo complejo a usar.
Schema de dos formas distintas : <xs:element name=“empleado" type=“InfoPersona"/>
<xs:complexType name=“InfoPerson a">
1. El elemento “empleado" se puede declarar <xs:sequence>
directamente nombrando el elemento : <xs:element name=“nombre" type="xs:string"/>
<xs:element name=“apellidos" type="xs:string"/>
</xs:sequence>
<xs:element name=“empleado"> </xs:complexType>
<xs:complexType>
<xs:sequence> Usando este método, muchos elementos se pueden referir
<xs:element name=“nombre" type="xs:string"/> a la misma definición de tipo complejo :
<xs:element name=“apellidos" type="xs:string"/>
<xs:element name=“empleado" type=“InfoPersona"/>
</xs:sequence> <xs:element name=“alumno" type=“InfoPersona"/>
</xs:complexType> <xs:element name=“Socio" type=“InfoPersona"/>
</xs:element> <xs:complexType name="personinfo">
...
</xs:complexType>
12
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
XML Schema. Elementos complejos con XML Schema. Elementos complejos con
sólo elementos texto y otros elementos
La etiqueta <xs:sequence> indica que los elementos Para permitir que aparezcan caracteres entre los
definidos deben aparecer en el orden descrito dentro del elementos hijos, el atributo mixed debe estar a "true".
<xs:element name=“carta”>
elemento “persona”. <xs:complexType mixed="true">
<xs:element name="persona"> <xs:sequence>
<xs:complexType> <xs:element name=“nombre” type="xs:string"/>
<xs:sequence> <xs:element name=“pedidoid" type="xs:positiveInteger"/>
<xs:element name="nombre" type="xs:string"/> <xs:element name=“fechaenv" type="xs:date"/>
<xs:element name=“apellidos" type="xs:string"/> </xs:sequence>
</xs:sequence> </xs:complexType>
</xs:complexType> </xs:element>
</xs:element>
<xs:element name=“carta" type=“TipoCarta"/>
<xs:element name="persona" type=“TipoPersona"/> <xs:complexType name=“TipoCarta" mixed="true">
<xs:complexType name=“TipoPersona"> <xs:sequence>
<xs:sequence> <xs:element name=“nombre” type="xs:string"/>
<xs:element name=“nombre" type="xs:string"/> <xs:element name=“pedidoid" type="xs:positiveInteger"/>
<xs:element name=“apellidos" type="xs:string"/> <xs:element name=“fechaenv" type="xs:date"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
13
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
All
Indicador <xs:choice> <xs:element name="person">
Choice <xs:complexType>
– Solo puede aparecer un <xs:choice>
Sequence hijo de los descritos. <xs:element name=“empleado” type=“Empleado”/>
<xs:element name=“socio” type=“Socio”/>
– Indicadores de ocurrencia: </xs:choice>
maxOccurs </xs:complexType>
</xs:element>
minOccurs
– Indicadores de grupo:
Indicador <xs:sequence>
Group name
– Deben aparecer los hijos en la secuencia descrita y solo una vez.
attributeGroup name
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
14
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
15
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
<persona sexo=“masculino">
<nombre>Miguel</nombre>
<cliente> Juan García </cliente>
<apellidos>Campos Pérez</apellidos>
</persona>
</personas>
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
16
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
Diseño Basado en Componentes. Curso 2008 / 09 Diseño Basado en Componentes. Curso 2008 / 09
<rendimiento>999.50</rendimiento>
<coste>999</coste>
<rendimiento>+999.5450</rendimiento>
<coste>+999</coste>
<rendimiento>-999.5230</rendimiento>
<coste>-999</coste>
<rendimiento>0</rendimiento>
<coste>0</coste>
<rendimiento>14</rendimiento>
17
Diseño Basado en Componentes. Curso 2008 / 09
18