我正在尝试评估一个XPath表达式,该表达式包含C#方法format-number
中的函数XPathEvaluate(XNode, String)
。简化的复制如下:
// In this example, the XML is not actually used; written purely to demonstrate the issue
XElement test = new XElement("test", 12);
object output = test.XPathEvaluate("format-number(2, \"00\")");
运行时会抛出以下异常:
System.Xml.XPath.XPathException :'需要命名空间管理器或XsltContext。此查询具有前缀,变量或用户定义的函数。'
我尝试将XSLT命名空间添加到XmlNamespaceManager
,然后根据异常消息和answer to a similar question的建议将其提供给XPathEvaluate
函数,但这也是不工作:
var manager = new XmlNamespaceManager(new NameTable());
manager.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");
test.XPathEvaluate("format-number(2, \"00\")", manager);
如何在XPath语句中调用format-number
函数?
答案 0 :(得分:2)
不幸的是,MS XPath不支持format-number
功能。它不包含很多XSLT的功能。您可以在帖子this source找到图片中的所有支持功能。
但你必须在这里创建自己的功能。在上面的文章中,您可以找到我的3个函数示例(if-else,format和current)。
抱歉,我的母语是俄语,但有翻译按钮。因此,您只需要查看第一张图片并查看第一个here链接中的示例代码。我希望您可以复制代码并实现format-number
所需的功能。