.NET 3.5 unterstützt XPATH 2.0 oder XSLT 2.0 nicht vollständig, was einfach zu schade ist. Weiß jemand, ob diese beiden in zukünftigen .NET-Versionen enthalten und vollständig unterstützt werden ?
codeproject.com/Articles/24766/… Die Java Saxon Library implementiert XSL 2.0 und XQuery 1.0. Mit IKVM und GNU Classpath können Sie in .NET auf diese Bibliothek zugreifen. Die Schnittstellen für die Verwendung von Saxon unterscheiden sich jedoch stark von denen, die Sie in .NET verwenden. Auf dieser Artikelseite können Sie Schnittstellenadapter herunterladen, mit denen Sie die Lücke zwischen der sächsischen Schnittstelle und der .NET XslCompiledTransform schließen können. Dies erleichtert wiederum das Portieren von Code von .NET XSL 1.0 auf Saxon XSL 2.0.
gls123
3
Sie können diese Funktionsanfrage bei uservoice von Microsoft
Binoj Antony
Antworten:
131
Ich glaube nicht, dass sie in Kürze Unterstützung für XPath 2.0 oder XSLT 2.0 hinzufügen werden.
Sie sollten sich jedoch nicht schlecht fühlen, wenn diese nicht Teil der BCL sind, solange Sie Implementierungen von Drittanbietern zur Verfügung haben:
Microsoft ist kundenorientiert. Wenn Kunden es nicht wollen, schaffen sie es nicht.
18.11.2009: Ich habe das XML-Team hier kontaktiert und folgende Antwort erhalten:
Während XML auch in Zukunft ein wichtiger Bestandteil unserer Plattform ist, haben wir uns entschieden, derzeit keine XSLT 2.0-Implementierung durchzuführen. Wenn Sie eine bestimmte XSLT-Aufgabe ausführen möchten und Probleme mit XSLT 1.0 haben, teilen Sie uns dies bitte mit, und wir werden unser Bestes tun, um Ihnen zu helfen.
Sie versprachen zunächst die Implementierung - das ist der Grund, warum es nur wenige Implementierungen gibt, denn wenn ein großes Unternehmen wie Microsoft sagt, dass wir dies tun und es allen als Teil von Windows geben werden, gibt es keinen Grund, es zu programmieren. Aber dann hat MS mehrere Schlüsselpersonen im XML-Team verloren und seitdem ist die 2.0-Unterstützung nicht mehr möglich.
CodeRipper
6
Diese Antwort kommt mir unheimlich bekannt vor - ich habe vor ein paar Jahren eine ähnliche Frage gestellt und die gleiche Antwort erhalten. Schade - XSLT 2.0 scheint eine ziemlich wichtige Verbesserung der Benutzerfreundlichkeit von Sprachen zu sein.
@alirobe Die Leute, die nicht dafür stimmen, sind noch mehr. Es zeigt nur, wie leidenschaftlich Menschen sind, die XSLT mögen. Viele Dinge, die in Schulen unterrichtet werden, werden in der realen Welt selten verwendet.
Es gibt mehrere Gründe, warum wir XSLT 2.0 und XPath 2.0 nicht implementieren
Die Implementierung aller drei Technologien (XQuery, XSLT 2.0 und XPath 2.0) erfordert viel Aufwand und Ressourcen. Unser Leitprinzip war, dass wir glauben, dass die Schaffung einer Verbreitung von XML-Abfragetechnologien für Endbenutzer verwirrend ist. Wir möchten lieber eine weitere Sprache implementieren, die wir lernen möchten, als drei weitere XML-Abfrage- und Transformationssprachen zu unterstützen und zu erklären, zusätzlich zu XPath 1.0 und XSLT 1.0, die bereits in .NET Framework vorhanden sind. Unsere Kunden und Support-Mitarbeiter müssen sich mit der Komplexität von drei hoch entwickelten XML-Abfragesprachen auseinandersetzen, von denen zwei ähnlich aussehen, sich aber im Fall von XPath 2.0 und XQuery ganz anders verhalten. Dies schien uns nicht so vorteilhaft zu sein.
Das ist von vor 5 Jahren aus einem Blog mit dem Titel "Warum Sie XSLT 2.0 oder XPath 2.0 in der nächsten Version von .NET Framework nicht sehen" (mein Schwerpunkt)
Brian Agnew
1
Vielen Dank! Hab das nicht bemerkt! Ich habe diese Antwort erneut nicht akzeptiert und auf eine neuere Erklärung gehofft. (Obwohl es eine gute Erklärung ist, bleibt die +1.)
Wim ten Brink
3
Beim Umgang mit XSLT in .NET sind jedoch zwei Dinge zu beachten: 1) Es unterstützt exslt: node-set (), das einen der großen Vorteile von XSLT 2.0 abdeckt, und 2) msxsl: script ermöglicht es Ihnen Definieren Sie beliebig komplexe Funktionen direkt in Ihrem XSLT mit C # / VB / JScript.NET, ohne sich mit Erweiterungs-APIs herumzuschlagen. Da die XslCompiledTransformVerwendung XPathNavigatorfür die Knotendarstellung und letztere XDM vollständig implementiert, können Sie darüber hinaus alle XPath2-Funktionen (wie Operatoren <<und >>) als benutzerdefinierte Funktionen implementieren .
Nach meinem Verständnis wurden viele Microsoft XML-Ressourcen von XSLT 2.0 auf LINQ nach XML umgeleitet, was meiner Ansicht nach überhaupt nicht den gleichen Problembereich wie XSLT betrifft.
LINQ to XSD sollte LINQ to XML verbessern (neben den Vorteilen des XML-Schemas ist die Syntax weniger hässlich), wurde jedoch vor einiger Zeit von Microsoft auf CodePlex als Open-Source-Version bereitgestellt und scheint keine Community-Unterstützung zu haben.
Es ist auch unwahrscheinlich, dass Microsoft einen neuen XSLT 2.0-Prozessor ohne einen in Visual Studio integrierten XSLT 2.0-Editor und -Debugger startet. Daher wäre ein beträchtlicher Aufwand erforderlich, um die Entscheidung über die Nichtübernahme rückgängig zu machen.
Stattdessen haben wir Saxon.NET, das einen unanfechtbaren Ruf in Bezug auf die Einhaltung von Standards hat und hervorragende Erweiterungsoptionen für .NET bietet.
@ Oliver-Hallam: Ist diese Prognose noch gültig? Bist du auf dem richtigen Weg?
Dimitre Novatchev
@ Oliver-Hallam: Wird XQSharp-XSLT 2.0 schneller sein als Saxon.NET?
Dimitre Novatchev
@ Dimitre-Novatchev - Lustig fragst du jetzt; Wir sollten in den nächsten Stunden eine Beta-Version unserer XSLT-Implementierung veröffentlichen! Was die Geschwindigkeit angeht, glauben wir, dass unsere Leistung so gut ist wie die sächsische, obwohl wir voreingenommen sind und eine unabhängige Meinung lieben würden!
Oliver Hallam
1
XQSharp heißt jetzt XMLPrime
Mike Gale
2
Ich kann nicht glauben, dass sie irgendwann nicht mehr da sein werden, da es sich um W3C-Kerntechnologien handelt. Ich kann jedoch keinen aktuellen Verweis darauf finden (nur Informationen, die vor langer Zeit veröffentlicht wurden).
Für die nahe Zukunft sollten Sie sich Saxon ansehen, das die von Ihnen benötigten Xpath / XSLT-Versionen unterstützt.
Ich würde stattdessen AltovaXML verwenden: altova.com/altovaxml.html Es ist kostenlos und unterstützt Java, .NET und WIN32 über COM. Ich hatte nur gehofft, dass .NET es von Haus aus unterstützen würde.
Wim ten Brink
1
Die AltovaXML-API ist nutzlos und enthält nativen Code, während Saxon verwaltet wird.
Max Toro
1
Altova großes Problem ist, dass sie sich weigern, nur Leerzeichen korrekt zu implementieren, wobei Textknoten erhalten bleiben.
Antworten:
Ich glaube nicht, dass sie in Kürze Unterstützung für XPath 2.0 oder XSLT 2.0 hinzufügen werden.
Sie sollten sich jedoch nicht schlecht fühlen, wenn diese nicht Teil der BCL sind, solange Sie Implementierungen von Drittanbietern zur Verfügung haben:
Microsoft ist kundenorientiert. Wenn Kunden es nicht wollen, schaffen sie es nicht.
18.11.2009: Ich habe das XML-Team hier kontaktiert und folgende Antwort erhalten:
Diese Liste wird jetzt unter github.com/maxtoroq/dotnet-xml gepflegt
quelle
Siehe diesen Blog-Beitrag
quelle
XslCompiledTransform
VerwendungXPathNavigator
für die Knotendarstellung und letztere XDM vollständig implementiert, können Sie darüber hinaus alle XPath2-Funktionen (wie Operatoren<<
und>>
) als benutzerdefinierte Funktionen implementieren .Nach meinem Verständnis wurden viele Microsoft XML-Ressourcen von XSLT 2.0 auf LINQ nach XML umgeleitet, was meiner Ansicht nach überhaupt nicht den gleichen Problembereich wie XSLT betrifft.
LINQ to XSD sollte LINQ to XML verbessern (neben den Vorteilen des XML-Schemas ist die Syntax weniger hässlich), wurde jedoch vor einiger Zeit von Microsoft auf CodePlex als Open-Source-Version bereitgestellt und scheint keine Community-Unterstützung zu haben.
Es ist auch unwahrscheinlich, dass Microsoft einen neuen XSLT 2.0-Prozessor ohne einen in Visual Studio integrierten XSLT 2.0-Editor und -Debugger startet. Daher wäre ein beträchtlicher Aufwand erforderlich, um die Entscheidung über die Nichtübernahme rückgängig zu machen.
Stattdessen haben wir Saxon.NET, das einen unanfechtbaren Ruf in Bezug auf die Einhaltung von Standards hat und hervorragende Erweiterungsoptionen für .NET bietet.
quelle
Microsoft hat nicht vor, die Unterstützung für XPath / XSLT 2.0 in .NET freizugeben.
XQSharp bietet eine Drittanbieterimplementierung von XPath 2.0, XSLT 2.0 und XQuery für .NET.
[Bearbeiten: XQSharp 2.0 Beta (mit XSLT 2.0) wurde veröffentlicht]
quelle
Ich kann nicht glauben, dass sie irgendwann nicht mehr da sein werden, da es sich um W3C-Kerntechnologien handelt. Ich kann jedoch keinen aktuellen Verweis darauf finden (nur Informationen, die vor langer Zeit veröffentlicht wurden).
Für die nahe Zukunft sollten Sie sich Saxon ansehen, das die von Ihnen benötigten Xpath / XSLT-Versionen unterstützt.
quelle