In XSLT, wie können Sie die Datei-Erstellung / Änderung Datum der XML-Datei erhalten?
-
22-07-2019 - |
Frage
Ich möchte die Erstellung der Datei / Änderungsdatum der XML-Datei wissen, zur Zeit von meinem XSLT-Code verarbeitet werden.
Ich bin der Verarbeitung einer XML-Datei und zum Erzeugen eines HTML-Bericht. Ich möchte das Datum der XML-Quelldatei im HTML-Bericht enthalten sein.
Hinweis: Ich bin mit C # .NET 2008 und der eingebauten in XslCompiledTransform Klasse. Ich habe da eine Lösung (getrennte Antwort) mit Input von anderen Antworten hier. Dank!
Lösung 3
Nach Anregungen von Kaarel und Robert konnte ich die folgende Lösung erreichen:
Rufen Sie die Datei Änderungsdatum in C # und gibt sie an den XSLT-Prozessor wie folgt:
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();
Dann in dem XSLT-Code, definieren und dieses Arguments als param Zugriff wie folgt:
<xsl:param name="FileDate"/>
<xsl:text>Revision Date: </xsl:text>
<xsl:value-of select="$FileDate"/>
Andere Tipps
Die Erstellung / Änderung Datum in die XML-Datei geschrieben werden muß, sonst kann man es nicht herausfinden, es sei denn, man irgendwie mit dem Dateisystem kommunizieren.
Diese Frage ist etwas verwandte: xslt-how-to-get-Datei-Namen-from-a-bestimmte-Verzeichnis
Die einzigen Dinge, die XSLT-Zugriff hat sind Knoten des Quellbaum, Knoten in Dokumente eingelesen über die document()
Funktion, Knoten in der XSLT-Vorlage selbst (wieder über die document()
Funktion) und Werte übergeben, um die Transformation als Argumente.
Also, wenn Sie wollen, dass der Dateiname und die Erstellung / Änderungsdatum zu Ihrer Transformation zur Verfügung stehen, müssen Sie sie in einer dieser Orte setzen.
Es ist möglich, XSLT-Erweiterung Methoden zu implementieren, dies zu tun, in Abhängigkeit davon, welche Plattform Sie verwenden, aber das wäre meine letzte Wahl sein.