Tema6 Lenguajes de Marcas ASIR

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 54

LM T6: XML

TEMA 6: Extensible Markup Language. XML

Contenidos:

1. Introducción a XML
2. Estructura jerárquica
3. Documento XML
4. Elementos y atributos
5. Espacio de nombres
6. Verificar un documento XML. DTD.
7. Verificar un documento XML. XML Schemas
8. Acceso a la información de un archivo XML. XPath y XQuery
9. Presentación y transformación de documentos XML. XSL
10. Resumen.

Actividad.

XML nos va a permitir almacenar información y organizarla, … piensa una estructura para la siguientes cajas
¿Cuál pondrías tú dentro de otra o al lado? ¿y cómo? ☺
1. Introducción a XML

XML es el acrónimo del inglés eXtensible Markup Language o lenguaje extensible de marcas, utilizado para
almacenar datos en forma legible. Deriva del lenguaje SGML. Se ha estandarizado, convirtiéndose en uno de los
formatos más utilizados para intercambio de información

XML es un metalenguaje con el que se pueden definir lenguajes de marcado particulares adaptados a necesidades
concretas y determinadas. Es decir, no tiene un conjunto fijo de etiquetas, como ocurría con HTML, sino que los
desarrolladores pueden definir sus propias etiquetas, según sus necesidades.

XML no se centra sólo en Internet, sino que se usa también como lenguaje para el intercambio de información
estructurada entre diferentes aplicaciones y plataformas. Se puede utilizar para intercambiar información entre bases
de datos, aplicaciones ofimáticas e incluso entre distintos sistemas operativos.

El documento .xml, por sí mismo no es visible en el navegador, ya que es un documento que almacena datos, no
los presenta por pantalla. Para poder visualizar los datos de un documento .xml, existen varias formas que se
verán más adelante.
2. Estructura jerárquica:

El documento XML, se organiza de forma jerárquica. Existe un elemento raíz y de él salen “ramas”. La estructura
se asemeja a un árbol invertido. Es más, al documento XML, también se le conoce como árbol XML y suele tener
una extensión .xml.

Dentro del arbol se habla de nodo raíz, descendientes, ascendientes, hermanos, hijos, padres… etc
A los nodos que tienen hijos, se les denomina nodos intermedios o ramas, a los que no tienen hijos, finales u
hojas.

Hay que tener en cuenta que el lenguaje XML es case sensitive, es decir, distingue entre mayúsculas y
minúsculas. No es la misma etiqueta <nombre> que <Nombre>.

Ejemplo:

Las etiquetas serían:


Actividad

Según la estructura del ejemplo anterior, podemos decir que:

• CURSO es____________ de ALUMNO

• Que ALUMNO es ___________ de NOMBRE

• Que APELLIDO2 es___________ de MATRICULA

• Que ALUMNO es ___________ de MATRICULA

• Que APELLIDO2 es __________de APELLIDO1

1-hermano,2-padre, 3-descendiente, 4-hijo, 5-hermano


Soluciones:
3. Documento XML:

Para explicar los distintos elementos y apartados que podemos encontrar en un documento XML, vamos a
estudiarlos a través de un ejemplo:

1. La primera línea que debe tener todo documeto XML es la instrucción de procesamiento incluída en la
primera línea del ejemplo. Las instrucciones de procesamiento empiezan por los símbolos <? y terminan
por los símbolos ?>
Ésta en concreto, sirve para indicar al procesador de XML, que el documento está en formato .XML

2. La segunda línea indica el fichero DTD que utiliza. El DTD es un archivo en que se describe la estructura
del documento XML (qué etiquetas se pueden utilizar, qué atributos, en qué orden, …). Es decir, un conjunto
de normas que se tienen que cumplir para que se considere válido. Más adelante veremos la diferencia
entre un documento válido y bien formado.

Un documento válido es aquel que cumple las normas establecidas en el DTD, que no es lo mismo que
un documento bien formado, que es aquel que cumple las reglas establecidas por el W3C para los
documentos XML.

Por ejemplo: Un documento bien formado es aquel que:

- Empieza por la instrucción de procesamiento para indicar la versión XML.


- Debe existir un único elemento raíz del que cuelga el resto
- Los elementos deben estar correctamente anidados.
- Los elementos y atributos son case sensitive
- Los valores de los atributos deben ir entre comillas dobles o simples.
- Etc.

Y un documento válido será aquel que por ejemplo

- No utiliza etiquetas no definidas en su DTD.


- Los atributos definidos no pueden tomar cualquier valor, solo los establecidos según su DTD.
- Un elemento sólo podrá ir dentro de otro si lo indica su DTD,
- Etc…

Existe otra técnica para valorar el documento que son los esquemas XML los esquemas XML. (schema). Al
igual que las DTDs, los schemas describen el contenido y la estructura de la información, pero de una forma
más precisa.

3. Esta línea es un comentario. Como se puede observar, tiene exactamente la misma forma que los
comentarios de HTML.

4. XML no es un lenguaje para mostrar elementos, sino de almacenamiento. Para poder mostrarlos podemos
utilizar hojas de estilos, tal y como se utilizaban en HTML, como se define en la línea 4.

Existe otra forma de hacerlo, a través de documentos xsl.

Ejemplo: <?xml-stylesheet type=”text/xsl” href=”presenta.xsl”>

5. Es el elemento raíz, a partir de él cuelgan los demás. Todos los elementos están contenidos dentro de esta
etiqueta.
6. Elemento no raíz.
7. Atributo
8. Cierre de elemento no raíz.
9. Cierra de elemento raíz.
4. Elementos y atributos:

Los elementos son las unidades que queremos describir; aquello que tiene un contenido.

Ejemplo:<dni> 54569895Z </dni>

Las etiquetas sirven para describir a los elementos. Son como las etiquetas de HTML, aunque el nombre de la
etiqueta, o sea, el elemento no está predefinido, lo crea el desarrollador de la página XML, según sus
necesidades.

En el ejemplo anterior, <dni> sería la etiqueta de apertura y </dni> la etiqueta de cierre.

El dato es el contenido encerrado entre las etiquetas de apertura y cierre, en este 54569895Z.

Tipos de elementos

• Elemento raíz, contiene a todos los demás. También es denominado elemento documento. Se abre al pricipio
del documento, antes de cualquier otro elemento, y se cierra en la última línea.

• Elementos con contenido. Son los más corrientes y como se ha dicho anteriormente, la unidad básica de los
documentos HTML.

<nombre> Adolfo </nombre>

Dentro del contenido del dato podemos encontrar caracteres de escape, como el salto de línea (\n), tabulador
(\t), espacio (\s), retorno de carro (\r) , etc.
También hay que tener en cuenta, que dentro de las etiquetas, en el contenido, los espacios “cuentan”, por lo
tanto no es igual el valor.

<nombre> Antonio </nombre> ≠ <nombre> Antonio </nombre>

En el texto, también nos podemos encontrar con caracteres especiales que utilizábamos en HTML

&amp; &
&lt; <
&gt; >
&quot “

• Elementos sin contenido. No tiene etiqueta de cierre, se cierra en la misma etiqueta de inicio. Estos tipos de
elementos pueden contener atributos.

Ejemplo: <br/>
Nombres para los elementos.

En XML, existen unas normas a la hora de definir los elementos:

• Debe comenzar por una letra o el carácter subrayado ( _ )


• Después del primer carácter pueden aparecer letras o números y algunos caracteres especiales, subrayado,
coma y punto y coma.
• No puede tener espacios en blanco, no otros tipos de caracteres especificados anteriormente.

Actividad

Indica qué nombres de elementos son correctos (verdadero) o incorrectos (falso)

• <año nacimiento>

Verdadero Falso

• <movil/fijo>

Verdadero Falso

• <año_nacimiento>

Verdadero Falso

• <1erPuesto>

Verdadero Falso

• <alumn@>

Verdadero Falso

• <Correo_Electronico>

Verdadero Falso
1-falso ,2-falso , 3-verdadero, 4-falso, 5-falso, 6-falso
Soluciones:
Actividad
Crea un documento XML que almacene información de una biblioteca. Los datos almacenados de cada libro serán
Nombre, Autor y Fecha de publicación

Solución

Esta es una posible solución. Las soluciones dependerán de los libros almacenados.

Actividad

Realizar un documento XML que contenga información de 4 asignaturas (nombre, profesor, clase, ciclo).
Atributos
Los atributos son una manera de incorporar propiedades a los elementos de un documento.

Ejemplo: <libro tipo=”misterio”> Sherlock Holmes </libro>

Todos los valores de los atributos deben ir entre comillas. Si hay más de un elemento en la misma etiqueta, el
orden en que aparezcan no es relevante. No se debe utilizar un atributo para contener información que puede ser
a su vez dividida.

