簡體   English   中英

在XSLT中,如何獲取XML文件的文件創建/修改日期?

[英]In XSLT, how can you get the file creation/modification date of the XML file?

我想知道我的XSLT代碼當前正在處理的XML文件的文件創建/修改日期。

我正在處理XML文件並生成HTML報告。 我想在HTML報告中包含源XML文件的日期。

注意:我正在使用C#.NET 2008並使用內置的XslCompiledTransform類。 從那以后,我在這里找到了使用其他答案的輸入的解決方案(單獨答案)。 謝謝!

必須將創建/修改日期寫入XML文件,否則,除非您與文件系統進行某種通信,否則無法找到它。

這個問題有些相關: xslt如何從某個目錄中獲取文件名

XSLT唯一可以訪問的是源樹的節點,通過document()函數讀取的document()節點,XSLT模板本身(再次通過document()函數)中的節點以及傳遞到轉換中的值作為參數。

因此,如果您希望文件名及其創建/修改日期可用於您的轉換,則必須將它們放在其中之一。

可以實現XSLT擴展方法來執行此操作,具體取決於您所使用的平台,但這將是我的最后選擇。

經過Kaarel和Robert的建議,我得以達成以下解決方案:

在C#中獲取文件修改日期,並將其傳遞給XSLT處理器,如下所示:

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

然后在XSLT代碼中,如下定義和訪問該參數作為參數:

<xsl:param name="FileDate"/>

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM