2009-07-13 9 views
0

Ich habe ein XSLT-Skript, das ich für die Codegenerierung verwende, wo ich mehrere XML-Eingabedateien verarbeitet und die Dateien in Javascript-Code ausgibt. Für jede XML-Eingabedatei gebe ich eine Javascript-Datei aus.XSLT Anfügen an Ergebnisdokument

Also, ich hätte folgende Dateien/Transformationen auftreten:

view1.xml -> view1.js 
view2.xml -> view2.js 
... 

Jetzt habe ich eine Anforderung auch eine zusätzliche Datei während der XSL-Verarbeitung zu erstellen, wo ich Informationen über die einzelnen Eingabedatei anhängen müssen zu einer gemeinsamen Javascript-Datei verarbeitet.

So, jetzt hätte ich:

view1.xml -> view1.js/append to common.js 
view2.xml -> view2.js/append to common.js 
... 

Meine Frage ist, ist es möglich, eine Datei während der Verarbeitung von mehreren Eingabedateien anhängen? Ich benutze derzeit Saxon 9.1.0.7, und ich schaute auf das xsl: result-document-Element, aber dies scheint überschreiben zuvor geschriebenen Inhalt.

Danke.

+0

Suchen Sie nach einer generischen Lösung oder der korrekten Konfiguration von Saxon, um das Anhängen zu ermöglichen? – Yuval

+0

Eine sächsische spezifische Konfiguration wäre, wenn möglich, in Ordnung. – Steve

Antwort

1

Nein, ich glaube nicht, dass Sie eine vorhandene (nicht XML-, gerade) Datei aus XSLT anhängen können.

Auf der anderen Seite ist das Anhängen eines Ergebnisses an eine Datei problemlos in der Umgebung möglich, in der die Umwandlung ausgeführt wird. Sei es eine Programmiersprache oder eine Shell, Textdateiverkettung sollte eine triviale Übung sein. Ich schlage vor, dass du es dort machst, anstatt zu versuchen, XSLT zu biegen, um es zu tun.

+0

Guter Punkt. Ich brauche ein Attribut von jeder Eingabedatei verarbeitet, aber ich könnte dies auch leicht mit einer Skriptsprache extrahieren und diese Informationen anhängen. Vielen Dank. – Steve

+0

hmm .. habe ich vermisst, versuche nicht ein Problem zu lösen, das es nicht gibt :-) –

0

Es gibt eine Funktion in XSLT "document()". Sie können dies verwenden, um mehrere XML-Eingabedateien von einem einzigen XSLT zu verarbeiten und daher eine einzelne Ausgabe. Ich bin mir nicht sicher, ob es in Ihrem Fall hilft.

etwas wie.

+0

Ich würde es vorziehen, die Eingabedateinamen nicht angeben zu müssen. Momentan verarbeite ich alle Dateien in einem Eingabeverzeichnis und lege ein Ausgabeverzeichnis für die Transformationsdateien an. Es werden viele weitere Eingabedateien erstellt, und ich möchte für jede neue Eingabedatei kein document() -Element hinzufügen. – Steve

+0

dafür können Sie eine andere XML-Datei im laufenden Betrieb schreiben (mit einem anderen Skript). enthält den Namen aller Dateien und verarbeitet sie und fügt document() - Tags in einer Schleife in XSLT hinzu. Dies ist das Beste, was ich mir jetzt vorstellen kann. :-) –

+0

Ich würde hoffen, dass es einen direkteren Weg geben würde, aber das hört sich so an, als könnte es funktionieren, wenn es keine anderen Optionen gibt. Ich verwende Ant für die Umwandlung, also könnte ich einfach einen Skriptaufruf in den Build einfügen und eine andere Umwandlung aufrufen. Danke – Steve