Um programa que usamos em meu escritório exporta relatórios traduzindo um arquivo XML que exporta com um arquivo XSLT para XHTML. Estou reescrevendo o XSLT para alterar a formatação e adicionar mais informações do arquivo XML de origem.
Gostaria de incluir a data de criação do arquivo no relatório final. Mas a data / hora atual não está incluída no arquivo XML original, nem tenho qualquer controle sobre como o arquivo XML é criado. Não parece haver nenhuma função de data construída em XSLT que retornará a data atual.
Alguém tem alguma ideia de como posso incluir a data atual durante minha transformação XSLT?
Respostas:
XSLT 2
As funções de data estão disponíveis nativamente, como:
Também existe
current-date()
ecurrent-time()
.XSLT 1
Use o pacote EXSLT de extensão de data e hora.
date.xsl
para o local de seus arquivos XSL.date.xsl
.Por exemplo:
fonte
Para o analisador MSXML, tente isto:
Leia também Scripts de folha de estilo XSLT usando msxsl: script e Extending XSLT com JScript, C # e Visual Basic .NET
fonte
Você tem controle sobre a execução da transformação? Nesse caso, você poderia passar a data atual para o XSL e usar $ current-date de dentro de seu XSL. Abaixo está como você declara o parâmetro de entrada, mas sabendo como você está executando a transformação, não posso dizer como passar o valor.
Por exemplo, no script bash, use:
Então, no xsl você pode usar:
fonte
xsltproc --stringparam current-date `date +%Y-%m-%d` -o output.html path-to.xsl path-to.xml
. Alguns sistemas também aceitam parâmetros como$param=value
, então, nesse caso, em$current-date=`date +%Y-%m-%d`
algum lugar. Ou procure maneiras de especificar parâmetros em qualquer processador XSLT que você esteja usando.fonte
Resposta tardia, mas minha solução funciona em Eclipse XSLT. O Eclipse usa XSLT 1 no momento em que este artigo foi escrito. Você pode instalar um motor XSLT 2 como o Saxon. Ou você pode usar a solução XSLT 1 abaixo para inserir a data e a hora atuais.
Isso chamará a classe Data do Java para gerar a data. Não funcionará a menos que você também coloque a seguinte definição "java:" em sua
<xsl:stylesheet>
tag.Espero que ajude alguém. Essa resposta simples foi difícil de encontrar para mim.
fonte
referência: Formatação de datas e horas usando XSLT 2.0 e XPath
fonte