public override object Evaluate(BaseIterator iter)
{
String strArgs;
object val = arg0.Evaluate(iter);
XPathNodeIterator valItr = val as XPathNodeIterator;
if (valItr != null)
{
strArgs = "";
while (valItr.MoveNext())
{
strArgs += valItr.Current.Value + " ";
}
}
else
{
strArgs = XPathFunctions.ToString(val);
}
XPathNavigator n = iter.Current.Clone();
ArrayList rgNodes = new ArrayList();
string [] ids = strArgs.Split(rgchWhitespace);
for (int i = 0; i < ids.Length; i++)
{
if (n.MoveToId(ids [i]))
{
rgNodes.Add(n.Clone());
}
}
rgNodes.Sort(XPathNavigatorComparer.Instance);
return(new ListIterator(iter, rgNodes));
}