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!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top