phpbar.de logo

Mailinglisten-Archive

[php] DOM appendChild

[php] DOM appendChild

Peter Bieling net2 at media-palette.de
Mon Mar 26 20:12:40 CEST 2007


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