Pregunta

Me gustaría saber la fecha de creación / modificación del archivo XML que mi código XSLT está procesando actualmente.

Estoy procesando un archivo XML y produciendo un informe HTML. Me gustaría incluir la fecha del archivo XML de origen en el informe HTML.

Nota: Estoy usando C # .NET 2008 y la clase XslCompiledTransform incorporada. Desde entonces he encontrado una solución (respuesta separada) usando la entrada de otras respuestas aquí. Gracias!

¿Fue útil?

Solución 3

Después de las sugerencias de Kaarel y Robert, pude llegar a la siguiente solución:

Obtenga la fecha de modificación del archivo en C # y páselo al procesador XSLT de la siguiente manera:

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

Luego, en el código XSLT, defina y acceda a ese argumento como un parámetro de la siguiente manera:

<xsl:param name="FileDate"/>

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

Otros consejos

La fecha de creación / modificación debe escribirse en el archivo XML; de lo contrario, no podrá averiguarlo, a menos que se comunique de alguna manera con el sistema de archivos.

Esta pregunta está algo relacionada: xslt-how-to-get-file-names-from-a-Certain-directory

Las únicas cosas a las que XSLT tiene acceso son los nodos del árbol fuente, los nodos en los documentos leídos a través de la función document () , los nodos en la plantilla XSLT (nuevamente a través del documento () ) y los valores pasados ??a la transformación como argumentos.

Entonces, si desea que el nombre de archivo y su fecha de creación / modificación estén disponibles para su transformación, debe colocarlos en uno de esos lugares.

Es posible implementar métodos de extensión XSLT para hacer esto, dependiendo de la plataforma que esté utilizando, pero esa sería mi última opción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top