Mailinglisten-Archive |
Hallo Andi, Andi Voss wrote: > 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: Dass bestimmte Teile eines Templates mehrfach gefüllt werden, ist ja eigentlich normal. > <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> Es ist halt sehr umständlich, mit DOM-Funktionen, diese Platzhalter gegen Inhalt auszutauschen. Sieh Dir mal dieses Beispiel an: http://www.media-palette.de/xml-line-0-4-3-6-alpha/examples/copy_branch.php Mit der Klasse XML-line und der Methode copy_branch() kannst Du z.B. Deine Tabellenzeile kopieren und dann mit str_replace oder besser mit meiner bereits genannten Templateklasse füllen. Das Template lässt sich z.B. dynamisch an das Array $t->tpl übergeben - $t->tpl['oo_tablerow'] = $oo_tablerow; und dann mit fill_rowtpl aus der DB füllen, wenn man vorher ein Array erzeugt hat: $table_rows = fill_rowtpl('oo_tablerow', $key_value_arr). Dann kann man diesen ganzen XML-String, wieder in die Datei einbauen: http://www.media-palette.de/xml-line-0-4-3-6-alpha/examples/insert_after_element.php. Eigentlich ganz einfach. ;-) > Irgendwie tue ich mir schwer das Problem zu beschreiben, ich hoffe es > ist jetzt klar geworden!? Nein, die Erklärung war jetzt sehr verständlich. Ich kann das gern morgen mal mit einem vollständigen Skript demonstrieren, nur heute habe ich leider keine Zeit mehr. Viele Grüße Peter
php::bar PHP Wiki - Listenarchive