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