UF2 Flashcards

1
Q
  1. Aplicación de los lenguajes de marcas a la

sindicación de contenidos (RSS)

A
  • RSS (Really Simple Syndication, Sindicación Realmente Simple), son las siglas correspondientes a una tecnología que tiene como función principal, compartir o distribuir la información que se encuentre en la web.
  • Es conveniente que, al principio, se haga uso de un software específico que esté diseñado para leer contenidos RSS (feed reader).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q
  1. La información que se encuentra disponible en un sitio web, se puede compartir de
    varias formas diferentes:
A

1) Una bastante sencilla es suscribiendo la fuente con un agregador de noticias.
2) Otra, si compartimos aquella información insertada en otros lugares web, así, la persona encargada de recibir las noticias, actúa también como emisor. De
esta forma, existe un proceso al que denominamos redifusión web.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q
  1. Por tanto, RSS hace referencia
A
  • Por tanto, RSS hace referencia a una técnica que podemos utilizar para conseguir extender aquellos contenidos que se encuentran en un sitio web. Es un lenguaje derivado de XML mediante el cual podemos construir los diferentes archivos que almacenan el contenido que se puede difundir.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q
  1. Atom
A
  • Es necesario, que señalemos también que existe otro programa que realiza las mismas funciones, como Atom, que deriva también de XML, aunque añade una serie de ventajas.
  • Estos dos lenguajes se utilizan para guardar diferentes contenidos que se deseen distribuir. Son distintos, ya que el primero (RSS) se refiere a la redifusión web mientras que el segundo, hace referencia a un archivo determinado que posee la información que se desea difundir.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q
  1. Entre sus ventajas principales, destacamos las siguientes:
A
  • Aquellos usuarios que utilicen este programa no necesitan hacer una comprobación para saber si la información está actualizada en los lugares en
    los que se encuentran los contenidos de interés.

− Sigue un formato para los datos de tipo texto plano. Presenta bastante rapidez a la hora de transmitir los datos por lo que es bastante recomendable para los dispositivos móviles.

− Ofrece la posibilidad de poder filtrar información de diferentes sitios sin perder tiempo utilizando la agrupación.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  1. Ámbitos de aplicación
A
  • La sindicación o redifusión web no está relacionado con los web blogs. Es un repositorio de contenidos compartiéndolo con otros usuarios o todo tipo de
    información XML.
  • De esta forma podemos ofrecer contenidos propios para que sean mostrados en otras páginas web de forma integrada. Esto hace que la página origen
    también se vea afectada positivamente. Todo tipo de datos se puede realizar la redifusión de contenidos web.
  • Para permitir la visualización de los contenidos debe
    suscribirte en el enlace web correspondiente. Desde el punto de vista de los suscriptores, la redifusión de contenidos permite, entre otras cosas, la actualización
    profesional.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q
  1. Estructura de los canales de contenidos
A
  • Siempre comienza con el siguiente prólogo:
    >?xml versión=”1.0” encoding=”utf-8”?>
    >rss versión=”2.0”>
  • La primera línea hace referencia a la declaración XML, que se encarga de definir la versión seleccionada para trabajar con XML junto con la codificación de caracteres
    utilizados. En este ejemplo, la versión seleccionada es la 1.0 de XML que utiliza los caracteres Unicode.
  • La segunda línea es la declaración de tipo de documento, que nos permite identificar el lenguaje que deriva de XML, en el ejemplo, RSS versión 2.0.
  • El contenido del código debe encontrarse entre las etiquetas: contenido
  • Y, a continuación, viene seguido del prólogo del documento en cuestión, que vendrá identificado entre:
    >channel>prólogo>/channel>
- Este elemento  puede contener uno o más elementos .
>?xml versión=”1.0” encoding=”utf-8”?>
>rss versión=”2.0”>
     >channel>
          >tittle>Hola mundo>/tittle>
          >link>...>/link>
          >description>...>/description>
          >item>
          ...
          >/item>
     >/channel>
>/rss>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q
  1. Elementos principales de un RSS: >channel> y >item>
A

1) >channel>
- Su función principal es describir la fuente RSS mediante tres elementos obligatorios, que son:
− >tittle>. Hace referencia al nombre del canal.
− >link>. Define el hipervínculo al canal.
− >description>. Se encarga de describir el contenido correspondiente al canal.

  • Este elemento >channel> tiene posibilidad de contener un elemento o varios >item>.
  • Esta lista que contiene aquellos elementos opcionales en >channel>: ELEMENTO / DESCRIPCIÓN
    • >category> Define una o más cateogrías para el canal.
    • >cloud> Permite información inmediata de los cambios en el canal.
    • >copyright> Notifica sobre el contenido con derechos de autor.
    • >docs> Indica una dirección para la documentación del formato utilizado.
    • >generator> Especifica el programa utilizado para generar el canal.
    • >image> Presenta una imagen cuando los agregadores muestren un canal.
    • >Language> Especifica el idioma en que está escrito en el canal.
    • >lastBuildDate> Define la fecha de la última modificación del contenido.
    • >link> Define el hipervínculo del canal.
    • >pubDate> Define la última fecha de publicación en el canal.
    • >rating> La valoración PICS del canal.
    • >skipDays>
    • >skipHours> Especifica los días/horas durante los cuales los agregadores deben omitir la actualización del canal.
    • >textInput> Especifica un campo de entrada de texto que aparece con el canal.
    • >ttl> Especifica el tiempo en minutos, que el canal puede permanecer en la caché, antes de actualizarse desde la fuente (“time to live”).
    • >WebMaster> Define la dirección e-mail del webmaster del canal.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  1. > item>
A
  • Cada elemento >item> cuenta con la posibilidad de poder definir un determinado artículo en el canal RSS.
  • En este caso, también debe contar con tres elementos
    fundamentales, como:
    • >tittle>. Hace referencia al título del artículo.
    • >link>. Define el hipervínculo al artículo.
    • >description>. Se encarga de describir el canal.
  • Los elementos opcionales más importantes de son los siguientes: ELEMENTO / DESCRIPCIÓN
    • >author> Especifica el email del autor del artículo.
    • >category> Define la categoría/s a las que pertenece el artículo.
    • >comments> Permite enlazar a los comentarios sobre ese tema.
    • >enclosure> Permite incluir un archivo multimedia.
    • >guid> Define un identificador único para el artículo.
    • >pubDate> Define la fecha de la última publicación para el artículo.
    • >source> Especifica una fuente para el artículo mediante un link.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q
  1. Tecnologías de creación de canales de contenidos
A
  • Para la creación de un canal de contenido, lo único que hace falta es un editor de XML y página web.
  • Para facilitar la creación de páginas de sindicación podemos utilizar las herramientas de Joomla o DRupal. Estos programas que permiten crear una estructura de soporte para la creación y administración de contenidos.
  • Presentan la ventaja de ser de código abierto y con implementación mayoritariamente en php, utiliza también servidores web Apache y gestores de bases de datos Mysql.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q
  1. Validación y publicación: Validación del archivo RSS
A
  • Después de haber creado un archivo RSS, ya podemos realizar la validación de dicho archivo mediante la herramienta de validación del W3C.
  • En la siguiente dirección podemos validar los distintos archivos desarrollados en RSS o Atom:
    https: //validator.w3.org/feed/
  • También contamos con la posibilidad de seleccionar entre las opciones:
    • Validación por URI, si hemos conseguido subir el archivo al servidor.
    • Validación pegando el archivo directamente.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q
  1. Publicación del archivo RSS