Si una etiqueta tiene más de un atributo el orden de éstos es irrelevante.

Actividad

Modifica el fichero de biblioteca para que añada al título los atributos “tipo de encuadernación” que podrá tener los
valores pasta_dura o pasta_blanda y el idioma

Añade también un nuevo campo “fecha de préstamo” que tendrá los atributos día, mes y año.

Solución
El resultado en el navegador será
5. Espacio de nombres

Los espacios de nombres también conocidos como name spaces, permiten dar un nombre único a cada elemento,
indexándolos según el nombre del vocabulario adecuado. Además, están asociados a una URI que los identifica de
forma unívoca.

<prefijo:nombre_etiqueta> </prefijo:nombre_etiqueta>

Antes de poder utilizar un prefijo de un espacio de nombres, para resolver la ambigüedad de dos o más etiquetas,
es necesario declarar el espacio de nombres.

Su sintaxis es la siguiente:

<conexion>://<direccionservidor>/<apartado1>/<apartado2>/...

Ejemplo:

Supongamos que queremos combinar estos dos documentos xml en uno sólo. Tendremos que especificar
espacios de nombres para evitar la ambigüedad del elemento carta.
6. Verificar un documento XML. DTD

El DTD (Document Type Definition – Definición de Tipo de Documento) indican los elementos que aparecen en el
documento .xml, el orden, si son optativos, u obligatorios, los atributos, etc.

Como dijimos anteriormente, no es lo mismo un documento bien formado que un documento válido

Estructura y elementos de un DTD

Los documentos DTD, pueden aparecer de forma interna, dentro del documento .xml, o de forma externa en ficheros
de extensión .dtd

Ejemplo:
Si tenemos un documento, cuyo elemento raíz es <curso>, para definir en el .xml
- De forma interna:

< ! DOCTYPE curso [elementos] >


- De forma externa:

<!DOCTYPE curso SYSTEM “ficherorutas.dtd”>


Componenetes de un DTD

Elementos

Los elementos que contendrá el documento XML se definen con la sintaxis siguiente:

<!ELEMENT nombre_elemento (contenido)>

El nombre del elemento tiene que ser el mismo que el correspondiente del documento XML.

También habrá que especificar las reglas de (contenido).

- Puede ser, texto, en contenido tendremos que escribir #PCDATA.

Ejemplo:

