2009-03-13 4 views
1

Я хотел бы узнать дату создания/изменения файла XML-файла, который в настоящее время обрабатывается моим XSLT-кодом.В XSLT, как вы можете получить дату создания/изменения файла XML-файла?

Я обрабатываю XML-файл и создаю HTML-отчет. Я хотел бы включить дату исходного XML-файла в отчет HTML.

Примечание: Я использую C# .NET 2008 и используя встроенный класс XslCompiledTransform. С тех пор я нашел решение (отдельный ответ), используя здесь ввод из других ответов. Благодаря!

ответ

2

После предложений от KAAREL и Роберт, я был в состоянии достигнуть следующее решение:

Получить дату последнего изменения файла в 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"/> 
3

Дата создания/изменения должна быть записана в файл XML, иначе вы не сможете ее найти, если вы не свяжетесь с файловой системой каким-либо образом.

несколько связанных с этим вопрос: xslt-how-to-get-file-names-from-a-certain-directory

3

только то, что XSLT имеет доступ к являются узлами дерева исходных текстов, узлы в документах чтения в с помощью функции document(), узлы в самой (шаблон XSLT снова через document()) и значения, переданные в преобразование в качестве аргументов.

Итак, если вы хотите, чтобы имя файла и его дата создания/изменения были доступны для вашего преобразования, вы должны поместить их в одно из этих мест.

Для этого можно реализовать методы расширения XSLT, в зависимости от используемой платформы, но это был бы мой последний выбор.

Смежные вопросы