A
  • Una vez que ya hemos escrito el código y hemos realizado su validación correspondiente, debemos subirlo a un servidor web.
  • Para conseguirlo, debemos seguir una serie de pasos, que definimos a continuación:
    • Primero insertaremos el enlace en la página de inicio y debemos conseguir que apunte al archivo RSS. De esta forma, podremos consultarlo mediante el navegador.
    • Seguidamente, debemos insertar un elemento >link> para que los lectores RSS encuentren el archivo RSS para leerlo. Se suscriben a nuestro feed.
    • A continuación, enviamos la dirección URI correspondiente desde el archivo RSS hasta el sitio web determinado. Se catalogan y almacenan feeds para que los diferentes buscadores los puedan visitar.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q
  1. Directorios de canales de contenidos
A
  • Existen una serie de canales de contenidos de donde podemos coger la información que deseemos. Estos canales están catalogados por temática.
  • Por tanto, podemos suscribirnos al canal deseado, de esta forma se actualizará el contenido integrado en
    mi portal. Todo esto es gracias al lenguaje XML.
  • El geoportal de Infraestructuras de Datos Espaciales de España, es un listado de canales de Rss para suscribirnos a los que nos interesen.
    http: //www.idee.es/suscripcion-canales-rss
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q
  1. Agregación
A
  • Es necesario que el usuario disponga de un agregador.
  • Podemos diferenciar entre una gran variedad de lectores RSS, que vamos a clasificar en tres categorías
    distintas, que son:
    • Agregadores de escritorio. Aquellas que se pueden instalar en el ordenador de un usuario.
    • Agregadores en línea. No es necesario que el usuario las instale. Solo es necesario darse de alta en el sitio para utilizarlo.
    • Agregadores como plugins. Existen algunos navegadores, como FireFOX, Nestcape, Opera y algunos más, que lo incluyen entre sus programas para
    ofrecer un servicio al usuario.
  • Cuando el usuario ya ha seleccionado el agregador adecuado, tiene que seleccionar, a continuación, qué feeds o archivos RSS va a necesitar para poder llevar a cabo la correspondiente sindicación de contenidos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q
  1. Cómo utilizar RSS para ofrecer información
A
  • Para poder ofrecer una determinada información desde nuestro sitio web, es necesario un creador de contenidos que cuente con conocimientos sobre XML.
  • El código necesario a la hora de crear un feed (documento RSS) debe contener la información necesaria referente al sitio web. Esta información no varía, aunque, sus datos, se irán actualizando cada cierto período de tiempo.
  • Por tanto, estos datos, deben estar ordenados mediante las etiquetas de inicio y fin según el lenguaje XML. De esta forma, iremos creando nuestro feed propio que puede tener distintos ítems.
  • Cuando terminemos de crear el archivo RSS, debemos validarlo y comprobar que funciona correctamente. De esta forma, iremos registrando diferentes agregadores y así podremos comprobar cuántos usuarios están interesados por la información que ofrecemos a través del feed.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q
  1. Conversión y adaptación de documentos XML
A
  • Existen una serie de lenguajes, basados en XML, como es XSL (eXtensible Stylesheet Language) que consta de las siguientes partes:
    • XSLT. Este lenguaje, puede transformar aquellos documentos XML a diferentes formatos.
    • XPtah. Es un tipo de lenguaje funcional que puede tener acceso a determinadas secciones de un documento XML.
    • XSL- FO. Hace referencia al vocabulario XML para poder determinar las distintas semánticas de formateo.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q
  1. XSLT (eXtensible Stylesheet Language for transformations)
A
  • Es un lenguaje estándar de W3C que se recomienda por primera vez en 1999. Basado en XML, por lo que, podemos decir que, cada hoja de transformaciones es un documento XML bien formado.
  • Se trata de un lenguaje de programación (declarativo) que es capaz de generar documentos en diferentes formatos, como pueden ser: XML, HTML, texto, PDF, etc. partiendo de un documento XML.
  • Lo definimos como un lenguaje declarativo porque está basado en definir una serie de reglas o plantillas que deben ser aplicadas a un documento XML para conseguir transformarlo en la salida seleccionada.
  • Estas reglas, que suelen tener extensión .xls, unidas al documento .xml, se van a pasar como parámetros a un procesador XSLT que será el encargado de generar
    (como salida) el nuevo documento ya transformado.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q
  1. Técnicas de transformación de documentos XML: Hojas de estilos: CSS vs XSLT:
A
  • Existen dos familias diferentes de normas definidas por W3C: CSS y XSLT.• CSS
    - Ofrece la posibilidad de definir las propiedades asociadas a los diferentes elementos de marcado (letra negrita, de un tamaño determinado, con o sin bordes, etc.), aunque presenta una serie de inconvenientes como:
    − No puede cambiar orden de los elementos pertenecientes a un documento HTML.
    − No tiene permitido llevar a cabo distintas operaciones con los elementos.
    − Y los elementos no se pueden combinar entre ellos.• XSLT
    • Supera los inconvenientes anteriores ya que puede determinar el contenido que tiene un documento XML, y elegir el orden en el que se va a mostrar.
    • También cuenta con la posibilidad de llevar a cabo las distintas operaciones que sean necesarias.
    • Es posible decantarse por una de las dos o, incluso tenemos la opción de utilizar CSS y complementarlo con XSLT
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q
  1. Procesador XSLT
A
  • Formado por una serie de aplicaciones que permiten procesar aquellos documentos XML mediante las hojas de transformaciones XSLT.
    • Primero, el procesador XSLT lee un documento XML
    • A continuación, puede representar el documento mediante un árbol de nodos.
    • Estos nodos pueden ser: elementos, atributos, texto, comentarios, instrucciones o espacios de nombres. Los nodos actúan de la misma forma que
    un árbol (padres, hijos, ascendientes, etc.).
    • El procesador XSLT recorre y procesa nodo a nodo. El nodo que se está tratando en un instante determinado, se denomina nodo de contexto
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q
  1. Proceso de transformación
A
  • Desde XML podemos llevar a cabo las transformaciones a:
    • Texto
    • XML
    • HTML
  • Para llevar a cabo este proceso de transformación, debemos disponer del XML de partida junto con la hoja de estilos XLST.
  • Podemos llevarlo a cabo desde tres sitios diferentes:
    • En el servidor web. Utiliza una serie de lenguajes de servidor como pueden ser: PHP, JSP, etc. para aplicar la XSLT al XML, de tal forma que permite enviar de vuelta el HTML.
    • En el cliente web. En este caso, es el cliente el encargado de realizar las transformaciones necesarias mediante determinados programas, como puede ser JavaScript que cuenta con una serie de funcionalidades como pueden ser: tratamiento de documentos XML, transformaciones XSLT, etc.
    • En una aplicación diferente. Permite utilizar distintos programas independientes para llevar a cabo este proceso de transformación.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q
  1. Pasos para la transformación
A

