Title: Ramiro Lago
1Introducción a XML
2Introducción a XML (I)
- HTML ha permitido integración desde un punto de
vista sintáctico. Es un lenguaje de marcas,
universalmente aceptado, de tal forma que el
navegador lo interpreta y sabe cómo debe
presentar el contenido. - En el siguiente ejemplo se puede observar que
las etiquetas se orientan a expresar una
estructura de visualización
- HTML no se centra en la comprensión del
contenido, no se especifica el significado
(semántica) de los datos. Fue creado para que una
aplicación pudiera traducir marcas a una
estructura de presentación, no para crear
estructuras de datos. - Esta carencia de HTML es cubierta por XML.
3Introducción a XML (II)
- XML Extensible Mark-up Language (lenguaje de
marcado extensible) - Es un lenguaje orientado a
- La definición de datos de carácter general. Nos
permite definir modelos de datos. - Al compartir modelos de datos se facilita el
intercambio de datos entre sistemas
(aplicaciones) heterogéneos. - Crear nuevos lenguajes gracias a sus mecanismos
de extensibilidad. Por ello, se dice que XML es
un metalenguaje (un lenguaje para crear nuevos
lenguajes). - Se refiere únicamente a los datos, no a su
presentación. Deja a otras aplicaciones la tarea
de definir la estructura de visualización.
Históricamente deriva de SGML (Standard
Generalized Mark-up Language), definido por IBM
en 1986. Creado y soportado por el World Wide
Web Consortium (www.w3c.org) Traducciones
http//www.w3.org/2003/03/Translations/OverviewLan
g.htmles
4Definition Type Document (DTD) y XML Schema
- Es preciso especificar los elementos válidos que
pueden ser incluidos en un documento XML. Las dos
formas más comunes de especificar definiciones
son - DTD
- XML Schema
- Son documentos basados en XML que
- Describen la estructura del documento XML.
- Declara y define todos los tipos de de elementos
del documento. - Define el orden de los tipos de elementos.
- Especifica el tipo de atributos y los valores por
defecto. - Importancia a la hora de transferir datos entre
sistemas. El DTD/XML Schema especifica a los
sistemas la estructura de datos que es
transferida mediante XML.
En este ejemplo, gracias a DTD, se especifica que
una libreta de direcciones se compone de personas
(registros), definiendo los campos válidos de
cada registro
5Reglas básicas del lenguaje (I)
- Todo contenido estará etiquetado. Toda etiqueta
debe estar delimitada por los sÃmbolos de menor y
mayor. Ejemplo ltlibrogt - Las etiquetas se cierran en el mismo orden en el
que se abrieron. La etiqueta de cierre tiene el
mismo nombre que la de apertura y se inicia por
la barra /. - Ejemplo ltlibrogt ... lt/librogt
- Por comodidad se permiten etiquetas que sirvan
tanto para la apertura como para el cierre. Estas
etiquetas deben acabar con el sÃmbolo de barra
/. - Los nombres de etiquetas son sensibles a
mayúsculas y minúsculas (a diferencia de HTML) - La estructura de una etiqueta sigue la terna
objeto-atributo-valor. - Notación larga
- ltetiquetagt
- ltatributo1gt valor lt/atributo1gt
- ...
- lt/etiquetagt
- Notación corta (las dobles comillas son
obligatorias, a diferencia de HTML) - ltetiqueta atributo1valor ... gt lt/etiquetagt
- Ejemplo
- ltlibrogt
- ltautorgtMiguel De Cervanteslt/autorgt
- lttitulogtEl Quijotelt/titulogt
- ltpreciogt18lt/preciogt
- lt/librogt
6Reglas básicas del lenguaje (II)
- La estructura del documento es jerárquica, en
forma de árbol, en la que siempre hay un primer
elemento raÃz. - Todo documento XML debe comenzar por una
declaración XML con la siguiente estructura - lt?xml
- versionVersión de XML
- encodingCodificación
- standaloneIncluye_DTD
- ?gt
- Donde cada atributo significa
- Versión de XML número de versión que se utiliza.
- Codificación formato de codificación, por
ejemplo, UTF-8, UTF-16, ISO-10646-UCS-2,
ISO-10646-UCS-4, ISO-8859-1, ISO-8859-2, (hasta
ISO-8859-9), etc. Las dos primeras son las más
usadas. - Incluye_DTD puede tomar el valor yes (la
especificación DTD se encuentra en el propio
documento) o no (la especificación es un
archivo externo). - Ejemplo
- lt?xml version1.0 encodingUTF-8
standaloneyes ?gt
7Reglas básicas del lenguaje (III)
- Ejemplo
- lt?xml version"1.0" encoding"UTF-8"
standalone"no" ?gt - lt!DOCTYPE libreria2 SYSTEM "libreria2.dtd"gt
- ltlibreria2gt
- ltlibrogt
- ltautorgtMiguel De Cervanteslt/autorgt
- lttitulogtEl Quijotelt/titulogt
- ltpreciogt18lt/preciogt
- lt/librogt
- ltlibrogt
- ltautorgtAntonio Lopezlt/autorgt
- lttitulogtCosas absurdaslt/titulogt
- ltpreciogt25lt/preciogt
- lt/librogt
- lt/libreria2gt
- Para codificar caracteres en base diez
- Code
- Ejemplo esta es la 1170 vez
8DTD introducción
- Nos permite definir los tipos de elementos
válidos de un documento XML. Semejante a una
sentencia CREATE DATABASE en SQL. - Nos sirve para validar el documento XML. Hay que
examinar la adecuación de un documento XML en dos
niveles - Cuando el documento cumple con la DTD se dice que
es válido. - Cuando cumple con las reglas XML diremos que está
bien formado. - Tipos de DTD
- Internas situadas dentro del documento XML
- Externas archivo independiente
- Las DTD no siguen la sintaxis de XML
9DTD DOCTYPE
- Tanto las DTD internas como las externas deben
empezar por una declaración DOCTYPE - lt!DOCTYPE root SYSTEM externalDTD
internalDTDgt - Root elemento raÃz del documento XML.
- externalDTD la DTD es externa. Debe señalar el
archivo entre comillas dobles y tener la
extensión .dtd - Ejemplo
- lt!DOCTYPE libreria SYSTEM librerÃa.dtdgt
- internalDTD por defecto, interna.
- Ejemplo
- lt!DOCTYPE libreria
- lt!ELEMENT libro (PCDATA)gt
- gt
- El elemento raÃz señalado en DOCTYPE debe
coincidir con el nodo raÃz del documento. - La DTD debe contener todos los elementos,
atributos y entidades que se utilizarán en el
documento XML
10DTD ejemplo
- A continuación puede ver el ejemplo completo
libreria2.dtd
libreria2.xml
11DTD elementos
- Un ELEMENT es un componente, un item, que define
un dato. No confundirlo con atributos, entidades
o relaciones del diseño de una base de datos, ya
que puede ser cualquiera de las tres cosas. Un
elemento es como una etiqueta de un documento
HTML. - Sintaxis
- lt!ELEMENT nombre tipogt
- Tipo, puede ser
- EMPTY no incluye ningún otro elemento ni texto,
pero si permiten la inclusión de atributos. - Elementos los elementos contenidos. SÃmbolos
- Asterisco () el elemento puede aparecer
cualquier número de veces. - Coma (,) separador de elementos, que además
especifica el orden de aparición de los
elementos. - Interrogante (?) El elemento aparece una o
ninguna vez. - Más () el elemento debe aparecer al menos una
vez. - Paréntesis contienen la secuencia de elementos.
- Sin signo el elemento aparece sólo una vez.
- TuberÃa () separa elementos alternativos
- Mixtos permiten combinación de elementos y
texto, se especifican lt!ELEMENT nombre
(PCDATA)gt - ANY cualquiera de los anteriores lt!ELEMENT
nombre ANYgt
12DTD ejemplo de la librerÃa (I)
- Supongamos que queremos definir la estructura de
una biblioteca donde los libros pueden tener
varios autores y donde algunos libros tienen una
rebaja del precio. - DTD
- lt!ELEMENT libreria3 ( libro ) gt
- lt!ELEMENT libro ( autor, titulo, precio,rebaja?
) gt - lt!ELEMENT autor ( PCDATA ) gt
- lt!ELEMENT titulo ( PCDATA ) gt
- lt!ELEMENT precio ( PCDATA ) gt
- lt!ELEMENT rebaja ( PCDATA ) gt
- Esta definición permite el siguiente documento
XML - ltlibrogt
- ltautorgtMiguel De Cervanteslt/autorgt
- lttitulogtEl Quijotelt/titulogt
- ltpreciogt18lt/preciogt
- lt/librogt
- ltlibrogt
- ltautorgtAntonio Lopezlt/autorgt
- ltautorgtAna Perezlt/autorgt
- lttitulogtCómo crecerlt/titulogt
- ltpreciogt25lt/preciogt
13DTD atributos
- Explicaremos algunas caracterÃsticas de los
atributos de forma muy resumida. La sintaxis de
los atributos es - lt!ATTLIST nombre_elemento
- nombre_atributo_1 tipo valor
- nombre_atributo_n tipo valorgt
- El tipo puede ser CDATA (cadena), ENUMERATION
(lista de valores, ID (identificador único), etc - El valor puede ser REQUIERED (obligatorio),
IMPLIED (opcional), etc. - Ejemplo de DTD
- lt!ELEMENT ordenador (PCDATA) gt
- lt!ATTLIST ordenador
- cpu CDATA REQUIERED
- mhz CDATA IMPLIED
- gt
- Ejemplo de XML
- ltordenador cpuPentiumIII/gt
- ltordenador cpuPentiumIII mhz300/gt
14DTD ejemplo de la librerÃa (II)
- Vamos a ampliar el ejemplo de la librerÃa. Un
libro puede tener un resumen, este elemento tiene
como atributos el autor del resumen y el archivo
donde se guarda
lt?xml version"1.0" encoding"UTF-8" ?gt lt!ELEMENT
libreria3 ( libro ) gt lt!ELEMENT libro (autor,
titulo, precio,rebaja?,resumen?)gt lt!ELEMENT autor
( PCDATA ) gt lt!ELEMENT titulo ( PCDATA )
gt lt!ELEMENT precio ( PCDATA ) gt lt!ELEMENT rebaja
( PCDATA ) gt lt!ELEMENT resumen (PCDATA )
gt lt!ATTLIST resumen autor CDATA
IMPLIED fichero CDATA REQUIRED gt
lt?xml version"1.0" encoding"UTF-8"
standalone"no" ?gt lt!DOCTYPE libreria3 SYSTEM
"libreria3.dtd"gt ltlibreria3gt ltlibrogt ltautorgtMigu
el De Cervanteslt/autorgt lttitulogtEl
Quijotelt/titulogt ltpreciogt18lt/preciogt lt/librogt ltli
brogt ltautorgtAntonio Lopezlt/autorgt ltautorgtAna
Perezlt/autorgt lttitulogtCómo crecerlt/titulogt ltprec
iogt25lt/preciogt ltrebajagt10lt/rebajagt ltresumen
fichero"ert34.doc" /gt lt/librogt lt/libreria3gt
15Esquema XML (XML Schema) introducción (I)
- CrÃticas a DTD
- El propio lenguaje de DTD no está basado en XML.
- No hay una buena definición de tipos, poco más
que cadenas y enumeraciones de elementos. - No soporta espacios de nombres (NAMESPACES), que
discriminan los distintos elementos por un
prefijo. - El esquema XML es el relevo de DTD, destinado a
superar sus carencias y a crear lenguajes usando
la sintaxis XML. - XML Schema ha sido creado por Microsoft a partir
de estándares de W3C - XML-Data
- DCD (Document Content Description). DCD es una
especificación basada en RDF (Resource
Description Framework), que se utiliza en la
definición de estructuras de documentos con la
finalidad de intercambiar información entre
diversas aplicaciones.
16Esquema XML (XML Schema) introducción (II)
- Soportado por W3C (http//www.w3.org/XML/Schema)
17EsquemaElementos básicos del lenguaje Schema
- Schema
- Elemento raÃz de todo esquema (recuerde que los
esquemas están basados en XML, que requiere un
nodo raÃz. Atributos - name nombre del esquema que estamos creando
- xmlns espacios de nombres utilizados en el
documento. Los espacios de nombres tienen una
finalidad organizativa determina los tipos de
datos creados por diferentes empresas. En nuestro
ejemplo recurrimos al espacio de nombres definido
por Microsoft - ltSchema name mi_esquema.xml
- xmlns"urnschemas-microsoft-comxml-data
- xmlnsdt"urnschemas-microsoft-comdatatypes"gt
- ...
- lt/Schemagt
18EsquemaElementos básicos del lenguaje datatype
- datatype
- Con este elemento señalamos los tipos que luego
utilizaremos en el documento XML
- boolean
- char
- date
- dateTime
- dateTime.tz con configuración regional
- entities tipo ENTITIES
- entity tipo ENTITY
- enumeration
- float
- int
- Id tipo de dato ID
- r4 real de 4 bytes
- r8 real de 8 bytes
- String
- time
- time.tz
- uri Universal Resource Identifier
- uuid número global que sirve de identificador
único - Ejemplo
- ltdatatype dttype int /gt
- ltdatatype dttype string /gt
19EsquemaElementos básicos del lenguaje
ElementType
- ElementType
- Con este elemento definimos los tipos de
elementos que define el esquema. Atributos - name
- model el modelo de contenido. Por defecto es
open (permite albergar dentro del elemento
otros elementos adicionales, que no es necesario
definir en el esquema close (semejante a DTD
no permite incluir elementos que no hayan sido
declarados). - content tipo de contenido empty (vacio),
textOnly, eltOnly (el elemento es un contenedor
de otros elementos) y mixed (puede ser tanto
texto como contenedor). - order especifica la aridad de los elementos
agrupados dentro del actual elemento one (sólo
una serie de elementos), seq (los elementos
aparecen en el mismo orden que se declaran) y
many (cualquier número de veces y en cualquier
orden).
20EsquemaElementos básicos del lenguaje element
- element
- Para declarar las instancias (ocurrencias) de
los tipos de elementos o grupos de elementos.
Atributos - type el tipo del elemento (habrá sido declarado
en el esquema). - minOccurs el número mÃnimo de veces que puede
aparecer el elemento. Un número mayor o igual a
0. - maxOccurs el número máximo de veces que puede
aparecer el elemento. Puede ser 1 o asterÃsco (,
cualquier número de veces).
21EsquemaUn ejemplo
- ltSchema name "libreria4_esq.xml"
- xmlns"urnschemas-microsoft-comxml-data"
- xmlnsdt"urnschemas-microsoft-comdatatypes"gt
- ltElementType name "autor" content"textOnly
- dttype"string"gt
- ltdescriptiongt
- lttitlegtAutorlt/titlegt
- ltbodygtAutor o editorlt/bodygt
- lt/descriptiongt
- lt/ElementTypegt
- ltElementType name "titulo" content"textOnly"
- dttype"string"gt
- ltdescriptiongt
- lttitlegtTÃtulolt/titlegt
- ltbodygtTÃtulolt/bodygt
- lt/descriptiongt
- lt/ElementTypegt
- ltElementType name "libro" content"eltOnly"
model"closed"gt - ltdescriptiongt
- lttitlegtLibrolt/titlegt
- ltbodygtLibro de la librerÃalt/bodygt
- lt/descriptiongt
- ltelement type"autor" minOccurs"1"
maxOccurs"" /gt - ltelement type"titulo" minOccurs"1"
maxOccurs"1" /gt - ltelement type"precio" minOccurs"1"
maxOccurs"1" /gt - lt/ElementTypegt
- ltElementType name "libreria4" content"eltOnly"
model"closed"gt - ltdescriptiongt
- lttitlegtLibrerÃalt/titlegt
- ltbodygtLa librerÃalt/bodygt
- lt/descriptiongt
- ltelement type"libro" minOccurs"0"
maxOccurs"" /gt - lt/ElementTypegt
- lt/Schemagt
22EsquemaElementos básicos del lenguaje
AttributeType
- AttributeType
- Del mismo modo que ElementType servÃa para
definir los tipos de elementos, con AttributeType
definimos los tipos de atributos del esquema.
Atributos - name
- dttype el tipo de dato.
- dtvalues conjunto de valores posibles. Podemos
usarlo cuando el atributo sea del tipo
enumeration o nmtokens. - default valor por defecto.
- requiered si el atributo es requerido dentro del
elemento será yes, no en caso contrario. - Ejemplo
- ltAttributeType namedÃa_semana
dttypeenumeration - dtvaluesLunes Martes Miércoles Jueves Viernes
Sabado Domingo - defaultLunes requieredyes
- ltdescriptiongt
- lttitlegtDÃa de la semanalt/titlegt
- ltbodygtNombre del dÃa dentro de la semanalt/bodygt
- lt/descriptiongt
- lt/AttributeTypegt
23EsquemaElementos básicos del lenguaje attribute
- attribute
- Del mismo modo que element servÃa para declarar
las ocurrencias de elementos, con attribute
declaramos los atributos. Atributos - type un tipo de atributo declarado en el
esquema. - default valor por defecto (para esta ocurrencia
del atributo). Este valor por defecto prevalece
sobre el que se haya especificado en
AttributeType. - requiered si el atributo es requerido dentro del
elemento será yes, no en caso contrario (para
esta ocurrencia del atributo). - Ejemplo (en el que se supone que se han
declarado los tipos de atributos dÃa_mes,
hora y dÃa_semana - ltElementType name reunión"
content"textOnly dttype"string"gt - ltattribute typedÃa_mes requieredyes /gt
- ltattribute typehora requieredno /gt
- ltattribute typedÃa_semana defaultMartes
requieredno /gt - ltdescriptiongt
- lttitlegtAutorlt/titlegt
- ltbodygtAutor o editorlt/bodygt
- lt/descriptiongt
- lt/ElementTypegt