【发布时间】:2015-06-19 15:05:55
【问题描述】:
我正在像这样使用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') 的解决方法——这不是我要问的。
【问题讨论】:
-
顺便说一句,您是否需要在这里使用XPath?我个人只使用 LINQ to XML - 例如,无需担心
withCode是否包含撇号 - 但我很感激您可能有其他要求。 -
不...微软从未实现过 XPath 2.0 或 Xslt 2.0。例如,参见 2011 年的 stackoverflow.com/a/7521282/613130。在一条评论中,有人要求在 2014 年进行更新...