Вычисление значения из XPathNavigator
Я пытаюсь написать функцию для моего XSL-преобразования.
В основном в функции у меня есть System.Xml.XPath.XPathNodeIterator
и я хочу получить значение XPath применительно к каждому из узлов в этом итераторе.
В этом случае XPath concat(name(.) , "_", string(.))
но на самом деле это может быть что угодно.
Это вызывает исключение XPathException: "Выражение должно оцениваться как набор узлов". Какой вид имеет какой-то смысл
Я подозреваю, что мне скажут, что это не правильный XPath, но это некоторые другие функции, связанные с xml/xsl, однако, учтите, что в XSL я могу сделать это:
<xsl:value-of select="concat(name(.) , "_", string(.))"/>
И это то, что я после - но в рамках функции.
Я использую C#, но ответы на VB приемлемы.
System.Xml.XPath.XPathNodeIterator Nodes = whatever;
string KeySelector="concat(name(.), '_', string(.))";
while (Nodes.MoveNext())
{
System.Xml.XPath.XPathNavigator xpnValue = Nodes.Current.SelectSingleNode(KeySelector);
}
1 ответ
Вам нужно будет использовать Evaluate
метод, а не SelectSingleNode
, И результат вашего XPath не является XPathNavigator
это XPath String
соответственно.NET System.String
или C# string
,