En el DTD aparecerá <!ELEMENT nombre (#PCDATA)>

Y en el XML: <nombre>María García Pérez</nombre>

- Puede ser un elemento vacío EMPTY.

Ejemplo:

En el DTD aparecerá <!ELEMENT FECHA_NAC EMPTY>

Y en el XML: <FECHA_NAC dd="17" mm="05" aa="2003" />

- Puede aparecer el elemento ANY

Puede ser, “lo que sea”, ANY, que indica que será un texto y que no se aplicarán sobre él ninguna comprobación
sintáctica. Poco utilizado y no es muy apropiado. No se debe utilizar en la versión definitiva del DTD.
Si el contenido del elemento está constituido por otros elementos, se deben escribir sus nombres separados por
comas (,)

Ejemplo: <!ELEMENT PRODUCTO (NOMBRE, PRECIO)>

Actividad

Crea el fichero DTD que valida el siguiente fichero XML.

Solución

Para definir un elemento, además de añadir los elementos que lo constituyen hay que añadir su cardinalidad, es
decir, el número de veces que aparecerán.

Ejemplo:
<!ELEMENT productos (producto+)>

<!ELEMENT producto (código, nombre, precio)>

El elemento productos contendrá al menos un elemento producto.


Ejemplo:
<!ELEMENT resultado_partido (1 | x | 2 )>

Este elemento muestra el resultado de un partido de futbol. Sólo hay un posible resultado o 1 o x o
2.

Ejemplo: <!ELEMENT artículo (título, fecha?, (párrafo+, grafico)*)>

En el ejercicio muestra un título debe aparecer una vez, una fecha que puede aparecer o no, 1 o n
párrafos, (pero al menos uno), y esta estructura de párrafos y gráfico se puede repetir 0 a n veces.

Actividad

Crea un XML que almacene datos de profesores, donde se recoja para cada uno su nombre o apodo y la materia
que imparte.

Solución

Según el DTD interno, el elemento profesores está compuesto por 0 o más elementos profesor, que cada elemento
profesor está formado por dos elementos (nombre y materia) o (apodo y materia), nombre, apodo y materia son
terminales y no están compuestos por otros elementos.
Atributos

Un atributo permite añadir información adicional a los elementos de un documento. La principal diferencia con los
elementos, es que los atributos no pueden tener subatributos.

La sintaxis para definir atributos sería la siguiente:

<!ATTLIST elemento atributo tipo valor_defecto>

Donde elemento será el nombre del elemento, atributo el nombre del atributo .

El tipo puede ser:

• CDATA, caracteres que no contienen etiquetas.


• ENTITY, el nombre de una entidad (que debe declararse en el DTD)
• ENTITIES, lista de nombres de entidades (que deben declararse en el DTD
• Enumerado. Se muestran distintos valores, de los que el atributo sólo tomará uno.
• ID: Es un valor para identificar de forma única a un elemento, por lo que un elemento sólo podrá tener un atributo
ID.
• IDREF: Un atributo, cuyo contenido, debe ser el valor del atributo ID de otro elemento.
• NMTOKEN: El valor del atributo no puede llevar caracteres blancos en su interior, y los caracteres blancos en el
principio y final, serán obviados.
• NMTOKENS: Igual que el anterior, pero puede haber varios y deben ir separados por espacios.

El valor por defecto será:

▪ Un valor textual entre comillas, que será el valor por defecto del atributo.
▪ #IMPLIED, que indica que el atributo es opcional y no se le asigna ningún valor por defecto.
▪ #REQUIRED, que indica que el atributo es obligatorio, pero no se le asigna un valor por defecto.
▪ #FIXED, indica que el atributo es obligatorio y se le asigna un valor por defecto que además es el único
valor que puede tener el atributo.
Ejemplo:

Actividad
Crea el DTD para el siguiente archivo XML

Solución
Entidades generales:

Una entidad es una representación de un carácter o conjuntos de caracteres, que siempre va precedida
de &, y cerrada con punto y coma (;). Nos permiten definir constantes en un archivo XML.
Para poner un ejemplo de una unidad en html, &euro; es la entidad del símbolo €

Al procesar el documento XML, el intérprete sustituye la entidad por el valor que tiene asignado en el
DTD.

Existen cuatro tipos de entidades:

Actividad:

Para los siguientes ejercicios, debes leer el DTD, comprobar el XML, e indicar cuál es el problema del XML
respecto al DTD. Luego debes indicar qué cambios habría que hacer en el DTD para que estuviese correcto
el código XML original.
Comprobar la sintaxis y validar un archivo XML con un DTD

Para comprobar si el documento XML se adapta al DTD, podemos utilizar distintas herramientas. En concreto, en
la herramienta Notepad++ existe un plugin para realizar esta función.
Para comprobar si el documento está bien formado. Es decir, si su sintaxis es correcta, lo haremos desplegando el
plugin instalado.

Si lo que queremos comprobar es si el archivo es correcto según el DTD, lo haremos:


Existen herramientas y webs para comprobar si el documento está bien formado o si es correcto.

Por ejemplo, la herramienta XML Copy Editor es software libre y permite saber si está bien formado el
documento. Se puede descargar de http://xml-copy-editor.sourceforge.net/

También existen sitios webs online para poder validar los documentos XML como
https://www.xmlvalidation.com
7. Verificar un documento XML. Schemas XML
Una hoja. Hasta ahora hemos visto que podemos validar un fichero XML con un DTD, pero este tipo de
validación tiene ciertas limitaciones, ¿qué ocurre cuando los valores de los elementos y atributos de dicho XML
tiene que tener un tipo de dato deteterminado, tener ciertos valores o cumplir restricciones que no se pueden
reflejar en un archivo DTD? En ese caso se utilizan schemas XML.

Los XML schemas son ficheros de texto plano con la extensión .xsd

Las ventajas de los schema XML frente a los DTD son:

• Permiten definir el tipo de datos de los elementos: (integer, decimal, string, date, …)
• El schema tiene una estructura XML. Su extensión es .xsd. y se puede validar igual que el xml a diferencia
del DTD que no es posible validarlo con las herramientas vistas.
• Permite definir tipos de datos y crear restricciones de los tipos de datos generales (facetas)

Para relacionar un XML con un scherma, tendremos que añadir en el elemento raíz del mismo un enlace
a dicho documento de extensión .xsd

En el documento xsd tendremos que añadir la línea que define el esquema de la siguiente forma con
Componenetes de un Schema

Elementos

Los elementos se declaran con xs:element y hay que indicar los tipos de cada elemento:
Para indicar un tipo simple (básico), usamos xs:simpleType. Los más comunes son string para texto, integer para
números sin decimales, decimal para números con decimales, date para fecha…Para ver todos los tipos de datos
simples consulta el enlace:

https://msdn.microsoft.com/es-es/library/cc498790(v=vs.71).aspx

Para indicar un tipo complejo usamos xs:complexType.

Cuando un elemento está compuesto por otros elementos, además de indicar que es un tipo complejo, dentro de la
etiqueta complexType, hay que especificar la secuencia de elementos que lo componen con xs:sequence.
El orden ha de ser el mismo que en el xml.
Ejemplo:
Si pueden aparecer unos elementos u otros (o exclusiva) utilizamos xs:choice

Para realizar agrupaciones, de elementos y de atributos para hacer referencia a ellas utilizamos xs:group
Si un tipo de dato xs:complexType mezcla texto con elementos tiene que contener el atributo mixed con valor true.
xs:all. Indica que no importa el orden de los elementos, pero sólo pueden aparecer una vez.

Actividad:

Crea el fichero asociado xsd para este fichero xml


Solución

Facetas

Si queremos restringir los valores de un tipo básico usamos facetas con xs:restriction. Algunas de las restricciones
más usadas son:

Enumeration: Restringe a un determinado conjunto de valores.


Ejemplo:
length, minlength, maxlentg:. Se utilizan para controlar la longitud del dato.
Ejemplo:

(max/min)(In/Ex)clusive. Límites superiores/inferiores del tipo de datos. Cuando son Inclusive el valor que se
determine es parte del conjunto de valores válidos para el dato, mientras que cuando se utiliza Exclusive, el valor
dado no pertenece al conjunto de valores válidos.
Ejemplo:

totalDigits, fractionDigits. Número de dígitos totales y decimales de un número decimal.


Ejemplo:
Pattern. Permite construir máscaras que han de cumplir los datos de un elemento.
• [A‐Z a‐z] para letra,
• [A‐Z] para letra mayúscula,
• [a‐z] letra minúscula,
• [0‐9] digito decimal,
• /D cualquier carácter excepto digito decimal,
• (A) cadena que coincide con A,
• A|B cadena que coincide con A o B,
• A+ una o más veces la cadena, A? una o cero veces la cadena,
• A* cero o más veces la cadena,
• [abcd] alguno de los caracteres entre corchetes,
• [^abcd] cualquier carácter que no está entre corchetes.

Ejemplo:
Actividad:

Crea el fichero asociado xsd para este fichero xml

Solución
En los ejercicios anteriores hemos ido definiendo los tipos a la vez que los elementos.
Esto puede ser complejo si hay gran cantidad de elementos anidados.

En estos casos, para dar claridad al código, se pueden definir los tipos y luego a la hora de crear el elemento,
utilizar un tipo ya definido.

Ejemplo:

A la hora de definir elementos anidados, podemos definir elementos más simples y luego hacer referencia a ellos.
Ejemplo:
Cardinalidad y ocurrencia de elementos.

Cuando definimos un elemento en un esquema, podemos indicar el número de veces que puede aparecer.
• minOcurrs= Número mínimo de veces que puede aparecer un elemento. Si el valor es 0, el elemento será
opcional y puede no aparecer.
• maxOcurrs= Número veces máximo que puede aparecer un elemento (unbounded) significa que no hay
límite.
• fixed= Valor fijo para el elemento.
• default =Valor por defecto del elemento.

Ejemplo.
En el ejercicio anterior el elemento libro sólo puede aparecer una vez en el XML, si intentamos añadir otro elemento
libro el parser del XML nos dará un error.
Para que pueda aparecer todas las veces que queramos, en el xsd debemos definir el elemento libro de la siguiente
manera:

Actividad:

Crea un xsd para este fichero xml teniendo en cuenta que, publicación sólo puede tener 4 dígitos y que el rango
de año de publicación va desde 1900 a 2017
Solución

Atributos

Si un elemento, tiene atributos, es de tipo complejo.


Los atributos se definen dentro del elemento de la siguiente forma:
Puede ir acompañado de los siguientes atributos:
• default=valordefecto. Valor por defecto del atributo
• fixed=valorfijo. Es un valor que será el mismo siempre en el documento.
• use = (optional | prohibited | required). Opcional, no puede usarse, obligatorio.

Actividad:

Realiza el esquema correspondiente a este archivo XML


Solución
Documentación del esquema.

Para incorporar cierta documentación al esquema (quién es el autor, limitaciones de derechos de autor, utilidad del
esquema, etc.), en lugar de usar los comentarios, XML Schema tiene definido un elemento xs:annotation. Este
elemento a su vez puede contener una combinación de otros dos que son:

o xs:documentation, además de contener información del esquema puede contener elementos XML bien
estructurados.
También permite determinar el idioma del documento mediante el atributo xml:lang y es usado para generar
una ayuda contextual para cada elemento declarado en el esquema.

o xs:appinfo, se diferencia muy poco del elemento anterior, aunque lo que se pretendió inicialmente era que
xs:documentation fuese legible para los usuarios y que xs:appinfo guardase información para los programas
de software.

Para validar un schema, lo podemos hacer directamente con el editor como por ejemplo el Notepad++
O también podemos validarlo de forma online por ejemplo:
8. Acceso a la información de un archivo XML. XPath y XQuery

XPATH

XPath es un estándar de W3C, que nos permite acceder a partes de un documento XML basándonos en las
relaciones de parentesco entre los nodos del documento.
Una expresión XPath es una cadena de texto que representa un recorrido en el árbol del documento. Las
expresiones más sencillas se parecen a las rutas de los archivos de sistemas operativos.
Al Evaluar una expresión XPath se busca si hay nodos en el documento que se ajusten al recorrido indicado en la
expresión. El resultado de la búsqueda son todos los nodos que se adaptan a la expresión.

XPATH

En XPath no sólo los elementos son nodos, en realidad existen los siguientes tipos de nodos:
La ruta de localización del nodo raíz del documento, es la barra diagonal “/”.

Localización de atributos, para referirnos a ellos en XPath, se utiliza el símbolo “@” seguido del nombre del
atributo deseado.

Para evaluar expresiones Xpath podemos utilizar Notepad++ de la siguiente forma:

Ejemplo

En el ejemplo anterior de la biblioteca… ¿Cuál sería el resultado de la expresión /biblioteca/libro/autor?

Solución

El resultado son dos nodos de nombre autor con valor “María Gripe” y “Carlos Ruíz Zafón”
El acceso a los atributos se realiza siempre con el carácter @

En el ejemplo de la biblioteca, para acceder a las fechas de préstamo de los libros lo haríamos:

/biblioteca/libro/fechaprestamo/@dia

Obtendríamos tres atributos con los valores 13, 21 y 20 respectivamente.


´

Otros valores que se pueden añadir a una expresión:

• /: si está al principio de la expresión, indica el nodo raíz, si no, indica "hijo". Debe ir seguida del nombre de
un elemento.

• //: indica "descendiente"

• . : Nodo de contexto

• .. : Selecciona los nodos padre

• |: permite indicar varios recorridos.

Mediante las rutas de localización se pueden seleccionar varios nodos a la vez, pero el uso de predicados permite
seleccionar un nodo que cumple ciertas características.
Ejemplo:
/receta/ingredientes/ingrediente[@codigo=“1”]/nombre

En este caso se está indicando al intérprete que escoja, dentro de un fichero XML de recetas, el nombre del
ingrediente cuyo código tiene el valor “1”.
Actividad:

Para el siguiente documento XML escribe las expresiones XPath correspondientes para:
1. Nombres y apellidos de los contactos de la agenda.
2. Nombre e identificador de cada contacto.
3. Datos del contacto con identificador "p02".
4. Nombre del penúltimo contacto de la agenda.
5. Número de usuarios en la agenda que se llaman Roberto
Solución

1. //nombre | //apellidos
2. /agenda/persona/identificadores/nombre | /agenda/persona/@id
3. /agenda/persona[@id="p02"]/*/*
4. /agenda/persona[last()-1]/identificadores/nombre
5. count(/agenda/persona/identificadores[nombre="Roberto"])

XQUERY

XQuery es un lenguaje de consulta que permite extraer y procesar información almacenada en formato XML.
XQuery es a XML lo mismo que SQL es a las bases de datos relacionales. Cada consulta es una expresión que es
evaluada y devuelve un resultado.
XQuery ha sido construído sobre la base de Xpath
Las consultas XQuery pueden estar formadas por hasta cinco tipos de cláusulas diferentes, siguen la norma FLWER
(que se pronuncia "flower").

• FOR: asocia una o más variables con cada nodo que encuentre en la colección de datos.

• LET: vincula las variables al resultado de una expresión.


• WHERE: filtra tuplas producidas por las cláusulas.
• ORDER BY: ordena las tuplas generadas.

• RETURN: construye el resultado de la expresión

Al crear una sentencia XQuery se pueden usar funciones de distintos tipos:

◼ Funciones numéricas : floor(), ceiling(), round(), count(), min() o max(),avg(), sum(), …

◼ Funciones de cadenas de texto :concat(), String length(),startswith(), upper case(), lower case(),

◼ Funciones de uso general :empty(), exits(), distinct values(), ..

◼ Funciones creadas por el desarrollador.


Ejemplo:

En nuestro documento XML de la biblioteca, ejecutar la sentencia de consulta de los libros que se editaron después
del año 2000.

for $x in /biblioteca/libro where $x/publicacion>2000 return $x

Existen distintas herramientas para realizar consultas XQuery. Algunas herramientas son comerciales como
Oxygen XML editor o Altova aunque ambas tienen versiones de prueba de 30 días.

También existen herramientas online como http://www.xpathtester.com/xquery donde podremos realizar consultas
XQuery desde el navegador.
9. Presentación y transformación de documentos XML. XSL

Una hoja de estilo XSL se compone de dos partes: las plantillas (que indican los elementos XML que se deben
seleccionar) y las acciones (describen qué es lo que hay que hacer con los elementos seleccionados con la plantilla).

La sintaxis general de la plantilla y acción es:

<xsl:template match=’elemento_sel’>acción</xsl:template>

Aquí, elemento_sel es el elemento que se selecciona para llevar a cabo la acción sobre el. Por ejemplo:

<xsl:template match=’nombre’>acción</xsl:template>

Una hoja de estilo XSL se podría definir como una serie de reglas que determinan cómo va a ocurrir la
transformación entre un documento XML de entrada y un documento XML de salida. Cada regla se compone de
un patrón (pattern) y una acción o plantilla (template).

De este modo, cada regla afecta a uno o varios elementos del documento XML. El efecto de las reglas es recursivo,
para que un elemento situado dentro de otro elemento pueda ser también transformado.
Ejemplo:

discos.xml

discos.xsl
El resultado será la siguiente:

Orden xsl:for each


Esta orden es lo más parecido a un bucle que tiene XSL: realiza el código que le sigue aplicándolo una vez por
cada nodo.

Ejemplo:
discos.xml

discos3.xsl
Ejecución del ejercicio en el navegador:

La estructura xsl:for-each select se utiliza para hacer tantas repeticiones como etiquetas disco tengamos. En este
ejemplo, como tenemos 2 discos diferentes, saldrá por pantalla la información relativa a dichas 2 discos.
Orden xsl:sort

Podemos mostrar el contenido que nos interese del documento xml, y podemos mostrar dicha salida
ordenada por distintos campos, utilizando el comando .
Ejemplo:
En el anterior ejercicio se puede mostrar una salida por de publicación del disco, utilizando el comando
sort.
También puede hacerse por orden descendente:

Orden xsl:if
El condicional if, nos ayuda a mostrar el contenido del xml, si se cumple la condición establecida:
Ejemplo: Con el fichero de XML, de discos, sólo se mostrará los títulos de los discos de U2.
Actividad:

o Crea un fichero con la siguiente estuctura en XML, para almacenar la información necesaria para crear la
siguiente imagen:
b)Realizar la DTD correspondiente a dicho fichero.
c) Realizar el documento centro.xsl para mostrar la información del documento centro.xml por
pantalla con la forma:

d) Mostrar únicamente la información de la asignatura de BBDD (con una estructura if)


e) Mostrar la información de los módulos que imparte el profesor Luis. (con una estructura if)
10. Resumen.

En este tema hemos trabajado el lenguaje de marcas XML, y hemos visto la diferencia entre un documento válido
y bien formado.

Hemos definido los elementos que componen un fichero .XML, y creado ficheros DTD, para anexarlos y validar los
XML así como Schemas.

Para acceder al información de un documento XML hemos visto los estándares Xpath y XQuery, y con XLS,
hemos mostrado el contenido de XML, por pantalla, y hemos conseguido filtrar la información que nos interesaba y
ordenarla de forma ascendente o descendente.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy