Используя мс: xpath функционирует в XPathExpression

Я пытаюсь использовать Microsoft XPath Extension Functions (те, которые ms:string-сравнивают http://msdn.microsoft.com/en-us/library/ms256114.aspx) в объекте XPathExpression.

Эти функции являются расширениями в библиотеке MSXML, и если я использую их в XslCompiledTransform (просто добавляющий пространство имен "мс"), они работают как очарование:

var xsl =
    @"


 
 
  
   
  
 
";

var xslDocument = new XmlDocument();
xslDocument.LoadXml(xsl);

var transform = new XslCompiledTransform();
transform.Load(xslDocument);

Затем я пытался использовать их в XPathExpression:

XPathNavigator nav = document.DocumentElement.CreateNavigator();
XPathExpression expr = nav.Compile("ms:string-compare(/Data/@timeout1, /Data/@timeout2)");

XmlNamespaceManager manager = new XmlNamespaceManager(document.NameTable);
manager.AddNamespace("ms", "urn:schemas-microsoft-com:xslt");
expr.SetContext(manager);

nav.Evaluate(expr);

Но я добираюсь, исключение "XsltContext необходимо для этого запроса из-за неизвестной функции".

XsltContext является определенный XmlNamespaceManager, но я не знаю, возможно ли инстанцировать его без фактического XslCompiledTransform (это абстрактно), и используйте его в качестве моего контекста выражения.

Есть ли любой способ сделать это (или любой другой способ использовать мс: расширения в XPathExpression)?

8
задан Filini 30 December 2010 в 18:31
поделиться