[Php-it] da XUL al resto del mondo (una disamina sugli alberi)
Andrea Franceschini
therealmorpheu5 at gmail.com
Mon Apr 9 12:06:40 CEST 2007
Allora, eccomi qua in procinto di partirmene per i campi, trovo il
tempo per rendervi partecipi del tarlo che mi sta ravanando il
cervello da qualche giorno.
Dovevo trovare un linguaggio di specifica per form, ovvero specificare
campi linea, aree di testo, combo, liste... cose così. Ho trovato che
usare un sottoinsieme di XUL mi va bene ed è una scelta neanche troppo
insensata. Ora ho un problema: le form specificate via XUL, io le devo
trasformare in varie maniere, devono diventare HTML form, XForms, Qt,
Windows.Forms, GTK (ehm)...
Il problema qual'è? Stiamo parlando di oggetti che ben si sposano con
l'idea di DOM Tree, solo che i Tree mal si sposano con l'idea di
efficienza. La naturale formulazione degli alberi è ricorsiva e
sappiamo tutti che non si deve "mai assumere un programmatore che
calcola il fattoriale in modo ricorsivo". Tantopiù se lo deve fare in
PHP.
Ora, mi sono fatto un giro tra i vari traversal iterativi per vari
generi di alberi ma perlopiù ho trovato alberi binari la cui
generalizzazione ad alberi n-ari non è difficile ma mi richiederebbe
un certo tempo. Mi chiedevo se qualcuno conosce un metodo migliore di
un traversal (o un traversal iterativo già generalizzato) per
trasformare un albero DOM con tag XUL in un HTML form. Magari un XSLT
(leggevo sulla ML Qt-interest che si proponeva questo fatto per
passare da XUL a QtUi ma poi nessuno ha detto più niente) e io non
sono un grande esperto di XSLT. Nondimeno questo approccio mi
risulterebbe relativamente inutile qualora volessi poi usare lo stesso
XUL per realizzare un'interfaccia Qt on-the-fly (sì, ok, avendo il
XSLT da XUL a QtUi potrei caricare al volo l'interfaccia ma non è
questo il punto... il punto è che non tutti i linguaggi hanno un
binding a libxml o equivalente che faccia anche la trasformazione
XSLT).
La seconda domanda è: se mi dovessi buttare a scrivere un traversal
iterativo n-ario, che genere di traversal mi consigliereste, sapendo
che in pratica devo leggere il tree XUL e sputare fuori l'interfaccia
relativa all'applicazione in qualche modo? Preorder? Per livelli?
More information about the Php-it
mailing list