Esempio n. 1
0
        /// <summary>
        /// Implements the following function
        ///		node-set trailing(node-set, node-set)
        /// </summary>
        /// <param name="nodeset1"></param>
        /// <param name="nodeset2"></param>
        /// <returns>returns the nodes in the node set passed as the
        /// first argument that follow, in document order, the first node
        /// in the node set passed as the second argument</returns>
        public static XPathNodeIterator trailing(XPathNodeIterator nodeset1, XPathNodeIterator nodeset2)
        {
            XPathNavigator leader = null;

            if (nodeset2.MoveNext())
            {
                leader = nodeset2.Current;
            }
            else
            {
                return(nodeset1);
            }

            ExsltNodeList nodelist1 = new ExsltNodeList();

            while (nodeset1.MoveNext())
            {
                if (nodeset1.Current.ComparePosition(leader) == XmlNodeOrder.After)
                {
                    nodelist1.Add(nodeset1.Current.Clone());
                }
            }

            return(ExsltCommon.ExsltNodeListToXPathNodeIterator(nodelist1));
        }
Esempio n. 2
0
				/// <summary>
				/// Implements the following function 
				///    node-set distinct(node-set)
				/// </summary>
				/// <param name="nodeset">The input nodeset</param>
				/// <returns>Returns the nodes in the nodeset whose string value is 
				/// distinct</returns>
				public static XPathNodeIterator distinct(XPathNodeIterator nodeset){
				
					ExsltNodeList nodelist = new ExsltNodeList();

					while(nodeset.MoveNext()){
						if(!nodelist.ContainsValue(nodeset.Current.Value)){
							nodelist.Add(nodeset.Current.Clone()); 
						}					
					}
					 
					return ExsltCommon.ExsltNodeListToXPathNodeIterator(nodelist); 

				}
Esempio n. 3
0
        /// <summary>
        /// Implements the following function
        ///    node-set highest(node-set)
        /// </summary>
        /// <param name="iterator">The input nodeset</param>
        /// <returns>All the nodes that contain the max value in the nodeset</returns>
        public static XPathNodeIterator highest(XPathNodeIterator iterator)
        {
            ExsltNodeList newList = new ExsltNodeList();
            double        max, t;

            if (iterator.Count == 0)
            {
                return(ExsltCommon.ExsltNodeListToXPathNodeIterator(newList));
            }


            try{
                iterator.MoveNext();
                max = XmlConvert.ToDouble(iterator.Current.Value);
                newList.Add(iterator.Current.Clone());

                while (iterator.MoveNext())
                {
                    t = XmlConvert.ToDouble(iterator.Current.Value);

                    if (t > max)
                    {
                        max = t;
                        newList.Clear();
                        newList.Add(iterator.Current.Clone());
                    }
                    else if (t == max)
                    {
                        newList.Add(iterator.Current.Clone());
                    }
                }
            }catch (Exception) {           //return empty node set
                newList.Clear();
                return(ExsltCommon.ExsltNodeListToXPathNodeIterator(newList));
            }

            return(ExsltCommon.ExsltNodeListToXPathNodeIterator(newList));
        }
Esempio n. 4
0
        /// <summary>
        /// Implements the following function
        ///    node-set distinct(node-set)
        /// </summary>
        /// <param name="nodeset">The input nodeset</param>
        /// <returns>Returns the nodes in the nodeset whose string value is
        /// distinct</returns>
        public static XPathNodeIterator distinct(XPathNodeIterator nodeset)
        {
            ExsltNodeList nodelist = new ExsltNodeList();

            while (nodeset.MoveNext())
            {
                if (!nodelist.ContainsValue(nodeset.Current.Value))
                {
                    nodelist.Add(nodeset.Current.Clone());
                }
            }

            return(ExsltCommon.ExsltNodeListToXPathNodeIterator(nodelist));
        }
Esempio n. 5
0
				/// <summary>
				/// Implements the following function 
				///		node-set trailing(node-set, node-set)
				/// </summary>
				/// <param name="nodeset1"></param>
				/// <param name="nodeset2"></param>
				/// <returns>returns the nodes in the node set passed as the 
				/// first argument that follow, in document order, the first node 
				/// in the node set passed as the second argument</returns>
				public static XPathNodeIterator trailing(XPathNodeIterator nodeset1, XPathNodeIterator nodeset2){
				
					XPathNavigator leader = null; 
					
					if(nodeset2.MoveNext()){
						leader = nodeset2.Current; 
					}else{ 
						return nodeset1; 
					}

					ExsltNodeList nodelist1 = new ExsltNodeList();

					while(nodeset1.MoveNext()){
						if(nodeset1.Current.ComparePosition(leader) == XmlNodeOrder.After){
							nodelist1.Add(nodeset1.Current.Clone()); 
						}					
					}

					return ExsltCommon.ExsltNodeListToXPathNodeIterator(nodelist1);  
				}
Esempio n. 6
0
		/// <summary>
		/// Implements the following function 
		///    node-set highest(node-set)
		/// </summary>
		/// <param name="iterator">The input nodeset</param>
		/// <returns>All the nodes that contain the max value in the nodeset</returns>		
		public static XPathNodeIterator highest(XPathNodeIterator iterator){

			ExsltNodeList newList = new ExsltNodeList(); 
			double max, t; 

			if(iterator.Count == 0){
				return ExsltCommon.ExsltNodeListToXPathNodeIterator(newList);  
			}


			try{ 

				iterator.MoveNext(); 
				max = XmlConvert.ToDouble(iterator.Current.Value);
				newList.Add(iterator.Current.Clone()); 

				while (iterator.MoveNext()){
					t = XmlConvert.ToDouble(iterator.Current.Value);
				
					if(t > max){
						max =  t;
						newList.Clear(); 
						newList.Add(iterator.Current.Clone()); 
					}else if( t == max){
						newList.Add(iterator.Current.Clone()); 
					}
				}
				
			}catch(Exception){ //return empty node set
				newList.Clear(); 
				return ExsltCommon.ExsltNodeListToXPathNodeIterator(newList);  
			}

			return ExsltCommon.ExsltNodeListToXPathNodeIterator(newList); 
		}