2009-03-13 7 views
1

Je voudrais connaître la date de création/modification du fichier XML en cours de traitement par mon code XSLT.En XSLT, comment obtenir la date de création/modification du fichier XML?

Je suis en train de traiter un fichier XML et de produire un rapport HTML. Je souhaite inclure la date du fichier XML source dans le rapport HTML.

Remarque: J'utilise C# .NET 2008 et utilise la classe XslCompiledTransform intégrée. J'ai depuis trouvé une solution (réponse séparée) en utilisant l'entrée d'autres réponses ici. Merci!

Répondre

2

Après suggestions de Kaarel et Robert, j'ai pu arriver à la solution suivante:

Obtenir la date de modification du fichier en C# et de le transmettre au processeur XSLT comme suit:

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(); 

Puis, en le code XSLT, définissez et accédez à cet argument en tant que param comme suit:

<xsl:param name="FileDate"/> 

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

La date de création/modification doit être écrite dans le fichier XML, sinon vous ne pouvez pas le trouver, sauf si vous communiquez d'une manière ou d'une autre avec le système de fichiers.

Cette question est un peu lié: xslt-how-to-get-file-names-from-a-certain-directory

3

Les seules choses que XSLT a accès sont des noeuds de l'arborescence des sources, des noeuds dans les documents lus via la fonction document(), noeuds dans le modèle XSLT lui-même (encore une fois par la document() function) et les valeurs passées à la transformation en tant qu'arguments. Par conséquent, si vous souhaitez que le nom de fichier et sa date de création/modification soient disponibles pour votre transformation, vous devez les placer dans l'un de ces emplacements.

Il est possible d'implémenter des méthodes d'extension XSLT pour cela, en fonction de la plate-forme que vous utilisez, mais ce serait mon dernier choix.

Questions connexes