Un XSLT peut-il insérer la date actuelle?

Un programme que nous utilisons dans mon bureau exporte des rapports en traduisant un fichier XML qu’il exporte avec un fichier XSLT vers XHTML. Je réécris le XSLT pour modifier le formatage et append des informations supplémentaires à partir du fichier XML source.

J’aimerais inclure la date de création du fichier dans le rapport final. Mais la date / heure actuelle n’est pas incluse dans le fichier XML d’origine, et je n’ai aucun contrôle sur la façon dont le fichier XML est créé. Il ne semble pas y avoir de fonctions de date dans XSLT qui renvoient la date actuelle.

Est-ce que quelqu’un a une idée de la manière dont je pourrais inclure la date du jour lors de ma transformation XSLT?

XSLT 2

Les fonctions de date sont disponibles en mode natif, telles que:

 

Il y a aussi current-date() et current-time() .

XSLT 1

Utilisez le package d’extension de date et d’heure EXSLT.

  1. Téléchargez le package de date et d’heure de GitHub .
  2. Extrayez date.xsl à l’emplacement de vos fichiers XSL.
  3. Définissez l’en-tête de la feuille de style.
  4. Importer la date.xsl .

Par exemple:

       

Pour l’parsingur MSXML, essayez ceci:

   function today() { return new Date(); }   Today =    

Lisez également les scripts de feuille de style XSLT à l’aide de msxsl: script et Extension de XSLT avec JScript, C # et Visual Basic .NET.

Avez-vous le contrôle sur l’exécution de la transformation? Si tel est le cas, vous pouvez transmettre la date actuelle à la XSL et utiliser $ current-date depuis l’intérieur de votre XSL. Voici comment vous déclarez le paramètre entrant, mais en sachant comment vous exécutez la transformation, je ne peux pas vous dire comment transmettre la valeur.

  

Par exemple, à partir du script bash, utilisez:

 xsltproc --ssortingngparam current-date `date +%Y-%m-%d` -o output.html path-to.xsl path-to.xml 

Ensuite, dans le XSL, vous pouvez utiliser:

  
 ... xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:local="urn:local" extension-element-prefixes="msxsl">  public ssortingng dateTimeNow() { return DateTime.Now.ToSsortingng("yyyy-MM-ddTHH:mm:ssZ"); }  ...  

Réponse tardive, mais ma solution fonctionne dans Eclipse XSLT. Eclipse utilise XSLT 1 au moment de la rédaction de ce document. Vous pouvez installer un moteur XSLT 2 comme Saxon. Ou vous pouvez utiliser la solution XSLT 1 ci-dessous pour insérer la date et l’heure actuelles.

  

Cela appellera la classe de données Java pour sortir la date. Cela ne fonctionnera pas à moins que vous ne mettiez également la définition “java:” suivante dans votre .

  

J’espère que cela aide quelqu’un. Cette réponse simple était difficile à trouver pour moi.

 format-date(current-date(), '[M01]/[D01]/[Y0001]') = 09/19/2013 format-time(current-time(), '[H01]:[m01] [z]') = 09:26 GMT+10 format-dateTime(current-dateTime(), '[h1]:[m01] [P] on [MNn] [D].') = 9:26 am on September 19. 

reference: Mise en forme des dates et des heures à l’aide de XSLT 2.0 et XPath