2009-02-25 12 views
7

Próbuję utworzyć aplikację WinForm, która przeszukuje dokument XML. dla mojego wyszukiwania Potrzebuję przekonwertować atrybut XML w warunku xpath na małe litery, używając funkcji xpath małej litery(). powoduje to problem związany z przestrzenią nazw funkcji.Ścieżka i C#

Próbowałem dodać nazw manualy:

 XmlNamespaceManager nsMgr = new XmlNamespaceManager(prs.Doc.NameTable); 
     nsMgr.AddNamespace("fn", "http://www.w3.org/2005/02/xpath-functions"); 
     XmlNodeList results = prs.Doc.SelectNodes("//function[starts-with(fn:lower-case(@name),'" + txtSearch.Text + "')]",nsMgr); 

ale wciąż otrzymuję wyjątek: XsltContext jest potrzebna dla tego zapytania z powodu nieznanej funkcji.

+0

można zakładać XML? –

Odpowiedz

4

fn: mała litera jest zdefiniowana w XQuery 1.0 and XPath 2.0. XSLT 2.0 działa z XPATH 2.0.

AFAIK, .NET nie obsługuje jeszcze XPATH 2.0. a wersja XSLT z .NET jest jeszcze 1.0, a jeszcze nie 2.0.

+0

Co jeszcze można zrobić, aby uruchomić wyszukiwanie zapytań? –

+0

Czy możesz podać kod XML, z którym chcesz pracować? –

3

Myślę, że CodeMelt ma numer correct i dostaje +1, ale być może funkcja rozszerzenia Microsoft ms:string-compare (z opcją niewrażliwą na wielkość liter) może pomóc w rozwiązaniu problemu?

5

Funkcja lower-case() jest zdefiniowana dla XPath 2.0.

W XPath 1.0 konwertować litery na małe litery jeden nadal mogą korzystać z translate() funkcję, jak pokazano poniżej:

translate(@attrName, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',                                                                             'abcdefghijklmnopqrstuvwxyz')

Powiązane problemy