89 votes

Peut XSLT insérer la date actuelle?

Un programme que nous utilisons dans mon bureau rapports des exportations par la traduction d'un fichier XML, il exportations avec un fichier XSLT en XHTML. Je réécris le XSLT pour modifier la mise en forme et ajouter plus d'informations à partir de la source de Fichier XML.

J'aimerais inclure la date à laquelle le fichier a été créé dans le rapport final. Mais la date/heure actuelle n'est pas inclus 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 être n'importe quelle date les fonctions de construction en XSLT qui renvoie la date actuelle.

Quelqu'un aurait-il une idée de comment je pourrais être en mesure d'inclure la date actuelle au cours de ma transformation XSLT?

112voto

Jim Garrison Points 39523

XSLT 2

Les fonctions de Date sont disponibles en mode natif, tel que:

<xsl:value-of  select="current-dateTime()"/>

Il est également current-date() et current-time().

XSLT 1

Utiliser le EXSLT date et le temps de package d'extension.

  1. Télécharger la date et le temps de package.
  2. Extraire date.xsl à l'emplacement de vos fichiers XSL.
  3. Définir la feuille de style d'en-tête.
  4. Importer date.xsl.

Par exemple:

<xsl:stylesheet version="1.0" 
    xmlns:date="http://exslt.org/dates-and-times" 
    extension-element-prefixes="date"
    ...>

    <xsl:import href="date.xsl" />

    <xsl:template match="//root">
       <xsl:value-of select="date:date-time()"/>
    </xsl:template>
</xsl:stylesheet>

14voto

Rubens Farias Points 33357

Pour MSXML parser, essayez ceci:

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                xmlns:my="urn:sample" extension-element-prefixes="msxml">

    <msxsl:script language="JScript" implements-prefix="my">
       function today()
       {
          return new Date(); 
       } 
    </msxsl:script> 
    <xsl:template match="/">

        Today = <xsl:value-of select="my:today()"/>

    </xsl:template> 
</xsl:stylesheet>

Lire aussi feuille de style XSLT de Script à l'aide de msxsl:script et l'Extension XSLT avec JScript, C# et Visual Basic .NET

14voto

Kevin Hakanson Points 15498

Vous avez le contrôle sur l'exécution de la transformation? Si oui, vous pouvez entrer la date actuelle à la XSL et utiliser $pour la date courante de l'intérieur de votre XSL. Ci-dessous comment déclarer le paramètre entrant, mais de savoir que vous êtes l'exécution de la transformation, je ne peux pas vous dire comment passer de la valeur.

<xsl:param name="current-date" />

Par exemple, dans le script bash, utilisez:

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

Ensuite, dans le xsl, vous pouvez utiliser:

<xsl:value-of select="$current-date"/>

10voto

Evgeny Glazov Points 61
...
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:local="urn:local" extension-element-prefixes="msxsl">

    <msxsl:script language="CSharp" implements-prefix="local">
        public string dateTimeNow()
        {       
          return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ"); 
        } 
    </msxsl:script>  
...
    <xsl:value-of select="local:dateTimeNow()"/>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X