Pergunta

Gostaria de saber a data de criação do arquivo / modificação do arquivo XML a ser processado por meu código XSLT.

Eu estou processando um arquivo XML e produzir um relatório HTML. Eu gostaria de incluir a data do arquivo XML de origem no relatório HTML.

Nota: eu estou usando C # .NET 2008 e usando a classe embutida XslCompiledTransform. Tenho visto que encontrou uma solução (resposta em separado) utilizando a introdução de outras respostas aqui. Obrigado!

Foi útil?

Solução 3

Depois de sugestões de Kaarel e Robert, eu era capaz de chegar a seguinte solução:

Obter a data de modificação do arquivo em C # e passá-lo para o processador XSLT como segue:

XmlTextWriter tw = new XmlTextWriter(htmlPath, null);
tw.Formatting = Formatting.Indented;
tw.Indentation = 4;

XsltArgumentList args = new XsltArgumentList();
FileInfo fi = new FileInfo(xmlPath);
args.AddParam("FileDate", string.Empty,
   fi.LastWriteTime.Date.ToShortDateString());

XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(xsltPath);
xslt.Transform(xmlPath, args, tw);
tw.Close();

Em seguida, no código XSLT, definir e acesso esse argumento como um parâmetro da seguinte forma:

<xsl:param name="FileDate"/>

<xsl:text>Revision Date: </xsl:text>
<xsl:value-of select="$FileDate"/>

Outras dicas

A data de criação / modificação deve ser escrito para o arquivo XML, caso contrário você não pode encontrá-lo para fora, a menos que você se comunicar de alguma forma com o sistema de arquivos.

Esta questão é algo relacionado: xslt-how-to-get-arquivo-nomes-de-um-certo-diretório

As únicas coisas que XSLT tem acesso são nós da árvore fonte, nós em documentos lidos através da função document(), nós no próprio modelo XSLT (novamente através da função document()), e os valores passados ??para a transformação como argumentos.

Então, se você quiser que o nome do arquivo e sua data de criação / modificação de estar disponível para a sua transformação, você tem que colocá-los em um desses lugares.

É possível implementar métodos de extensão XSLT para fazer isso, dependendo de qual plataforma você está usando, mas que seria a minha última escolha.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top