代码之家  ›  专栏  ›  技术社区  ›  Andrew Bennet

调用format number XPath函数时,我收到错误:“需要命名空间管理器或XsltContext。”

  •  1
  • Andrew Bennet  · 技术社区  · 8 年前

    我试图计算包含函数的XPath表达式 format-number 在C#方法中 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\")");
    

    运行时,将引发以下异常:

    系统Xml。XPath。XPathException异常 :'需要命名空间管理器或XsltContext。此查询具有前缀、变量或用户定义的函数。”

    我尝试将XSLT命名空间添加到 XmlNamespaceManager 然后提供给 XPathEvaluate 函数,如异常消息所建议,并在 answer to a similar question ,但这也不起作用:

    var manager = new XmlNamespaceManager(new NameTable());
    manager.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");
    test.XPathEvaluate("format-number(2, \"00\")", manager);
    

    我怎么能打电话给 格式编号 XPath语句中的函数?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Sergey Vaulin    5 年前

    不幸地 format-number MS XPath不支持函数。它不包含很多XSLT函数。您可以在post的图片中找到所有支持功能 here 。

    但是您可以在这里创建自己的函数。在上面的文章中,您可以找到我的3个函数示例(如果还有,格式和当前)。

    对不起,我的母语是俄语,但有翻译按钮。因此,您只需查看第一幅图像并检查第一幅图像中的示例代码 download 链接我希望您可以复制代码并实现所需的功能 格式编号 。