![]() Mailinglisten-Archive |
Hallo Peter, erstmal danke f�r deine Antwort. Peter Bieling wrote: > Ich w�rde nach M�glichkeit auf den ganzen DOM-Kram verzichten, denn so > wie es aussieht holst Du ja nur ein Tabellenzeilen-Template aus der > XML-Datei, das Du dann f�llen willst. Das stimmt teilweise. Ich m�chte die Platzhalter f�llen, aber eben auch die Tabellenzeile n mal vervielf�ltigen. Die Tabellenzeile steht nur einmal in der OpenOffice Vorlage und schaut entsprechend in der content.xml Datei so aus: <table:table-row> <table:table-cell table:style-name="Table2.A2" office:value-type="string"> <text:p text:style-name="P2">{NO. RECEIPTS}</text:p> </table:table-cell> <table:table-cell table:style-name="Table2.A2" office:value-type="string"> <text:p text:style-name="P2">{DESCRIPTION RECEIPTS}</text:p> </table:table-cell> <table:table-cell table:style-name="Table2.A2" office:value-type="string"> <text:p text:style-name="P2">{CATEGORY RECEIPTS}</text:p> </table:table-cell> <table:table-cell table:style-name="Table2.D2" office:value-type="string"> <text:p text:style-name="P2">{RECEIPTS}<text:s/>{AMOUNT}</text:p> </table:table-cell> </table:table-row> Das heisst um die Tabellen-Zeile n-mal vervielf�ltigen zu k�nnen, muss ich die komplette <table:table-row>...</table:table-row> vervielf�ltigen. Das erreiche ich mit cloneNode und appendChild. Die Anzahl der erforderlichen Tabellenzeilen kommen aus einer DB-Abfrage. Es sind die Belege, die zu einer Spesenabrechnung geh�ren. Diese Tabellen-Zeile oben steht nur einmal in der .odt Vorlage und soll entsprechend der Anzahl der Belege vervielf�ltigt werden. Das Ersetzen der Platzhalter funktioniert ja auch wunderbar, nur wenn ich diese Tabellenzeile jetzt 5 mal habe, dann steht auch z.B. 5 mal der Platzhalter {NO. RECEIPTS} in den zeilen. Ersetze ich dann mit str_replace {NO. RECEIPTS} das erste Mal, sind ja alle Vorkommen von {NO. RECEIPTS} ersetzt und nicht nur das Erste. Ich br�uchte sowas {NO. RECEIPTS}{$i} als Platzhalter und $i w�rde dann nach jedem Durchlauf hochgez�hlt, sodass ich dann {NO. RECEIPTS}{1}, {NO. RECEIPTS}{2} usw. habe. So habe ich es auch schon versucht, aber $i wird halt nicht als Variable interpretiert. > In XML-Dateien geh�ren ja > normalerweise Daten, w�hrend Templates in Template-Dateien geh�ren. ;-) > (Ausnahme sind nat�rlich Templates im XML-Format, z.B. XSLT-Dateien aber > die bearbeitet man dann auch nicht mit str_replace.) Ich hoffe nach meiner Beschreibung oben ist mein Problem jetzt klarer? > Vielleicht erkl�rst Du mal genauer, was Du vor hast, und warum die > DOM-Funktionen Dir besonders geeignet erscheinen, Dein Problem zu l�sen. > Kommt diese XML-Datei z.B. aus fremder Quelle, auf die Du keinen > Einfluss hast? > So lange man den Sinn nicht versteht, fehlt auch ein bisschen die > Motivation, Dir zu helfen. Die OpenOffice Datei ist eine Vorlage, die ich nicht beeinflussen kann und enth�lt unter anderem Platzhalter in einer Tabellenzeile, die beliebig oft dupliziert werden k�nnen muss (die Tabellenzeile) und dann jeweils mit anderen Daten gef�llt wird. Es muss auch m�glich sein, dass die OpenOffice Datei im Design und Layout angepasst werden kann, daher muss ich den DOM weg gehen, um alle Formatierungen der Nodes und ChildNodes usw. behalten zu k�nnen und flexibel zu bleiben. Da es ja eine pure XML-Datei ist, die ich bearbeiten muss, denke ich dass DOM da schon der richtige Weg ist, es hakt halt nur gerade ein wenig... Irgendwie tue ich mir schwer das Problem zu beschreiben, ich hoffe es ist jetzt klar geworden!? Gruss Andi
php::bar PHP Wiki - Listenarchive