Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG...

51
Bases de Datos e XML Miguel Rodríguez Penabad Curso 2013-2014 Laboratorio de Bases de Datos Universidade da Coruña

Transcript of Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG...

Page 1: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de Datos e XML

Miguel Rodríguez Penabad

Curso 2013-2014

Laboratorio de Bases de DatosUniversidade da Coruña

Page 2: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 2

Índice

BASES DE DATOS E XML

Introdución

XML: Definición e Manipulación

Soporte para XML en Bases de Datos

Page 3: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 3

Introdución

Linguaxes de etiquetado (Markup) Motivación orixinal: Creación de arquivos de texto con instrucións,

fundamentalmente de formateado (Markup) entendibles para un procesador de texto

• Exemplos: IBM Script, Troff, (La)TeX, ...

Standard Generalized Markup Language (SGML) (ISO 8879:1986). Os usuarios poden definir etiquetas (tags) propias.

• É unha metalinguaxe que permite describir a estrutura dos documentos, non intrucións de formateado ou procesamento.

• Defínense DTDs (Document Type Definition), tamén chamadas Aplicacións SGML

• Ex: HTML, DocBook

Page 4: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014

Introdución

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "../docbook-xml-4.5/docbookx.dtd"><!-- Exemplo de SGML DocBook. Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado--><book> <TITLE>Exemplo de Libro DocBook</title> <CHAPTER> <title>Primeiro Capítulo</title> <section> <title>Primeira sección do capítulo 1</title> <para>Un parágrafo de texto.</para> </section> <SecTion> <title> Segunda sección do capítulo 1</title> <para>Seguimos con máis texto, e incluímos un

<ulink url="http://www.udc.es/”>enlace</>.<para>Outro párrafo.

</section> </chapter> </BOOK>

Page 5: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014

Introdución

<html><head> <title>Empregados</title></head><body><h1>Listaxe de Empregados</h1><table border=1> <thead> <tr> <th>Nome</th> <th>DNI</th> <th>Idade</th> <th>Salario</th> </tr> </thead> <tbody> <tr> <td>Alberto</td> <td>34233456-D</td> <td>35</td> <td>1200 (Euro)</td> </tr> </tbody></table></body></html>

Page 6: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 6

Problemas de SGML e de HTML para representar información

Problema de SGML

• Demasiado longo e complicado para a web

Problemas de HTML

• Non separa metadatos de estructura, semántica e formato

<H1>Título 1</H1>

Estructura: nivel 1

Semántica: título

Os navegadores dan un formato prefixado

• O conxunto de tags (etiquetas) é fixo

• Permite documentos que non estean ben formados

Os navegadores son “tolerantes” e ignoran as etiquetas que non conocen, así como certo tipo de erros (documentos mal formados)

Introdución

Page 7: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 7

XML: eXtensible Markup Language

Beneficios de XML Simplicidade

• Subconxunto de SGML

• Estándar corto (< 50 páxinas)

• Entendible por humanos e máquinas

Autodescritivo Aberto e independente

• Recomendación W3C: Versións 1.0 (1998) e 1.1 (2004)

• Pode usar Unicode (ISO 10646, independente de plataforma)

Ampliable e reusable• Podemos definir bibliotecas de etiquetas

Separa o contido da presentación Pode validarse

• Documentos ben formados

• Estrutura lóxica válida (DTD ou XML Schema)

<?xml version="1.0"?><Empregados> <Empregado> <Nome>Alberto</Nome> <DNI>34233456-D</DNI> <Idade>35</Idade> <Salario Moeda ="Euro">

1200 </Salario> </Empregado></Empregados>

Introdución

Page 8: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 8

Utilización do XML

Non conseguiu reemplazar completamente a HTML

Pero tendemos a XHTML, que é XML

Uso en moi diversas áreas

• Ficheiros de configuración de ferramentas e aplicacións

• Formatos de intercambio de datos entre aplicacións

• Protocolos de mensaxes entre aplicacións en rede

• Almacenamento en XML e publicación en diversos formatos (mediante transformacións)

• etc.

Xurde a necesidade de almacenar XML en base de datos

Pode incluso que unha base de datos estea formada só por documentos XML (BD XML nativa, non relacional)

Introdución

Page 9: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 9

Índice

BASES DE DATOS E XML

Introducción

XML: Definición e Manipulación

Soporte para XML en Bases de Datos

Page 10: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 10

XML: Definición e Manipulación

eXtensible Markup Language (XML)

