关闭。这个问题是题外话。它目前不接受答案。想改进这个问题?更新问题,使其成为 Stack Overflow 的主题。 9年前关闭。改进这个问题
.NET 3.5 不完全支持 XPATH 2.0 或 XSLT 2.0,这太糟糕了。有谁知道这两个是否会在任何未来的 .NET 版本中包含并完全支持?
我认为他们不会很快添加对 XPath 2.0 或 XSLT 2.0 的支持。
但是,如果这些不是 BCL 的一部分,您不应该感到难过,只要您有可用的 3rd 方实现:
撒克逊:XPath 3.1、XQuery 3.1、XSLT 3.0
XmlPrime:XPath 3.1、XQuery 3.1、XSLT 2.0
查询机器:XPath 2.0、XQuery 1.0
.NET 的轻量级 XPath2:XPath 2.0
扩展:XSLT 3.0
微软以客户为导向。如果客户不想要它,他们就不会成功。
2009-11-18:我联系了 XML 团队 here 并得到了以下回复:
虽然 XML 继续成为我们平台未来的关键部分,但我们决定此时不追求 XSLT 2.0 实现。如果您正在尝试完成某个特定的 XSLT 任务并且在使用 XSLT 1.0 时遇到困难,请告诉我们,我们将尽最大努力提供帮助。
此列表现在保存在 github.com/maxtoroq/dotnet-xml
看到这个blog post
我们没有实现 XSLT 2.0 和 XPath 2.0 的原因有很多。实现所有 3 种技术(XQuery、XSLT 2.0 和 XPath 2.0)需要花费大量的精力和资源。我们的指导原则是,我们相信创建大量 XML 查询技术会使最终用户感到困惑。除了 .NET Framework 中已经存在的 XPath 1.0 和 XSLT 1.0 之外,我们宁愿实现一种我们推动人们学习的语言,也不愿支持和解释另外三种 XML 查询和转换语言。我们的客户和支持人员必须处理 3 种复杂的 XML 查询语言的复杂性,其中两种在 XPath 2.0 中看起来相似但行为却截然不同,而 XQuery 在我们看来并没有那么有益。
XslCompiledTransform
使用 XPathNavigator
表示节点,而后者完全实现了 XDM,因此您实际上可以在此之上将所有 XPath2 功能(如运算符 <<
和 >>
)实现为自定义函数。
我的理解是,许多 Microsoft XML 资源从 XSLT 2.0 转移到 LINQ to XML,在我看来,这根本没有解决与 XSLT 相同的问题空间。
LINQ to XSD 应该增强 LINQ to XML(以及 XML Schema 的好处,语法不那么难看),但这是微软前段时间在 CodePlex 上开源的,似乎没有社区支持。
此外,如果没有将 XSLT 2.0 编辑器和调试器集成到 Visual Studio 中,Microsoft 不太可能推出新的 XSLT 2.0 处理器,因此需要相当多的努力/时间来扭转他们的“不采用”决定。 [更新] 现在有一个与 Saxon 的 3.0 XSLT 处理器集成的XSLT 3.0 extension for Microsoft VSCode (由我自己管理)。
因此,我们使用了 Saxon.NET,它在标准合规性方面享有无可挑剔的声誉,并为 .NET 提供了出色的可扩展性选项。
Microsoft 没有计划在 .NET 中发布对 XPath/XSLT 2.0 的支持。
XQSharp 为 .NET 提供 XPath 2.0、XSLT 2.0 和 XQuery 的第 3 方实现。
[编辑:XQSharp 2.0 beta(带有 XSLT 2.0)已经发布]
我不敢相信它们不会处于某个阶段,因为它们是 W3C 的核心技术。但是我找不到对这些的任何当前参考(只有很久以前发布的信息)。
在不久的将来,您应该看看支持您需要的 Xpath/XSLT 版本的 Saxon。
不定期副业成功案例分享