46
Your logo XML Schema y DTD Línea de Profundización 2 Politécnico Colombiano Jaime Isaza Cadavid

03_XML_Schema_y_DTD

Embed Size (px)

DESCRIPTION

Leng.marcas

Citation preview

Page 1: 03_XML_Schema_y_DTD

Your logo

XML Schema y DTDLínea de Profundización 2

Politécnico Colombiano Jaime Isaza Cadavid

Page 2: 03_XML_Schema_y_DTD

Agenda (1/2)

XML Schema

XSD

Schema

Tipos XSD

- Tipos simples

- Tipos complejos

- Tipos de datos

Lo que vamos a ver en esta sección

Page 3: 03_XML_Schema_y_DTD

Agenda (2/2)

DTD

Introducción a los DTD.

Bloques de construcción.

Elementos.

Atributos.

Entidades.

Validaciones.

Ejemplos.

Lo que vamos a ver en esta sección

Page 4: 03_XML_Schema_y_DTD

XSD

XML Schema Definition

Page 5: 03_XML_Schema_y_DTD

XSD – (XML Schema Definition)

Describe la estructura de un documento XML.

Es una alternativa en XML a los DTD.

XSD

Page 6: 03_XML_Schema_y_DTD

Elementos válidos.

Atributos de los elementos.

Qué elementos son hijos de otros.

Cuántos hijos y en qué orden.

Elementos vacíos o que pueden tener texto.

Tipos de dato de elementos y atributos.

Valores por defecto.

¿Qué define un XSD?

Page 7: 03_XML_Schema_y_DTD

Es el elemento raíz del esquema

Atributos:

- xmlns:xs= “http://www.w3.org/2001/XMLSchema”

- Elementos y tipos de datos del esquema.

- targetNamespace="http://www.w3schools.com"

- Namespace del que vienen los elementos definidos.

- xmlns="http://www.w3schools.com"

- Namespace por defecto

- elementFormDefault="qualified“

- Usar el cualificador (prefijo) del namespace

El elemento Schema

Page 8: 03_XML_Schema_y_DTD

xmlns="http://www.w3schools.com"

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

xsi:schemaLocation="http://www.w3schools.com note.xsd"

<?xml version="1.0"?>

<note xmlns="http://www.w3schools.com"

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

xsi:schemaLocation="http://www.w3schools.com note.xsd">

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

Referenciando un XSD

Page 9: 03_XML_Schema_y_DTD

<?xml version="1.0" encoding="ISO-8859-1"?>

<note>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

<xs:element name="note">

<xs:complexType>

<xs:sequence>

<xs:element name="to" type="xs:string"/>

<xs:element name="from" type="xs:string"/>

<xs:element name="heading" type="xs:string"/>

<xs:element name="body" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

XML

XSD

Ejemplo No. 1

Page 10: 03_XML_Schema_y_DTD

Tipos XSD

Son dos tipos:

- Simples

- Complejos

Page 11: 03_XML_Schema_y_DTD

Contiene solo texto.

- <xs:element name="xxx" type="yyy“ default="zzz"/>

- xxx: nombre, yyy: tipo de dato, zzz: valor por defecto

(opcional)

Tipos Más Comunes:

- xs:string

- xs:decimal

- xs:integer

xs:boolean

xs:date

xs:time

Tipos simples: Elemento

Page 12: 03_XML_Schema_y_DTD

Los elementos simples no pueden tener atributos. El

atributo en sí es declarado como tipo simple.- <xs:attribute name="xxx" type="yyy" default="zzz"/>

Los atributos son opcionales por defecto. Si un atributo es

requerido se debe usar el atributo use="required“

Cuando los atributos tienen un tipo definido, ese es una

restricción del contenido del valor del atributo.

Tipos simples: Atributo

Page 13: 03_XML_Schema_y_DTD

Definen valores aceptables para elementos o atributos. Se

les llama «facetas».

El tag que las identifica es:

-<xs:restriction base="xs:data_type">

Ver:

- http://www.w3schools.com/schema/schema_facets.asp

Tipos simples: Restricciones (1/2)

Page 14: 03_XML_Schema_y_DTD

De valor:

De conjunto de valores:

De una serie de valores:

(Expresiones regulares)

De longitud:

<xs:minInclusive value="0"/>

<xs:maxInclusive value="120"/>

<xs:enumeration value="Audi"/>

<xs:enumeration value="Golf"/>

<xs:pattern value="[a-z]"/>

<xs:length value="8"/>

<xs:pattern value="male|female"/>

Tipos simples: Restricciones (2/2)

Page 15: 03_XML_Schema_y_DTD

Son elementos XML que contienen otros elementos o

atributos. Pueden ser:

- Elementos vacíos.

- Elementos que contiene solo otros elementos.

- Elementos que contienen solo texto.

- Elementos que contienen otros elementos y texto.

- Todos los anteriores pueden incluir atributos.

Tipos complejos

Page 16: 03_XML_Schema_y_DTD

<employee>

<firstname>John</firstname>

<lastname>Smith</lastname>

</employee>

<xs:element name="employee">

<xs:complexType>