• Metalinguaxe, non hai un conxunto predefinido de etiquetas

• Gramática estrita que impón unha estrutura ós documentos

• Comprobación en 2 niveis

• Documento ben formado

• Documento válido

<?xml version="1.0" encoding="utf-8" ?><!-- Esta é unha representación XML da táboa de empregados --><Empregados> <Empregado> <Nome>Alberto</Nome> <DNI>34233456-D</DNI> <Idade>35</Idade> <Salario Moeda ="Euro">1200</Salario> </Empregado> <Empregado> <Nome>Inés</Nome> <DNI>31245659-D</DNI> <Idade>29</Idade> <Salario Moeda ="Peseta">180000</Salario> </Empregado></Empregados>

Page 11: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 11

Documento ben formado• Debe cumprir as reglas gramaticais báscas do XML

Só pode haber un elemento raíz

Cada elemento ten que ter os seus tags de inicio e fin

• Pode usarse a versión compacta en elementos baleiros

Os nombres dos tags son sensibles ó uso de maiúsculas

Os elementos teñen que estar correctamente anidados

Os valores de atributos irán entre comillas

<Empregados> <Empregado> <Nome>Alberto</NOME> <DNI>34233456-D 35</Idade> <Salario Moneda="Euro"> 1200 </Empregado> </Salario></Empregados><Empregados>....</Empregados> ¡mal formado!

Documento válido

• Está ben formado

• Sigue as especficacións dun DTD ou XML Schema

XML: Definición e Manipulación

Page 12: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 12

Estrutura dun documento XML

• PI(processing instruction) (opcionais)

Declaración XML (Ó inicio do documento)

Ligazóns con follas de estilo, etc.

• Elementos

Etiqueta (tag) inicial, texto, etiqueta final: <tag>texto</tag>

Elemento baleiro: <tag></tag> ou <tag />

• Atributos. Nome = “valor”: <elemento tipo=”3” />

• Os (sub)elementos están ordenados, os atributos non

• En conxunto é unha cadea de caracteres

Inclúe datos e etiquetado (Markup)

Entendible por humanos e procesable por aplicacións

O etiquetado é tolerante a certos cambios de formato (espazos, liñas en branco, ...)

XML: Definición e Manipulación

Page 13: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 13

Namespace

• Asóciase un prefixo a unha URI (non necesariamente URL válida)

• Pode omitirse un prefixo (será o namespace predeterminado)

• Permite a reutilización de etiquetas de distintos vocabularios

• Etiquetas co mesmo nome e distinto significado

• Desambigua co formato prefixo:etiqueta

• Permite crear “bibliotecas” de etiquetas

<?xml version="1.0"?>

<cat:catalogo xmlns:cat="http://www.tenda.com/catalogo/xml"

xmlns:prov="http://www.proveedores.com/xml">

<cat:produto id=”14”>

<cat:nome>WD AV-GP WD20EURX</cat:nome>

<cat:descricion>Disco duro Western Digital AV-GP WD20EURX 2 TB</cat:descricion>

<prov:nome>HDD Shop, Inc.</prov:nome>

</cat:produto>

</cat:catalogo>

XML: Definición e Manipulación

Page 14: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014

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

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"

xmlns:c="http://java.sun.com/jsp/jstl/core"

xmlns:tiles="http://tiles.apache.org/tags-tiles"

version="2.0">

<html xmlns="http://www.w3.org/1999/xhtml">

<jsp:output doctype-root-element="html"

doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"

doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>

<jsp:directive.page contentType="text/html; charset=UTF-8"/>

<head>

<tiles:useAttribute name="titulo" id="tituloSeccionTiles" scope="request"/>

<title><jsp:include page="partes/title.jspx"/></title>

</head>

<body id="corpo">

<div id="cabeceira">

<jsp:include page="partes/cabeceira.jspx"/>

</div>

<tiles:useAttribute name="quitarMenu"/>

<c:if test="${!quitarMenu}">

<jsp:include page="partes/menu.jspx"/>

</c:if>

<div id="contido"> ... </div>

<div id="footer"> ... </div>

</body>

</html>

</jsp:root>

14

Namespace predeterminado: tags XHTML

Usan Namespace predeterminado

Usa namespace “jsp”

Usa namespace “c” (core JSTL)

XML: Definición e Manipulación

Namespaces• Exemplo de uso con Java Server Pages (JSP)

Page 15: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 15

Document Type Definition (DTD): Parte do XML Estándar

