我正在尝试创建一个搜索XML文档的winform应用程序.对于我的搜索,我需要通过使用小写()xpath函数将xpath条件中的XML属性转换为小写.这会导致与函数名称空间相关的问题.
我试图手动添加名称空间:
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);
但我仍然遇到异常:由于函数未知,此查询需要XsltContext.
该lower-case()
函数是为XPath 2.0定义的.
在XPath 1.0中将translate()
字母转换为小写字母仍然可以使用如下所示的
函数:
translate(@attrName, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz')