我正在尝试创建一个搜索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);
Run Code Online (Sandbox Code Playgroud)
但我仍然遇到异常:由于函数未知,此查询需要XsltContext.
该lower-case()函数是为XPath 2.0定义的.
在XPath 1.0中将translate()字母转换为小写字母仍然可以使用如下所示的
函数:
translate(@attrName, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz')
fn:lower-case 在XQuery 1.0 和 XPath 2.0中定义。XSLT 2.0 与 XPATH 2.0 配合使用。
AFAIK,.NET 还不支持 XPATH 2.0。.NET 的 XSLT 版本也是 1.0,还不是 2.0。
| 归档时间: |
|
| 查看次数: |
6608 次 |
| 最近记录: |