2009-03-05 9 views
6

XslTransform sembra essere stato deprecato da Microsoft in favore di XslCompiledTransform. Teoricamente, se stavo facendo una sola trasformazione durante l'esecuzione della mia applicazione, non dovrei interpretare l'XSLT (tramite XslTransform) più veloce della sua compilazione? Se è così, XslTransform è scritto così male che i miglioramenti apportati a XslCompiledTransform sono più che compensativi?XslTransform vs XslCompiledTransform

risposta

4

Si potrebbe desiderare di vedere le differenze tra documentati XslTransform e XslCompiledTransformhere e here, e prendere la decisione da soli.

Inoltre, ci sono alcuni casi in cui XslTransform è più incompliant. Più lavoro è stato fatto sulla sicurezza in XslCompiledTransform.

Così, un sacco di motivi si dovrebbe considerare l'utilizzo della nuova XslCompiledTransform al posto del vecchio XslTransform, anche nei casi in cui la trasformazione verrà eseguito solo una volta e potrebbe essere leggermente più veloce con il vecchio XslTransform.

+0

Nota che su alcune trasformazioni complesse, XslCompiledTransform possono essere un * lotto * più lento di XslTransform, indipendentemente dal sovraccarico della compilazione. Sto ancora lavorando con il supporto tecnico della MS per capire esattamente quale sia il problema, ma abbiamo un caso in cui le prestazioni di XslCompiledTransform sono molto peggiori. Questo sembra essere un vero caso, quindi in generale sono assolutamente d'accordo che XslCompiledTransform sia preferibile – Andy

+0

@Andy, Sì, nessuno può confermare che XslCompiledTransform sia più veloce per * tutti *, numero infinito di trasformazioni.Sappiamo per esperienza che è * generalmente * più veloce. –

2

Bene, si ha il tempo di esecuzione (lento) di XslTransform rispetto al tempo di compilazione di XslCompiledTransform più il suo (veloce) tempo di esecuzione. Non esiste un modo teorico per decidere in modo definitivo questo confronto.

La teoria suggerisce: i tempi di esecuzione dipendono dall'input e dalle operazioni richieste e il tempo di compilazione dipende dalla complessità dell'XSLT. La pratica conferma che con input banali e XSLT complessi un'esecuzione una volta XslTransform è decisamente più veloce.

Tuttavia, per tutte le applicazioni reali è necessario XslCompiledTransform se solo per il fatto che XslTransform è deprecato e può benissimo contenere difetti che non verranno mai riparati. In realtà avevo alcuni fogli di stile che si comportavano in modo strano sotto XslTransform e funzionano perfettamente con XslCompiledTransform.

1

È consigliabile utilizzare XslCompiledTransform in ogni caso poiché XslTransform è ammortizzato e può essere rimosso dalle versioni future del framework.

+1

E 'ancora da contrassegnare come 'Obsoleto', tuttavia ... –

+0

Viene contrassegnato come obsoleto ora –

2

Come punto dati non correlato, ho appena sprecato un paio di ore per il debug di un XSLT che funzionava correttamente e non funzionava più. Venuto fuori l'XSLT andava bene, il problema era che il codice che lo applicava veniva aggiornato da XslTransform (che funzionava perfettamente) a XslCompiledTransform (che lo trasforma male), qualche tempo fa, e che faceva scattare l'errore.

Quindi, non è felice con XslTransform essere obsoleto qui, come ho appena avuto a ripristinare il codice di usarlo ... :(

0

Entrambi hanno i loro pro e contro. Sto usando entrambi, ma in diversi Scenario Sto utilizzando XslTransform per passare l'output a una variabile di controllo XML e scrivere l'output in controllo letterale, ma quando ho bisogno di passare a controllo XML a pagina, ho bisogno di XslCompiledTransform. Questo perché l'output di entrambi i metodi sono diversi

Problemi correlati