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

时间:2015-06-19 15:05:55

标签: c# .net xml xpath

我正在使用这样的XmlDocument类:

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

这导致了错误:

  

需要命名空间管理器或XsltContext。这个查询有一个前缀,   变量或用户定义的函数。

我收集这是由于upper-case XPath函数,我理解它存在于XPath 2.0而不是1.0(来自herehere等。)

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

如何找出目标版本的XPath?

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

1 个答案:

答案 0 :(得分:9)

Microsoft从未实现XPath 2.0或Xslt 2.0 ...请参阅2013年的uservoice(适当命名为 XPath 2.0的本机支持或.NET中的XSLT 2.0 )...

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

  

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