IXMLDOM не распознает функцию XPath last()?

Добрый день! Я работаю с Delphi 2009 и библиотекой MSXML2_TLB (IXMLDOM). Мне нужно выбрать последний узел Meeting:

Doc := CreateOleObject('Microsoft.XMLDOM') as IXMLDomDocument;
Doc.loadXML(XmlStr);
tmpNode:= Doc.selectSingleNode('//Meeting[last()]');

Но в последней строке кода выше я получаю исключение:

Project test.exe raised exception class EOleException with message: 'Unknown method
//Meeting[-->last()<--]'

Есть ли способ выбрать последний узел с помощью xpath или мне действительно нужно написать код, чтобы получить список узлов, а затем выбрать последний элемент?

Еще информация о версии:

Type Lib: C:\WINDOWS\system32\msxml6.dll (1)
LIBID: {F5078F18-C551-11D3-89B9-0000F81FE221}
HelpString: Microsoft XML, v6.0

Заранее спасибо! Войтех


person Vojtech    schedule 07.02.2012    source источник


Ответы (1)


Это связано с тем, что вы используете версию msxml, в которой функция last не определена, насколько мне известно, эта функция была введена в версии 4.0 MSXML.

пытаться

Doc := CreateOleObject('Msxml2.DOMDocument.6.0') as IXMLDomDocument;
person RRUZ    schedule 07.02.2012
comment
Функция last() находится в W3C XPath, а не в диалекте XPath 1998 года, который Microsoft представила в MSXML и который до сих пор, насколько мне известно, используется по умолчанию, даже несмотря на то, что они поддерживают реальный XPath в течение многих лет. - person Michael Kay; 07.02.2012