− Debe analizar la hoja de instrucciones pasando a convertirse en una estructura árbol.
− Debe procesar el documento XML y convertirlo en una estructura árbol.
− El procesador XSLT debe posicionarse en la raíz del documento XML
− Aquellos elementos que no formen parte del espacio de nombres (con prefijo xsl), se pasan a la cadena de salida sin que haya existido modificación alguna.
− El procesador XSLT solo puede llevar a cabo una única regla a cada nodo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q
  1. Descripción y utilización de estructura, sintaxis y plantillas: Estructura básica de una hoja de transformaciones
A

Una hoja de transformaciones debe ir compuesta por lo siguiente:
• Declaración del documento XML.
>?xml versión=”1.0?”>

     • Elemento raíz.
>xsl:stylesheet versión=”1.0”
xmlns= “http://www.w3.org/1999/XSL/Transform”
...
/xsl:stylesheet>
 • Espacio de nombres. http://www.w3.org/1999/XSL/Transform, donde xsl corresponde al prefijo.

• Otra serie de elementos que denominamos de nivel superior que, es conveniente que aparezcan en la hoja de transformaciones, siempre como hijos de >xsl:stylesheet>.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q
  1. Algunas transformaciones especiales
A

− A continuación, vamos a ver una serie de casos en los que es conveniente hacer uso de diferentes trasformaciones especiales, como:

 • Si tenemos una hoja de transformación sin plantillas (template), el contenido de texto del documento XML se va a enviar directamente a la salida, sin tener en cuenta los distintos valores de los atributos, ni los comentarios ni las instrucciones específicas de procesamiento.

 • Si la hoja de transformación solo tiene una plantilla, la asocia al nodo raíz del documento XML sin contenido alguno, es decir, no va a enviar nada a la salida.

 • Si tenemos una hoja de transformaciones, pero esta no tiene asociada ninguna plantilla al nodo raíz, aunque, sí cuenta con otras que pueden ir asociadas a otros elementos, se va a ir realizando un recorrido por el árbol del documento XML. De esta forma, puede enviar contenido textual a la salida y aplicar las reglas que se hayan definido en cuanto se localice el elemento con la plantilla asociada.

 • Si tenemos una hoja de transformaciones con alguna plantilla, se va a ir realizando un recorrido por el árbol del documento XML en el mismo orden en el que está escrito y, cuando encuentre una plantilla que coincida con el elemento que nos encontramos, se aplicará a la plantilla.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q
  1. Elementos básicos de una hoja de transformaciones
A

− Existen un grupo de instrucciones que nos van a permitir poder generar un gran número de salidas, entre los que destacamos:

1) xsl:stylesheet y xsl:transform
- Son unos elementos que podemos utilizar para poder definir el elemento raíz en la hoja de transformaciones.
• Atributos obligatorios
a) versión: determina la versión seleccionada XSLT del documento.
b) xmlns: hace referencia al espacio de nombres del documento XML.
• Atributos optativos principales
a) exclude-result-prefixes: lista los espacios de nombres separados por un espacio. Estos no se deben enviar a la salida.
____________________
2) xsl:output
− Es el elemento encargado de definir el formato del documento de salida. Este elemento corresponde a un nivel superior y tiene que aparecer como “hijo de”.
>xsl:stylesheet> o >xsl: transform>

 • Atributos optativos principales
      a) method: tiene como valor por defecto, XML y va a definir el formato de salida.
      b) versión: determina la versión del formato de salida.
      c) encoding: apunta al juego de caracteres de salida.
      e) indent: determina si la salida está preparada conforme a la estructura jerárquica.
      f) omit-xml-declaration: determina si la instrucción declarada para procesar el documento se puede omitir en la salida.
      g) standalone: determina si es necesario añadir el atributo standalone a la instrucción que declara el tipo. Su valor asignado por defecto es, no. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 3) xsl:template − Es una de las instrucciones más importantes de las hojas de transformaciones, junto con >xsl:apply-templates>.

− Puede representar una plantilla que dispone de una serie de acciones encargadas de realizar el patrón de una plantilla.

− Si aplicamos una plantilla a un nodo determinado, se va a aplicar solo a ese nodo, pero lo que hace es sustituir al nodo y a sus descendientes por el resultado que hemos obtenido de la aplicación de la plantilla. Este hecho nos va a eliminar toda la información de los descendientes.

 • Atributos optativos principales
      a) name: asigna un nombre a una plantilla.
      b) match: señala el patrónXPath al que se le va a aplicar la plantilla.
      c) priority: valor que oscila entre -9 y 9 (de menos a más prioridad) que le asignamos a las diferentes reglas de resolución de conflictos.
      d) mode: diferencia entre dos plantillas con el mismo atributo match. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 4) xsl:apply-templates − Es otra de las funciones principales en el ámbito del lenguaje de las transformaciones XSLT. Si comprendemos su funcionamiento sin ningún tipo de problema, vamos a conseguir sacar el máximo rendimiento a la hora de trabajar con las distintas transformaciones.

 • Atributos optativos principales

      a) select: selecciona los nodos que se van a procesar.
      b) mode: diferencia entre distintas plantillas que tengan el mismo atributo match.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q
  1. Reglas de resolución de conflictos en plantillas
A

− Existen unas reglas que se deben aplicar a los elementos siguiendo un orden. Cada una de estas reglas, va a tener una prioridad asociada (-9,9) que, cuando las aplicamos de forma automática, va a tener los valores: PATRON / PRIORIDAD

 * “*”, “@*”, “text ()”, y otros patrones para los que no se indica un nombre concreto. | -0.5
 * “Prefijo:*”, “@prefijo:*”, y otros patrones para los que se indica el espacio de nombres, pero no un nombre concreto. | -0.25
 * “producto”, “@unidades”, y otros patrones donde se indiquen nombres de elementos y atributos concretos. | 0
 * “proveedor/representante”, “productos/producto/precio”, “precio/@unidades”, y otros patrones para los que se indique una jerarquía (además del nombre del elemento y/o atributo. | 0.5

− En caso de existir diferentes plantillas con la misma prioridad, puede que se produzca un error o puede que se aplique a la última plantilla.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q
  1. Modos de las plantillas
A

− Es bastante frecuente que una hoja de estilo acceda distintas veces a un mismo nodo, devolviendo valores diferentes a la salida cada vez. Para estas ocasiones,
debemos utilizar el atributo de las plantillas mode, que nos permite etiquetar cada plantilla para que se puedan llamar por el texto de la etiqueta.

1) xsl:call-template.
− Podemos utilizarla para llamar a una plantilla por su nombre.

