2011-10-04 15 views
14

Ho bisogno di un meccanismo di template per le pagine html in bundle con la mia app. All'inizio ho esaminato tutte le soluzioni di template javascript (come i modelli jQuery), ma poiché i miei dati di input sono XML, improvvisamente mi sono ricordato di nuovo XSLT. Mi sono imbattuto in decine di libagie, ma nessuna sembrava utilizzare XSLT, quindi ho completamente dimenticato la sua esistenza e quanto sia utile per la creazione di modelli.Modelli: XSLT vs jQuery

Quindi, XSLT è lentamente deprecato e eliminato gradualmente da alternative javascript? Ho letto da qualche parte che XSLT era troppo complicato per la maggior parte degli utenti con cui lavorare, ma è l'unico lato negativo o ci sono più svantaggi?

Aggiornamento: mi viene in mente un solo svantaggio me stesso: con XSLT la pagina completa deve essere analizzato/reso prima di visualizzare qualsiasi cosa per l'utente, e con il javascript la pagina è già visibile e gli elementi mancanti sono pieni successivamente.

+3

Il più grande "con" è che XSLT può dare una grinza inaspettata a un cervello piatto. :) –

+1

Ottimo commento lì! da quando usa xslt ogni altra opzione sembra così lunga: P anche se il rasoio sembra degno di considerazione. non dimenticare che puoi ancora usare lo scripting nei tuoi modelli! – Treemonkey

risposta

7

XSLT è una buona soluzione per i modelli. Il linguaggio e la sintassi sono un po 'insoliti - "scegliere/quando" invece di "caso/interruttore" è un esempio lampante - ma fa bene il suo lavoro.

Il principale vantaggio di XSLT è che non è necessario il JavaScript per utilizzarlo; costruiscilo correttamente e ogni browser principale lo renderà come HTML se JS è abilitato o meno. Potrebbe essere più semplice sul processore rispetto alle soluzioni JavaScript, anche se non conosco nessuno che abbia provato questo. È anche la scelta più ovvia se hai già a che fare con dati XML, come te.

Il lato negativo è che si tratta di una (relativamente) vecchia tecnologia che è stata in gran parte abbandonata, e mentre i browser lo supportano ancora, non l'hanno portata avanti. Firefox ha un problema con l'escape HTML che hanno no intention of fixing e Chrome ha a pretty major problem with @includes. IE è apparentemente aggiornato, ma ovviamente si applica solo all'ultima versione.

Il risultato è che se si desidera utilizzare XSLT, è necessario verificarlo in tutti i principali browser e aggirare i bug, nonostante il fatto che la tecnologia sia in circolazione dal 2006 almeno. Non è affatto deprecato, non è molto popolare perché non è così compatto o facile da leggere come, ad esempio, i modelli JSON + jQuery.

+1

Penso che lo renderò sul lato server. Per le prestazioni non importa perché il codice server/client sono entrambi in esecuzione sulla stessa macchina poiché si tratta di un'applicazione desktop, ma impedisce problemi specifici del browser come quello che hai citato. – Muis

0

Il rendering di XSLT nel browser presenta alcune stranezze specifiche del browser. Preferirei usare i template jQuery se dovessi rendere i dati sul lato client.

Sul lato server, XSLT è un ottimo strumento con supporto per molti linguaggi di programmazione (almeno per XSLT 1.0, per XSLT 2.0 è possibile scegliere solo tra Java e .NET). Quindi forse puoi avere una sorta di middleware che riceve la richiesta dal lato client, la trasmette al servizio web o qualunque cosa stia generando l'XML, lo restituisce come HTML con un foglio di stile XSLT e passa il risultato HTML al browser. Se il tuo scenario specifico consente la memorizzazione nella cache nel livello middleware, l'applicazione sarà anche più veloce poiché il client non deve elaborare i modelli jQuery o XSLT.

+0

Tuttavia, non è possibile memorizzare nella cache dati dinamici, tranne che per utente, per visualizzazione. – Andrew

8

XSLT è una moderna trasformazione XML e un linguaggio di programmazione funzionale. La prossima versione 3.0 supporta nativamente (insieme a XPath 3.0) le funzioni di ordine superiore, tra le altre nuove funzionalità.

XSLT non è "vecchio" (pochi sanno XSLT 2.0 o sono consapevoli che XSLT 3.0 è in lavorazione dal W3C XSLT WG).

XSLT nel browser ha avuto una recente grande spinta in avanti da Saxon CE - un XSLT assettato giù processore 2.0 che viene compilato da Java a JavaScript ed è disponibile sul lato client sui cinque principali browser.@Michael Kay anche demoed XSLT 2.0 in esecuzione lato client sul suo iPhone ...

+0

Qualche idea se/quando Microsoft ha intenzione di supportare XSLT 2.0 sulle loro piattaforme di sviluppo? –

+0

Per le trasformazioni sul lato server può ancora essere utilizzato, ma per il lato client non riesco a trovare nessuno che lo utilizza. L'unico sito di grandi dimensioni che lo utilizza era il portale Blizzard WoW, e anche loro hanno smesso di usarlo. Inoltre, quando ho cercato qualcosa di simile a XSLT, fatta eccezione per i dati JSON, non c'era nulla da trovare (tranne alcune prove di concetti). Quindi, se il concetto è ancora vivo, perché nessuno ha sviluppato qualcosa di simile per JSON? – Muis

+1

JSON è davvero pensato per i dati compatti, mentre XML è pensato per contrassegnare interi documenti. Non riempiono abbastanza la stessa nicchia. – Blazemonger

-1

Ecco l'esempio di caricare XML e XSL ed eseguire la trasformazione in Javascript.

A volte non è possibile importare XSLT in documenti XML, ad esempio ottenere XML da terze parti e utilizzare la trasformazione XSLT in HTML e renderizzare nel browser.