2009-02-25 16 views
7

Estoy intentando crear una aplicación winform que busque a través de un documento XML. para mi búsqueda Necesito convertir el atributo XML en la condición xpath a minúsculas, utilizando la función xpath en minúsculas(). esto causa un problema relacionado con el espacio de nombres de la función.xpath yC#

he tratado de añadir el espacio de nombres 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); 

pero aún así obtener una excepción: XsltContext se necesita para esta consulta debido a una función desconocida.

+0

Se puede publicar el XML? –

Respuesta

4

fn: minúsculas se define en XQuery 1.0 and XPath 2.0. XSLT 2.0 funciona con XPATH 2.0.

AFAIK, .NET aún no es compatible con XPATH 2.0. y la versión XSLT de .NET es 1.0 y no 2.0 todavía.

+0

¿Qué más se puede hacer para ejecutar una búsqueda de búsqueda? –

+0

¿Puede proporcionar el XML con el que desea trabajar? –

3

Creo CodeMelt es correct y recibe mi 1, pero tal vez la función de extensión de Microsoft ms:string-compare (con opción de mayúsculas y minúsculas) puede ayudar a resolver su problema?

5

La función lower-case() se define para XPath 2.0.

En XPath 1.0 para convertir letras a minúsculas todavía se puede utilizar la translate() función como se muestra a continuación:

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