− Cuando la aplicamos, no cambia el nodo de contexto, por tanto, en la plantilla que invoquemos tenemos que utilizar el mismo direccionamiento de aquellos elementos que existían en la que realizaba la llamada.

 • Atributos obligatorios
      a) name: nombre de la plantilla a la que se va a llamar. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 2) xsl:value-of. − Nos permite visualizar el contenido que se indica en el atributo select junto con todos sus descendientes.

 • Atributos obligatorios
      a) select: expresión XPath que determina el elemento o atributo del que debemos extraer el contenido.

 • Atributos optativos principales
      a) Disable-output-escaping: indica si algunos caracteres especiales (
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q
  1. Versión simplificada para mostrar valores de atributos
A

− Solo es posible utilizar esta versión simplificada en determinados casos, como cuando se genera un nuevo elemento (etiqueta) en el documento de salida, y deseamos asignar algún valor a alguno de sus atributos.

1) xsl:text.
− Permite la posibilidad de poder escribir un texto de forma literal en la salida.

 • Atributos optativos principales:
      a) Disable-output-escaping: indica si algunos caracteres especiales (
28
Q
  1. Instrucciones de control
A

− Disponemos de un conjunto de etiquetas que ofrecen la posibilidad de reproducir el funcionamiento de aquellas instrucciones de control de flujo correspondientes a los lenguajes imperativos.

1) xsl:for-each.
− Permite repetir una lista de elementos para poder realizar diferentes transformaciones sobre ellos.

 • Atributos obligatorios
      a) Select: expresión XPath que determina la lista de elementos que se van a repetir. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 2) xsl:sort. − Devuelve los datos de un documento XML ordenados por algún método.

 • Atributos optativos principales
      a) select: expresión XPath que determina el nodo o grupo de nodos que van a constituir el método de ordenación.
      b) lang: permite seleccionar el idioma que vamos a llevar a cabo al ordenar.
      c) data-type: tipo de aquellos datos que se van a ordenar.
      d) order: indica si los elementos se van a ordenar de forma ascendente o descendente (ascending, descending)
     e)  case-order: determina el orden de letras mayúsculas (upper-first) o minúsculas (lower-first). \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 3) xsl:if. − Utilizado cuando existe comportamiento condicional. Realiza una pregunta por una condición y, si esa condición es cierta va a realizar una cosa. En caso de que sea falso, realizará otra.

 • Atributos obligatorios
      a) test: expresión XPath que, en caso de ser cierta, se puede aplicar a una plantilla. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 4) xsl:choose,xsl:when, xsl:otherwise. Ofrecen la posibilidad de llevar a cabo un comportamiento condicional con distintas opciones, además de otra por defecto.
29
Q
  1. Elaboración de documentación: Elaboración de documentos XML con hojas de estilo
A

− Las hojas de estilos CSS son los archivos destinados a dar formato a las páginas web.

− Normalmente se enlazan a los archivos HTML, aunque también pude hacer referencia a un documento XML y visualizarse en el navegador.

− El W3C aprobó en junio de 1999 la recomendación que definen cómo vincular documentos XML con hojas de estilo CSS.

− De acuerdo con esta recomendación mediante la instrucción >?xml-stylesheet ?> de forma similar a como se hace en una página web XHTML con la etiqueta .

− En ambos casos el atributo href incluye el camino absoluto o relativo a la hoja de estilo CSS. va al principio del documento, después de la declaración XML, como muestra el siguiente ejemplo:
>?xml version="1.0" encoding="UTF-8"?>
>?xml-stylesheet href="ejemplo.css"?>
>persona>
     >nombre>Juan>/nombre>
     >localidad>Lleida>/localidad>
>/persona>
30
Q
  1. Generación de nuevos elementos y atributos
A

− Cuando la salida que se genera está en formato XML, podemos elegir la opción de enviarlos a la salida elementos/atributos que ya existen en el documento XML de entrada, o podemos también tener la posibilidad de volver a crearlos.

1) xsl:element.
− Permiten la posibilidad de poder generar un elemento nuevo al documento de salida.

 • Atributos obligatorios
      name: determina el nombre del elemento.

 • Atributos optativos principales
      a) namespace: permite definir el URI correspondiente al espacio de nombres del atributo.
      b) use-attribute-sets: muestra una lista, separada por espacios de conjuntos de atributos, que van a contener aquellos atributos que pueden incluir al elemento. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 2) xs:attribute. − Puede producir un atributo nuevo de un determinado elemento.

 • Atributos obligatorios
      name: determina el nombre del atributo.
 • Atributos optativos principales
      namespace: permite definir el URI correspondiente al espacio de nombres del atributo. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 3) xsl:comment. − Crea un comentario en el documento de salida, que puede ser de texto literal o, un dato que se ha extraído del documento XML inicial. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 4) xsl:processing-instruction. − Ofrece la posibilidad de crear distintas instrucciones de procesamiento sobre el documento de salida. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 5) xsl:copy-of. − Permite realizar una copia exacta de un elemento a la salida. Tanto atributos como aquellos elementos descendientes, también se copiarán. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 6) xsl:copy. − Permite realizar la copia de un determinado nodo sin hacerla de sus descendientes.

 • Atributos optativos principales
      a) use-attribute-sets: muestra una lista con los diferentes conjuntos de atributos, separados por un espacio, que se pueden aplicar al nodo de salida.
31
Q
  1. XSL- FO
A

− Como ya indicamos al comienzo de esta unidad formativa, XSL-FO (XSL- Formatting Objects, Objetos de formateo XSL) es el lenguaje que se encarga de determinar el aspecto que van a tener los distintos datos a la hora de mostrarlos en un formato
determinado de salida, que suele ser: PDF, RTF, PostScript, etc.

32
Q
  1. Procesadores XSL- FO
A

− Hacen referencia a una serie de programas que recibe un documento XSL- FO de entrada para generar otro de salida, con diferente formato.

33
Q
  1. FOP (Formatting Objects Procesor- Procesador de Objetos de Formateo)
A

− Este procesador es una aplicación (Java) dentro del código de Apache que, entre sus tareas principales, se encarga de coger un documento XSL-FO de entrada para poder generar una salida en un formato diferente, por ejemplo PDF.

− Los pasos de sintaxis son:
• Inicialmente, vamos a utilizar un documento FO de entrada para generar otro en formato PDF con la siguiente sintaxis:
Fop -fo >doc_inicial.fo> -pdf >doc_final.pdf>
• A continuación, podemos generar un documento de salida con formato PDF. Recordemos que el documento inicial está en formato FO y este se construye a partir de un documento XML con una hoja de transformacions XSLT. En este caso, seguiremos la sintaxis:
fop -xml >doc_inicial.xml> -xls >doc_inicial.xsl>
-pdf >doc_final.pdf>

− También existe la posibilidad de realizar la salida mediante los dos pasos que indicamos a continuación:

 1. Generamos el documento con formato FO a partir de XML y una XSLT.  fop -xml >doc_inicial.xml> -xsl >doc_inicial.xsl> 
 -foout >doc_final.fo>
 2. A continuación, generamos el documento que se va a poder visualizar (en formato pdf) a partir del documento FO.  fop -fo >doc_final_paso_1.fo> -pdf >doc_final.pdf>
34
Q
  1. Objetos de formateo
A

− Las etiquetas que se utilizan en este lenguaje están siempre relacionadas con distintos elementos de maquetado como páginas, párrafos, bloques y tablas.

− En este caso, XSL-FO utiliza distintas áreas rectangulares para visualizar la salida.

− Entre sus áreas más importantes, destacamos:
• Páginas. Cuando la salida de una trasformación se organiza mediante páginas que, a su vez, están compuestas de regiones.
• Regiones. Contiene una serie de regiones como:
a) region-body (cuerpo de página)
b) region-before (cabecera de la página)
c) region-after (pie de página)
d) region-start (lateral izquierdo)
e) region-end (lateral derecho)

− Las diferentes regiones pueden contener áreas de bloque.
• Áreas de bloque. Permiten definir elementos de bloques no muy grandes, como párrafos, líneas o incluso tablas. La mayoría de las áreas de bloque
contienen áreas de línea.
• Áreas de línea. Permiten definir, dentro de las áreas de bloque, un texto. Las áreas de línea pueden contener áreas secuenciales.
• Áreas secuenciales. Permiten definir algún texto dentro de las áreas de líneas.

