XPath melhora os relatórios XML
No nosso artigo anterior, "Criação de Relatórios Elegantes para Dados XML de GPS", 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 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.

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.

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.

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.

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:

Temos mais uma melhoria XPath para o nosso relatório XML de GPS. No nosso artigo anterior, 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.

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:

Quando guardamos o código HTML gerado, o StyleVision informa sobre todos os ficheiros adicionais criados juntamente com o documento principal:

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.

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.

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:

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:

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.