¿Puede un XSLT insertar la fecha actual?

Un progtwig que usamos en mi oficina exporta informes traduciendo un archivo XML que exporta con un archivo XSLT a XHTML. Estoy reescribiendo el XSLT para cambiar el formato y para agregar más información del archivo XML de origen.

Me gustaría incluir la fecha en que se creó el archivo en el informe final. Pero la fecha / hora actual no está incluida en el archivo XML original, ni tengo ningún control sobre cómo se crea el archivo XML. No parece haber ninguna función de fecha en XSLT que devuelva la fecha actual.

¿Alguien tiene alguna idea de cómo podría incluir la fecha actual durante mi transformación XSLT?

XSLT 2

Las funciones de fecha están disponibles de forma nativa, como:

 

También hay current-date() y current-time() .

XSLT 1

Use el paquete EXSLT de fecha y hora de extensión.

  1. Descargue el paquete de fecha y hora de GitHub .
  2. Extraiga date.xsl a la ubicación de sus archivos XSL.
  3. Establecer el encabezado de la hoja de estilo.
  4. Importar date.xsl .

Por ejemplo:

       

Para el analizador MSXML, intente esto:

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

Lea también XSLT Stylesheet Scripting usando msxsl: script y Extender XSLT con JScript, C # y Visual Basic .NET

¿Tienes control sobre ejecutar la transformación? De ser así, podría pasar la fecha actual al XSL y usar $ current-date desde dentro de su XSL. A continuación se muestra cómo declara el parámetro entrante, pero al saber cómo está ejecutando la transformación, no puedo decirle cómo pasar el valor.

  

Por ejemplo, desde el script bash, use:

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

Luego, en xsl puedes usar:

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

Última respuesta, pero mi solución funciona en Eclipse XSLT. Eclipse usa XSLT 1 al momento de escribir esto. Puede instalar un motor XSLT 2 como Saxon. O puede usar la solución XSLT 1 a continuación para insertar la fecha y la hora actuales.

  

Esto llamará a la clase de datos de Java para generar la fecha. No funcionará a menos que también coloque la siguiente definición “java:” en su etiqueta .

  

Espero que ayude a alguien. Esta simple respuesta fue difícil de encontrar para mí.

 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. 

referencia: formateo de fechas y horas con XSLT 2.0 y XPath