• No se han encontrado resultados

Unidad: 3 Tecnología XML Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

N/A
N/A
Protected

Academic year: 2019

Share "Unidad: 3 Tecnología XML Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos"

Copied!
35
0
0

Texto completo

(1)

Laboratorio de Programación

Unidad: 3

Tecnología XML

Universidad Nacional de la Patagonia Austral

Unidad Académica Río Gallegos

Indice

Repaso

XML

DTD

Entidades

Concepto

Tipos

 Internas  Externas

Espacio de nombres

Concepto

Definición en XML

Esquemas XML

Concepto: características, tipos de datos, ventajas

Schema XML vs. DTD

Tipos simples y complejos

Enumerados y restricciones

(2)

XML

Repaso

Qué es XML?

Es un Lenguaje de Marcado Extensible (Extensible Markup

Language, XML)

XML sirve para estructurar información

XML se parece a HTML

XML es relativamente nuevo

XML es una familia de tecnologías

XML es extensible y modular

XML es libre, independiente de la plataforma, ampliamente

soportado

(3)

XML Laboratorio Programacion 2018

Aplicaciones de XML

Frameworks de desarrollo (Struts, Spring,

etc..)

OpenOffice

Configuración de aplicaciones: Tomcat

Estándares de contenidos en E-Learning

Servicios web

Definición de interfaces gráficas (XUL)

Sistemas de publicación de contenidos

Bases de datos

4

Términos en XML

<direccion>

<nombre>

<titulo>Mrs.</titulo>

<nombre> Mary </nombre>

<apellidos>McGoon</apellidos>

</nombre>

<calle> 1401 Main Street </calle>

<ciudad estado="NC">Anytown</ciudad>

<!- Lo que ponga aquí es ignorado

por el parser.

Include <a> marcas </a>-->

</direccion>

Etiqueta/Elemento

Contenido del Elemento

Atributo

(4)

XML Laboratorio Programacion 2018

XML: sintaxis

Un ejemplo:

<?xml version="1.0"?> <nota fecha=“7-5-2014”>

<destinatario>Alumnos</destinatario> <remitente>Profesor</remitente> <asunto>Recordatorio</asunto> <texto>¡Hoy tienen clases!</texto> </nota>

Componentes de un documento XML:

Elementos

 componentes principales  ejemplo: nota, destinatario, …

 pueden contener texto, otros elementos o estar vacíos

Etiquetas

 delimitan los elementos

 <nombre_elemento> marca el comienzo del elemento  </nombre_elemento> marca el final del elemento

6

XML: sintaxis

Atributos

ofrecen información adicional sobre los elementos

aparecen en la etiqueta de comienzo del elemento

 ejemplo: <nota fecha=“8-5-2013”>

Entidades

representan una porción de texto

escapado de caracteres especiales

predefinidas:

 &lt; <  &gt; >  &amp; &  &quot; “  &apos; „

definidas en DTDs

(5)

XML Laboratorio Programacion 2018

Reglas sintácticas

Una raíz

Anidación de las etiquetas

Sensible a mayúsculas

Atributos no vacíos y entrecomillados

Reglas para los nombres de etiquetas y

atributos

¿Satisface las reglas generales de sintaxis de

XML?

Documento bien formado

8

DTD

(6)

XML Laboratorio Programacion 2018

Conceptos

DTD: Definición de tipo de documento (Document Type

Definition)

Define el formato del documento, su esquema o tipo, el

vocabulario a utilizar en un documento XML:

elementos

atributos

entidades

cómo se estructuran

XML + DTD = documentos auto-descriptivos

Intercambio, compartir información

compromiso entre las partes participantes en el formato a utilizar

Validación de los datos para su procesamiento automático

10

DTD‟s

Dos niveles de corrección en XML:

¿Satisface las reglas generales de sintaxis de XML?

Documento bien formado

¿Satisface el DTD?

Documento válido

DTD incluido en el propio documento XML:

<!DOCTYPE elemento-raiz [declaracion-elementos]>

DTD externo:

<!DOCTYPE elemento-raiz SYSTEM “nombre_archivo.dtd”>

Documentos XML sin DTD

(7)

XML Laboratorio Programacion 2018

XML: DTDs

Declaración de tipo de documento interna

<?xml version="1.0"?>