35
Q
  1. Estructura de una página XSL- FO
A

> fo:root> corresponde al elemento raíz.

− Sus descendientes directos son:

 • >fo:layout-master-set> patrones de las páginas del documento
 • >fo:page-sequence> páginas del documento

− Este elemento >fo:layout-master-set> contiene el patrón de la página o grupo de páginas >fo:simple-master-page> que dispone de patrones, márgenes, cabecera.

36
Q
  1. Objetos de formateo para la estructura de documentos
A

− Estos objetos permiten definir el diseño de las páginas, las diferentes regiones, cabeceras, etc.

37
Q
  1. fo:root
A

− Corresponde al elemento raíz de un documento determinado XSL-FO, cuyo contenido se corresponde a:
>fo:layout-master-set> >fo:declarations>?
>fo:page-sequence> +

38
Q
  1. fo:layout-master-set
A

− Corresponde a un objeto que contiene todos los modelos de páginas que se pueden utilizar en un documento.

39
Q
  1. fo:simple-page-master
A

− Ofrece la posibilidad de definir un formato (layout) de una página o grupo de páginas con sus correspondientes dimensiones.

− Cada objeto de este tipo puede disponer de hasta cinco regiones que son: el cuerpo (region-body), cabecera (region-before), pie (regi-after), margen izquierdo (region-start) y margen derecho (region-end).

− De todas estas regiones, la única que es
imprescindible es el cuerpo.

− Entre sus principales propiedades, destacamos:
• master- name: utilizado para indicar el nombre del modelo en cuestión.

 • Aquellas que hacen referencia a los estilos de CSS como margin, page-height, page-width, etc.
40
Q
  1. fo:declarations
A

− Su función principal consiste en unificar las distintas declaraciones de la hoja de estilos. Actúa como contenedor de aquellos objetos de formateo que se van a utilizar a la hora de generar la salida.

41
Q
  1. fo:page-sequence-master
A

− Indica el orden en el que van a parecer los objetos >fo:simple-page-master>

− Entre sus principales prioridades, destacamos:
1) master-name: para indicar el nombre correspondiente al modelo (master)

42
Q
  1. fo:single-page-master-reference
A

− Hace referencia a que se va a insertar solo una vez.

− Entre sus principales prioridades, destacamos:
1) master-reference: para indicar el nombre de >fo:simple-page-master>

43
Q
  1. fo:repeatable-page-master-reference
A

− Hace referencia a que se va a insertar varias veces

− Entre sus principales prioridades, destacamos:
1) master-reference: para indicar el nombre de >fo:simple-page-master>

44
Q
  1. fo:repeatable-page-master-alternatives
A

− Indica la repetición que realizan un grupo de determinados objetos >fo:simple-page- master>.

Contenido::=>fo:conditional-page-master-reference> +

− Entre sus principales prioridades, destacamos:
• Maximum-repeats: cuenta el máximo número de repeticiones que pueden aparecer.

45
Q
  1. fo:conditionel-page-master-reference
A

− Modelo condicional de una página que debe cumplir la serie de condiciones que se indiquen.

− Entre sus principales prioridades, destacamos:
• master-reference: se refiere al nombre del >fo:simple-page-master>
• page-position: señala el valor ordinal de la página a la que se le va a aplicar el modelo.
• odd-or-even: puede hacer referencia a las páginas que se van aplicar, en el caso de que sean pares (even) o impares (odd).

46
Q
  1. Objetos de formateo para el contenido de páginas:
A

− Utilizados para asignar un contenido determinado a cada página que forme parte del documento.

1) fo:page-sequence
− Actúa como un contenedor de aquellos objetos página de salida. Cada objeto
>fo:page-sequence> hace referencia a otro objeto >fo:page-sequence-master> o
>fo:simple-page-master>, cuyo contenido es:

Contenido::=>fo:title>?>fo:static content>*>fo:flow>

 • Entre sus principales prioridades, destacamos:
      a)master-reference: para indicar el nombre correspondiente al objeto >fo:page-sequence-master> o >fo:simple-page-master> al que está asociado. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 2) fo:title − Objeto que determina el título para una >fo:page-sequence>. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 3) fo:static-content − Dispone de una serie de elementos (estáticos) que actúan como cabeceras o pies de página y tienen posibilidad de poder repetirse en diferentes páginas.
 • Entre sus principales prioridades, destacamos:
      a) flow-name: para indicar donde se va a ubicar el contenido de >fo:static- content> \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 4) fo:Flow − Dispone de una serie de elementos que se van a mostrar en una determinada página.

 • Entre sus principales prioridades, destacamos:
      a) flow-name: para indicar el lugar en el que se van a posicionar los elementos de flujo. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 5) fo:block − Actúa como si fuera un contenedor a nivel de bloque, como <div> de HTML. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 6) fo:inline − Actúa como un contenedor que ofrece la posibilidad de almacenar diferentes objetos para que se puedan distribuir de forma secuencial sin que se produzca ningún salto de línea.</div>
47
Q
  1. Objetos de formateo para generar listas:
A

− Se refiere a una serie de objetos de formateo que se pueden utilizar para construir listas. Se utilizan de forma conjunta, como si fuera un bloque.

1) fo:list-block
− Objeto que podemos utilizar para declarar una lista.
Contenido::=>fo:list-item>
____________________
2) fo:list-item
− Objeto que podemos utilizar para declarar cada elemento perteneciente a una lista.

 Contenido::=>fo:list-item-label>>fo:list-item-body> \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 3) fo:list-item-label − Objeto que tiene asignada las distintas etiquetas utilizadas en forma de marcadores.

− Estas etiquetas deben formar parte de un objeto >fo:block>.

Contenido::=(>fo:block> | >fo:block-container> | >fo:table-and-caption> | >fo:table> | >fo:list-block> | >fo:list-item> | >fo:list-item>)+ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 4) fo:list-item-body − Objeto que contiene el cuerpo principal o el contenido de un determinado elemento de la lista correspondiente.

 Contenido::=(>fo:block> | >fo:block-container> | >fo:table-and-caption> | >fo:table> | >fo:list-block> | >fo:list-item> | >fo:list-item>)+
48
Q
  1. Objetos de formateo para generar tablas
A

1) fo:table-and-caption
− Actúa como un objeto contenedor para otros objetos relativos en la construcción de tablas, como: >fo:table>, >fo:table-and-caption>, >fo:table-column>, >fo:table- header>, >fo:table-footer>, >fo:table-body>, >fo:table-row>, >fo:table-cell>

 Contenido::= >fo:table-caption>?>fo:table-caption> \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 2) fo:table-caption − Objeto que cuenta con el título de la tabla, y es descendiente de >fo:table-and- caption> \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 3) fo:table − Lleva a cabo la definición de una tabla.

 Contenido::=>fo:table-column>* >fo:table-header>? >fo:table-body> >fo:table-footer>? \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 4) fo:table-column − Ofrece la posibilidad de seleccionar el formato de las columnas de la tabla.

 • Entre sus principales prioridades, destacamos:
      a) column-width: permite indicar el ancho asignado a la columna. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 5) fo:table-header − Hace referencia a la cabecera de la tabla.
 Contenido::=(>fo:table-row>+ | >fo:table-cell>+) \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 6) fo:table-footer − Hace referencia al pie de la tabla.

 Contenido::=(>fo:table-row>+ | >fo:table-cell>+) \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 7) fo:table-body − Objeto que va a actuar como contenedor de aquellas filas (>fo:table-row>) y celdas (>fo:table-cell>) pertenecientes a la tabla. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 8) fo:table-row − Objeto encargado de definir una fila perteneciente a una tabla.

 Contenido::=+ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 9) fo:table-cell − Objeto que ofrece la posibilidad de poder representar una celda correspondiente a una tabla.

 Contenido::=(>fo:block> | >fo:block-container> | >fo:table-and-caption> | >fo:table> | >fo:list-block>)+
