Mi concentrerò su XSLT piuttosto che su linguaggi basati su XML in generale.
C'è una storia qui, ovviamente. XSLT è stato concepito come un successore di DSSSL, il linguaggio per lo stile di SGML, e ha cercato di ottenere ciò che DSSSL aveva sbagliato. Uno dei maggiori problemi con DSSSL era percepito come sintassi (Scheme-like), e c'era la sensazione diffusa che la soluzione consistesse nell'usare la stessa sintassi per il foglio di stile e i dati; dopotutto, l'idea era che un foglio di stile dovesse consistere in gran parte di dati strutturati piuttosto che in logica di programma, e molti di quei dati consisterebbero in dati proforma ("template") da aggiungere alla struttura dei risultati, con qualche parametrizzazione.
XSLT è spesso percepito come eccessivamente prolisso. Per XSLT 1.0, che molte persone purtroppo usano ancora, probabilmente è vero, ma il problema è stato ampiamente risolto con XSLT 2.0, che è spesso molto più conciso di altri modi per risolvere lo stesso problema.
Ci sono certamente degli svantaggi. Sei molto ben obbligato a utilizzare un editor appositamente progettato (ma poi, la maggior parte dei programmatori usa editor diretti alla sintassi per ogni lingua, vero?). Il linguaggio non è abbastanza componibile come potrebbe essere (anche se, ancora una volta, XSLT 2.0 risolve ampiamente quello). Ma ci sono anche vantaggi significativi:
-
XSLT è ampiamente utilizzato dai non programmatori, e per loro è molto più che solo imparare una sintassi, non due. Ricorda, sono tutti i piccoli dettagli come gestire la codifica dei caratteri e l'escaping di caratteri speciali.
-
La capacità di elaborare il codice XSLT utilizzando XSLT è molto più utile di quanto tu possa immaginare. Quasi tutti i grandi progetti XSLT sfruttano questa capacità e possono portare grandi benefici. Ad esempio, ho visto un sistema bancario online con un paio di centinaia di moduli nella sua interfaccia utente, ciascuno generato dal proprio foglio di stile, ma i fogli di stile sono stati generati da una libreria comune di codice che offre un grande riutilizzo e coerenza di aspetto.
-
C'è un vantaggio che non mi sarei mai aspettato, ovvero che l'uso di una struttura sintattica vincolata come XML costringe i progettisti di linguaggi a mantenere un livello di coerenza lessicale man mano che il linguaggio evolve e allo stesso tempo fornisce grande estensibilità. Il WG XQuery sta sempre discutendo su come estendere la lingua senza rompere la compatibilità o introdurre stranezze; XSLT non ha problemi di questo tipo, perché fondamentalmente si tratta di definire nuovi elementi e attributi.