einXSLTbeginnerDerSichSchrittFuerSchrittHEranwagt: Schreiben mehrerer CSV-Dateien

Beitrag lesen

Hallo liebe Leutz,

ich habe hier ein Problem mit XSLT, liegt mit hoher Wahrscheinlichkeit auch daran, dass ich noch nicht völlig hinter der Abarbeitung einer XSL-Transformation blicke.

Ich habe ein XML-Dokument mit folgendem Aufbau:

-Root
  -SalesOrder (können mehrere sein)
  -number (z.b. 123)
  -status (z.b. ok)
  .
  .
  .
  -Details (können ebenfalls mehrere sein)
    -Subnumber (z.b. 456)
    -reference (z.b. abc)
    .
    .
    .

Mein Ziel ist, zwei CSV-Dateien zu erzeugen, eine mit dem Inhalt aller Werte von "Details", jeder Wert getrennt durch ein Trennzeichen meiner Wahl (also , oder ; und so), und einer Datei, gefüllt mit den Werten aus "SalesOrder" OHNE die Werte von "Details", ebenfalls durch Trennzeichen getrennt.

Das ganze sollte so aussehen:
_________________
Datei1.csv:

123, ok, ..., ...
_________________
Datei2.csv:

456, abc, ..., ...

Das ganze muss mit "result-document" funktionieren.
Ich habe schon vieles ausprobiert und es auch geschafft, Werte in eine CSV zu schreiben.

Leider scheiterte es immer damit, dass ich die Werte auf einen Schlag geschrieben habe und ich somit kein Trennzeichen zwischen den Werten platzieren konnte (also kein valides csv).
Versuche, die Werte einzeln zu schreiben endeten stets erfolglos mit der exception, das ich nicht mehrfach in eine Datei schreiben kann (Cannot write more than one result doc to the same URI).

Ausserdem klappt mein handling mit den templates auch noch nicht so richtig.

Ich hab vieles probiert und gegoogelt, bin aber jetzt ziemlich ratlos und wende mich an einen XSLT-spezialisten.

Hier einmal mein (gefühlt 100. Umbau) meines XSLTs (das ist eine UNFERTIGE Version,also bitte nicht sagen "wie soll das damit gehen". Mir ist auch bewusst, dass ich zuerst Versuche, nur eine Datei zu erzeugen, weil wenn es noch nichtmal mit einer klappt..):

<xsl:template match="/">  
	<xsl:for-each select="//Details">  
		<xsl:result-document href="Pos.csv" format="csv">  
			<xsl:value-of select="child::\*"/>  
			<xsl:text>, </xsl:text>  
		</xsl:result-document>  
	</xsl:for-each>  
</xsl:template>  

Im großen und ganzen frag ich eigentlich nur, wie schreibe ich Werte nacheinander in eine Datei, und füge zwischen jedem Wert ein eigenes Zeichen ein, und geht das überhaupt?
Wer eine Idee hat, bitte auch kurz beschreiben was denn da passiert, sonst lern ich das nie ^^

Bin natürlich für jede Hilfe dankbar!