<!DOCTYPE nota [

<!ELEMENT nota (destinatario,remitente,asunto,texto)>

<!ELEMENT destinatario (#PCDATA)>

<!ELEMENT remitente (#PCDATA)>

<!ELEMENT asunto (#PCDATA)>

<!ELEMENT texto (#PCDATA)>

]>

<nota>

<destinatario>Alumnos</destinatario>

<remitente>Profesor</remitente>

<asunto>Recordatorio</asunto>

<texto>¡Hoy tienen clases!</texto>

</nota>

12

XML: DTDs

Declaración de tipo de documento externa

<?xml version="1.0"?>

<!DOCTYPE nota SYSTEM “nota.dtd”>

<nota>

<destinatario>Alumnos</destinatario>

<remitente>Profesor</remitente>

<asunto>Recordatorio</asunto>

<texto>¡Hoy tienen clases!</texto>

</nota>

Nota.dtd

<!ELEMENT nota (destinatario,remitente,asunto,texto)>

<!ELEMENT destinatario (#PCDATA)>

(8)

XML Laboratorio Programacion 2018

DTDs - elementos

Elementos

<!ELEMENT nombre-elemento tipo-elemento>

<!ELEMENT nombre-elemento (contenido-elemento)>

Elementos vacíos

<!ELEMENT nombre-elemento EMPTY>

Ejemplo en DTD: <!ELEMENT edad EMPTY>

Ejemplo en XML: <edad />

Elementos de sólo texto

<!ELEMENT nombre-elemento (#PCDATA)>

ejemplo: <!ELEMENT destinatario (#PCDATA)>

Elementos con cualquier tipo de contenido

<!ELEMENT nombre-elemento ANY>

ejemplo: <!ELEMENT nota ANY>

14

DTDs - elementos

Elementos con hijos (secuencias)

Los hijos deberán aparecer en esta misma secuencia en el documento XML

<!ELEMENT nombre-elemento (hijo,

nombre-elemento-hijo,...)>

 ejemplo: <!ELEMENT nota (destinatario,remitente,asunto,texto)>

un único elemento hijo

<!ELEMENT nombre-elemento (nombre-elemento-hijo)>

 ejemplo: <!ELEMENT nota (mensaje)>

una o más ocurrencias del elemento hijo

<!ELEMENT nombre-elemento (nombre-elemento-hijo +)>

 ejemplo: <!ELEMENT nota (mensaje+)>

cero o más ocurrencias del mismo elemento

<!ELEMENT nombre-elemento (nombre-elemento-hijo *)>

(9)

XML Laboratorio Programacion 2018

DTDs - elementos

Elemento hijo opcional

<!ELEMENT nombre-elemento (nombre-hijo?)>

un elemento u otro

<!ELEMENT elemento (hijo1 |

nombre-hijo2)>

ejemplo: <!ELEMENT persona

(nombre,domicilio,(masculino|femenino))>

ejemplo: <!ELEMENT nota

(#PCDATA|destinatario|remitente|asunto|texto)*>

16

DTDs - atributos

Atributos

<!ATTLIST nombre-elemento nombre-atributo tipo-atributo default-value>

Ejemplo: <!ATTLIST pago tipo CDATA “cheque”>

Ejemplo XML: <pago tipo=“cheque” />

Tipo de atributo

CDATA

(v1|v2|…) el valor será v1 o v2 o …

ID el valor es un identificador único

IDREF el valor es el identificador de otro elemento

IDREFS el valor es una lista de identificadores

valor por defecto

el valor por defecto del atributo es

value

#REQUIRED valor obligatorio

#IMPLIED valor optativo

(10)

XML Laboratorio Programacion 2018

DTDs - atributos

Especificando el valor por defecto de un atributo ejemplo:

<!ELEMENT cuadrado EMPTY>

<!ATTLIST cuadrado lado CDATA “0”>

ejemplo XML: <cuadrado lado=“100” />

#IMPLIED

ejemplo: <!ATTLIST contact fax CDATA #IMPLIED>

ejemplo XML: <contacto fax=“555-667788” />

<contacto />

#REQUIRED

ejemplo: <!ATTLIST persona identificador CDATA #REQUIRED>

ejemplo XML: <persona identificador=“555” />

<persona />

Mal

18

DTDs - atributos

#FIXED

Ejemplo: <!ATTLIST remitente compania CDATA #FIXED

“Compania A”>

Ejemplo XML: <remitente compania=“Compania A” />

<remitente compania =“Compania B” />

Lista de valores posibles

Ejemplo: <!ATTLIST pago tipo (cheque|efectivo) “efectivo”>

Ejemplo XML: <pago tipo=“cheque” />

< pago tipo =“efectivo” />

(11)

Entidades

Entidades

Son

abreviaturas que representan un valor

(su

contenido).

Pueden ser:

Internas

: su valor está indicado en el mismo DTD en el que

se declaran.

Externas

: su valor está en documentos externos al DTD en

el que se declaran.

Generales

: se emplean en DTDs y en documentos XML

Parámetro

: sólo se emplean en DTDs

Las entidades generales internas son las más

simples.

Una entidad de este tipo es siempre una entidad

(12)

XML Laboratorio Programacion 2018

Entidades generales

Asignan nombres a ciertos elementos (similar a variables)

Se denotan por

&entidad;

No se admite recursividad

Entidades numéricas: Código numérico del carácter

Entidades predefinidas: Permiten incluir etiquetas sin analizar

22

Entidad interna

Ejemplo de declaración de entidad general

interna:

Se declaran en el mismo DTD

<?xml version="1.0" ?>

<!DOCTYPE ejemplo SYSTEM "ejemplo.dtd" [ <!ENTITY xml "Extensible Markup

Language"> ]>

<ejemplo> &xml; </ejemplo>

<?xml version="1.0" ?>

<!DOCTYPE ejemplo SYSTEM "ejemplo.dtd" [ <!ENTITY xml "Extensible Markup Language"> ]>

(13)

XML Laboratorio Programacion 2018

Entidades externas

Permiten usar archivos externos (Incluir otros documentos XML)

También se pueden incluir archivos externos de formatos binarios

24

Entidades parámetro

Permiten dar nombres a partes de un DTD

Se denotan por

%entidad;

Entidades externas: Permiten incluir elementos externos en una DTD

(14)

Espacio de nombres

(namespace)

Espacio de nombres

Tengo una lista de clientes y otras de empleados y quiero

guardar en un documento XML los clientes y el empleado que

los atiende.

¿Cómo distinguir <nombre> del cliente de <nombre> del

empleado?

<?xml version="1.0"?> <clientes>

<nombre>Juan</nombre> <nombre>Luis</nombre> ...

</clientes>

<?xml version="1.0"?> <empleados>

<nombre>Juana</nombre> <nombre>Luisa</nombre> ...

</empleados>

<?xml version="1.0"?> <clientes>

<nombre>Juan</nombre>

<nombre>Juana</nombre> <!-- cual? -->

... </clientes>

(15)

XML Laboratorio Programacion 2018

Solución

Solución: Asociar un alias a los elementos de un espacio de

nombres dentro de un ámbito.

xmlns:

alias,

define

alias

en el ámbito de un elemento.

<?xml version="1.0"?> <clientes-empleados

xmlns:clientes="http://www.una-url.com/clientes/" xmlns:empleados="http://www.otra-url.com/empleados/"> <clientes:nombre>Juan</clientes:nombre>

...

<empleados:nombre>Juana</empleados:nombre> ...

</clientes-empleados>

Son 2 etiquetas distintas

Definimos un namespace. Debe ser única y se suele utilizar una URL

NOTA: Las URIs sólo se utilizan para que el nombre sea único, no son enlaces, ni tienen que contener información

28

Espacio de nombres: conceptos

Un documento XML puede hacer uso de espacios de nombres.

Un

namespace

es un ámbito de definición de etiquetas.

Surgió del problema de no poder usar elementos con el mismo nombre

en dos o mas contextos diferentes.

Para cada etiqueta hemos de indicar, además su

namespace

.

xmlns:prefijo:”nombre o url”

Las direcciones URL deben ser únicas.

Se especifican en el prologo en el caso de usar varios espacios de

nombres.

<clientes-empleados

xmlns:clientes="http://www.una-url.com/clientes/" xmlns:empleados="http://www.otra-url.com/empleados/">

</clientes-empleados>

(16)

XML Laboratorio Programacion 2018

Espacio de nombres: conceptos

Cada espacio de nombres está asociado a una URI, que debe ser única

Se aconseja usar URLs

No tienen porque tener una existencia real

(y de hecho, no

suelen tenerla).

Espacio de nombres por defecto

Mediante

xmlns=“...”

se define un espacio de nombres por defecto (sin

alias)

<?xml version="1.0"?> <clientes-empleados

xmlns="http://www.una-url.com/clientes/"

xmlns:empleados="http://www.otra-url.com/empleados/">

<nombre>Juan</nombre>

...

<empleados:nombre>Juana</empleados:nombre> ...

</clientes-empleados>

30

(17)

XML Laboratorio Programacion 2018

Limitaciones DTD

No utilizan un modelo de contenido abierto, no tolera elementos no

definidos.

Tipos de datos limitados: los DTDs proveen tipos de datos muy

limitados:

Los DTDs no usan sintaxis XML

Es difícil definir rangos o conjuntos

<!ATTLIST fecha diaDeLaSemana (lunes | martes | miércoles | jueves | viernes | sábado | domingo)

#IMPLIED >

32

Limitaciones DTD

Sin Subclases

DTD no permiten describir las estructuras de datos comunes en

una definición de clase y capturar todas las variaciones en

subclases.

El orden de los hijos es demasiado rígido, los DTD requieren:

Listar todos los elementos hijos en el orden en que deben ocurrir

<!ELEMENT P (A, B+, C?)>

Sin soporte de espacio de nombres

Para controlar la validez, debemos mantener los prefijos del

documento XML en sincronización con el DTD

Limitadas formas de expresar repeticiones

El elemento B debe ocurrir exactamente 15 veces:

(18)

XML Laboratorio Programacion 2018

Esquemas:

Ventajas sobre los DTDs

Son documentos XML

se pueden procesar como cualquier otro documento XML

Soportan tipos de datos

se pueden definir elementos enteros, de punto flotante,

fechas, strings, entre otros.

Son extensibles

se pueden crear nuevos tipos de datos.

Mecanismos de Orientación a Objetos

Permiten extender o restringir un tipo previamente definido

Tiene más poder de expresión

Por ejemplo, que cierto valor no tenga más de 2 caracteres.

34

XML con DTD

Documento XML

Document Type Definition (DTD)

<?xml version="1.0"?>

<!DOCTYPE date SYSTEM "date.dtd"> <date>

<day>14</day>

<month>September</month> <year>2003</year> <weekday>Sunday</weekday> </date>

<!ELEMENT date (day, month, year, weekday?)> <!ELEMENT day (#PCDATA)>

(19)

XML Laboratorio Programacion 2018

Conceptos

XML Schema (esquema)

Es un lenguaje de esquema utilizado para describir la

estructura y las restricciones de los contenidos de los

documentos XML de una forma muy precisa.

Desarrollado por W3C (World Wide Web Consorcium)

36

Ejemplo: XML Schema

<?xml version="1.0"?> <xsd:schema

xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="date">

<xsd:complexType> <xsd:sequence>

<xsd:element name="day" type="xsd:string"/> <xsd:element name="month" type="xsd:string"/> <xsd:element name="year" type="xsd:string"/> <xsd:element name="weekday“

minOccur="0" type="xsd:string"/> </xsd:sequence>

</xsd:complexType> </xsd:element> </xsd:schema> elemento schema ->

(20)

XML Laboratorio Programacion 2018

XML Referenciando a Schema

¿Como se inserta en el documento XML?

El enlace o referencia al Schema relacionado al XML, se inserta en el elemento raíz del siguiente modo:

<elemento-raiz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation=“nombre-archivo.xsd">

</elemento-raiz>

Ejemplo

: <?xml version="1.0"?> <date

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="date.xsd"

>

<day>14</day>

<month>September</month> <year>2003</year> <weekday>Sunday</weekday> </date>

ubicación del Documento esquema -> Espacio de nombres -> declaración de instancias de documentos XML

38

DTD y Esquema XML

Ejemplo DTD cliente

<!ELEMENT cliente (persona-contacto, direccion, ciudad)> <!ELEMENT persona-contacto (titulo?, nombre, apellidos)> <!ELEMENT titulo (#PCDATA)>

(21)

XML Laboratorio Programacion 2018

Ejemplo Esquema XML

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="cliente ">

<xsd:complexType> <xsd:sequence> <xsd:element ref="persona-contacto"/> <xsd:element ref="direccion"/> <xsd:element ref="ciudad"/> </xsd:sequence> </xsd:complexType> </xsd:element>

<xsd:element name ="direccion" type="xsd:string"/> <xsd:element name ="ciudad" type="xsd:string"/> <xsd:element name="persona-contacto">

<xsd:complexType> <xsd:sequence>

<xsd:element ref="titulo" minOccurs="0"/> <xsd:element ref="nombre"/>

<xsd:element ref="apellidos"/> </xsd:sequence>

</xsd:complexType> </xsd:element>

<xsd:element name="titulo" type="xsd:string"/> <xsd:element name ="nombre" type="xsd:string"/> <xsd:element name ="apellidos" type="xsd:string"/> </xsd:schema>

40

Otro ejemplo

Ejemplo mas breve:

<?xml version="1.0"?>

<schema xmlns=“http://www.w3.org/2001/XMLSchema” elementFormDefault="qualified">

<element name="nombre-y-apellidos"> <complexType>

<sequence>

<element name="nombre" type="string"/> <element name="apellido1" type="string"/> <element name="apellido2" type="string"/> </sequence>

<attribute name="sexo" type="string"/> </complexType>

</element> </schema>

Namespace del Schema.

Este es el namespace recomendado en la especificación.

Declaración de un elemento. Compuesto por una secuencia de

otros elementos.

(22)

XML Laboratorio Programacion 2018

…ejemplo

<?xml version="1.0"?>

<schema xmlns=“http://www.w3.org/2001/XMLSchema” elementFormDefault="qualified">

<element name="nombre-y-apellidos"> <complexType>

<sequence>

<element name="nombre" type="string"/> <element name="apellido1" type="string"/> <element name="apellido2" type="string"/> </sequence>

<attribute name="sexo" type="string"/> </complexType>

</element> </schema>

Elementos simples que sólo pueden contener

texto.

42

XML Schema & XML

<?xml version="1.0"?>

<schema xmlns=“http://www.w3.org/2001/XMLSchema” elementFormDefault="qualified">

<element name="nombre-y-apellidos"> <complexType>

<sequence>

<element name="nombre" type="string"/> <element name="apellido1" type="string"/> <element name="apellido2" type="string"/> </sequence>

<attribute name="sexo" type="string"/> </complexType>

</element> </schema>

<nombre-y-apellidos sexo="varon"> <nombre> Juan </nombre>

(23)

XML Laboratorio Programacion 2018

Schema XML: características

Son documentos XML.

Elemento raíz <schema>

Soportan tipos de datos.

Soportan namespaces.

Permiten definir nuevos tipos de datos y restricciones

sobre los valores de un elemento.

Ofrecen mayor precisión que los DTDs.

Extensión .xsd

44

(24)

Comentarios

Dos formas de insertar comentarios:

Siempre dentro del elemento xs:annotation:

xs:documentation: es la forma de introducir documentación para

un lector (fecha de creación, copyright, etc.)

xs:appinfo: esta orientada a pasar información extra a las

aplicaciones que hagan uso del esquema (enlace a la hoja de estilo

a aplicar)

Comentarios de XML:

<!-- comentario -->

XML Laboratorio Programacion 2018 46

Comentarios

Es preferible utilizar el tipo de comentario

propio de XML Schema:

Se pueden estructurar

Se pueden procesar como un fragmento de

documento XML

(25)

Comentarios

XML Laboratorio Programacion 2018 48

(26)

Atributos

Reglas para declaración atributos

Tiene que aparecer después de la declaración de los

subelementos

No pueden contener hijos

Tipo simple

Su declaración no impone un orden de uso

Tipo por defecto

anySimpleType:

representa

cualquier cadena de caracteres XML válidos

XML Laboratorio Programacion 2018 50

Atributos

Reglas para la declaracion de atributos (2):

Sin cardinalidad

Opcional por defecto

Tres atributos para restringir los valores del

(27)

Atributos

use:

required: el atributo es obligatorio

optional: puede o no aparecer (valor por defecto)

prohibited: el atributo no puede aparecer en el elemento

default:

Valor por defecto del atributo

Si el atributo no está, el procesador XML empleará este valor

<fixed>

Valor fijo del atributo

El atributo puede aparecer o no, pero si aparece debe contener solo dicho

valor.

XML Laboratorio Programacion 2018 52

Declaración de Atributos

<xs:complexType name="Círculo"> <xs:attribute name="radio"

type="xs:float" use="required" />

<xs:attribute name="color" type="Color"

default="255 0 0"/>

<xs:attribute name="tipo" type="xs:string" fixed="jpeg" /> </xs:complexType>

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

(28)

XML Laboratorio Programacion 2018

Tipos Complejos vs

Simples

Pueden declararse 2 tipos:

Complejos: Pueden contener sub-elementos y atributos.

Simples: No contienen sub-elementos ni atributos

Pueden aparecer dentro de elementos o en valores de atributos

<alumno dni=“9873435”> <nombre>Jose</nombre> <apellidos>Bueno</apellidos> </alumno> complejos simples 54

Indicadores

Indicadores de orden.

All: los elementos hijos pueden aparecer en cualquier orden

y que aparecen como mucho solo una vez

Choice: representa alternativas

Sequence: indica en que orden

exacto deben aparecer los hijos.

<xs:complexType name="Transporte"> <xs:choice>

<xs:element name="coche" type="xs:string"/> <xs:element name="tren" type="xs:string"/> <xs:element name="avión" type="xs:string"/> </xs:choice> </xs:complexType> <transporte> <coche>Renault R23</coche> </transporte> <?xml version="1.0"?> <schema ...> <element name="nombre-y-apellidos"> <complexType> <sequence>

<element name="nombre" type="string"/> <element name="apellido1" type="string"/> <element name="apellido2" type="string"/> </sequence>

(29)

XML Laboratorio Programacion 2018

Indicadores

Indicadores de cantidad.

maxOccurs

minOccurs

ilimitado: maxOccurs="unbounded“

56

Tipos propios

<xs:complexType name="persona"> <xs:sequence>

<xs:element name="nombre" type="xs:string"/> <xs:element name="apellidos" type="xs:string"/> </xs:sequence>

</xs:complexType>

<xs:element name="empleado" type="persona"> <xs:element name="cliente" type="persona">

... <empleado>

<nombre> Juan </nombre> <apellidos> Perez </apellidos> </empleado>

<cliente>

<nombre> Luis </nombre> <apellidos> Gomez </apellidos> </cliente>

(30)

XML Laboratorio Programacion 2018

Tipo complejos: Anónimos vs.

con nombre

<xs:complexType> <xs:sequence>

<xs:element name="nombre" type="xs:string"/> <xs:element name="apellidos" type="xs:string"/> </xs:sequence>

</xs:complexType>

<xs:element name="empleado" type="persona">

<xs:complexType name="persona"> <xs:sequence>

<xs:element name="nombre" type="xs:string"/> <xs:element name="apellidos" type="xs:string"/> </xs:sequence>

</xs:complexType>

+ legible

+ reutilizable

58

Enumeraciones y restricciones

Restricción

Enumeración

<xs:element name="edad"> <xs:simpleType>

<xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="100"/> </xs:restriction>

</xs:simpleType> </xs:element>

<xs:element name="coche"> <xs:simpleType>

<xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value=“Fiat"/> <xs:enumeration value=“Ford"/> </xs:restriction>

El elemento edad puede tener el valor entre

0 y 100

El elemento coche sólo puede ser Audi, Fiat

(31)

XML Laboratorio Programacion 2018

Restricciones: más ejemplos

<xs:element name="iniciales"> <xs:simpleType>

<xs:restriction base="xs:string">

<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> </xs:restriction>

</xs:simpleType> </xs:element>

<xsd:element name ="codigo-postal"> <xsd:simpleType>

<xs:restriction base="xs:integer">

<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction>

</xsd:simpleType> </xsd:element>

Tres Letras

Un código postal de 5 dígitos

60

Restricciones: más ejemplos

<xs:element name="clave"> <xs:simpleType>

<xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction>

</xs:simpleType> </xs:element>

(32)

XML Laboratorio Programacion 2018

Tipos Derivados por

Extensión

Similar a las subclases de OO: Añadir elementos a un tipo base

<xs:complexType name="Figura" >

<xs:attribute name="color" type="Color"/> </xs:complexType>

<xs:complexType name="Rectángulo"> <xs:complexContent>

<xs:extension base="Figura">

<xs:attribute name="base" type="xs:float" /> <xs:attribute name="altura" type="xs:float" /> </xs:extension>

</xs:complexContent> </xs:complexType>

<xs:complexType name="Círculo"> ...similar pero incluyendo el radio </xs:complexType>

Rectángulo contiene el elemento color, base y altura

62

(33)

XML Laboratorio Programacion 2018

Ejercicio práctico

Construir un esquema XML de acuerdo al DTD y XML

provistos. Realizar los siguientes pasos:

Crear el documento XML (ver XML adjunto)

Crear el DTD (ver DTD adjunto)

Validar DTD con el documento XML

Crear el Esquema XML

64

Ejercicio práctico…

DTD Libro:

<!ELEMENT Libro (Titulo, Contenido, Copyright)> <!ELEMENT Titulo (#PCDATA)>

<!ELEMENT Contenido ((Capitulo+, Separacion?)+)> <!ELEMENT Capitulo (Tema, Seccion+)>

<!ATTLIST Capitulo materia (XML|Java) "Java"> <!ELEMENT Tema (#PCDATA)>

<!ELEMENT Seccion (#PCDATA)>

<!ATTLIST Seccion apartados CDATA #REQUIRED dificil (si|no) "no"> <!ELEMENT Separacion EMPTY>

(34)

XML Laboratorio Programacion 2018

Ejercicio práctico…

y probarlo con este documento XML:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Libro SYSTEM "libro.dtd"> <Libro>

<Titulo>Java y XML</Titulo> <Contenido>

<Capitulo materia="XML"> <Tema>Introducción</Tema>

<Seccion apartados="7">Qué es</Seccion> <Seccion apartados="3">Cómo se usa</Seccion> </Capitulo>

<Capitulo materia="XML"> <Tema>Creando XML</Tema>

<Seccion apartados="0">Un documento XML</Seccion> <Seccion apartados="2">La cabecera</Seccion> <Seccion apartados="6">El contenido</Seccion> </Capitulo>

66

Ejercicio práctico…

<Capitulo>

<Tema>Analizando XML</Tema>

<Seccion apartados="3">Preparación</Seccion> <Seccion apartados="3" dificil="si">SAX</Seccion> <Seccion apartados="9" dificil="si">Manejadores</Seccion> <Seccion apartados="0">Una forma mejor de cargar el analizador</Seccion>

</Capitulo> <Separacion/>

<Capitulo materia="Java"> <Tema>JDOM</Tema>

<Seccion apartados="2">Introducción</Seccion>

<Seccion apartados="4" dificil="si">DOM&amp;JDOM</Seccion> </Capitulo>

</Contenido>

(35)

XML Laboratorio Programacion 2018

Próximas clases

Teoría:

Proxima: Miércoles 16/5

Temas:

Repaso

DOM

Hojas de estilo XLS

Ejemplos y ejercitación

Práctica:

Jueves 10/8 y Jueves 17/5

TP3 (2da. clase)

Presentación avance Proyecto (GUI)

Referencias

Documento similar

[r]

encantador.&lt;/p&gt; &lt;p&gt;Nuestros agentes inmobiliarios se encargan de captar las mejores propiedades y ofrecerlas a todo tipo de clientes, tanto nacionales como

Planta. Croquis del jPabeücn/ destinado a l¿v /nulcrnideid en el Hospital en construcción/ de ¿os 1 J

Este atributo puede utilizarse en el elemento &lt;cpfRelation&gt; (Relación con institución, persona o familia), &lt;resourceRelation&gt; (Relación con recurso)

Cla^celebridad mas honrofa. dos Querubines muy grandes: Veth i^jtraculo dúos.. Los dos Querubines grandes fueron colocados en el Alear de los otros dos Queru- bines pequeñosj y

[r]

E.: &lt;campo = ideología patente = cooperación internacional&gt; bueno / y esto de &lt;ininteligible&gt; ahora con los conflictos internacionales que

&lt;&lt;distribución equilibrada entre los centros sostenidos con fondos públicos del alumnado evitando la concentración o dispersión excesiva&gt;&gt;, asimismo, se