<?xml version="1.0"?><!-- Esta é unha representación XML da táboa de empregados --><Empregados> <Empregado> <Nome>Alberto</Nome> <DNI>34233456-D</DNI> <Idade>35</Idade> <Salario Moeda ="Euro"> 1200 </Salario> </Empregado> <Empregado> <Nome>Inés</Nome> <DNI>31245659-D</DNI> <Idade>29</Idade> <Salario Moeda ="Dólar"> 1350 </Salario> </Empregado></Empregados>

<!ELEMENT Empregados (Nota?, Empregado*)><!ELEMENT Nota (#PCDATA)><!ELEMENT Empregado(Nore, DNI, Idade, Salario)><!ELEMENT Nome (#PCDATA)><!ELEMENT DNI (#PCDATA)><!ELEMENT Idade (#PCDATA)><!ELEMENT Salario (#PCDATA)><!ATTLIST Salario Moeda (Euro | Dólar) #Required>

Cardinalidade :

? Opcional

* Cero ou máis

+ Un ou máis

Predeterminado: Un

Parsed Character Data

Atributos:

Por defecto opcionais

<!ATTLIST Salario Moeda>

<!ATTLIST Salario Moeda (Euro | Dólar) Euro>

Valor predeterminado

XML: Definición e Manipulación

Page 16: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 16

Document Type Definition (DTD)

Dúas formas de especificar o DTD: Interno ou Externo

• Interno, dentro do propio documento XML

<!DOCTYPE Empregados [Texto do DTD]>

• Externo, en outro documento ou URL

<!DOCTYPE Empregados SYSTEM "file:///c:/empregados.dtd">

<!DOCTYPE Empregados PUBLIC “http://host/empregados.dtd">

O conxunto de todos os nomes de tipos de elementos e nomes de atributos definidos no DTD é o Vocabulario.

O primeiro dos elementos definido é o elemento raíz dos documentos que siguen ese DTD.

XML: Definición e Manipulación

Page 17: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 17

Document Type Definition (DTD) Documentos válidos

• Un documento é válido se e só se

O documento está ben formado

O documento cumpre co seu DTD

<?xml version="1.0"?><!-- Esta é unha representación XML da táboa de empregados --><Empregados><Empregado> <DNI>31245659-D</DNI> <Nome>Inés</Nome> <Salario Moeda ="Dólar"> 1300 </Salario> <Estatura> 185 </Estatura> </Empregado></Empregados>

cambio de orden

falta a idade

elemento non definido

¡erróneo!

XML: Definición e Manipulación

Page 18: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 18

Document Type Definition (DTD)

Limitacións

• Tipos de datos demasiado básico: Todo son cadeas de caracteres, anque existen CDATA, NMTOKEN, ENTITY, … e ID, IDREF (só para atributos)

• As restricións de integridade sopórtanse de forma moi débil

• Un DTD non é un documento XML

• Requírese unha orde específica na aparición dos elementos

Para permitir cualquera orde hai que escribir un DTD enorme, en donde se inclúan todas as combinacións

• Etc.

A pesar destas limitacións, os DTDs son moi usados na práctica

XML: Definición e Manipulación

Page 19: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 19

Document Type Definition (DTD)

Atributos de tipo ID e IDREF / IDREFS

• Permiten definir restricións de integridade de identidade e referencial

Os valores de atributos de tipo ID non poden repetirse en todo o documento

Os valores de atributos de tipo IDREF teñen que ser valores xa almacenados en algún atributo de tipo ID no documento

IDREFS: Referencia varios IDs, separados por espazos

• As analoxías coas claves primarias e foráneas non son moi fortes

Os IDs teñen que ser sempre valores simples dun só atributo

Os IDs son únicos no documento, non para os elementos dun tipo

Os IDREF fan referencia a algún valor de algún ID, non necesariamente dun tipo específico

As restriccións non se aplican fóra do documento

• Problema se temos coleccións de documentos

XML: Definición e Manipulación

Page 20: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014

XML: Definición e Manipulación

<!ELEMENT Empresa (Departamento*, Empregado*)><!ELEMENT Departamento(Nomedep)>…<!ATTLIST Departamento deptID ID #Required>

<!ELEMENT Empregado(Nome, DNI, Idade, Salario)>…<!ATTLIST Empregado empID ID #Required depto IDREF #Implied>

<Departamento deptId=”100”> …<Departamento deptId=”200”> …

<!-- Un empID non pode ter o mesmo valor que un deptID -->

<Empregado empID=”100” depto=”200”> ...

<Empregado empID=”101” depto=”100”> ...<!-- Sería válido según o DTD, porque hai un elemento con ID=”101”, anque Non sexa un deptartamento -->

<Empregado empID=”102” depto=”101”> ...

20

Page 21: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 21

XML Schema

É un documento XML

Non hai un elemento explícito no documento para indicar o seu XML schema

• Podemos usar o atributo SchemaLocation para dar pistas sobre a súa localización

Non se define o elemento raíz (calquera elemento definido de forma global pode ser a raíz dun XML válido contra o XML Schema)

As restricións son máis potentes que nos DTDs

Os documentos XML Schema son más longos e complexos que os DTDs

Define tipos de dato incorporados, tanto primitivos como derivados

• Existen tipos simples e complexos

• Poden extenderse tipos (incluso facer “subclases”)

XML: Definición e Manipulación

Page 22: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 22

XML Schema

<?xml version="1.0"?><!-- Schema para Empregados--><!DOCTYPE xs:schema SYSTEM "http://www.w3.org/2001/XMLSchema"><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

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

<xs:element name="Empregados"> <xs:complexType> <xs:sequence> <xs:element ref="Nota" minOccurs="0"/> <xs:element name="Empregado" type="tipoEmpregado" minOccurs="0" maxOccurs = "unbounded"/> </xs:sequence </xs:complexType></xs:element>

<!ELEMENT Empregados (Nota?, Empregado*)><!ELEMENT Empregado (Nome, DNI, Idade, Salario)><!ELEMENT Nome (#PCDATA)><!ELEMENT DNI (#PCDATA)><!ELEMENT Idade (#PCDATA)><!ELEMENT Salario (#PCDATA)><!ATTLIST Salario Moeda (Euro|Dólar) #REQUIRED>

XML: Definición e Manipulación

Page 23: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 23

XML Schema<xs:complexType name="tipoEmpregado"> <xs:sequence> <xs:element name="Nome" type="xs:string"/> <xs:element name="DNI" type="tipoDNI"/> <xs:element name="Idade" type="xs:integer"/> <xs:element name="Salario" Type="tipoSalario"/> </xs:sequence></xs:complexType>

<xs:simpleType name="tipoDNI"> <xs:restriction base="xs:string"> <xs:pattern value="\d{8}-[a-z]{1}"/> </xs:restriction></xs:simpleType>

<xs:complexType name="tipoSalario> <xs:simpleContent> <xs:extension base="xs:decimal"> <xs:attribute name="Moeda" type="tipoMoeda" use="required"/> </xs:extension> </xs:simpleContent></xs:complexType>

<!ELEMENT Empregados (Nota?, Empregado*)><!ELEMENT Empregado (Nome, DNI, Idade, Salario)><!ELEMENT Nome (#PCDATA)><!ELEMENT DNI (#PCDATA)><!ELEMENT Idade (#PCDATA)><!ELEMENT Salario (#PCDATA)><!ATTLIST Salario Moeda (Euro|Dólar) #REQUIRED>

<xs:simpleType Name="tipoMoeda> <xs:restriction base="xs:string"> <xs:enumeration value="Euro"/> <xs:enumeration value="Dólar"/> </xs:restriction> </xs:simpleType></xs:schema>

XML: Definición e Manipulación

Page 24: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 24

XML Schema

Ventaxas

• Son documentos XML

• Sistema de tipos máis sofisticado (reusar, extender, ...)

• Os elementos poden aparecer en calquera orden

• Soporta elementos key e keyref, máis cercanos ós relacionais

(Exemplo: transparencia seguinte)

Inconveniente: É máis complexo

XML: Definición e Manipulación

Page 25: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014

<xs:complexType name="tipoDepto"> <xs:attribute name="deptId" type="xs:string" use="required"/> ...</xs:complexType><xs:complexType name="tipoEmpregado"> <xs:attribute name="empID" type="xs:string" use="required"/> <xs:attribute name="depto" type="xs:string"/> ...</xs:complexType>

<xs:element name="Departamento" type="tipoDepartamento" ...><xs:element name="Empregado" type="tipoEmpregado" ...>

<xs:key name="ClaveDepto"> <xs:selector xpath="Departamento"/> <xs:field xpath="@deptID"/></xs:key><xs:key name="ClaveEmp"> <xs:selector xpath="Empregado"/> <xs:field xpath="@empID"/></xs:key><xs:keyref name="EmpregadoFKDepto" refer="ClaveDepto"> <xs:selector xpath="Empregado"/> <xs:field xpath="@depto"/></xs:keyref>

XML: Definición e Manipulación

Page 26: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014

<Departamento deptId=”100”>…<Departamento deptId=”200”>…<!-- Un empID pode ter o mesmo valor que un deptID -->

<Empregado empID=”100” depto=”100”>…<Empregado empID=”101” depto=”100”>

...<!-- Non existe ningún elemento de tipo Departamento con deptID=”101” -->

<Empregado empID=”102” depto=”101”>...

XML: Definición e Manipulación

Page 27: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014

27

Estructura dun documento XML• É unha xerarquía (normalmente chamada infoset)

• Distintos modelos: XPath, XQuery, DOM

• Raíz ou nodo documento

• Elemento raíz

• Secuencia de fillos (ordenados)

• Follas

caracteres

atributos

comentarios

etc.

documento

Empregados

EmpregadoEmpregado

Nome DNI Idade Salario

1200

Version

Alberto 34233456-D 35

. . .

1.0

Moeda Euro

XML: Definición e Manipulación

Page 28: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 28

Xestión dun documento XML

• Unha base de datos (relacional) contén datos estruturados, mentras que XML contén datos semiestruturados

Exemplo de XML mixto:

<Empregado>

Chámase <Nome>Alberto</Nome> e ten <Idade>35</Idade> anos

</Empregado>

• Ten aspectos estruturais similares ó modelo xerárquico.

• Os modelos de datos normalmente inclúen operadores

O modelo XML non

• Podemos programar aplicacións que usan Document Object Model (DOM) e Sample API for XML (SAX)

Recuperación, inserción, borrado e modificación de nodos da xerarquía dun documento

XML: Definición e Manipulación

Page 29: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 29

Visualización e transformación de documentos XML Visualización por defecto do navegador (árbore) Usando CSS

/* emps.css */*{font-family: arial;}Empregado{ display:block; border:2px solid black; margin:3px;}

Empregado DNI, Empregado Nome,Empregado Salario,Empregado Idade{ display:block;}

<?xml version="1.0" encoding="utf-8" ?><?xml-stylesheet type="text/css" href="emps.css"?><!DOCTYPE Empregados SYSTEM "emps.dtd"><Empregados>...</Empregados>

Curso 2011/2012

XML: Definición e Manipulación

Page 30: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 30

Visualización e transformación de documentos XML Transformación de documentos (XSL e XSLT)

• XSL: eXtensible StyleSheet Language• XSLT: XSL Transformations

Permiten transformar (parte de) documentos XML• A outros documentos XML• A outros formatos

Beasado en plantillas (templates)• Búsqueda de patrones con XPath (falaremos de XPath máis adiante)

Execución da transformación• A través do propio navegador, incluíndo no ficheiro XML a directiva (PI).

Ex: <?xml-stylesheet type="text/xsl" href="estilo.xsl" ?>• Usando programas externos

Exemplo (usando Saxon):

java net.sf.saxon.Transform -o emps.html emps.xml emp2html.xsl

XML: Definición e Manipulación

Page 31: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 31

<?xml version="1.0" encoding="utf-8" ?> <xsl:stylesheet version="2.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="xml" encoding="iso-8859-1"

indent="yes" omit-xml-declaration="yes" />

<xsl:template match="/"><html><head><title>Empregados</title></head><body> <ol>

<xsl:apply-templates/> </ol></body></html></xsl:template>

<xsl:template match="Empregado"><li><xsl:value-of select="Nome"/> (<strong> <xsl:value-of select="DNI"/> </strong>)</li></xsl:template></xsl:stylesheet>

<html> <head> <title>Empregados</title> </head> <body> <ol> <li>Alberto

(<strong>34233456-D</strong>)</li> <li>Inés

(<strong>31245659-D</strong>)</li> </ol> </body></html>

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE Empleados SYSTEM "emps.dtd"><Empregados> ...</Empregados>

+

XML: Definición e Manipulación

Page 32: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 32

Manipulación de XML Consulta de datos

• XQuery parece que vai ser un estándar

Baseado en XPath

Modificación de datos

• DOM/SAX para programadores

• Outras interfaces propietarias

• XUpdate, en desenvolvemento

XQuery: baseado en Quilt e influenciado por SQL, OQL e outras linguaxes XML como XQL, XML-QL e Lorel

Non opera sobre os documentos XML, senón sobre unha forma abstracta obtida dun análisis sintáctico (parsing)

• Forma abstracta: instancia do modelo XQuery

O resultado pode ser un infoset de documento XML, pero non ten por que. Pode non estar ben formado ou non ser XML en absoluto.

XML: Definición e Manipulación

Page 33: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 33

Manipulación de XML XPATH

• Navega sobre a estrutura xerárquica do documento XML

• Ten certa similitude cun sistema de ficheiros

documento

Empregados

EmpregadoEmpregado

Nome DNI Idade Salario

1200

Version

Alberto 34233456-D 35

. . .

1.0

Moeda

Euro

XML: Definición e Manipulación

Símbolo Significado

/ Nodo raíz

. Nodo actual

.. Nodo pai

// Calquera nodo

elem1/elem2 Paso (para navegar)

[test] Filtra nodos

Page 34: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 34

Manipulación de XML XPATH

• Cada paso ten tres partes Paso ou eixe (axis) define a dirección de navegación

● / ou /tipo_paso::● child (predeterminado), self, parent, preceding, following, ...

/Empregados/Empregado = /child::Empregados/child::Empregado

Destino:● Nodo (nome_elemento)● Atributo (@nome_atributo)● Outros predicados ou funcións: text(), ...

•Os test define o tipo de nodos que son de interés

• Posicional: [3] ou [position()=3]

• Predicado lóxico (booleano)

XML: Definición e Manipulación

Page 35: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 35

Manipulación de XML XPATH

• Exemplos:

• Nodo Empregado con salario maior de 1000

/Empregados/Empregado[salario>”1000”]

• Salarios que se cobran en euros (só os valores dos salarios)

//Salario[@Moeda=”Euro”]/text()

• DNIs dos empregados de 35 anos que cobran 1400 euros

/Empregados/Empregado[Idade=”35][Salario[@Moeda=”Euro”]=”1400”]/DNI

• Exercicios• Nodo que corresponde ó cuarto empregado

• Abre a páxina web da asignatura, examina o código fonte, e escribe a sentencia Xpath para obter as novidades.

XML: Definición e Manipulación

Page 36: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 36

Manipulación de XML

XQUERY

• XPath é unha forma de direccionamento

• Non se poden construir nodos que non existen

• XQuery posibilita a construcción de novos nodos

• O resultado non ten por que ser un XML ben formado

• RETURN evalúase para cada combinación das variables $e e $d que cumplan a condición do WHERE, na orde especificada por ORDER BY

<Resultado> {FOR $e IN document("Empregados.xml") //Empregado FOR $d IN document("Departamentos.xml) //Departamento[@Nombre ="Ventas"] WHERE $e/Dept = $d/cod_dept ORDER BY $e/Nome RETURN <Empregado Idade = "{$e/Idade}"><Nome>{$e/Nome}</Nome></Empregado>}</Resultado>

XML: Definición e Manipulación

Page 37: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 37

Manipulación de XML

XQUERY

• Expresións FLWOR (For, Let, Where, Order by, Return)

• Non hai unha sintaxe específicapara os JOINS, como en SQL

• Inclúe moitas funcións, entreelas unión, intersección e diferencia

• Inclúe cuantificadores existencial e universal

some, every

• O modelo relacional ten asociado un concepto de completitude (completeness). Parece non haber nadasimilar en XQuery nin en XML en xeral

FOR $e IN document("Empregados.xml") //EmpregadoLET $s := $e/SalarioWHERE $e/Idade > 18ORDER BY $e/NomeRETURN $s

Non

xenera un

documento

XML

XML: Definición e Manipulación

Page 38: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 38

Índice

BASES DE DATOS E XML

Introducción

XML: Definición e Manipulación

Soporte para XML en Bases de Datos

Page 39: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 39

Soporte para XML en Bases de Datos

Introdución

Requisito actual: poder almacenar datos XML en SXBDs

Tamén é unha necesidade o proceso inverso: publicar datos convencionais (SQL) en documentos XML

3 formas de almacenar XML nunha base de datos

1. Columna XML

• Almacenar o documento nun atributo dunha fila

2. Colección XML

• Trocear o documento en varios atributos de varias filas [de varias táboas]

3. Base de datos XML nativa

Page 40: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 40

1. Columna XML Defínese un novo tipo de datos / clase (XML)

• O almacenamento directo ocupa demasiado espacio (10 veces máis)

• Almacenar en algún formato binario ou comprimido

Son cuestións de nivel físico

Úsanse instruccións INSERT, DELETE e UPDATE

Defínense operadores para o tipo XML• Operadores similares ós de XQuery

• Operadores que poden validar o valor contra un DTD ou XML Schema

Estratexia apropiada se• O documento xa existe

• Manipúlase enteiro e non por partes

• Modifícase pouco

• A búsqueda faise normalmente por poucos elementos ou atributos

• O documento debe almacenarse enteiro por auditoria

Soporte para XML en Bases de Datos

Page 41: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 41

2. Colección XML Non existe un novo tipo de datos

Trocéase o documento e almacénase en atributos de tipo convencional

• Varios niveis no troceado. Sen trocear pódese almacenar todo nun string (Como cando almacenamos datos espaciais nun BLOB)

A xestión do XML faise nas aplicacións, fóra do SXBD

Consíguese trocear XML en datos convencionais e publicar datos convencionais en XML

• Vistas XML de datos convencionais

O modelo do nivel externo (vistas) é distinto ó modelo do nivel conceptual

• Problemas: impedancia entre os modelos distintos.

Soporte para XML en Bases de Datos

Page 42: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 42

2. Colección XML Apropiado se

• Os datos existen xa nun SXBD relacional e deben interactuar con outros datos que están en XML

• Só a parte de tipo carácter debe de ser conservada intacta• As operacións fanse normalmente sobre elementos ou atributos• As modificacións son frecuentes e o tempo de modificación é

importante•As aplicacións de procesado usan xa interfaces relacionais

Soporte para XML en Bases de Datos

Page 43: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 43

Bases de datos XML Nativas Exemplos:

• BaseX, eXist-db, Sedna• Soporte (a veces parcial) de:

• XQuery ata 3.0• XPath 2.0• XSLT 2.0• XQuery Update

¿É o modelo relacional necesario e suficiente para cualquera tipo de datos?

• Invertiuse moito en tecnoloxía relacional, non sería intelixente migrar a outro modelo se non é necesario (Que aporta?)

• O modelo xerárquico ten problemas que tamén sufre o XML

Soporte para XML en Bases de Datos

Page 44: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 44

SQL:2003

Novo tipo de datos (XML)

4 operacións

• XMLPARSE, XMLSERIALIZE, XMLROOT, XMLCONCAT

Predicado IS DOCUMENT

• Comproba se un documento ten unha sóa raíz

Funcións de publicación

• XMLELEMENT, XMLNAMESPACES, XMLFOREST, XMLAGG, XMLATTRIBUTES, XMLPI

Regras de conversión de SQL a XML

• Convertir nomes, identificadores, tipos, valores, táboas, esquemas, catálogos,...

Soporte para XML en Bases de Datos

Page 45: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 45

Implementación do soporte de XML en Oracle A partir da versión 9i Moi próximo ó estándar SQL:2003 Tipo XMLType (non “XML”)

• Comproba que sexa un XML ben formado• Posibilidade de validar (DTD, XML Schema)• Funcións de Transformación: XMLType.Transform()• Consultas por contido do XML• XMLType.extract(): Extracción de parte do contido (similar a XPath)

Operacións

• XMLROOT, XMLCONCAT

Funcións de publicación

• XMLELEMENT, XMLFOREST, XMLAGG, XMLATTRIBUTES, XMLPI

Soporte para XML en Bases de Datos

Page 46: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 46

Implementación do soporte de XML en Oracle Exemplos

• Uso de atributos XMLType

SQL> CREATE TABLE EX(ID INT, TXT XMLType);Tabla creada.

SQL> INSERT INTO EX VALUES(1,'<tag>texto</tga>');INSERT INTO EX VALUES(1,'<tag>texto</tga>') *ERROR en línea 1:ORA-31011: fallo en el análisis de XML

--(*)SQL> insert into e values 2, '<EMPREGADOS> <EMPREGADO><EMPNO>7839</EMPNO><ENAME>KING</ENAME><DEPTNO>10</DEPTNO> </EMPREGADO> <EMPREGADO><EMPNO>7782</EMPNO><ENAME>CLARK</ENAME><DEPTNO>10</DEPTNO> </EMPREGADO> <EMPREGADO><EMPNO>7934</EMPNO><ENAME>MILLER</ENAME><DEPTNO>10</DEPTNO> </EMPREGADO></EMPREGADOS>');1 fila creada.

(*) A sentencia de inserción real debe conter o fragmento XML nunha liña. Aquí reprodúcese en varias para maior claridade

Soporte para XML en Bases de Datos

Page 47: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 47

Implementación do soporte de XML en Oracle Exemplos

• Uso de atributos XMLType

SQL> select e.txt.extract('/*') Valor from ex e;

VALOR------------------------------<EMPREGADOS> <EMPRERADO> <EMPNO>7839</EMPNO> <ENAME>KING</ENAME> <DEPTNO>10</DEPTNO> </EMPREGADO> <EMPREGADO> <EMPNO>7782</EMPNO> <ENAME>CLARK</ENAME> <DEPTNO>10</DEPTNO> </EMPREGADO> <EMPREGADO> <EMPNO>7934</EMPNO> <ENAME>MILLER</ENAME> <DEPTNO>10</DEPTNO> </EMPREGADO></EMPREGADOS>

Soporte para XML en Bases de Datos

Page 48: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 48

Implementación do soporte de XML en Oracle EXemplos

• Uso de atributos XMLType

SQL> select e.txt.extract('//EMPREGADO/ENAME') Valor from ex e;

VALOR------------------------<ENAME>KING</ENAME><ENAME>CLARK</ENAME><ENAME>MILLER</ENAME>1 Fila seleccionada

SQL> select xmlelement(name Resultado, xmlagg(e.txt.extract('//EMPREGADO/ENAME'))) Valor from ex e

VALOR-------------------------------<RESULTADO><ENAME>KING</ENAME><ENAME>CLARK</ENAME><ENAME>MILLER</ENAME></RESULTADO>1 Fila seleccionada

Soporte para XML en Bases de Datos

Page 49: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 49

COLUMNA-------------------------------------------<NOME_EMP>KING</NOME_EMP><NOME_EMP>JONES</NOME_EMP><NOME_EMP>FORD</NOME_EMP><NOME_EMP>SMITH</NOME_EMP><NOME_EMP>BLAKE</NOME_EMP><NOME_EMP>ALLEN</NOME_EMP><NOME_EMP>WARD</NOME_EMP><NOME_EMP>MARTIN</NOME_EMP><NOME_EMP>CLARK</NOME_EMP><NOME_EMP>SCOTT</NOME_EMP><NOME_EMP>TURNER</NOME_EMP><NOME_EMP>ADAMS</NOME_EMP><NOME_EMP>JAMES</NOME_EMP><NOME_EMP>MILLER</NOME_EMP>

14 filas seleccionadas.

Implementación do soporte de XML en Oracle EXemplos

• Derivación de datos relacionais en formato XML

select xmlelement(nome_emp, ename) as columna from emp;

Soporte para XML en Bases de Datos

Page 50: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 50

Implementación do soporte de XML en Oracle Exemplos

• Derivación de datos en formato XML

select xmlroot( xmlconcat(xmlpi("xml-stylesheet", 'type="text/css" href="estilo.css"'), xmlelement(Empregados, xmlagg(

xmlelement(empregado,xmlforest(empno,ename,deptno))) ) ) ).extract('/*')from emp where deptno=10;

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/css" href="estilo.css"?><EMPREGADOS> <EMPREGADO> <EMPNO>7839</EMPNO> <ENAME>KING</ENAME> <DEPTNO>10</DEPTNO> </EMPREGADO> <EMPREGADO> <EMPNO>7782</EMPNO> <ENAME>CLARK</ENAME> <DEPTNO>10</DEPTNO> </EMPREGADO> <EMPREGADO> <EMPNO>7934</EMPNO> <ENAME>MILLER</ENAME> <DEPTNO>10</DEPTNO> </EMPREGADO></EMPREGADOS>

Soporte para XML en Bases de Datos

Page 51: Bases de Datos e XML · 2014. 10. 29. · Etiquetas non sensibles a maiúsculas. Usando OMITTAG pode complicarse a lectura e procesado-->  Exemplo de Libro

Bases de datos e XMLCurso 2013-2014 51

Bibliografía

Connolly, T.; Begg, C. Sistemas de Bases de datos: Un enfoque

práctico para diseño, implementación y gestión (4a edición).

Addison-Wesley, 2005. [Cap.30]

Ríos Viqueira, J.R. Sistemas de Información en Web. Transparencias

da materia Sistemas de Información. Univ. Santiago, 2006.

Extensible Markup Language (XML)http://www.w3.org/XML

ISO/IEC 9075-14:2003 – XML-Related Specifications (SQL/XML)(Borradores previos ó estándar final dispoñibles en http://www.wiscorp.com/)

Manuais online de Oraclehttp://www.oracle.com/technology/documentation/index.html