我正在使用这样的XmlDocument
类:
divisionsDoc.SelectSingleNode(
string.Format(@"Root/PoliticalDivisions/PoliticalDivision[upper-case(@Code)='{0}']", withCode.ToUpper()));
这导致了错误:
需要命名空间管理器或XsltContext。这个查询有一个前缀, 变量或用户定义的函数。
我收集这是由于upper-case
XPath函数,我理解它存在于XPath 2.0而不是1.0(来自here,here等。)
MSDN未指定其使用的XPath版本。我的目标是.NET 4.5.1 - 使用XPath 2.0还不够晚吗?或者是其他地方(在.NET之外)定义的东西?
如何找出目标版本的XPath?
请注意,我知道使用translate('some text','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')
的解决方法 - 这不是我要求的。
答案 0 :(得分:9)
Microsoft从未实现XPath 2.0或Xslt 2.0 ...请参阅2013年的uservoice(适当命名为 XPath 2.0的本机支持或.NET中的XSLT 2.0 )...
一位用户在2015年3月发表的最新评论:
我想我们永远不会看到这个,因为世界不再喜欢XML了,它全都是关于JSON的。令人遗憾的是,对于许多关键场景而言,XML仍然比JSON好得多。