<xs:sequence>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="employee" type="personinfo"/>

<xs:element name="student" type="personinfo"/>

<xs:element name="member" type="personinfo"/>

<xs:complexType name="personinfo">

<xs:sequence>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

</xs:sequence>

</xs:complexType>

¿Cómo definir un elemento complejo?

Page 17: 03_XML_Schema_y_DTD

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">

<xs:sequence>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

</xs:sequence>

</xs:complexType>

<xs:complexType name="fullpersoninfo">

<xs:complexContent>

<xs:extension base="personinfo">

<xs:sequence>

<xs:element name="address" type="xs:string"/>

<xs:element name="city" type="xs:string"/>

<xs:element name="country" type="xs:string"/>

</xs:sequence>

</xs:extension>

</xs:complexContent>

</xs:complexType>

Extender un tipo complejo

Page 18: 03_XML_Schema_y_DTD

<xs:element name="letter">

<xs:complexType mixed="true">

<xs:sequence>

<xs:element name="name" type="xs:string"/>

<xs:element name="orderid" type="xs:positiveInteger"/>

<xs:element name="shipdate" type="xs:date"/>

</xs:sequence>

</xs:complexType>

</xs:element>

<letter>

Dear Mr.<name>John Smith</name>.

Your order <orderid>1032</orderid>

will be shipped on <shipdate>2001-07-

13</shipdate>.

</letter>

Contenido mezclado: Texto y elementos

Page 19: 03_XML_Schema_y_DTD

DTD

Document Type Definition

Page 20: 03_XML_Schema_y_DTD

El propósito de un DTD (Document Type Definition) es

definir los bloques de construcción legales de un

documento XML.

Un DTD define la estructura del documento con una lista

de elementos y atributos legales.

Un DTD puede ser declarado dentro de un documento

XML document, o mediante una referencia externa.

DTD

Page 21: 03_XML_Schema_y_DTD

Si el DTD es declarado dentro del archivo XML, sólo basta

con encerrarlo en una definición DOCTYPE con la

siguiente sintaxis:

<!DOCTYPE root-element [element-declarations]>

Declaración interna

Page 22: 03_XML_Schema_y_DTD

Si el DTD es declarado en un archivo externo, sólo basta

con tener una definición DOCTYPE con la siguiente

sintaxis:

<!DOCTYPE root-element SYSTEM "filename">

Declaración externa

Page 23: 03_XML_Schema_y_DTD

Con una DTD, cada uno de sus archivos XML pueden tener

una descripción de su propio formato.

Con una DTD, grupos independientes de personas pueden

aceptar el uso de un DTD estándar para intercambiar datos.

Su aplicación puede usar una DTD estándar para verificar

que los datos que se han recibido desde el exterior son

válidos.

También puede usar una DTD para verificar sus propiosdatos.

¿Por qué usar una DTD?

Page 24: 03_XML_Schema_y_DTD

Desde el punto de vista de las DTD, todos los documentos

XML (y también los documentos HTML) son hechos bajo

los siguientes bloques de construcción:

- Elementos

- Attributos

- Entidades.

- PCDATA.

- CDATA.

Bloques de construcción de documentos XML

Page 25: 03_XML_Schema_y_DTD

En una DTD, los elementos XML se incluyen en una

declaración similar a la del DOCTYPE, pero usando el tipo

ELEMENT, con la siguiente sintaxis:

<!ELEMENT nombre-del-elemento categoria>

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

Declarando elementos

Page 26: 03_XML_Schema_y_DTD

Los elementos vacíos son declarados con la palabra clave

o categoría EMPTY:

<!ELEMENT nombre-del-elemento EMPTY>

Ejemplo:

<!ELEMENT mensaje EMPTY>

Elementos vacíos

Page 27: 03_XML_Schema_y_DTD

Los elementos que sólo pueden interpretar PCDATA son

declarados con #PCDATA entre paréntesis:

<!ELEMENT nombre-del-elemento (#PCDATA)>

Ejemplo:

<!ELEMENT para (#PCDATA)>

Elementos con PCDATA

Page 28: 03_XML_Schema_y_DTD

Los elementos son declarados con la categoría ANY, que

puede contener cualquier combinación de datos a

interpretar:

<!ELEMENT nombre-del-elemento ANY>

Ejemplo:

<!ELEMENT contenido ANY>

Elementos con cualquier contenido

Page 29: 03_XML_Schema_y_DTD

Los elementos con uno o más hijos son declarados con los

nombres de sus elementos hijos entre paréntesis:

<!ELEMENT nombre-del-elemento (hijo1)>

<!ELEMENT nombre-del-elemento (hijo1,hijo2…)>

Ejemplo:

<!ELEMENT mensaje (para,de,encabezado,cuerpo)>

Elementos con hijos (secuencias) (1/2)

Page 30: 03_XML_Schema_y_DTD

Cuando los hijos son declarados en una secuencia separada

por comas, los hijos deben aparecer en la misma secuencia

dentro del documento. En una declaración completa, los

hijos también deben ser declarados, y los hijos pueden

también tener otros hijos. La declaración completa sería

como en este ejemplo:

<!ELEMENT mensaje (para,de,encabezado,cuerpo)>

<!ELEMENT para (#PCDATA)>

<!ELEMENT de (#PCDATA)>

<!ELEMENT encabezado (#PCDATA)>

<!ELEMENT cuerpo (#PCDATA)>

Elementos con hijos (secuencias) (2/2)

Page 31: 03_XML_Schema_y_DTD

Se declara que el elemento hijo puede ocurrir una y sólo

una vez dentro del elemento padre:

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

Para el ejemplo:

<!ELEMENT mensaje (contenido)>

Declarando una sola ocurrencia del elemento

Page 32: 03_XML_Schema_y_DTD

Al lado del hijo aparece un signo +, que indica que el

elemento hijo ocurre una o más veces dentro del elemento

padre:

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

Para el ejemplo:

<!ELEMENT mensaje (contenido+)>

Declarando mínimo una ocurrencia del elemento

Page 33: 03_XML_Schema_y_DTD

Al lado del hijo aparece un signo *, que indica que el

elemento hijo aparece cero o más veces dentro del

elemento padre:

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

Para el ejemplo:

<!ELEMENT mensaje (contenido*)>

Cero o más ocurrencias de un elemento

Page 34: 03_XML_Schema_y_DTD

Al lado del hijo aparece un signo ?, que indica que el

elemento hijo sólo puede no aparecer o aparecer una vez

dentro del elemento padre:

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

Para el ejemplo:

<!ELEMENT mensaje (contenido?)>

Cero o una ocurrencia de un elemento

Page 35: 03_XML_Schema_y_DTD

Este caso se ve cuando un elemento es declarado con

varios hijos y se puede optar por uno u otro en uno de los

bloques. Para ello, se utiliza el carácter | en medio de

aquellos elementos optativos:

<!ELEMENT mensaje (para,de,(cuerpo|contenido))>

Aparece el uno o el otro

Page 36: 03_XML_Schema_y_DTD

Aquí se presenta una mezcla de las declaraciones que

anteriormente mencionamos. En este ejemplo, el elemento

mensaje puede contener cero o más ocurrencias de

caracteres de datos a interpretar o de los elementos para,

de, encabezado o cuerpo:

<!ELEMENT mensaje

(#PCDATA|para|de|encabezado|cuerpo)*>

Contenido mezclado

Page 37: 03_XML_Schema_y_DTD

En una DTD, una declaración de atributo tiene la siguiente

sintaxis:

<!ATTLIST nombre-elemento xxx yyy zzz>

Donde:

- xxx: Nombre del atributo.

- yyy: Tipo de dato del atributo.

- zzz: Valor por defecto.

Declarando atributos

Page 38: 03_XML_Schema_y_DTD

Ejemplo:

Para el DTD

<!ATTLIST pago tipo CDATA "efectivo">

Para el documento XML:

<pago tipo="efectivo" />

Declarando atributos

Page 39: 03_XML_Schema_y_DTD

Tipos de atributos

Page 40: 03_XML_Schema_y_DTD

Tipos de valores por defecto

Page 41: 03_XML_Schema_y_DTD

<!ATTLIST nombre-elemento nombre tipo defecto

#REQUIRED>

En la DTD:

<!ATTLIST persona numero CDATA #REQUIRED>

XML válido:

<persona numero="5677" />

XML no válido:<persona />

Valores requeridos

Page 42: 03_XML_Schema_y_DTD

<!ATTLIST nombre-elemento nombre tipo #IMPLIED>

Atributo que no está forzado a tener un valor por defecto.

En la DTD:

<!ATTLIST contacto fax CDATA #IMPLIED>

XML válido:

<contacto fax="567-8901234" />

XML válido:<contacto />

Valores implicados

Page 43: 03_XML_Schema_y_DTD

<!ATTLIST nombre-elemento nombre tipo #FIXED>

Atributo que siempre deberá tener un valor fijo.

En la DTD:<!ATTLIST estudiante institucion CDATA #FIXED

"Politecnico">

XML válido:

<estudiante institucion="Politecnico" />

XML no válido:<estudiante institucion="U de A" />

Valores fijos

Page 44: 03_XML_Schema_y_DTD

<!ATTLIST elemento atributo (en1|en2|..) defecto>

Atributo que siempre se mueve en un conjunto de valores.

En la DTD:

<!ATTLIST pago tipo (efectivo|cheque) "cheque">

XML válido:

<pago tipo="efectivo" />

O también:<pago tipo="cheque" />

Valores enumerados

Page 45: 03_XML_Schema_y_DTD

http://www.w3schools.com/xml

http://www.w3schools.com/schema/default.asp

http://validator.w3.org/check

http://www.w3schools.com/schema/schema_elements_ref.asp

http://www.xfront.com/BestPracticesHomepage.html

http://www.w3schools.com/schema/schema_facets.asp

Referencias

Page 46: 03_XML_Schema_y_DTD

Software and Tools for Microsoft PowerPoint.

The website with innovative solutions.

Save time and money by automating your presentations.

www.presentationpoint.com

Desarrollo de Aplicaciones Web I Pág. 46