---
title: "XPath melhora os relatórios XML"
date: "2012-04-17"
categories: 
  - "xpath"
tags: 
  - "charts"
  - "localization"
  - "stylevision"
  - "xpath"
description: Descubra como melhorar os relatórios GPS em formato XML utilizando XPath no Altova StyleVision. Aprenda a calcular valores, formatar datas e personalizar gráficos de forma eficaz.
---
Status: #blog

Tags:  #charts #localization #stylevision #xpath

Categories: [xpath+xquery](/blog/pt/category/xpathxquery.md)
# XPath melhora os relatórios XML

No nosso artigo anterior, "[Criação de Relatórios Elegantes para Dados XML de GPS](https://www.altova.com/blog/2012/04/creating-elegant-reports-for-gps-xml.html)", utilizamos uma expressão XPath para selecionar nós de um documento XML para um gráfico de linhas de altitude. Também é possível usar XPath para calcular valores. O [Altova StyleVision](https://www.altova.com/pt/stylevision.html) oferece um forte suporte para XPath, e podemos escrever expressões XPath para adicionar informações interessantes aos nossos relatórios XML de GPS. Por exemplo, podemos processar os dados de altitude armazenados pelo dispositivo GPS em metros para criar um gráfico que mostre a altitude em pés acima do nível do mar, em vez de metros.

![Gráfico de linhas da linha Altova StyleVision](https://lh5.ggpht.com/-gSbmsmf1ZRY/T6FNDIQzqkI/AAAAAAAAAyg/1u_NWXO1IlM/clip_image001%25255B1%25255D.png?imgmax=800 "Altova StyleVision line chart")

<!--more-->

A fórmula de conversão de metros para pés é: (metros x 3,2808399) = pés. Podemos aplicar este cálculo na caixa de diálogo de configuração do gráfico:

Agora, o gráfico será criado utilizando os resultados do cálculo realizado a partir dos dados extraídos do ficheiro de origem.

**Funções de tempo XPath**

Pode ter notado que o nosso gráfico não inclui uma definição da escala do eixo X. Eliminámos intencionalmente as marcações e os valores do eixo X porque os dispositivos GPS armazenam informações de pontos de trajetória a cada poucos segundos. O ficheiro da caminhada de escalada em gelo contém mais de 1.800 pontos de dados de altitude, e o volume excessivo de pontos de dados resultou numa série de marcações que se fundiram numa linha contínua! Não havia espaço suficiente para os textos dos valores.

Mas não seria interessante saber quanto tempo durou a caminhada? Podemos incluir essa informação no nosso relatório, aproveitando a funcionalidade de cálculo automático do StyleVision. A parte do design que se segue mostra três elementos de cálculo automático adicionados ao relatório através da opção "Inserir / Cálculo Automático / Valor" e complementados com texto descritivo.

![Elementos StyleVision AutoCalc](https://lh5.ggpht.com/-uXZIbSXcnbw/T41tCgrdCqI/AAAAAAAAAys/4EJATOgpRFI/clip_image003%25255B1%25255D.png?imgmax=800 "StyleVision AutoCalc elements")

Clicar com o botão direito do rato em qualquer elemento de cálculo automático abre um menu que dá acesso à caixa de diálogo "Editar XPath", ilustrada abaixo em tamanho reduzido. Pode escrever uma expressão XPath diretamente na janela, ou construir uma selecionando elementos, operadores e funções nas listas correspondentes.

Para calcular o tempo decorrido da viagem, podemos usar as funções XPath `time` e `min(anyAtomicType)` em conjunto com expressões XPath para os `time` Para cada ponto de registo, identificamos o horário mais antigo e o horário mais recente registados. Podemos subtrair o horário mais antigo do horário mais recente para calcular o tempo decorrido.

![Diálogo de edição de expressões XPath no StyleVision](https://lh4.ggpht.com/-6far6GBn_X0/T41tDmS8KpI/AAAAAAAAAyw/y3OtXvCrqRc/clip_image004%25255B1%25255D.png?imgmax=800 "StyleVision XPath edit dialog")

Outra opção no menu de contexto "Cálculo Automático" abre a caixa de diálogo "Formatação de Valores", permitindo acesso imediato a uma variedade de formatos adequados ao tipo de dados do resultado do cálculo.

![Diálogo de formatação de valores do StyleVision para resultados do AutoCalc](https://lh6.ggpht.com/-kH8H4z9bW6Q/T41tEVMLc7I/AAAAAAAAAy0/NaG1nrLMQZY/clip_image005%25255B1%25255D.png?imgmax=800 "StyleVision Value Formatting dialog for AutoCalc result")

Podíamos também usar as funções min() e max() para selecionar os horários de partida e chegada, mas os dados armazenados pelo dispositivo GPS estão em tempo GMT, e esta caminhada ocorreu no horário padrão do leste dos Estados Unidos, onde a hora local é cinco horas mais cedo.

Felizmente, o XPath inclui uma função especial, `adjust-dateTime-to-timezone()`, para ajustar um valor de data e hora a uma zona horária diferente. Aqui está a expressão que utilizamos para ajustar a hora de partida:

**ajustarDataEHoraParaFusoHorário( mínimo( $XML/n1:gpx/n1:trk/n1:trkseg/n1:trkpt/n1:time ), xs:dayTimeDuration('-PT5H') )**

Note que devemos inserir a duração de ajuste como uma cadeia de caracteres e declarar explicitamente que se trata de um tipo de dados "dayTimeDuration".

Podemos usar a caixa de diálogo de formatação de valores para apresentar os horários de partida e chegada de uma forma mais familiar:

![Formatação de valores de resultados de data e hora](https://lh5.ggpht.com/-iRof_1PEOr0/T41tFgbR_oI/AAAAAAAAAy4/0x1-QSpyFIE/clip_image006%25255B1%25255D.png?imgmax=800 "Value Formatting a dateTime result")

Temos mais uma melhoria XPath para o nosso relatório XML de GPS. No nosso [artigo anterior,](https://www.altova.com/blog/2012/04/creating-elegant-reports-for-gps-xml.html) descrevemos uma técnica para usar um projeto StyleVision e nomes de ficheiros padronizados, de forma a gerar relatórios para vários ficheiros de dados sem modificar o ficheiro SPS. Também pode usar a utilidade StyleVisionBatch, ou até mesmo a API StyleVision, para automatizar o processamento através de folhas de estilo SPS e criar relatórios em diversos formatos.

**Nomes dos ficheiros de gráficos**

Quando geramos e guardamos a saída em formato HTML, o relatório principal é um documento HTML e os gráficos são ficheiros de imagem separados. Podemos especificar o nome do ficheiro do gráfico na caixa de diálogo "Configurações do Gráfico", mas se quisermos guardar vários relatórios HTML na mesma pasta num servidor, precisaremos de nomes de ficheiro diferentes para cada gráfico. Caso contrário, cada novo gráfico utilizará o nome padrão, substituindo a versão anterior.

![Diálogo para especificar o nome do ficheiro de gráficos StyleVision](https://lh6.ggpht.com/-AgmhHehVq4Q/T41tGeEH85I/AAAAAAAAAy8/58M0UkyBBgs/clip_image007%25255B1%25255D.png?imgmax=800 "StyleVision chart file name dialog")

A opção "Nome de ficheiro personalizado" permite-nos utilizar uma expressão XPath para especificar um nome de ficheiro de imagem diferente. Uma solução simples pode ser gerar um número aleatório, convertê-lo para uma cadeia de caracteres e inserir essa cadeia no nome do ficheiro.

No entanto, não podemos fazer isso porque o XPath não inclui uma função "random()".

Em vez disso, podemos gerar uma sequência pseudoaleatória combinando duas funções XPath adicionais. A função `seconds-from-time()` retorna os segundos e milissegundos de qualquer valor, e a função `current-time()` retorna a hora atual do sistema em horas, minutos, segundos e milissegundos.

Podemos inserir um valor numérico representando os segundos a partir de um determinado momento (obtido a partir da função `current-time()`) numa expressão XPath, na caixa de diálogo de configurações do ficheiro de imagem, para criar um nome de ficheiro com base no segundo e milissegundo exatos em que o resultado HTML é gerado. A expressão XPath completa para gerar a cadeia de caracteres do nome do ficheiro é a seguinte:

![Nome de ficheiro do gráfico personalizado, baseado numa expressão XPath](https://lh3.ggpht.com/-eKYGKDgTE3Y/T41tG5rSf_I/AAAAAAAAAzA/mfzA2xHPfCs/clip_image008%25255B1%25255D.png?imgmax=800 "Custom chart file name based on an XPath expression")

Quando guardamos o código HTML gerado, o StyleVision informa sobre todos os ficheiros adicionais criados juntamente com o documento principal:

![Nome de ficheiro pseudoaleatório gerado com base numa expressão XPath](https://lh5.ggpht.com/-lFtknXRCRx0/T41tHYy-d4I/AAAAAAAAAzE/rXLms4KlLFE/clip_image009%25255B1%25255D.png?imgmax=800 "Pseudo-random file name generated based on XPath expression")

**Nomes dos ficheiros de imagem do mapa da rota**

Quando criamos várias páginas HTML para relatórios de viagens, também precisamos referenciar uma imagem de mapa de rota diferente para cada viagem. O XPath também pode ajudar nesta tarefa. Inicialmente, inserimos o mapa utilizando uma URL com um nome de ficheiro específico, mas, em vez disso, podemos definir um nome de ficheiro de imagem como um parâmetro a ser fornecido quando a folha de estilos é processada.

A opção de menu "Editar / Parâmetros da folha de estilos" abre a caixa de diálogo "Editar Parâmetros", que fornece acesso centralizado a todos os parâmetros da folha de estilos. Na captura de ecrã abaixo, adicionámos um parâmetro chamado "routeMapFile" e definimos o seu valor padrão.

![Janela de parâmetros de edição do StyleVision](https://lh4.ggpht.com/-RNgIJCRUynk/T41tJ9qjtbI/AAAAAAAAAzI/xRMtQEP7KUs/clip_image010%25255B1%25255D.png?imgmax=800 "StyleVision Edit Parameters window")

Agora podemos usar o parâmetro para atribuir o ficheiro de mapa de rotas. A caixa de diálogo "Editar Imagem" inclui quatro opções para definir a localização de uma imagem. Na captura de ecrã abaixo, selecionámos as abas "Estática" e "Dinâmica" para um caminho de pasta específico e um nome de ficheiro dinâmico.

![Atribuir um parâmetro ao nome de um ficheiro de imagem](https://lh4.ggpht.com/-Fpvq94Ozbhw/T41tKTSpdvI/AAAAAAAAAzM/4niINvq5I7U/clip_image011%25255B1%25255D.png?imgmax=800 "Assigning a parameter to an image file name")

Podemos fornecer um novo valor para o parâmetro routeMapFile quando geramos um relatório em qualquer formato de saída. Se não fornecermos um novo valor, será utilizado o valor padrão definido no diálogo "Editar Parâmetros".

Agora podemos escrever uma linha de comando para executar o StyleVision em modo batch com uma imagem de mapa de rotas diferente:

![Linha de comando para executar o StyleVision em modo batch com um parâmetro](https://lh6.ggpht.com/-9pYl5bC12Bs/T41tLKn4VnI/AAAAAAAAAzQ/ByarXQ-ZdcE/clip_image012%25255B1%25255D.png?imgmax=800 "Command line to execute StyleVision in batch mode with a parameter")

Podemos também usar um parâmetro para definir a cor de fundo do gráfico. Uma opção de linha de comandos pode até mesmo selecionar um novo ficheiro XML de entrada para substituir o ficheiro XML ativo definido na folha de estilos. Os parâmetros e as opções de linha de comandos tornam o StyleVisionBatch uma excelente ferramenta para utilizar a mesma folha de estilos para gerar relatórios para diferentes conjuntos de dados.

Aqui está a pré-visualização em HTML dos dados da viagem de escalada no gelo, com todas as melhorias XPath aplicadas:

![Pré-visualização HTML do relatório, com melhorias baseadas em XPath](https://lh5.ggpht.com/--MSr3CqE-Uo/T41tLuthPCI/AAAAAAAAAzU/RyC_Ff9hN6M/clip_image014%25255B1%25255D.jpg?imgmax=800 "HTML preview of the report with XPath enhancements")

Para criar os seus próprios relatórios a partir de ficheiros XML de GPS, ou para obter resultados elegantes em qualquer outro tipo de relatório XML, formulários eletrónicos ou necessidade de publicação multicanal, [clique aqui para experimentar gratuitamente o Altova StyleVision](https://www.altova.com/pt/download/stylevision/db_xslt_stylesheet_designer_enterprise.html).
