Я пытаюсь написать функцию для моего XSL Transform.Вычисление значения из XPathNavigator
В основном внутри функции у меня есть 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);
}
Спасибо. Я искал функцию Evaluate, но я ее не нашел. Наверное, я просто слепой! Что будет делать оценка, если она встречает XPath, которая на самом деле является узлом? например «Some/Sub/Node» – DJL
Тип возврата 'Evaluate' is' Object', в случае выбора узлов выбора XPath вы получите 'XPathNodeIterator', см. Http://msdn.microsoft.com/en-us /library/2c16b7x8.aspx. –