49
Q
  1. Objetos de formateo para generar enlaces, imágenes
A

1) fo:basic-link
− Hace referencia a un enlace determinado del documento.

 • Entre sus principales prioridades, destacamos:
      a) internal-destination: identificador a donde apunta el enlace al documento.
      b) external-destination: URI de la página a la que lleva el enlace. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 2) fo:external-graphic − Ofrece la posibilidad de poder insertar una imagen. \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 3) fo:leader − Ofrece la posibilidad de realizar una línea horizontal.

 • Entre sus principales prioridades, destacamos:

      a) leder-length: hace referencia a la longitud de la línea.
      b) leder-patten: hace referencia al patrón de la línea.
50
Q
  1. Almacenamiento de información
A

− En esta unidad formativa vamos a definir las bases de datos XML nativas como alternativa a las relacionales, de tal forma que podremos sustituir las tablas con todos sus campos por una serie de documentos HTML, con sus correspondientes elementos y atributos.

− La herramienta que vamos a utilizar va a ser BaseX para llevar a cabo dos tipos diferentes de lenguajes de consulta:
• XPath. Lenguaje bastante sencillo que dispone de una gran cantidad de expresiones que nos van a permitir la posibilidad de poder acceder a las diferentes partes de un documento HTML.
• XQuery. Es otro lenguaje que utiliza XPath para facilitar la manipulación de
documentos XML.

51
Q
  1. Sistemas de almacenamiento de información XML nativo.
A

− Tradicionalmente, las bases de datos se han tratado con sistemas gestores de bases de datos (SGBD), siendo los más conocidos y utilizados en anteriores módulos de este ciclo MySQL y ORACLE.

− Una alternativa de estos SGBD pueden ser los sistemas de bases de datos nativos XML que, mientras que los primeros estaban basados en tablas con su información correspondiente relacionada entre sí, estos segundos lo que almacenan son documentos XML.

− De esta forma, podemos comprobar que los SGBD tradicionales son adecuados para almacenar datos, y los gestores de bases de datos XML son adecuados para almacenar documentos.

− Entre los ejemplos más conocidos de estos gestores de base de datos nativos, tenemos:
• BaseX http://basex.org

 • eXist (programa de pago) http://exist-db.org
52
Q
  1. BaseX
A

− Motor de base de datos nativo XML que incluye XPath y XQuery. Presenta las características de ser una aplicación ligera, de alto rendimiento en las distintas operaciones que realiza y fácilmente escalable.

− Como ya hemos comentado anteriormente, crea las bases de datos a partir de uno o varios documentos XML.

− Utilizaremos los lenguajes XPtah o XQuery para poder realizar las pertinentes consultas y, de esta forma, poder sacar información de la base de datos.

− La información resultante de una consulta, se puede presentar de diferentes formas:
     • Modo texto.
     • Estructura de árbol.
     • Estructura de carpetas.
     • Modo tabla.
     • Diagrama de dispersión.

− En la interfaz gráfica de esta aplicación podemos visualizar fácilmente los distintos apartados para realizar las operaciones, como pueden ser la barra de herramientas, el editor de consulta, las visualizaciones de los datos y la línea de comando. En esta última, ejecutaremos las cláusulas para poder trabajar con bases de datos nativas
XML.

− En las bases de datos nativas podemos ejecutar tres tipos de sentencia:
• Opción Command: podemos indicar en este apartado los comandos propios de la aplicación para trabajar con las bases de datos, como, crear una base de datos, tratamiento de usuario, abrir o modificar una base de datos, etc.
• Opción Search: en este apartado indicaremos expresiones XPtah, que detallaremos más adelante.
• Opción XQuery: indicaremos los diferentes comandos para realizar las consultas, utilizaremos el lenguaje XQuery.

53
Q
  1. XPath
A

− Lenguaje diseñado para acceder, transformar y dar formato de salida a los documentos XML. Como ya sabemos, un documento XML posee una estructura árbol que tiene su origen en un elemento raíz, y que se va a ir derivando en sus respectivos hijos que, a su vez, pueden ser raíz de otras estructuras árbol.

− Esta estructura es bastante parecida la estructura jerárquica de directorio de cualquier sistema operativo de un equipo informático.

− De la misma forma que podemos recorrer el árbol de directorios mediante unos comandos preestablecidos (cd, dir, ls, etc.), también podemos hacerlo en un documento XML con comandos XPath.

54
Q
  1. XPath: Direccionamiento
A

− Como en todo contenido web, el direccionamiento o la ruta que podemos utilizar en este lenguaje pueden ser de dos tipos diferentes: absolutos o relativos. El primero se indica comenzando el direccionamiento a partir del directorio raíz (/) mientras que el segundo, empieza desde el directorio en el que nos encontremos, sabiendo que podemos hacer uso del símbolo “.” para representar el directorio actual y el“..” para acceder al directorio padre.

− XPath trata al documento XML como un árbol de nodos. El lenguaje DOM, también trabaja de la misma forma, como hemos visto en capítulos anteriores, podemos diferenciar varios tipos de nodos XPath:

 • Nodo raíz del documento: nodo principal, ya que, a partir de los demás, comienzan a derivar los demás. Cada documento, tiene un único nodo raíz y se caracteriza por ser un nodo que no tiene padre y tener, al menos, un hijo.

 * Elemento: todo elemento de un XML es un elemento XPath.
 * Atributo: se parece al nodo atributo de un XML.
 * Texto: en este nodo, podemos almacenar toda la información que deseemos.
 * Comentarios: conjunto de texto que no es procesado por el compilador, por tanto, el desarrollador del programa explica los pasos que está realizando, para que, en un futuro, cuando retorne el código fuente por alguna avería o incidencia se conozcan los detalles.
 * Instrucciones de procesamiento.
 * Espacio de nombre (namespace).

− Los tipos de datos primitivo más básicos son String para las cadenas de caracteres, number para representar la información numérica, boolean representa el tipo de datos SI/No y, por último, como estamos ante un leguaje similar a DOM, es decir,
que existe una jerarquía de nodos, disponemos del node-set para representar el conjunto de nodos.

