Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
            }
        }