Selección de datos del gráfico: selección sencilla
En esta sección:
•Selección de datos para los ejes X e Y
•Si la expresión for-each devuelve elementos que no son nodos
Introducción
En el panel Selección de datos del gráfico del cuadro de diálogo Configuración del gráfico, la opción Sencilla permite visualizar la selección de datos en formato tabla. Para explicar cómo funciona, vamos a usar el documento XML que se muestra a continuación.
<?xml version="1.0" encoding="UTF-8"?> <Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="YearlySales.xsd"> <Region id="Americas"> <Year id="2005">30000</Year> <Year id="2006">90000</Year> <Year id="2007">120000</Year> <Year id="2008">180000</Year> <Year id="2009">140000</Year> <Year id="2010">100000</Year> </Region> <Region id="Europe"> <Year id="2005">50000</Year> <Year id="2006">60000</Year> <Year id="2007">80000</Year> <Year id="2008">100000</Year> <Year id="2009">95000</Year> <Year id="2010">80000</Year> </Region> <Region id="Asia"> <Year id="2005">10000</Year> <Year id="2006">25000</Year> <Year id="2007">70000</Year> <Year id="2008">110000</Year> <Year id="2009">125000</Year> <Year id="2010">150000</Year> </Region> </Data>
|
|
|
El nodo de contexto
Dentro del diseño, arrastre un nodo XML desde el panel Fuentes de página para convertir este nodo en el nodo de contexto de las expresiones XPath del gráfico. Puede cambiar el nodo de contexto del gráfico arrastrando otro nodo XML al gráfico. Es importante tener en cuenta el nodo de contexto del gráfico, ya que éste es el punto de partida de los localizadores de ruta en las expresiones XPath.
Seleccionar datos para los ejes X e Y
En el panel Selección de datos del gráfico (imagen siguiente), hacemos la selección de datos tal y como se muestra en la imagen. Como el gráfico se insertó dentro del nodo Data, el nodo de contexto para la expresión For-Each es el nodo Data.

La tabla de datos del gráfico sería la que aparece a continuación. Lo que sucede es que por cada elemento Region[1]/Year se crea una fila y las expresiones XPath del eje X y del eje Y se evalúan dentro del contexto del elemento Region[1]/Year correspondiente.
ExpresiónXPath For-Each | Eje X | Eje Y para la serie | ||
Americas | Europe | Asia | ||
Region[1]/Year[1] | @id | text() | XPath-1 | XPath-2 |
Region[1]/Year[2] | @id | text() | XPath-1 | XPath-2 |
Region[1]/Year[3] | @id | text() | XPath-1 | XPath-2 |
Region[1]/Year[4] | @id | text() | XPath-1 | XPath-2 |
Region[1]/Year[5] | @id | text() | XPath-1 | XPath-2 |
Region[1]/Year[6] | @id | text() | XPath-1 | XPath-2 |
•La expresión For-Each Region[1]/Year devuelve seis nodos (y crea seis filas en la tabla). El número de elementos de la secuencia devuelta por la expresión For-Each determina el número de marcas de graduación del eje X.
•La expresión XPath para el eje X devuelve el valor del atributo @id de cada elemento Region[1]/Year. Estos valores serán las etiquetas de las marcas del eje X. Si hay más etiquetas que marcas de graduación, entonces se generarán marcas adicionales para que se puedan dibujar todas las etiquetas. Si hay menos etiquetas que marcas de graduación, entonces las últimas marcas (que no tienen etiqueta) no se etiquetarán. La opción Enumeración automática genera una secuencia de enteros que empieza por 1 y asigna un entero a cada marca del eje X.
•La expresión XPath para la serie Americas (text()) devuelve el contenido de cada elemento Region[1]/Year. Esta expresión también podría haber sido similar a la de la serie Europe y Asia (explicada a continuación), siempre y cuando devuelva eficientemente los valores que queremos.
•La expresión XPath para la serie Europe es: for $i in @id return //Region[2]/Year[@id=$i]. Esta expresión: (i) busca el valor actual del atributo Region[1]/Year/@id y (ii) devuelve el contenido del elemento Region[2]/Year que tiene el mismo valor @id que el valor @id del elemento Region[1]/Year actual.
•La expresión XPath para la serie Asia funciona igual que la expresión utilizada para la serie Europe.
Esta selección de datos daría como resultado este gráfico de barras:

Este sería el gráfico de líneas resultante para esta selección de datos:

Si la expresión for-each devuelve elementos que no son nodos
Dado que el número de marcas del eje X depende principalmente del número de elementos que devuelve la expresión Xpath For-Each, la expresión XPath de la imagen siguiente (distinct-values(//Year/@id)), que devuelve los seis valores únicos del año, también generará seis marcas en el eje X. Los elementos devueltos por la secuencia, sin embargo, son valores atómicos, no nodos. En consecuencia y aunque se puedan usar como elementos de contexto, no se pueden usar como nodos de contexto para localizar nodos en la estructura jerárquica XML. Sin embargo, pueden utilizarse para localizar nodos en función de la igualdad de valores, que es como los utilizaremos.

Observe que en la selección de datos de la imagen anterior:
•las expresiones para los ejes X e Y utilizan los valores atómicos devueltos por la expresión For-Each como resultado directo y como valores de filtro de prueba.
•los pasos de ubicación de las expresiones XPath empiezan por el nodo de documento ($XML en $XML//Region...). Esto es necesario porque los valores atómicos no ofrecen contexto de posición.
La tabla de datos del gráfico dará como resultado estos valores:
ExpresiónXPath For-Each | Eje X | Eje Y para la serie | ||
Americas | Europe | Asia | ||
2005 | 2005 | XPath-1 | XPath-2 | XPath-3 |
2006 | 2006 | XPath-1 | XPath-2 | XPath-3 |
2007 | 2007 | XPath-1 | XPath-2 | XPath-3 |
2008 | 2008 | XPath-1 | XPath-2 | XPath-3 |
2009 | 2009 | XPath-1 | XPath-2 | XPath-3 |
2010 | 2010 | XPath-1 | XPath-2 | XPath-3 |