− Hemos comentado con anterioridad que este lenguaje XPath es un código de expresiones. A continuación, veamos las más comunes:

 * elem Elemento de nombre elem.
 * /elem Elemento de nombre elem situado en el directorio raíz (/).
 * e1/e2 Elemento e2 es hijo directo de su padre e1.
 * e1//e2 Elemento e2 desciende de e1 pero desconocemos su grado. Puede ser hijo, nieto, bisnieto....
 * //elem Elemento de nombre elem depende del directorio / pero no sabemos a que nivel .
 * @atrib Atributo que se identifica con el nombre de atrib.
 * * Carácter comodín. Cualquier elemento. También puede ser visto como todos los elementos.
 * @* En este caso es el comodín de los atributos. Cualquier atributo (Todos los atributos).
 * . Como en el sistema operativo Linux, pero llevado a lenguaje de marcas. Representa el nodo actual en el que nos encontramos.
 * .. Representa el nodo padre.
 * espNom:* Hace mención a todos los elementos del espacio de nombre espNom.
 * @espNom:* Se referencia a todos los atributos del espacio de nombre espNom

− Una vez vista las expresiones más básicas de este lenguaje, el siguiente paso es la ejecución de las mismas. Lo podemos realizar en dos maneras diferentes, o bien mediante un analizador de expresiones de XPath online como por ejemplo en la web de Whitebean:
www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm

− O bien la forma alternativa es la descarga de un entorno de desarrollo como por ejemplo BaseX. Siendo la última opción la más recomendable.

55
Q
  1. XPath: Acceso a los elementos / atributos
A

− Este lenguaje se utiliza como analizador de expresión a partir de un documento XML compuesto por nodos con sus identificadores atributos y valores. Utilizamos estas expresiones cuando deseamos tratar un conjunto de nodos en especial.

  • Podemos poner el ejemplo
    /coche/nombre,
    lo que nos devolvería de esta expresión, sería el conjunto de nodos nombre que cuelgan de coche, dentro del directorio raíz (/), en caso de no existir
    ningún nombre en esa ruta, devolverá el conjunto vacío.

** Existen analizadores que devuelven el contenido textual del conjunto de nodos; para que cualquier analizador devuelva el texto de los nodos, se lo vamos a indicar en la expresión con la cláusula text(), por tanto la expresión anterior quedaría /coches/nombre/text().

*** Seguimos en el apartado de acceso, pero vamos a detallar como sería el acceso a los atributos de un nodo. En este caso, escribiremos /coches/@matrícula. Si queremos acceder al valor de la matrícula del coche, en este caso, debemos escribir /coches/@matrícula/data() o bien, /coches/@matrícula/string() ya que la primera forma, en algunos analizadores, no se puede ejecutar.

56
Q
  1. XPath: Acceso a elementos con rutas simples
A

− Son una serie de rutas a las que podemos acceder mediante un directorio absoluto, es decir, empezando desde el nodo raíz del sistema, devolviendo el conjunto de nodos que se encuentre en dicha ruta.

57
Q
  1. XPath: Elementos del lenguaje
A

Avanzando en la sintaxis del lenguaje XPath vamos a generar expresiones más complejas a partir de los elementos básicos ya visto. Es posible gracias a los
operadores y funciones.

58
Q
  1. XPath: Operadores:
A
1) Operadores booleanos
OPERADOR | CODIFICACIÓN ALTERNATIVA
     • and
     • or
     • not
     • =
     • ¡=
     • > | >
     • <  | <
     • >= | >=
     • <= | <=
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
2) Operadores aritméticos
OPERADOR | SIGNIFICADO
     • + | Suma
     • - | Resta
     • * | Multiplicación
     • div | División
     • mod | Resto (módulo)
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
3) Otros Operadores
OPERADOR | SIGNIFICADO
| Unión de resultados
59
Q
  1. XPath: Funciones
A

1) Funciones numéricas
FUNCIÓN | DEVUELVE | EJEMPLO
• round() | Redondeo | round(3.14) = 3
• abs() | Valor absoluto | abs(-7) = 7
• floor() | Suelo | floor(7.3) = 7
• ceiling() | Techo | floor(7.3) = 8
____________________
2) Funciones de cadena
FUNCIÓN | DEVUELVE | EJEMPLO
• substring() | Subcadena | Substring(‘Beatles’, 1, 4)
= Beat
• starts-with() | Cadena comienza por | starts-with(‘XML’,’X’) = true
• contains() | Cadena contiene | contains(‘XML’,’XM’) =
true
• normalize-space() | Espacios normalizados | Normalize-space(‘The end’) = ‘The end’
• translate() | Cambia caracteres en una cadena | translate(‘The end’, ‘The’, ‘An’) = ‘An end’
• string-length() | Longitud de una cadena | string length(‘Beatles’) =
____________________
3) Funciones que devuelven elementos por su posición
FUNCIÓN | DEVUELVE
• position() = n | Elemento que se encuentra en la n-ésima posición
• elemento[n] | Elemento que se encuentra en la n-ésima posición
• last() | El último elemento de un conjunto
• last() - i | El último elemento –i (ej. Si i=1 -> el penúltimo)
____________________
4) Funciones que devuelven nodos
FUNCIÓN | DEVUELVE
• name() | Nombre del nodo actual
• root() | El elemento raíz
• node() | Nodo descendientes del actual
• comment() | Comentarios
• processing-instruction() | Instrucciones de procesamiento
____________________
5) Funciones de agregado
FUNCIÓN | DEVUELVE
• count() | Conteo de elementos
• avg() | Media de valores
• max() | Valor máximo
• min() | Valor mínimo
• sum() | Suma de valores

60
Q
  1. XPath: acceso a elementos
A

1) Acceso a elementos con filtros de valores
− Podemos acceder a elementos mediante filtros con dos tipos de valores:
• Literales: que van entre dobles comillas para acceder a ese valor concreto y recuperados, que permiten el acceso mediante otras expresiones.

  • Ejemplo de valores literales:
    Acceder a un coche cuya matrícula es 0011 /coche/matrícula[@valor=”0011”]

** Ejemplo de otras expresiones:
Acceder a aquellas personas que tengan un coche de la marca Opel:
/coche/marca[@valor=”Opel”]/persona/@dni

*** En los valores recuperados, deben existir relaciones entre nodos. En este ejemplo anterior, estamos suponiendo que las personas están relacionadas
con el nodo coche.
____________________
2) Acceso a elementos mediante ejes
− Estas expresiones permiten acceder a partes concretas del árbol XML siempre que exista parentesco entre los distintos nodos, ya que es una condición indispensable.

FUNCIÓN | USO
• shelf::* | Devuelve el propio nodo de contexto. Equivalente a.
• child:: | Devuelve los nodos “hijo” del nodo de contexto.
• parent:: * | Devuelve el nodo padre del nodo contexto. Equivale a.
• ancestor::* | Devuelve los “antepasados” (padre, abuelo, hasta el nodo raíz) del nodo de contexto.
• ancestor-or-self::* | Devuelve los nodos “antepasados” del nodo de contexto, además del propio nodo de contexto
• descendant::* | Devuelve los nodos “descendientes” (hijo, nieto…) del nodo de contexto.
• descendant-or-self::* | Devuelve los nodos “descendientes” (hijo, nieto…) del nodo de contexto, además del propio nodo de contexto. Equivalente a //
• following::* | Devuelve los nodos que aparezcan después del nodo de contexto en el documento, excluyendo a los nodos descendientes, los atributos y los nodos de espacio de nombres.
• preceding::* | Devuelve los nodos que aparezcan antes del nodo de contexto en el documento, excluyendo a los nodos ascendientes, los atributos y los nodos de espacio de nombres.
• preceding-sibling::* | Devuelve los “hermanos mayores” del nodo de contexto.
• following-sibling::* | Devuelve los “hermanos menores” del nodo de contexto.
• attribute::* | Atributos del nodo contexto. Equivalente a @.
• namespace::* | Espacio de nombres del nodo de contexto.

61
Q
  1. Lenguajes de consulta y manipulación
A

− En este apartado veremos el lenguaje XQuery, que permite realizar consultas para extraer y procesar la información contenida en el documento XML.

− Podemos definir que XQuery diferencia entre dos partes: una que se asemeja al lenguaje SQL, ya que es un lenguaje orientado a bases de datos donde comparte las mismas cláusulas que este emplea, como where, order by, etc. ;

− Por otra parte, también podemos compararlo al lenguaje descrito anteriormente XPath, ya que
ambos se refieren a documentos de marca como XML.

− Con este lenguaje comparte los modelos de datos y soporta las mismas funciones y operadores descritos en el apartado anterior.

− XQuery, al ser un lenguaje de expresiones, se compone también de los mismos tipos de nodos que el lenguaje anterior: nodo raíz, elementos, atributos, textos, comentarios, expresiones, etc. Y, además, de los mismos tipos de datos primitivos que XPath: numéricos, boleanos, cadenas de texto, fecha hora, etc.

62
Q
  1. XQuery: funciones o claúsulas
A

1) Función doc(): permite leer un documento XML que indiquemos por parámetro, devolviendo el nodo raíz.
____________________
2) Función FLWOR: recibe este nombre por ser un conjunto de funciones que se refieren a for, let, where, order by, return. Las iniciales de estas funciones dan nombre al conjunto que la identifica. Estas funciones hacen posible construir funciones en XQuery.
• for | indica, mediante un rango de valores, los elementos para tratar.
• let | permite declarar variables para que, a continuación, podamos asignarle valores.
• where | acompaña a la sentencia for, permitiendo introducir una condición, para que la estructura iterativa se repita mientras que se cumpla dicha condición.
• order by | parámetro por el que vamos a ordenar la visualización del resultado de una determinada consulta.
• return | comando que nos permite devolver un resultado de una expresión dada.
____________________
3) Otras cláusulas:
• declare function | permite declarar funciones en XQuery.
• if … else | simula una situación condicional, ejecutamos una parte de la estructura u otra mediante el cumplimiento de dicha condición.
____________________
4) Funciones predefinidas: como es habitual en todos los lenguajes, existen una serie de funciones predefinidas por el compilador.

− A continuación, veremos aquellas definidas por XQuery.
• Podemos encontrar funciones referentes a los textos como uppercase (para pasar a mayúscula), substring (devuelve subcadenas de texto) o contains
(para comprobar si un carácter pertenece a una cadena de texto).
• También existen funciones predefinidas referidas a números, como max (devuelve el valor máximo de un conjunto de números), sum (devuelve la suma) o avg
(devuelve la media aritmética).
• A continuación, podemos mencionar las funciones predefinidas correspondientes al tipo fecha, como pueden ser, current-date o current-time (para calcular la fecha o la hora actual).
• Por último, podemos mencionar funciones predefinidas a nivel de nodos XML, como la función root, que devuelve el nodo raíz de un árbol.

63
Q
  1. Otras tecnologías complementarias
A

− Hasta ahora, hemos podido comprobar a lo largo de esta unidad formativa, los lenguajes más utilizados en los estándares W3C relacionados con la tecnología web, señalando entre los más importantes XPath y XML.

− A continuación, vamos a definir dos tipos de lenguajes que no han tenido demasiada repercusión por lo que su uso se ha quedado muy restringido: XLink y XPointer.
• XLink. Es un lenguaje que permite vincular documentos XML mediante distintos tipos de enlaces.
• XPointer. Es un lenguaje en el que se pueden enlazar fragmentos de ficheros XML. En este caso, puede hacer uso de la identificación de fragmentos del lenguaje XPath.

64
Q
  1. Bases de datos relacionales con XML
A

− vamos a ver las distintas bases de datos relacionales con implementación de XML. Al tratarse de estos tipos de bases de datos utilizaremos sistemas gestores adaptados a ellas como pueden ser: SQL Server u ORACLE.

− A continuación, veremos los distintos elementos que nos podemos crear en estas bases de datos.

 * Empezaremos por el tipo de campo XML (XMLTYPE). Podemos crear una tabla, mediante la sentencia CREATE TABLE, visto en módulos anteriores, donde uno de los campos sea de contenido XMLTYPE. Por tanto, a la hora de crearnos un registro, esta columna debe contener un fragmento de código XML.
 * Una vez creada la tabla con el campo tipo XML, ya podemos realizar todas las operaciones de inserción (INSERT) o consulta (SELECT). Otra forma de ejecutar una consulta en este lenguaje es con la función XMLQuery(), en la cual recibirá como parámetro la consulta, además del campo XML. Además de existe la cláusula XMLTable() mediante la cual podemos tratar el resultado de una consulta con XQuery.

 • Con referencia a las tablas de tipo de XML, igual que las bases de objetos-relacional, podemos crearlas a partir de las sentencias en XQuery 
 CREATE TABLE nombre_tabla OF XMLTYPE

 • De manera ya disponemos de una tabla de objetos y podemos utilizar objetos de este tipo de tabla mediante el comando select.
 SELECT objeto FROM nombre_tabla

 • De la misma forma, haremos la modificación y borrado de elementos con
 UpdateXML() y deleteXML() respectivamente
65
Q
  1. Tratamiento de XML desde JAVA
A

− Una alternativa al tratamiento de los documentos XML es hacer lo mediante código JAVA en vez de con tratamiento en Bases de Datos. Una de las colecciones de datos (API) más conocida para realizar esta tarea es JAXP y en su interior se encuentra SAX y DOM.

− En este caso definiremos las colecciones de datos, ya que no es objetivo de este módulo el tratamiento de XML con JAVA y lo profundizaremos en siguientes
módulos del ciclo.
• SAX. Fue la primera colección de funciones utilizada para tratar ficheros XML desde JAVA. Está basada en eventos y, por esta razón. difiere un poco en el tratamiento del documento mediante árbol. Esta API a medida que va leyendo el documento va enviando notificaciones en tiempo real. Es recomendable para documentos grandes, ya que su manera de procesar los datos no los guarda en memoria.
• DOM. En este caso la API se utiliza para acceder y tratar documentos XML como estructuras árbol. Es independiente al lenguaje que se esté utilizando,
en este caso, Java, ya que lo que realiza son modelos de objetos que se pueden tratar en cualquier lenguaje orientado a las marcas. La jerarquía de objetos DOM, almacena las relaciones entre los distintos nodos de un
documento XML para facilitar su tratamiento. La diferencia con la API anterior es que, en este caso, sí que se almacena en memoria todo el documento. Esta característica hace que el espacio de memoria tenga una capacidad considerable y los archivos más recomendado para este modo de trabajar sea los documentos de menor tamaño.

− Todo lo anterior está incluido en la API JAXP que se encuentra en la versión 6, de esta forma podemos procesar, tratar, validar y consultar los documentos XML.

− Podemos encontrar toda la información de esta API en la siguiente dirección
https://docs.oracle.com/javase/tutorial/jaxp/