XPath e XSLT 2.0 per .NET? [chiuso]


91

.NET 3.5 non supporta completamente XPATH 2.0 o XSLT 2.0, il che è semplicemente un peccato. Qualcuno sa se questi due saranno inclusi e completamente supportati nelle future versioni di .NET?


codeproject.com/Articles/24766/… La libreria Java saxon implementa XSL 2.0 e XQuery 1.0. Utilizzando IKVM e GNU Classpath, puoi accedere a questa libreria in .NET. Tuttavia le interfacce per l'utilizzo di Saxon sono molto diverse da quelle utilizzate in .NET. Da questa pagina dell'articolo è possibile scaricare adattatori di interfaccia che aiutano a colmare il divario tra l'interfaccia Saxon e .NET XslCompiledTransform. Questo a sua volta rende molto più semplice trasferire il codice dall'utilizzo di .NET XSL 1.0 a Saxon XSL 2.0.
gls123

3
Puoi pubblicare questa richiesta di funzionalità su uservoice by Microsoft
Binoj Antony

Risposte:


131

Non credo che aggiungeranno presto il supporto per XPath 2.0 o XSLT 2.0.

Tuttavia, non dovresti sentirti male se questi non fanno parte del BCL, purché siano disponibili implementazioni di terze parti:

Microsoft è orientata al cliente. Se i clienti non lo vogliono, non ce la faranno.


18-11-2009: Ho contattato il team XML qui e ho ricevuto questa risposta:

Sebbene XML continui a essere una parte fondamentale della nostra piattaforma in futuro, abbiamo deciso di non perseguire un'implementazione di XSLT 2.0 in questo momento. Se c'è un'attività XSLT specifica che stai cercando di eseguire e hai difficoltà con XSLT 1.0, faccelo sapere e faremo del nostro meglio per aiutarti.


Questo elenco è ora gestito su github.com/maxtoroq/dotnet-xml


22
Inizialmente hanno promesso l'implementazione: questo è il motivo per cui ci sono solo poche implementazioni perché quando una grande azienda come Microsoft dice che lo faremo e lo daremo a tutti come parte di Windows non c'è motivo di programmarlo. Ma poi MS ha perso diverse persone chiave nel team XML e da allora il supporto 2.0 è morto.
CodeRipper

6
Quella risposta sembra stranamente familiare: ho fatto una domanda simile qualche anno fa e ho ottenuto la stessa risposta. Peccato: XSLT 2.0 sembra un miglioramento piuttosto importante per l'usabilità del linguaggio.
Eamon Nerbonne

Lightweight XPath2 for .NET è ora su github.com/StefH/XPath2.Net
rakensi

1
@alirobe Le persone che non votano sono ancora di più. Dimostra solo quanto siano appassionate le persone a cui piace XSLT. Molte cose insegnate nelle scuole sono usate raramente nel mondo reale.
Max Toro

1
FYI: .Net Core Feature Request: github.com/dotnet/corefx/issues/2295 per supporto XPath / XSLT v2 e 3.
JohnLBevan

23

Vedi questo post del blog

Esistono diversi motivi per cui non stiamo implementando XSLT 2.0 e XPath 2.0

Sono necessari molti sforzi e risorse per implementare tutte e 3 le tecnologie (XQuery, XSLT 2.0 e XPath 2.0). Il nostro principio guida era che riteniamo che creare una proliferazione di tecnologie di query XML sia fonte di confusione per gli utenti finali. Preferiremmo implementare un altro linguaggio che spingiamo le persone a imparare piuttosto che dover supportare e spiegare altri tre linguaggi di query e trasformazione XML, oltre a XPath 1.0 e XSLT 1.0 che già esistono in .NET Framework. Avere i nostri clienti e le persone di supporto devono affrontare la complessità di 3 sofisticati linguaggi di query XML, due dei quali sembrano simili ma si comportano in modo abbastanza diverso nel caso di XPath 2.0 e XQuery ci è sembrato non essere così vantaggioso.


