Upload
erick-ocampo-martinez
View
70
Download
2
Embed Size (px)
Citation preview
INSTITUTO TECNOLÓGICO SUPERIOR DE JESÚS
CARRANZA
Materia:
Fundamentos de base de datos
Trabajo:
Investigación Unida 07
Docente:
____________________
PRESENTA(N): C. OMAR PEREZ LOZANO
De la especialidad de ING. EN SISTEMAS
COMPUTACIONALES
Jesús Carranza, Ver. Febrero - julio 2014
Tabla de contenido
Tema pagina
Unidad 7 XML ................................................................................................................................... 3
7.1 Antecedentes .......................................................................................................................... 3
7.2 Estructura de los datos XML ................................................................................................ 4
7.3.- Esquema de los documentos XML ................................................................................... 6
7.3.1 Definición de tipos de documento (DTD) .................................................................... 6
7.3.2 Esquemas de XML. ........................................................................................................ 6
7.4 Consulta y transformación .................................................................................................. 10
7.4.1 Xpath .............................................................................................................................. 10
7.4.2 Xquery un lenguaje de consulta para XML ............................................................. 10
7.4.3 XSLT ............................................................................................................................... 11
7.5 Almacenamiento de datos XML ......................................................................................... 11
Unidad 7 XML
7.1 Antecedentes
La mayoría de los documentos de la Web se almacenan y transmiten actualmente
mediante HTML. Ya hemos dicho que una de las fortalezas de HTML es su
simplicidad, lo que permite que pueda ser utilizado por una amplia variedad de
usuarios. Sin embargo, también podríamos decir que su simplicidad es una de sus
debilidades, ya que cada vez es mayor la necesidad de algunos usuarios de
disponer de etiquetas que simplifiquen determinadas areas y hagan los
documentos HTML más atractivos y dinámicos.
En un intento de satisfacer esta demanda, los fabricantes de software han
introducido algunas etiquetas HTML específicas del explorador. Sin embargo esto
hace que sea muy difícil de desarrollar documentos web sofisticados y que puedan
ser consultados por un número amplio de usuarios. Para prevenir esta
fragmentación, W3C ha diseñado un nuevo estándar denominado XML (lenguaje
de composición ampliable) que permite preservar la independencia general con
respecto a las aplicaciones que hace que HTML sea portable y potente. XML 1.0
(segunda edición) se convirtió en una recomendación del consorcio W3C en
octubre del 2000 (W3C, 2000b) mientras que XML 1.1, que incluye soporte para
Unicode 3, fue emitido como recomendación por el W3C en febrero del 2004
(W3C, 2004a).
XML es una versión restringida de SGML (Standart Generalized Markup Languaje)
diseñada especialmente para documentos web. Por ejemplo, XML soporta enlaces
que apuntan a múltiples documentos, por oposición a los vínculos HTML, que solo
pueden hacer referencia a un único documento de destino. SGML es un sistema
para definir tipos de documentos estructurados y lenguajes de composición con
los que representar instancias de dichos tipos de documentos (ISO, 1986). SGML
ha sido la forma estándar, e independiente de los fabricantes, de mantener
repositorios de documentación estructurada durante más de una década. XML
trata de proporcionar una función similar a la de SGML, pero es menos complejo y,
al mismo tiempo, esta preparado para funcionar en entornos de red.
Significativamente, XML retiene las ventajas principales de SGML: ampliabilidad,
estructura y validación. Puesto que XML es una forma restringida de XML,
cualquier sistema completamente compatible con SGML podrá leer documentos
XML, sin embargo, XML no pretende sustituir a SGML, como tampoco pretende
sustituir a HTML, que también esta basado en SGML, en lugar de ello, XML esta
diseñado para complementar HTML, permitiendo intercambiar diferentes tipos de
datos a travez de la web. De hecho, la utilización de XML no esta limitada al
etiquetado de texto, sino que las características de ampliabilidad implican que
XML también puede utilizarse para etiquetar sonidos o imágenes, tres lenguajes
populares creados con XML son MathML, SMIL y CML, entre muchos otros.
Aunque el trabajo de definición de XML comenzó hace menos de una década,
siendo formalmente ratificado XML 1.0 por el W3C a finales de 1998, XML ya ha
tenido un impacto considerable sobre muchos aspectos de la tecnología de la
información, incluyendo las interfaces gráficas, los sistemas embebidos, los
sistemas distribuidos y la gestión de base de datos. Por ejemplo, puesto que XML
describe la estructura de los datos, podría ser un mecanismo muy útil para definir
la estructura de una serie de bases de datos y orígenes de datos heterogéneos.
Con la capacidad de definir un esquema completo de base de datos, XML podría
potencialmente utilizarse para tomar los contenidos de un esquema de Oracle, por
ejemplo, y traducirlos a un esquema Informix o Sybase. XML ya se esta
convirtiendo en el estándar de facto para la comunicación de datos en el sector
informático y esta reemplazando rápidamente a los sistemas EDI (Electrinic Data
Interchange) como medio principal de intercambio de datos entre empresas.
7.2 Estructura de los datos XML
Estructura de un documento XML
La tecnología XML busca dar solución al problema de expresar información
estructurada de la manera más abstracta y reutilizable posible. Que la información
sea estructurada quiere decir que se compone de partes bien definidas, y que
esas partes se componen a su vez de otras partes. Entonces se tiene un árbol de
pedazos de información. Ejemplos son un tema musical, que se compone de
compases, que están formados a su vez con notas. Estas partes se llaman
elementos, y se las señala mediante etiquetas.
Una etiqueta consiste en una marca hecha en el documento, que señala una
porción de este como un elemento, un pedazo de información con un sentido claro
y definido. Las etiquetas tienen la forma < teléfono>, donde nombre es el nombre
del elemento que se está señalando.
A continuación se muestra un ejemplo para entender la estructura de un
documento XML:
< ?xml version="1.0? encoding="ISO88591? ?>
< !DOCTYPE Edit_Mensaje SYSTEM "Lista_datos_mensaje.dtd"
[< !ELEMENT Edit_Mensaje (Mensaje)*>]>
< Edit_Mensaje>
< Mensaje>
< Remitente>
< Nombre>Nombre del remitente< ⁄ Nombre>
< Mail> Correo del remitente < ⁄ Mail>
< ⁄ Remitente>
< Destinatario>
< Nombre>Nombre del destinatario< ⁄ Nombre>
< Mail> Correo del destinatario< ⁄ Mail>
< ⁄ Destinatario>
< Texto>
< Parrafo>
Aquí está el ejemplo de código del DTD del documento "Edit_Mensaje":
< ?xml version="1.0? encoding="ISO-8859-1? ?>
< !ELEMENT Mensaje (Remitente, Destinatario, Asunto, Texto)*>
< !ELEMENT Remitente (Nombre, Mail)>
< !ELEMENT Nombre (#PCDATA)>
< !ELEMENT Mail (#PCDATA)>
< !ELEMENT Destinatario (Nombre, Mail)>
< !ELEMENT Nombre (#PCDATA)>
< !ELEMENT Mail (#PCDATA)>
< !ELEMENT Asunto (#PCDATA)>
< !ELEMENT Texto (Parrafo)>
< !ELEMENT Parrafo (#PCDATA)>
7.3.- Esquema de los documentos XML
7.3.1 Definición de tipos de documento (DTD)
La definición de tipo de documento (DTD) define la sintaxis valida de un
documento XML enumerando los nombres de elementos que pueden aparecer en
el documento, indicando que elementos pueden aparecer en combinación con
otros, como pueden anidarse los elementos, que atributos hay disponibles para
cada tipo de elemento, etc. en ocaciones se utiliza el termino vocabulario para
referirse a los elementos usados en una aplicación concreta.
Hay cuatro tipos de declaraciones DTD:
Declaraciones de tipo elemento, declaraciones de lista de atributos, declaraciones
de entidad y declaraciones de notación, como se verá a continuación.
7.3.2 Esquemas de XML.
Declaraciones de tipo elemento
Identifican las reglas para los elementos que pueden aparecer en el documento
XML. Por ejemplo hemos especificado la siguiente regla (o modelo de contenido)
para el desarrollo STAFFLIST:
!ELEMENT STAFFLIST (STAFF)
Que indica que el elemento STAFFLIST esta compuesto de cero o mas elementos
STAFF. Las opciones de representación son:
El asterisco (*) indica cero o mas apariciones de un elemento
El signo mas (+) indica una o mas apariciones de un elemento
El símbolo de interrogación (?) indica cero apariciones o exactamente una
aparición de un elemento
Un nombre que no tenga ningún signo de puntuación cualificador puede aparecer
exactamente una vez. Las comas entre los nombres de elementos indican que los
elementos deben de aparecer en sucesión; si se omiten las comas, los elementos
pueden aparecer en cualquier orden. Por ejemplo, hemos especificado la regla
siguiente para el elemento STAFF.
!ELEMENT STAFF (NAME, POSITION, DOB?, SALARY)>
Que indica que el element STAFF esta compuesto de un element NAME, un
element POSITION, un elemento opcional DOB y un elemento SALARY, en este
orden. Las declaraciones de FNAME, LNAME, POSITION, DOB y SALARY, asi
como de los otros elementos utilizados en un modelo de contenido, deben estar
también presentes para que el procesador XML compruebe la validez del
documento. Estos elementos base han sido declarados utilizando el símbolo
especial #PCDATA para indicar que son datos de caracteres analizables
!ELEMENT STAFFLIST (STAFF)>
!ELEMENT STAFF (NAME, POSITION, DOB?, SALARY)>
!ELEMENT NAME (FNAME, LNAME)>
!ELEMENT FNAME (#PCDATA)>
!ELEMENT LNAME (#PCDATA)>
!ELEMENT POSITION (#PCDATA)>
!ELEMENT DOB (#PCDATA)>
!ELEMENT SALARY (#PCDATA)>
!ATTLIST STAFF branchNo CDATA #IMPLIED>
Sintácticamente. Observe que un elemento puede contener únicamente otros
elementos, pero que también es posible que un elemento contenga otros
elementos.
Declaraciones de lista de atributos
Identifican que elementos pueden tener atributos, que atributos pueden tener, que
valores pueden contener los atributos y cuales son los valores predeterminados
opcionales. Cada declaración de atributo tiene tres partes: un nombre, un tipo y un
valor opcional predeterminado. Hay seis tipos de atributos posibles:
CDATA: datos de caracteres, que contiene cualquier tipo de texto. La
cadena de caracteres no será analizada sintácticamente por el procesador
XML, sino que se pasa directamente a la aplicación.
ID: se utiliza para identificar elementos individuales en un documento. Los
identificadores ID deben corresponderse con un nombre de elemento y
todos los valores ID utilizados en un documento deben ser distintos.
IDREF o IDREFS: deben corresponderse con el valor de un único atributo
ID para algún elemento del documento.
ENTITY o ENTITIES: deben corresponderse con el nombre de una única
entidad. De nuevo, un atributo ENTITIES pueden contener multiples valores
ENTITY separados por espacios en blanco.
NMTOKEN o NMTOKENS: una forma restringida de cadena de caracteres,
generalmente compuesta de una única palabra. Un atributo NMTOKENS
puede contener múltiples valores NMTOKEN separados por espacios en
blanco.
Lista de nombres: los valores que el atributo puede contener.
Por ejemplo, la siguiente declaración de atributo se usaría para definir un atributo
denominado branchNo para el elemento STAFF:
!ATTLIST STAFF branchNo CDATA #IMPLIED>
Esta declaración indica que el valor branchNo es una cadena de caracteres
(CDATA, datos de caracteres) y que es opcional (#IMPLIED), no
proporcionándose ningún valor predeterminado. Además de #IMPLIED, puede
especificarse #REQUIRED para indicar que el atributo debe ser proporcionado
siempre. Sino se especifica ninguno de estos cualificadores el atributo contiene el
valor predeterminado declarado, puede usarse la palabra clave #FIXED para
indicar que el atributo debe siempre tener el valor predeterminado. Como ejemplo
adicional, podríamos definir un elemento SEX que tuviera un atributo gender que
contenga el valor M o F de la forma siguiente:
!ATTLIST SEX gender (M | F) "M">
Declaraciones de entidad y de notación
Las declaraciones de entidad asocian un nombre con algún fragmento de
contenido, como por ejemplo un fragmento de texto normal, un fragmento de la
DTD o una referencia a un archivo externo que contenga texto o datos binarios.
Las declaraciones de notación identifican datos binarios externos, que el
procesador XML pasa simplemente a la aplicación. Por ejemplo podemos declarar
una entidad para el texto DreamHome Estate Agents de la forma siguiente:
!ENTITY DH #DreamHome Estate Agents>
El procesamiento de las entidades externas no analizadas sintácticamente es
responsabilidad de la aplicación. Debe declararse algún tipo de información acerca
del formato interno de la identidad después del identificador que indica la
ubicación de la entidad; por ejemplo:
!ENTITY dreamHomeLogo SYSTEM dreamhome.jpg NDATA JPEGFormat>
!NOTATION JPEGFormat SYSTEM
La presencia del símbolo NDATA indica que la entidad no está analizada
sintácticamente; el nombre arbitrario que sigue a este símbolo es simplemente una
clave para la subsiguiente declaración de la notación. La declaración de notación
asigna a este nombre un identificador que la aplicación emplea para saber cómo
gestionar dicha entidad.
7.4 Consulta y transformación
7.4.1 Xpath
Xpath es un lenguaje de consulta declarativo para XML que proporciona una
sintaxis sencilla para consultar partes de un documento XML (W3C, 1999c,
2003b). Fue diseñado para usarlo con XSLT y Xpointer. Con Xpath, pueden
extraerse colecciones de elementos especificando una ruta de tipo directorio, e
imponiendo cero o más condiciones a dicha ruta. Xpath utiliza una sintaxis
compacta, basada en cadena de caracteres, en lugar de una sintaxis estructural
XML basada en elementos, lo que permite que las expresiones Xpath puedan
usarse tanto en atributos XML como en direcciones URL.
Xpath trata un documento XML como un árbol lógico (ordenado), con nodos para
cada elemento, atributo, texto, instrucción de procesamiento, comentario, espacio
de nombres y raíz. La base del mecanismo de direccionamiento es el nodo de
contexto (un punto de inicio) y la ruta de ubicación, que describe una ruta desde
un punto de un documento XML.
7.4.2 Xquery un lenguaje de consulta para XML
El grupo W3C ha propuesto un lenguaje de consulta para XML denominado
XQuery (W3C, 2003h). XQuery se deriva de un lenguaje de consulta para XML
denominado Quilt, que a su vez tomó prestadas diversas características de varios
otros lenguajes, como Xpath, XML-QL, SQL, OQL, Lorel, XQL y YATL. XQuery es
un lenguaje funcional en el que una consulta se representa como una expresión.
El valor de una expresión es siempre una secuencia, que es una colección
ordenada de uno o más valores atómicos o nodos; un valor atómico es un único
valor que corresponde a los tipos simples definidos en XML Schema. Un nodo
puede ser un documento, un elemento, un atributo, un texto, un espacio de
nombres, una instrucción de procesamiento o un comentario. XQuery soporta
diversos tipos de expresiones que pueden estar anidadas.
7.4.3 XSLT
XSLT forma un subconjunto de XSL (W3C, 2003a). Se trata de un lenguaje tanto
en el sentido de la composición como en el de la programación, ya que
proporciona un mecanismo para transformar una estructura XML en otra
estructura XML, en HTML o en diversos otros formatos basados en texto (como
por ejemplo SQL), aunque puede utilizarse para definir la visualización de una
página web, la principal capacidad de XSLT es cambiar las estructuras
subyacentes, en lugar de cambiar simplemente las representaciones de esas
estructuras, como sucede con CSS. XSLT es importante porque proporciona un
mecanismo para cambiar dinámicamente la vista de un documento y para filtrar los
datos. También es lo suficientemente robusto como para decodificar reglas de
negocio y puede generar gráficos (y no solo documentos a partir de los datos).
Puede incluso gestionar la comunicación con servidores (especialmente en
conjunción con los módulos de script que pueden integrarse en XSLT) y pueden
generar los mensajes apropiados dentro del propio cuerpo de XSLT.
7.5 Almacenamiento de datos XML
A medida que aumente la cantidad de datos en formato XML, habrá una demanda
creciente para almacenar, extraer y consultar estos datos. La previsión es que
existan dos modelos de datos principales: centrado en los datos y centrado en los
documentos. En un modelo centrado en los datos, XML se utiliza como formato de
almacenamiento e intercambio para datos que están estructurados, que aparecen
en orden regular y que lo más probable es que vayan a ser procesados por una
máquina, en lugar de leídos por una persona. En un modelo centrado en los datos,
el hecho de que los datos se almacenen y transfieran mediante XML no es
importante, pudiendo haberse utilizado otros formatos. En este caso, los datos
podrían utilizarse en un SGBD relacional, objeto-relacional u orientado a objetos.
A continuación veremos unas técnicas comunes para almacenar documentos
XML.
Almacenamiento del XML en un atributo
Con esta técnica, en el pasado el código XML habría sido almacenado en un
atributo cuyo tipo de datos fuera CLOB (objeto de caracteres de gran tamaño).
Más recientemente, algunos sistemas han implementado un nuevo tipo de datos
XML nativo. En Oracle, este tipo de datos se denomina XMLType.
Los documentos XML en bruto se almacenan en forma serializada, lo que hace
que sea eficiente insertarlos en la base de datos y extraerlos en su forma original.
Esta técnica también hace que sea relativamente sencillo aplicar técnicas de
indexación de texto completo a los documentos para extracciones contextuales y
basadas en la relevancia. Sin embargo, hay algunos problemas relativos a la
velocidad de las consultas generales y de los mecanismos de indexación, que
pueden requerir un análisis sintáctico sobre la marcha. Además, las
actualizaciones requieren usualmente que se sustituya el documento XML
completo por un nuevo documento, en lugar de sustituir simplemente aquella parte
del XML que ha cambiado.
Almacenamiento del XML en forma compartimentada
Con esta técnica, el documento XML se descompone en una serie de elementos
constituyentes y los datos se distribuyen entre diversos atributos de una o más
relaciones. El término que se utiliza para esta composición es compartimentación.
El almacenamiento de los documentos en forma compartimentada puede hacer
que resulte más fácil indexar los valores de ciertos elementos concretos, supuesto
que estos valores se coloquen en sus propios atributos. También es posible añadir
datos adicionales relativos a la naturaleza jerárquica del código XML, haciendo así
posible recomponer la estructura y ordenación originales en un momento posterior,
y permitir que se actualice el código XML. Con esta técnica, también es necesario
crear una estructura de base de datos apropiada.
7.6 Aplicaciones
XML, lenguaje extensible de etiquetas. Es un meta-lenguaje que nos permite
definir lenguajes de marcado para usos determinados.
XML se propone como lenguaje para intercambio de información estructurada
entre diferentes plataformas, se puede usar en bases de datos, editores de texto,
hojas de cálculo, y casi cualquier cosa que podamos pensar.
Los documentos XML están compuestos por entidades (etiquetas), una entidad
puede hacer referencia a otra.
Documentos bien formados: son los que cumplen las especificaciones del
lenguaje respecto a las reglas sintácticas para cualquier documento XML.
Documentos válidos: además de bien formados, siguen una estructura y
una semántica determinada por un DTD.
Ejemplo:
< ?xml versión = "1.0" encoding = "UTF-8" standalone = "no"?>
< !DOCTYPE cliente SYSTEM "Cliente.dtd">
< cliente>
< clave> 0150 < ⁄ clave>
< nombre> José Pérez < ⁄ nombre>
< teléfono> 1212016 < ⁄ teléfono>
< ⁄ cliente>
< nombre>
< pila> José < ⁄ pila>
< nombre> José Pérez < ⁄ nombre> < paterno> Pérez
< ⁄ paterno>
< materno> León < ⁄ materno>
< ⁄ nombre>
Documentos bien formados
Estructura jerárquica de elementos
Ej. Incorrecto: < li> HTML < b> permite < i> esto < ⁄ b> < ⁄ i>
Ej. Correcto: < li> En XML la < b> estructura < i> es < ⁄ i> jerárquica
< ⁄ b>.< ⁄ li>
Ejercicio: ejemplo incorrecto con cliente.
Etiquetas vacías
< identificador DNI = "3487">
Incorrecto: < li> Esto es HTML < br> casi todo permitido < ⁄ li>
Correcto: < li> En XML, es < br ⁄ > más restrictivo < ⁄ li>
< identificador DNI = "3487"⁄ >
Un solo elemento raíz
Incorrecto:
< Cliente>
-----
< ⁄ Cliente>
< Cuenta>
-----
< ⁄ Cuenta>
Correcto:
< Banco>
< Cliente>
-----
< ⁄ Cliente>
< Cuenta>
-----
< ⁄ Cuenta>
< ⁄ Banco>
Valores de atributos
Incorrecto: < alumno aprobado = si> José Pérez < ⁄ alumno>
Correcto: < alumno aprobado = "si"> José Pérez < ⁄ alumno>
Tipo de letra
XML es sensible a mayúsculas y minúsculas
Incorrecto. 340XM
Nombre de elementos
No se pueden crear nombres que empiecen con xml, xML, XML, u otra variante.
Pueden usarse letras, subr, guion, dígitos, pero iniciar con letra o subrayado.
Las marcas (etiquetas) van entre < y >
Comentarios
< !- - código Temporal - - >
Definición de tipos de documento (DTD)
XHTML
MathML
BancoML (BML)
ClienteML (CML)
Ejemplo:
< !DOCTYPE cliente [
< !ELEMENT cliente (clave, nombre, dirección, teléfono) >
< !ELEMENT clave (#PCDATA)>
< !ELEMENT nombre (#PCDATA)>
< !ELEMENT dirección (#PCDATA)>
< !ELEMENT teléfono (#PCDATA)>
----------
----------
< !ELEMENT nombre (pila, paterno, materno)>
< !ELEMENT pila (#PCDATA)>
----------
< !ELEMENT materno (#PCDATA)>
----------
----------
Modelo de contenido
< !ELEMENT aviso (párrafo)> solo se puede contener un < párrafo>
< !ELEMENT aviso (titulo, párrafo)> debe contener un < titulo> seguido de un <
párrafo>
< !ELEMENT aviso (párrafo | grafico)> puede contener un < párrafo > o un <
grafico>
Ejercicio: < !ELEMENT aviso (titulo, (párrafo | grafico))>
Aviso debe contener un titulo seguido de un párrafo o un gráfico.
Indicadores de frecuencia.
? 0 o 1 vez
* 0 o más veces
+ 1 o más veces
Ejemplo:
< !ELEMENT aviso (titulo?, (párrafo +. Grafico)*) >
Declaración de listas de atributos
< !ELEMENT mensaje (de, a, texto)>
< !ATTLIST mensaje prioridad (normal | urgente) normal >
< !ELEMENT texto (#PCDATA)>
< !ATTLIST texto idioma CDATA #REQUIRED>
Ejemplo XML
< mensaje prioridad = "urgente">
< de> José Pérez < ⁄ de>
< a> Laura Gómez < ⁄ a>
< texto idioma = español> (NOTA: ESTRUCTURAR)
Hola Laura como estás?
Te envió el acta de nacimiento.
----------
----------
< ⁄ texto>
< mensaje>
Ejercicio: Escribir el DTD completo para el ejemplo anterior.
< Cliente> < Cliente>
---------- ----------
< ⁄ Cliente> < cuenta>
< Cliente> ----------
---------- o < ⁄ cuenta>
< ⁄ Cliente> < cuenta>
< Cuenta> ----------
---------- < ⁄ cuenta>
< ⁄ Cuenta> < ⁄ Cliente> más clientes
Bibliografía
1. Silberschatz. Korth. Sudarshan. Fundamentos de bases de datos 4ta. Edición.
Mc Graw Hill.
2. Adoración de Miguel Mario Piattini. Fundamentos y modelos de base de datos.
Adoración de Miguel Mario Piattini.
3. C.J. Date. Introducción a los sistemas de bases de datos 7ma. Edición. Pretince
Hall.
4. Jeffrey D. Ullman, Jennifer Widom. Introducción a los sistemas de bases de
datos. Prentice Hall.