2015-06-19 3 views
1

Я использую 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') - это не то, о чем я прошу.

+2

Как вам нужно * использовать * XPath здесь? Я бы лично использовал LINQ для XML - не нужно беспокоиться о том, содержит ли 'withCode' апострофы, например, но я ценю, что у вас могут быть другие требования. –

+0

[Основные запросы Linq to XML] (https://msdn.microsoft.com/en-us/library/bb943906.aspx) – MethodMan

+0

Нет ... Microsoft никогда не применяла XPath 2.0 или Xslt 2.0. См. Например http://stackoverflow.com/a/7521282/613130 ​​от 2011 года. В одном комментарии кто-то попросил обновить в 2014 году ... – xanatos

ответ

5

Microsoft никогда не реализована XPath 2.0 или 2.0 ... XSLT Смотрите, например этот uservoice (метко назвал нативная поддержка XPath 2.0 или XSLT 2.0 в .NET) 2013 ...

Последний комментарий марта 2015 от одного пользователя:

i guess we will never see this as the world doesn't like XML anymore, it's all about JSON. Which is a shame as XML is still far better for a number of key scenarios than JSON.

Смежные вопросы