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