XML(
eXtensible Markup Language
)
1. Características Generales
2. Estructura de los Datos XML
3. DTD
4. Espacio de nombre
5. XML Esquema
6. Consultas
7. Almacenamiento de Datos
8. Presentación
1. Características Generales (Metadatos)
Datos sobre datos
Alumno:Datos sobre los que
se describen las cosas
Expedientes:Un expediente
por alumno con la siguiente información:
DNI del alumno Nombre del alumno Domicilio del alumno ….
Metadatos
• Se puede considerar como ETIQUETA asignada a datos de la forma nombre = valor
– DNI = 26.259.485 – Nombre = Miguel de Cervantes – Domicilio = Av. Libertad 158
• Cada etiqueta debe estar bien definida (nombre, descripción, valor posibles)
• El conjunto de etiquetas se denomina Esquema
• Habitualmente, etiqueta y marca son sinónimos
Lenguajes de marcas
• Los documentos electrónicos tienen 3 partes:– Contenido: Los datos o palabras en si mismo – Estructura: La organización del contenido
– Presentación: El aspecto con el que se presenta el contenido al lector
• Las marcas son secuencias de símbolos que, insertados en el contenido de un documento, sirven para indicar su presentación o su estructura.
• HTML (Hypertext Markup Language):
– Las marcas definen la presentación
– Problema: Los buscadores no pueden localizar la marca deseada
XML(
eXtensible Markup Language
)
Con HTML:
<H1> Factura </H1> <P> De: Pepe Martinez</P> <P> A: Juan Fernandez</P> <P> Fecha: 1 Dic de 2006 </P> <P> Cantidad: 1000 euros </P> <P> IVA: 17% </P> <P> Total: 1170 </P> <H1> Cabecera tipo 1 <P> Nuevo párrafo
Con XML: la marca indican la estructura
<Factura>
<De> Pepe Martinez</De> <A> Juan Fernandez</A> <Fecha dia=1 mes=12 año=2006/> <Cantidad moneda=euros> 1000 </cantidad> <IVA> 17 </IVA>
<Total> 1170 </Total> </Factura>
<Factura> Comienza la información <De> … </De> Nuevo párrafo
Búsquedas más sencillas con XML
XML: Origen
• A finales de los 70, IBM pidió a Charles Goldfardque desarrollará un sistema para almacenar, buscar, gestionar y publicar documentos.
• El resultado de su trabajo fue el SGML (Standard Generalized Markup Language).
• XML es un subconjunto de SGML pensado para los entornos Web
XML: Origen
• En SGML se consideraros los siguientes hechos:
– Para intercambiar información es necesario un lenguaje
comúndonde las marcas tiene sentido.
– La estructura de un documento se puede ver como
una jerarquía de elementos.El documento puede verse
como un árbol.
– Los documento tienen que seguir algún tipo de reglas, es decir el lenguaje de marcas debe ser especificado de algún modo formal que permite que el documento cumpla cierta estructura
Separación contenido/presentación
• Se requiere una hoja de estilo para definir como imprimir o visualizar un documento.
• Las ventajas de mantener separado los tres aspecto de un documento contenido, estructura y presentación son:
– Facilitar el trabajo de presentación al navegador – Manipular los datos y realizar cálculos a partir de ellos – Realizar búsquedas “inteligentes” de información
– Fomentar la creación de vocabularios (marcas) estándares en diferentes dominios: bancos, telecomunicaciones, medicina, etc.
2. Estructura de los Datos XML
• Lenguaje de Marcado Extensible.
• W3C (World Wide Web) publicó la primera definición en 1998. • Está diseñado para facilitar el intercambio de datos
estructurados a través de Internet.
• Tiene que ver con la descripción y representación de los datos (el despliegue de los datos es tarea de HTML). Separa la visualización del contenido
• Es un metalenguaje para representar y manipular elementos de datos. Permite introducir etiquetas que describen la estructura del contenido presente en el documento o página Web
XML
• Lenguaje de
marcas
de documentos
•
Marca
: Cualquier elemento en un documento del
que no se tiene intención que sea parte de la salida
impresa.
• Las marcas adoptan la forma de
etiquetas
(encerradas entre < >). Las marcas se usan en
pares <etiqueta> </etiqueta> (se pueden establecer
etiquetas según cada necesidad).
• Un texto encerrado en CDATA es tratado como
datos de texto normal, no como una etiqueta.
XML: Ej CDATA
<ejemplo> <HTML>
<HEAD> <TITLE>
Rock & Roll </TITLE> </HEAD> </HTML> </ejemplo> <ejemplo> <![CDATA[ <HTML>
<HEAD><TITLE> Rock & Roll </TITLE></HEAD> </HTML> ]]> </ejemplo> <ejemplo> <HTML> <HEAD> <TITLE> Rock & Roll </TITLE> </HEAD> </HTML>
</ejemplo>
Dos alternativas para incluir un documento HTML como elemento XML
XML
• Sensible a mayúsculas y minúsculas
• Las etiquetas deben estar apropiadamente
anidadas
• Pueden utilizarse los simbolos <-- y --> para
introducir comentarios
• Los prefijos XML o xml están reservados sólo
para etiquetas XML.
Partes de un documento XML
• Los documentos XML están divididos en dos partes principales un prólogo y una instancia del documento. • Prólogo compuesto de una declaración XML y/o una
declaración de tipo de documento, por ej.
<?xml version=“1.0.”?>
<!DOCTYPE Expediente SYSTEM “http://siul02/expedientes”>
• Instancia, allí se encuentra el contenido real del documento XML
Ej. partes de un documento XML
Prólogo
Instancia
Elemento y Atributos
• Elemento
Par de etiquetas de inicio y finalización coincidentes y todo el texto que aparece entre ellas.
Los elementos se suelen anidar para evitar los “joins”
• Atributo
Los atributos de un elemento aparecen como pares nombre=valor (los atributos son cadenas y no contienen marcas). Pueden aparecer solamente una vez en una etiqueta dada.
Ej. Estructura de los Datos XML
• Elemento XML con contenido
<titulo>Este es el titulo </titulo>
• Elemento XML sin contenido
<Fechaaño = 2006 mes = 1 dia 14 />
• Los atributos tienen nombre y valor
Estructura de los Datos XML
• Todo documento XML tiene un elemento raíz
• El elemento raíz contiene elementos hijo o
subelementos
• Cada elemento puede contener subelementos.
• Refleja una estructura de árbol jerárquico
• Un documento XML puede ser verificado por un
procesador general.
Ejemplo documento XML
<AlumnosFISS><AlumnosBD> <Alumno DNI= 4.000>
<Nombre> Juan </Nombre> <Edad> 18 </Edad> <Asignatura> <Titulo> DBD </Titulo> <Cuatrimestre> 1 </Cuatrimestre> </Asignatura> <Asignatura> <Titulo> ABD </Titulo> <Cuatrimestre> 2 </Cuatrimestre> </Asignatura>
</Alumno> <Alumno DNI = 5.000>
<Nombre> Maria </Nombre> <Edad> 18 </Edad> <Asignatura> <Titulo> DBD </Titulo> <Cuatrimestre> 1 </Cuatrimestre> </Asignatura> <Asignatura>
<Titulo> TAMI </Titulo> < -- curso 2005-- > <Cuatrimestre> 2 </Cuatrimestre> </Asignatura> </Alumno> </AlumnosBD> </AlumnosFISS> RAIZ Subelemento Subelemento Subelemento
Ejemplo. Vista en forma de árbol
AlumnosBD Alumno Alumno Asignatura Asignatura Asignatura Asignatura AlumnosFISSXML. Características Generales
•
Desventaja
comparando al almacenamiento de los
datos en una Base de Datos :
– la representación XML puede parecer poco
eficiente, puesto que los nombres de las
etiquetas se repiten por todo el documento.
•
Ventaja
cuando se usa para el intercambio de
datos.
– Mensaje auto documentado
– Formato del documento no rígido
– Herramientas disponibles para ayudar a su
procesamiento.
3. DTD (Document Type Definition)
• La definición de tipos de documentos DTD es una parte opcional de un documento XML.
• Objetivo: restringir el tipo de información presente en el documento. Restringe el aspecto de subelementos y atributos en un elemento. Indica el “patrón” de subelementos que aparecen en un elemento.
• Los atributos permitidos para cada elemento también se declaran en la DTD.
DTD
• Un DTD proporciona la composición del modelo lógico de la BD y define las reglas de sintaxis o etiquetas válidas para cada tipo de documento XML.
• Documento bien formado:documento que cumple las reglas
sintácticas de XML
• Documento válido:Documento que declara en su prólogo cierto
DTD que efectivamente lo cumple.
• Documento no válido:Documento que declara en su prólogo
cierto DTD que no cumple.
• Un documento no válido puede estar bien formado • Un documento bien formado puede o no se valido
DTD Interno: definido en el mismo XML
<?xml version=“1.0”?><!DOCTYPE DocDireccionPostal [
<!ELEMENT DireccionPostal (nombre, calle, ciudad, codigo)> <!ELEMENT nombre (#PCDATA )>
<!ELEMENT calle (#PCDATA)> <!ELEMENT ciudad (#PCDATA)> <!ELEMENT codigo (#PCDATA)> ]>
<DireccionPostal >
<nombre> Juan Perez </nombre> <calle> San Martín </calle> <ciudad> San Sebastián </ciudad> <codigo> 20009 </codigo> </DireccionPostal >
DTD externo: definido en otro fichero
Se puede indicar en el prólogo con:
• La palabra “SYSTEM” y a continuación una URL
<?xml version=“1.0”?>
<!DOCTYPE DireccionPostal SYSTEM http:// www.smglsource.com/dtds/label.dtd” >
<DireccionPostal > … </DireccionPostal >
• La palabra “PUBLIC” hace referencia a un identificador público unico
<!DOCTYPE Memo PUBLIC “- //smglsource.com//dtds memo // en” http:// www.smglsource.com/dtds/memo.dtd” >
<DireccionPostal > … </DireccionPostal >
DTD. Definición de elementos
• Cada elemento de un documento XML válido debe haber sido declarado en un DTD
• Una declaración de un elemento debe comenzar con <!ELEMENT” seguido de su nombre, y luego una especificacion del contenido
<!ELEMENT label (nombre, calle, ciudad, codigo)> <!ELEMENT nombre (#PCDATA)>
DTD. Definición de elementos
• EMPTY:Indica que un elemento no puede tener contenido
<!ELEMENT elemento-vacio EMPTY>
• ANY:El elemento puede contener cualquier tipo de sub-elemento o dato <!ELEMENT cualquier -cosa ANY>
• #PCDATA :Es cualquier secuencia de caracteres que NOcontiene
elemento (hojas del árbol) <!ELEMENT hoja-del -arbol (#PCDATA) >
• Contenido Mixto:Si queremos combinar estructuras de datos y
sub-elementos, es necesario utilizar expresiones regulares (*, +, ?) para describir la sintaxis
DTD y Cardinalidad
<!DOCTYPE AlumnosFISS[<!ELEMENT AlumnosFISS (Alumno-BD?, AlumnoIA?)> <!ELEMENT AlumnosBD (Alumno+)>
<!ELEMENT AlumnosIA (Alumno+)> <!ELEMENT Alumno (Nombre, Edad, Asignatura+)> <!ELEMENT Nombre (#PCDATA)> <!ELEMENT Edad (#PCDATA)> <!ELEMENT Asignatura (#PCDATA)> </ATTLIST Alumno DNI (#PCDATA)> ]>
• Si después de un elemento aparece: – * el elemento se puede repetir 0 o más veces en el documento – + el elemento se puede repetir 1 o más veces en el documento – ? el elemento se puede repetir 0 o 1 vez en el documento – El elemento aparece una vez
DTD. Definición de atributos
• La declaraciones de atributos empiezan con <!ATTLIST” seguido por el identificador del elemento. Despues se identifica el nombre del atributo, su tipo y una indicación relativa a su valor por d efecto. • Los valores de los atributos pueden cumplir ciertas restricciones
–CDATA: El contenido es cualquier secuencia de carácter que no contenga otro elemento <!ATTLIST ALUMNO email CDATA #REQUIRED>
–Enumerados: Cuando el valor a tomar esta acotado en un conjunto discreto <!ATTLIST ELECCION (Opcion1 | Opcion2 | Opcion 3) #REQUIRED>
• Los atributos pueden tener valores por defecto <!ATTLIST CAMISA tamaño (Pequeño | Mediano | Grande) Mediano>
DTD. Definición de atributos
• IDe IDREF: Permite crear referencias cruzadas entre elementos
<!ELEMET SECTION (TITULO, PARRAFO*)> <!ATTLIST SECTION Identificador ID #IMPLIED > <!ELEMET REFERENCIA EMPTY>
<!ATTLIST REFERENCIA TARGET IDREF #REQUIRED >
…
<SECTION Identificador =“Capitulo 1”> …. </SECTION> …
Vea <REFERENCIA TARGET=“Capitulo 1” / > para volver a leer sobre …
DTD. Definición de atributos
• ENTITY: Representan un contenido y se lo define como un atributo
<!ATTLIST Referencia-Librería TARGET ENTITY #REQUIRED > …
<!ENTITY otro-libro SYSTEM “http://www.amazon.com/...”> …
<Referencia-Libreria TARGET=“otro-libro”/ > …
DTD. Definición de entidades
• Las entidades son abreviatura que representa un valor • Pueden ser:
–Internas:Su valor se encuentra en el mismo DTD
–Externas:Su valor esta en documento DTD externo
–Generales:Se emplea en el DTD y en Documento XML
–Parámetro:Solo se emplea en el DTD
• Las entidades generales e internas son las más simples y son resueltas por el analizador al momento de procesar el XML
DTD. Definición de entidades
• Declaración de entidad general e intena
<?xml version=“1.0” ?>
<!DOCTYPE ejemplo SYSTEM “ejemplo.dtd” [ <!ENTITY xml “Extensible Markup Language”> ]> <ejemplo>
… &xml; … </ejemplo>
• Declaración de entidad general externa
<!ENTITY introducción SYSTEM “http://siul02/introduccion.xml”>
DTD. Definición de entidades
• La entidad parámetrosolo puede aparecer en DTD. La forma de distinguirlos de entidades generales es por el uso del símbolo % en su declaración y una sintaxis diferente
<!DOCTYPE ejemplo [
<!– declaración de una entidad parámetro -->
<!ENTITY % entidad-ejemplo “ <! ELEMENT ejemplo (#PCDATA)>” >
<!– uso de la entidad parámetro --> %entidad-ejemplo; ]>
Limitaciones de los DTD
• No se puede declarar el tipo de elementos
• Es difícil usar el mecanismo DTD para especificar conjuntos desordenados de subelementos
• Las DTD se incluyen al principio del documento o se pone al principio la dirección donde se puede encontrar.
• Un DTD proporciona sólo información descriptiva para entender cómo se relacionan los elementos - raíz, padre, hijo, obligatorios u opcionales – entre si.
• Tiene su propia sintaxis por lo que requiere procesadores especializados.
Espacios de nombres
• Puesto que los documentos XML se diseñan para su intercambio entre aplicaciones se tiene que introducir un mecanismo de espacio de nombres para permitir a las organizaciones especificar nombres únicos globalmente para que se usen como marcas de elementos en los documentos.
• La idea es anteponer cada etiqueta o atributo con un identificador de recursos universal.
• Se puede definir una abreviatura para los identificadores.
• Un documento puede tener más de un espacio de nombres, declarado como parte del elemento raíz.
Espacios de nombres ¿Por qué y que son?
• Los vocabularios de marcas se deben poder reutilizar • Para evitar colisiones• Un espacio de nombre XML es una colección de nombres, identificados por una referencia URI, que se emplea en documentos XML como nombres de elementos y nombre de atributos.
• Dos referencia URI son idénticas si son iguales todos sus caracteres.
• Los nombres de elementos y atributos aparecen con un prefijo: elemento o atributo
Espacios de nombres
• Se utiliza un atributo especial para declarar el espacio de nombre
DTD
<?xml version= “1.0” >
<!ELEMENT UM:BOOK (UM:Title, …) >
<!ATTLIST UM:BOOKxmlns:UM CDATA #FIXED “http://www.um.es/BOOK”> <!ELEMENT UM:Title (#PCDATA) >
XML
<?xml version= “1.0” >
<!DOCTYPE UM:BOOK SYSTEM “UM.dtd”> <UM:BOOKxmlns:UM=“http://www.um.es/BOOK”>
<UM:Title> Titulo </UM:Title> </UM:BOOK>
• Con DTD no se puede usar espacios de nombres por defecto • Con XML Schemas el uso de espacios de nombre es completo
Espacios de nombres a utilizar
• ABD: http://www.Infor.es
• A: http ://www.Presi.es
<ADB: AlumnoBD>
<A: Alumno>
4. XML Esquema
• Lenguaje de definición de datos avanzado que
se utiliza para describir la estructura (elementos,
tipos de datos, tipos de relación, intervalos y
valores…) de documentos XML
• Usa la misma sintaxis que los documentos XML
(para la verificación no se necesitan
procesadores especializados)
Esquema XML
• Objetivo: Superar las deficiencias de los DTD – Permite crear tipos definidos por el usuario
– Permite que el texto que aparece en los elementos esté restringido a tipos específicos
– Permite restringir los tipos para crear tipos especializados – En el documento XML habría que hacer una referencia al
esquema XML
– Con el esquema XML una compañía podría validar los datos de valores que pudieran estar fuera del limite, fechas incorrectas, valores válidos, etc.
Elemento Schema
• El documento XML que define un esquema contiene un elemento schema: <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace =" http://www.Infor.es " … </xsd:schema>
• El espacio de nombre http://www.w3.org/2001/XMLSchema contine los nombre de los elemento usados en los esquemas
• El atributo targetNamespace indica el espacio de nombres sobre el que actuan las restricciones definidas en el esquema
Definición de elementos
Sintaxis de los elementos
<xsd:element name =“[Nombre del Elemento]“ type = [tipo de elemento] [Opciones ..]>
Ejemplo: <xsd:element name=“direccion“ type =“xsd:string”/> Tipos:
String boolean decimal float double duration dateTime time date
gYearMonth gYear gMonthDay gDay gMonth hexBinary base64Binary anyURI QName NOTATION REF:
Definición de elementos simple
Los elementos pueden ser simples o complejos
Ejemplo de un elemento simple:
<xsd:simpleType name =“miEntero “> <xsd:restriccion base =“integer“>
<xsd:minInclusive values =“0”> <xsd:maxInclusive values =“999999”> </xsd:restriccion>
</xsd:simpleType >
Definición de elementos complejo
Los elementos pueden ser complejos y se emplea cuando:
• El tipo incluyeatributos • El tipo contiene otros atributos Contenido vacío
<xsd:complexType name =“TipoPrecioInt “> <xsd:attribute name =“moneda“ type=“string” /> <xsd:attribute name =“valor“ type=“decimal” /> </xsd:complexType>
Permite definir un elemento con contenido vacio
Uso: <elemento name=“precioInternacional” type=“TipoPrecioInt ” <precioInternacional moneda=“EUR” valor = “426.45”> <precioInternacional moneda=“DOLAR” valor = “413.52”>
Definición de elementos complejo
Contenido basado en un tipo simple
Ej:<precioInternacional moneda=“EUR”> 426.45 </precioInternacional >
<xsd:complexType name =“TipoPrecioInt“> <xsd:simpleContect>
<xsd:extension base =“decimal“>
<xsd:attribute name =“moneda“ type=“string” /> </xsd:extension>
</xsd:simpleContect> </xsd:complexType >
Definición de elementos complejo
Modelos de contenido complejos
• Se emplean para especificar los elementos que pueden aparecer dentro de otro .
• La ocurrencia de cada elemento se especifica con minOccurs y maxOccurs.
• Modelo de contenido:
– Sequence: cada elemento debe aparecer en el orden y cardinalidad indicados .
– Choice: puede aparecer uno de los elementos indicados – All: debe aparecer todos los elementos una sola vez, en cualquier
orden.
– Group: se referencia un grupo que esta definido en algun otro lugar
Ejemplo de XML Esquema
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace=" http://www.Infor.es " <xsd:element name=“AlumnosFISS"> <xsd:complexType> <xsd:sequence><xsd:element name=“AlumnosBD " type=“Alumno“ minOccurs=“0” maxOccurs="unbounded"/> <xsd:element name=“AlumnosIA" type=“Alumno"minOccurs=“0” maxOccurs="unbounded"/> </xsd:sequence>
</xsd:complexType> </xsd:element >
<xsd:complexType name=“Alumno"> <xsd:sequence>
<xsd:element name=“ Nombre" t y p e = "xsd:string "/> <xsd:element name=“Edad" t y p e = "xsd:number"/> <xsd:element name=“Asignatura" maxOccurs=“unbounded”/> <xsd:attribute name = “DNI” type = “xsd:number ”/>
<xsd:complexType name=“Asignatura"> > <xsd:sequence>
<xsd:element name=“Titulo" type="xsd:string "/> <xsd:element name=“ Cuatrimestre " type="xsd:number"/> </xsd:sequence> </xsd:complexType> </xsd:sequence> </xsd:complexType> </xsd:schema>
5. Lenguajes de consultas
• Xpath: para expresiones de rutas de acceso.
• Xquery: Estándar para consultar datos XML
• En todos los lenguajes se usa un modelo de
XPath
• Trata partes de un documento XML mediante expresiones de rutas de acceso.
Secuencia de pasos de ubicación separados por /(hijo directo) //(descendiente de cualquier nivel) (las expresiones se evalúan de izqda a dcha)
Otras características:
– La selección de predicados puede seguir cualquier paso en una ruta y están contenidos entre corchetes. – Proporciona varias funciones y operadores que se
pueden usar como parte de predicados.
Ejemplo documento XML
<AlumnosFISS><AlumnosBD> <Alumno DNI= 4.000>
<Nombre> Juan </Nombre> <Edad> 18 </Edad> <Asignatura> <Titulo> DDB </Titulo> <Cuatrimestre> 1 </Cuatrimestre> </Asignatura> <Asignatura> <Titulo> ABD </Titulo> <Cuatrimestre> 2 </Cuatrimestre> </Asignatura>
</Alumno> <Alumno DNI = 5.000>
<Nombre> Maria </Nombre> <Edad> 18 </Edad> <Asignatura> <Titulo> DBD </Titulo> <Cuatrimestre> 1 </Cuatrimestre> </Asignatura> <Asignatura>
<Titulo> TAMI </Titulo> < -- curso 2005--> <Cuatrimestre> 2 </Cuatrimestre> </Asignatura> </Alumno> </AlumnosBD> <AlumnosIA> <Alumno DNI= 6.000>
<Nombre> Pepe </Nombre> <Edad> 20 </Edad> <Asignatura>
<Titulo> MAC1 </Titulo> <Cuatrimestre> 1 </Cuatrimestre> </Asignatura>
<Asignatura> <Titulo> MAC2 </Titulo> <Cuatrimestre> 2 </Cuatrimestre> </Asignatura>
</Alumno> <Alumno DNI = 7.000>
<Nombre> Lucrecia </Nombre> <Edad> 21 </Edad> <Asignatura> <Titulo> IA </Titulo> <Cuatrimestre> 1 </Cuatrimestre> </Asignatura> <Asignatura> <Titulo> MAC2 </Titulo> <Cuatrimestre> 2 </Cuatrimestre> </Asignatura>
</Alumno> </AlumnosIA>
</AlumnosFISS>
Ejemplo. Vista en forma de árbol
AlumnosBD Alumno “DNI” Alumno Nombre Edad AlumnosFISS Titulo Cuatrimestre Asignatura AlumnosIA Alumno Alumno
Ejemplo. XPath
• Ruta de Acceso– Obtener los nombres de los alumnos de BD AlumnosFISS/AlumnosBD/Alumno/Nombre <Nombre> Juan </Nombre> <Nombre> Maria </Nombre>
– Obtener los nombres de los alumnos de la FISS AlumnosFISS//Alumno/Nombre <Nombre> Juan </Nombre> <Nombre> Maria </Nombre> <Nombre> Pepe </Nombre> <Nombre> Lucrecia </Nombre>
• Predicado sobre ruta de acceso
– Obtener las asignaturas del primer cuatrimestre //Asignatura [Cuatrimestre=1]
<Asignatura> <Titulo> DBD </Titulo> <Cuatrimestre> 1 </Cuatrimestre> </Asignatura> <Asignatura> <Titulo> DBD </Titulo> <Cuatrimestre> 1 </Cuatrimestre> </Asignatura> <Asignatura> <Titulo> MAC1 </Titulo> <Cuatrimestre> 1 </Cuatrimestre> </Asignatura> <Asignatura> <Titulo> IA </Titulo> <Cuatrimestre> 1 </ Cuatrimestre> </Asignatura>
Xquery
• Desarrollado por W3C
• Se organizan las consultas en expresiones FLWR (For,Let,Where , Return )
–For. Variables cuyos valores son los resultados de expresiones Xpath (from) (enlaces a nodos individuales)
–Let. Permite asignar expresiones complicadas a nombres de variables. (enlaces a colecciones de nodos)
–Where. Ejecuta comprobaciones adicionales sobre las tuplas
obtenidas por For
–Return. Permite la construcción de resultados en XML.
• Las expresiones Xquery FLWR se pueden anidar en la cláusula Return .
Ejemplos
• Obtener el nombre de los alumnos que cursan DBD
For $a in AlumnosFISS/AlumnosBD/Alumno Where
AlumnosFISS/AlumnosBD/Alumno/Asignatura[Titulo=“DBD”] Return <Nombre> $a </Nombre>
• Obtener el título de las asignaturas del 2.
cuatrimestre
For $a in //Asignatura
Where //Asignatura[Cuatrimestre=“2”] Return <Titulo> $a </Titulo>
Ejemplo
• Nombre de los Alumnos cuya edad es menor
que la media
Let $a: avg (//Edad)
For $b in //Alumnos
Where //Alumnos/Edad < $a
Return <Nombre> $b </Nombre>
6. Almacenamiento de Datos en XML.
Alternativas
• Bases de Datos Relacionales
– Almacenamiento en cadena – Representación en árbol – Asignación a Relaciones
• En Sistemas No Relacionales
– Almacenamiento en archivos planos – Almacenamiento en una BD XML
Almacenamiento de Datos en XML.
Alternativas
• Bases de Datos Relacionales
– Almacenamiento en cadena. No es posible consultar los datos directamente. Solución parcial: almacenar distintos tipos de elementos en relaciones diferentes.
Dato ID <alumno><nombre>Elena</nombre><edad>19</edad><asignatura><titulo>Inteligencia … 2 <alumno><nombre>Antonio</nombre><edad>19</edad><asignatura><titu lo>Inteligencia … 1 Dato ID <alumno><nombre>Maria</nombre><edad>18</edad><asignatura><titulo >DBD</titulo> … 2 <alumno><nombre>Juan</nombre><edad>18</edad><asignatura><titulo>DBD</titulo> … 1 ALUMNOSBD ALUMNOSIA
Almacenamiento de Datos en XML.
Alternativas
Representación en árbol.Los datos XML se pueden modelar como un árbol y almacenar mediante el uso de un par de relaciones
• Nodos(id,tipo,etiqueta,valor) • Hijo(id_hijo,id_padre)
Ventaja: trasladar consultas XML a consultas relacionales. Inconveniente: cada elemento se divide en muchas piezas.
Alumno Elemento 3 18 Edad Elemento 2 Juan Nombre Elemento 1 valor Etiqueta Tipo ID 3 2 3 1 ID_padre ID_hijo
Almacenamiento de Datos en XML.
Alternativas
– Asignación a Relaciones.Los elementos XML cuyo esquema es conocido se asignan a relaciones y atributos. Los elementos cuyo esquema es desconocido se almacenan como cadenas o como una representación en árbol.
A2 18 Maria 2 A1 18 Juan 1 A3 19 Antonio 3 A4 19 Elena 4 Asignaturas Edad Nombre ID ALUMNOS Asignatura Elemento A1 1 Cuatrimestre Elemento AA2 DBD Titulo Elemento AA1 valor Etiqueta Tipo ID A1 AA2 A1 AA1 ID_padre ID_hijo
Ejemplo (ORACLE)
Oracle permite crear una estructura en arbol XML a partir de una estructura plana Relacional.
SELECT XMLElement (“Pelicula”,Titulo) FROM Pelicula;
XMLELEMENT (“PELICULA”, TITULO) <Titulo> Mar Adentro </Titulo> <Titulo> Bombon </Titulo> ……….
Almacenamiento de Datos en XML.
Alternativas
• En Sistemas No Relacionales
– Almacenamiento en archivos planos
Inconveniente: falta de independencia, ausencia de mecanismos de control de la integridad, seguridad y concurrencia.
– Almacenamiento en una BD XML
BDDOO o BD Relacionales con interfaz XML.
7. Presentación XML
• Uno de los principales beneficios de XML es
que separa la estructura de los datos de su
presentación y procesamiento.
Los mismos datos se pueden mostrar de diferentes formas
El lenguaje XSL (Lenguaje de Estilo Extensible) es una especificación utilizada para definir las reglas mediante las cuales los datos XML se formatean y despliegan
XSL
• La especificación XSL se divide en dos partes:
– XSLT Transformaciones de Lenguaje de Estilo Extensible
Mecanismo general que se utiliza para extraer y procesar datos de un documento XML y permitir su transformación en otro documento.
– XSL Hojas Estilo definen las reglas de aplicación a elementos XML