private void CollectIndex(XPathNavigator nav, XPathNavigator target, Hashtable map, XslKey key) { switch (key.Use.ReturnType) { case XPathResultType.NodeSet: { XPathNodeIterator xpathNodeIterator = nav.Select(key.Use); while (xpathNodeIterator.MoveNext()) { XPathNavigator xpathNavigator = xpathNodeIterator.Current; this.AddIndex(xpathNavigator.Value, target, map); } return; } case XPathResultType.Any: { object obj = nav.Evaluate(key.Use); XPathNodeIterator xpathNodeIterator = obj as XPathNodeIterator; if (xpathNodeIterator != null) { while (xpathNodeIterator.MoveNext()) { XPathNavigator xpathNavigator2 = xpathNodeIterator.Current; this.AddIndex(xpathNavigator2.Value, target, map); } } else { this.AddIndex(XPathFunctions.ToString(obj), target, map); } return; } } string key2 = nav.EvaluateString(key.Use, null, null); this.AddIndex(key2, target, map); }
private void CollectIndex(XPathNavigator nav, XPathNavigator target, Hashtable map, XslKey key) { XPathNodeIterator iter; switch (key.Use.ReturnType) { case XPathResultType.NodeSet: iter = nav.Select(key.Use); while (iter.MoveNext()) { AddIndex(iter.Current.Value, target, map); } break; case XPathResultType.Any: object o = nav.Evaluate(key.Use); iter = o as XPathNodeIterator; if (iter != null) { while (iter.MoveNext()) { AddIndex(iter.Current.Value, target, map); } } else { AddIndex(XPathFunctions.ToString(o), target, map); } break; default: string keyValue = nav.EvaluateString(key.Use, null, null); AddIndex(keyValue, target, map); break; } }