12
È di 5 anni fa da un blog intitolato "Perché non vedrai XSLT 2.0 o XPath 2.0 nella prossima versione di .NET Framework" (enfasi mia)
Brian Agnew

1
Grazie! Non l'ho notato! Ancora non accettata questa risposta, sperando in una nuova spiegazione. (Anche se è una buona spiegazione, quindi il +1 rimane.)
Wim ten Brink

3
Detto questo, ci sono due cose che vale la pena tenere a mente quando si ha a che fare con XSLT in .NET: 1) supporta exslt: node-set (), che copre uno dei grandi vantaggi di XSLT 2.0, e 2) msxsl: script ti consente definire funzioni arbitrariamente complesse direttamente all'interno del tuo XSLT utilizzando C # / VB / JScript.NET, senza perdere tempo con le API di estensibilità. Poiché XslCompiledTransformutilizza XPathNavigatorper la rappresentazione dei nodi e quest'ultimo implementa completamente XDM, puoi effettivamente implementare tutte le funzionalità XPath2 (come gli operatori <<e >>) come funzioni personalizzate oltre a ciò.
Pavel Minaev

1
Non è l'ultima comunicazione sull'argomento. Ad esempio: blogs.msdn.com/xmlteam/archive/2007/01/29/xslt-2-0.aspx
thorn̈

10
2013, nessuna modifica :(
Evgeni Nabokov

13

La mia comprensione è che molte risorse XML di Microsoft sono state dirottate da XSLT 2.0 a LINQ a XML, il che, a mio avviso, non risolve affatto lo stesso spazio problematico di XSLT.

LINQ to XSD avrebbe dovuto migliorare LINQ to XML (oltre ai vantaggi di XML Schema, la sintassi è meno brutta), ma questo è stato reso open source da Microsoft su CodePlex qualche tempo fa e sembra non avere il supporto della comunità.

Inoltre, è improbabile che Microsoft lanci un nuovo processore XSLT 2.0 senza un editor e debugger XSLT 2.0 integrati in Visual Studio, quindi sarebbe necessario un po 'di sforzo / tempo per annullare la loro decisione di "non adozione".

Quindi abbiamo Saxon.NET, che ha una reputazione di conformità agli standard impeccabile e fornisce eccellenti opzioni di estensibilità per .NET.


3

Microsoft non prevede di rilasciare il supporto per XPath / XSLT 2.0 in .NET.

XQSharp fornisce un'implementazione di terze parti di XPath 2.0, XSLT 2.0 e XQuery per .NET.

[modifica: XQSharp 2.0 beta (con XSLT 2.0) è stato rilasciato]


@ Oliver-Hallam: questa previsione è ancora valida? Sei sulla buona strada?
Dimitre Novatchev

@ Oliver-Hallam: XQSharp-XSLT 2.0 sarà più veloce di Saxon.NET?
Dimitre Novatchev

@ Dimitre-Novatchev - Divertente lo chiedi ora; dovremmo avere una versione beta della nostra implementazione XSLT rilasciata nelle prossime ore! Per quanto riguarda la velocità, crediamo che le nostre prestazioni siano buone come quelle di Saxon, anche se siamo di parte, quindi ci piacerebbe un'opinione indipendente!
Oliver Hallam

1
XQSharp si chiama ora XMLPrime
Mike Gale

2

Non riesco a credere che a un certo punto non ci saranno dato che sono tecnologie W3C fondamentali. Tuttavia non riesco a trovare alcun riferimento corrente a questi (solo informazioni pubblicate molto tempo fa).

Per il prossimo futuro dovresti dare un'occhiata a Saxon che supporta le versioni Xpath / XSLT di cui hai bisogno.


Vorrei invece utilizzare AltovaXML: altova.com/altovaxml.html È gratuito e supporta Java, .NET e WIN32 tramite COM. È solo che speravo che .NET lo supportasse in modo nativo.
Wim ten Brink

1
L'API AltovaXML è inutile, in più è codice nativo, mentre Saxon è gestito.
Max Toro

1
Il grosso problema di Altova è che si rifiutano di implementare correttamente lo spazio bianco conservando solo i nodi di testo.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.