Dans XSLT, comment pouvez-vous obtenir la date de création / modification du fichier XML?

StackOverflow https://stackoverflow.com/questions/643592

Question

J'aimerais connaître la date de création / modification du fichier XML en cours de traitement par mon code XSLT.

Je suis en train de traiter un fichier XML et de générer un rapport HTML. J'aimerais inclure la date du fichier XML source dans le rapport HTML.

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

Était-ce utile?

La solution 3

À la suite des suggestions de Kaarel et de Robert, j'ai pu parvenir à la solution suivante:

Obtenez la date de modification du fichier en C # et transmettez-la 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, dans le code XSLT, définissez et accédez à cet argument en tant que paramètre, comme suit:

<xsl:param name="FileDate"/>

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

Autres conseils

La date de création / modification doit être écrite dans le fichier XML, sinon vous ne pourrez pas la trouver, à moins que vous ne communiquiez avec le système de fichiers.

Cette question est quelque peu liée: xslt-comment-obtenir-les-noms-fichiers-depuis-un-certain-répertoire

Les seuls éléments auxquels XSLT a accès sont les nœuds de l’arborescence source, les nœuds dans les documents lus via la fonction document () , les nœuds dans le modèle XSLT lui-même (à nouveau via le document () ) et les valeurs transmises à la transformation en tant qu'arguments.

Donc, si vous souhaitez que le nom de fichier et sa date de création / modification soient disponibles pour votre transformation, vous devez les placer à l'un de ces emplacements.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top