Я использую XmlDocument
класс как это:Какая версия XPath использует XmlDocument.SelectSingleNode?
divisionsDoc.SelectSingleNode(
string.Format(@"Root/PoliticalDivisions/PoliticalDivision[upper-case(@Code)='{0}']", withCode.ToUpper()));
И это приводит к ошибке:
Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.
Я собираю это связано с функцией 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 для XML - не нужно беспокоиться о том, содержит ли 'withCode' апострофы, например, но я ценю, что у вас могут быть другие требования. –
[Основные запросы Linq to XML] (https://msdn.microsoft.com/en-us/library/bb943906.aspx) – MethodMan
Нет ... Microsoft никогда не применяла XPath 2.0 или Xslt 2.0. См. Например http://stackoverflow.com/a/7521282/613130 от 2011 года. В одном комментарии кто-то попросил обновить в 2014 году ... – xanatos