XdmException в XQSharp XPathEvaluate - PullRequest
0 голосов
/ 06 мая 2010

Я пытаюсь оценить выражение XPathExpression с помощью XQSharp и получить сообщение об ошибке: «Ошибка проверки типа. Невозможно привести пустую последовательность к типу« xs: integer »."

AltovaXMLSpy оценивает его как "true".

oXmlDoc.CreateNavigator().XPathEvaluate("root/foo/bar cast as xs:integer lt count(root/blah/blub)", oNamespaseManager).ToString()

Этот XML выглядит следующим образом:

<root xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <foo>
        <bar>0</bar>
    </foo>
    <blah>
        <blub/> 
    </blah>
</root>

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 06 мая 2010

Выражение пути «root / foo / bar» не должно возвращать никаких узлов.

Соответствует ли пространство имен по умолчанию в вашем менеджере пространств имен стандартному пространству имен документа?попробуйте проверить эту часть выражения пути с помощью функций .NET XPath, чтобы убедиться, что вы возвращаете правильные узлы:

oXmlDoc.CreateNavigator().Evaluate("root/foo/bar", oNamespaceManager)
1 голос
/ 06 мая 2010

Обновление

нет .NET - обеспеченного движка XPath, который поддерживает XPath 2.0.

Первоначальный ответ:

oXmlDoc.CreateNavigator()
          .XPathEvaluate("root/foo/bar cast as xs:integer lt count(root/blah/blub)",
                          oNamespaseManager
                        )
                         .ToString()

Скорее всего, фактический XML-документ, по которому оценивается выражение XPath, не тот, который вы указали, или текущий (контекстный) узел не является узлом документа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...