XmlDocument.SelectSingleNode使用什么版本的XPath?

ror*_*.ap 4 .net c# xml xpath

我正在使用这样的XmlDocument类:

divisionsDoc.SelectSingleNode(
    string.Format(@"Root/PoliticalDivisions/PoliticalDivision[upper-case(@Code)='{0}']", withCode.ToUpper()));
Run Code Online (Sandbox Code Playgroud)

这导致了错误:

需要命名空间管理器或XsltContext.此查询具有前缀,变量或用户定义的函数.

我收集这是由于upper-caseXPath函数,我理解存在于XPath 2.0而不是1.0(从这里,这里等)

MSDN未指定它使用的XPath版本.我的目标是.NET 4.5.1 - 使用XPath 2.0还不够晚吗?或者是其他地方(.NET之外)定义的东西?

如何找出目标版本的XPath?

请注意,我知道使用的解决方法translate('some text','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')- 这不是我要求的.

xan*_*tos 9

Microsoft从未实现过XPath 2.0或Xslt 2.0 ...例如参见2013年的这个uservoice(适用于XPath 2.0或XSLT 2.0的.NET支持)...

一位用户在2015年3月发表的最新评论:

我想我们永远不会看到这一点,因为世界不再喜欢XML了,这都是关于JSON的.令人遗憾的是,对于许多关键场景而言,XML仍然比JSON好得多.

  • 令人难以置信的是,在2018年,XPath 1.0仍然是.NET中唯一受支持的版本 (5认同)