适用于.NET的XPath和XSLT 2.0?[关闭]


91

.NET 3.5并不完全支持XPATH 2.0或XSLT 2.0,这太糟糕了。有谁知道在将来的任何.NET版本中是否将包括这两个功能并完全支持它们?


codeproject.com/Articles/24766/…Java saxon库实现XSL 2.0和XQuery 1.0。使用IKVM和GNU类路径,您可以访问.NET中的该库。但是,使用Saxon的界面与您在.NET中使用的界面非常不同。您可以从本文页面下载接口适配器,这些接口适配器有助于弥合Saxon界面和.NET XslCompiledTransform之间的鸿沟。这反过来使将代码从.NET XSL 1.0移植到Saxon XSL 2.0变得更加容易。
gls123 2013年

3
您可以在Microsoft的uservoice上发布此功能请求
Binoj Antony 2013年

Answers:


131

我认为他们不会在短期内增加对XPath 2.0或XSLT 2.0的支持。

但是,只要这些不是BCL的一部分,只要您有可用的第三方实现,您就不会感到难过:

Microsoft以客户为导向。如果客户不想要它,他们就不会成功。


2009-11-18:我在这里 与XML团队联系并得到了以下回复:

尽管XML继续是我们平台未来发展的关键部分,但我们决定目前不采用XSLT 2.0实现。如果您要完成特定的XSLT任务,并且在使用XSLT 1.0时遇到困难,请告知我们,我们将尽最大努力为您提供帮助。


该列表现在位于github.com/maxtoroq/dotnet-xml


22
他们最初承诺实现-这就是为什么只有很少的实现的原因,因为当像Microsoft这样的大公司说我们会做,并且作为Windows的一部分提供给所有人时,没有理由对其进行编程。但是随后,MS失去了XML团队中的几个关键人员,从那时起2.0支持就消失了。
CodeRipper

6
这个答案看起来非常熟悉-几年前我问了一个类似的问题,得到了相同的答案。羞耻-XSLT 2.0看起来是对语言可用性的相当重要的改进。
Eamon Nerbonne 2011年

.NET的轻量级XPath2现在位于github.com/StefH/XPath2.Net
rakensi 2016年

1
@alirobe 没有投票的人甚至更多。它只证明喜欢XSLT的人有多热情。学校里教授的许多东西在现实世界中很少使用。
Max Toro

1
仅供参考:.Net核心功能请求:github.com/dotnet/corefx/issues/2295,以支持XPath / XSLT v2和3。
JohnLBevan

23

看到这篇博客文章

我们没有实现XSLT 2.0和XPath 2.0的原因有很多

实现这三种技术(XQuery,XSLT 2.0和XPath 2.0)需要大量的精力和资源。我们的指导原则是,我们相信创建XML查询技术的激增会使最终用户感到困惑。除了.NET Framework中已经存在的XPath 1.0和XSLT 1.0之外,我们宁愿实现一种促使人们学习的语言,而不是必须支持和解释另外三种XML查询和转换语言。有我们的客户和支持人员必须处理3种复杂的XML查询语言的复杂性,这两种语言看起来很相似,但在XPath 2.0和XQuery的情况下却表现得截然不同,因此对我们来说并不是那么有益。


12
这是5年前的博客,标题为“为什么您不会在.NET Framework 的下一版本中看到XSLT 2.0或XPath 2.0 ”(我的重点)
Brian Agnew

1
谢谢!没注意到!再次不接受此答案,希望有新的解释。(尽管这是一个很好的解释,所以+1保持不变。)
Wim 10 Brink

3
也就是说,在.NET中处理XSLT时,有两件事要牢记:1)它支持exslt:node-set(),涵盖了XSLT 2.0的一大优点,并且2)msxsl:script可让您使用C#/ VB / JScript.NET直接在XSLT中定义任意复杂的函数,而无需考虑扩展性API。由于XslCompiledTransform用途XPathNavigator为节点表示,而后者则完全实现了XDM,你可以真正实现所有XPath2功能(如运营商<<>>)作为最重要的是自定义函数。
帕维尔·米纳夫

1
这不是有关该主题的最后一次交流。例如:blogs.msdn.com/xmlteam/archive/2007/01/29/xslt-2-0.aspx
刺̈2009年

10
2013年,没有更改:(
Evgeni Nabokov

13

我的理解是,许多Microsoft XML资源已从XSLT 2.0转移到LINQ到XML,在我看来,这根本解决不了与XSLT相同的问题空间。

LINQ to XSD原本应该将LINQ to XML增强(以及XML Schema的好处,语法不太难看),但这是Microsoft在不久前开源到CodePlex上的,并且似乎没有社区支持。

同样,如果微软不希望将没有XSLT 2.0编辑器和调试器集成到Visual Studio中的情况下推出新的XSLT 2.0处理器,那么要扭转他们的“不采用”的决定就需要花费大量的精力/时间。

因此,我们有了Saxon.NET,它具有无可比拟的标准合规性声誉,并为.NET提供了出色的可扩展性选项。


3

Microsoft没有计划在.NET中发布对XPath / XSLT 2.0的支持。

XQSharp提供了XPath 2.0,XSLT 2.0和XQuery for .NET的第三方实现。

[编辑:XQSharp 2.0 beta(带有XSLT 2.0)已经发布]


@ Oliver-Hallam:这个预测仍然有效吗?你在轨道上吗?
Dimitre Novatchev

@ Oliver-Hallam:XQSharp-XSLT 2.0是否会比Saxon.NET更快?
Dimitre Novatchev'9

@ Dimitre-Novatchev-您现在问的很有趣;我们应该在接下来的几个小时内发布XSLT实现的测试版!至于速度,我们相信我们的表现与撒克逊人一样好,尽管我们有偏见,所以我们希望有独立的见解!
奥利弗·哈兰

1
XQSharp现在称为XMLPrime
Mike Gale,

2

我不敢相信它们不会进入某个阶段,因为它们是W3C的核心技术。但是,我找不到这些的当前引用(仅是很久以前发布的信息)。

在不久的将来,您应该看看支持所需的Xpath / XSLT版本的Saxon


我将改用AltovaXML:altova.com/altovaxml.html它是免费的,并通过COM支持Java,.NET和WIN32。只是我希望.NET会本地支持它。
Wim 10 Brink

1
在管理Saxon的过程中,AltovaXML API毫无用处,而且它是本机代码。
Max Toro

1
Altova的一个大问题是他们拒绝仅保留文本节点来正确实现空白。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.