Newsgroup: it.comp.lang.javascript
Titolo: modifica template preformattato da server

Ho un template grafico preformattato a tabelle. Ogni tabella e'
identificata da una classe univoca. Mi trovo nella necessita di
intervenire sul template in modo da adattarlo al mio layout di
visualizzazione agendo lato-client.
Ovviamente non posso farlo configurando il file che genera il template
in quanto questo viene generato dal server e io non ho accesso a tale
configurazione.
Ogni tabella, quindi, puo' essere leggermente adattata identificandola
tramite la classe univoca e specificando un css che agisce su tutte le
tabelle e, in ogni caso, non risolvo il mio problema.
piu' o meno la situazione semplificata e' questa:
<a name="pippo"></a>
<table class="bellatabella" width="100%">
<tr>
<td>...</td>
</tr>
</table>
<a name="pluto"></a>
<table class="bellatabella" width="100%">
<tr>
<td>...</td>
</tr>
</table>
l'unico elemento che identifica univocamente ogni tabella e'
l'attributo name di <a>.
Vorrei capire se attraverso javascript e dom e' possibile scorrere il
documento e agire solo sulle tabelle che mi interessano. Quindi una
funzione che sfrutti getElementsByName, e agisca magari sull'attributo
width della tablella "pluto" tralasciando il resto.
So' di non essere stato chiarissimo ma vado di fretta e se si puo'
fare do' maggiori dettagli... Ciao. Grazie.

 width della tablella "pluto" tralasciando il resto.
spunto:
con getElementsByTagName("table") becchi le tabelle:
 
http://developer.mozilla.org/en/docs/DOM:element.getElementsByTagName
se la struttura è quella con previousSibling dovresti beccare l'elemento
precedente (il tag a):
 
http://developer.mozilla.org/en/docs/DOM:element.previousSibling
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

  
http://developer.mozilla.org/en/docs/DOM:element.previousSibling
Questo è stato il primo approccio che ho tentato. Cerco di spiegare
meglio la situazione che è un po' contorta.
Il file generato dal server è un html che istanzio nella mia pagina
tramite l'oggetto xmlhttprequest attraverso un uri. 
Ho pensato che un modo per modificare un template preformattato poteva
essere quello di sfruttare delle propietà del DOM.
Credo esista una possibilità alternativa. Cioè istanziare con
javascript un XSLT tramite XmlHttpRequest.
Con questo approccio si potrebbe pensare di creare nodi direttamente
all'interno del file generato dal server prima che avvenga la
visualizzazione sul browser.
Ad esempio, inserendo il namespace corretto nell'XSLT potrei
riconoscere il markup (X)HTML , intercettare il nodo <head> e inserire
uno script che sfrutti DOM per modificare il template a mio
piacimento.
E' solo un'idea. Può essere fattibile questo approccio?              
 

 javascript un XSLT tramite XmlHttpRequest.
mai provato, cerca in rete (ma a naso la vedo male)
non riesco bene a capire cosa vuoi ottenere, e perché il mio spunto non va
bene.
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 bene.
Sono daccordo che si possa adeguare il template tramite DOM ma, per
farlo, dovrei innestare lo script nella pagina prima che questa venga
visualizzata.
XSLT potrebbe essere una soluzione ma in rete non ho trovato molto.
Praticamente vorrei applicare le modifiche al template prima che la
richiesta XHR venga soddisfatta. Lo so', e' ambiguo, ma nella mia
testa ha una sua logica... spero di aver reso un'idea di quello che
vorrei fare ottenere.

 vorrei fare ottenere.
io non ho capito, sentiamo gli altri.
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

 io non ho capito, sentiamo gli altri.
The example loads using synchronous XMLHTTPRequest both the .xsl
(xslStylesheet) and the .xml (xmlDoc) files into memory. The .xsl file
is then imported (xsltProcessor.importStylesheet(xslStylesheet)) and
the transformation run (xsltProcessor.transformToFragment(xmlDoc,
document)). This allows fetching of data after the page has been
loaded, without initiating a fresh page load.
http://www.soi.city.ac.uk/~sa386/epterm2/sqlxml/week9/The%20XSLT-JavaScript%20Interface%20In%20Gecko.htm

 Lo so', e' ambiguo, ma nella mia testa ha una sua logica... 
Sono tutt'orecchi. :)
-- 
~ "Chi ci priva della libertà in nome della sicurezza,
non si merita nessuna delle due cose, nè la libertà,
nè la sicurezza." (Henry Adams)

 Come puoi applicare le modifiche a qualcosa che ancora non hai?
Non so'. Andiamo passo passo. Penso di non riuscire a dare un quadro
generale. L'altro approccio ha sicuramente a che fare con questo:
http://www.soi.city.ac.uk/~sa386/epterm2/sqlxml/week9/The%20XSLT-JavaScript%20Interface%20In%20Gecko.htm
Se il contesto non e' chiaro spero abbiate la pazienza di "aiutarmi a
spiegarmi"... al momento non so' come applicare i vostri spunti o come
creare una stringa di nodi da agganciare al document tree.

 spiegarmi"...
Vai tranquillo, siam qui.
Un ultima cosa: su quale/i browser deve girare il tutto?


 Un ultima cosa: su quale/i browser deve girare il tutto?
IE 6, 7 e FF.

 > agganciando il tutto al document tree).
Restituendo una stringa con "responseText" ho la possibilita' di
modificare cio' che voglio con le regexp.
Sapreste suggerirmi un espressione regex che faccia match con il
report sopra. Cioè io vorrei riconoscere il tag <a> con attributo
name="sessions" e, semplicemente, eliminare tutto fino all'ultima </
table> compreso il <br/> finale. Questo e' possibile?
Grazie ancora...

 </table> compreso il <br/> finale. Questo e' possibile?
Ho capito che vuoi eliminare tutto il codice, lasciando solo:
<a name="sessions">&nbsp;</a>
Questa regexp lo fa:
replace(/(.|[\r\n])*<a([^\x7F]+)\/a>(.|[\r\n])*/gi,"<a$2/a>");
ma se vuoi il contrario, usa questa:
replace(/<a([^\x7F]+)\/a>/gi,"");
-- 
    * b *
  *   y   *
*   Piero   *
[ /carpe diem/ ] 

 IE 6, 7 e FF.
Te l'ho chiesto perché tra l'XSLT e importNode, ho paura che tu non
abbia considerato la diversità che intercorre tra i browser. In IE,
molte cose non sono addirittura supportate.
-- 
~ "D'una città non godi le sette o le settantasette meraviglie,
ma la risposta che dà a una tua domanda." (Italo Calvino)

 ad usare unicamente i CSS? Magari tramite la keyword "!important".
Con i CSS avevo poca resa.
Sebbene la tua e le altre risposte mi hanno illuminato, ho deciso di
abbandonare la scelta di modificare un template by server lato client.
IE sfocia in errori di autorizzazione e, adottare un metodo classico
quale l'apertura di una nuova finestra per i contenuti non è poi così
degradante, nel mio particolare caso.
Mi scuso se non sono stato repentino nella risposta. Mi pareva
doveroso ringraziarti. Buone feste!