Пример #1
0
 public abstract void AddSort(
     object expr,
     XmlSortOrder order,
     XmlCaseOrder caseOrder,
     string lang,
     XmlDataType dataType
     );
 public XPathComparerHelper(XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType)
 {
     if (lang == null)
     {
         this.cinfo = Thread.CurrentThread.CurrentCulture;
     }
     else
     {
         try
         {
             this.cinfo = new CultureInfo(lang);
         }
         catch (ArgumentException)
         {
             throw;
         }
     }
     if (order == XmlSortOrder.Descending)
     {
         if (caseOrder == XmlCaseOrder.LowerFirst)
         {
             caseOrder = XmlCaseOrder.UpperFirst;
         }
         else if (caseOrder == XmlCaseOrder.UpperFirst)
         {
             caseOrder = XmlCaseOrder.LowerFirst;
         }
     }
     this.order     = order;
     this.caseOrder = caseOrder;
     this.dataType  = dataType;
 }
Пример #3
0
 /// <summary>
 /// Selects a node set using the specified XPath expression and sort.
 /// </summary>
 /// <remarks>(object, IComparer)
 /// See <see cref="XPathExpression.AddSort(object, IComparer)"/>.
 /// </remarks>
 public static XmlNodeList SelectNodesSorted(string expression, XmlNode source,
                                             object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType)
 {
     return(XmlNodeListFactory.CreateNodeList(
                SelectSorted(expression, source.CreateNavigator(), sortExpression,
                             order, caseOrder, lang, dataType)));
 }
Пример #4
0
        public void SortXml(string FirstChildName, string SelectNode, string SortNode, Sort.SortList MySort)
        {
            int mode = (int)MySort;

            if (this._XmlDocument != null)
            {
                string xml = "<?xml version=\"1.0\" encoding=\"" + this.Encoding + "\"?><" + FirstChildName + ">";

                XPathNavigator nav = this._XmlDocument.CreateNavigator();

                XPathExpression expr;

                expr = nav.Compile("descendant::" + SelectNode);

                XmlSortOrder sort = mode == 0 ? XmlSortOrder.Ascending : XmlSortOrder.Descending;

                expr.AddSort(SortNode, sort, XmlCaseOrder.None, "", XmlDataType.Text);

                XPathNodeIterator iterator = nav.Select(expr);

                while (iterator.MoveNext())
                {
                    XmlNode node = ((IHasXmlNode)iterator.Current).GetNode();

                    xml += "<" + SelectNode + ">" + node.InnerXml + "</" + SelectNode + ">";
                }
                xml += "</" + FirstChildName + ">";

                this._XmlDocument.LoadXml(xml);
            }
        }
Пример #5
0
        private static void PrepareSort(XPathExpression expression, XPathNavigator source, object sortExpression,
                                        XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType,
                                        XmlNamespaceManager context)
        {
            XPathExpression se;

            var s = sortExpression as string;

            if (s != null)
            {
                se = GetCompiledExpression(s, source);
            }
            else
            {
                var pathExpression = sortExpression as XPathExpression;
                if (pathExpression != null)
                {
                    se = pathExpression;
                }
                else
                {
                    throw new XPathException(Resources.XPathCache_BadSortObject, null);
                }
            }

            se.SetContext(context);
            expression.AddSort(se, order, caseOrder, lang, dataType);
        }
		public abstract void AddSort (
			object expr,
			XmlSortOrder order,
			XmlCaseOrder caseOrder,
			string lang,
			XmlDataType dataType
		);
Пример #7
0
 public Sort(int sortkey, String xmllang, XmlDataType datatype, XmlSortOrder xmlorder, XmlCaseOrder xmlcaseorder) {
     select    = sortkey;
     lang      = xmllang;
     dataType  = datatype;
     order     = xmlorder;
     caseOrder = xmlcaseorder;
 }
Пример #8
0
            public XmlDocument SortXml(XmlDocument XmlDoc, string SelectSingleNode, string SelectNode, string SortNode, SortMode SortMode)
            {
                int mode = (int)SortMode;

                if (XmlDoc != null)
                {
                    XmlSortOrder sort = mode == 0 ? XmlSortOrder.Ascending : XmlSortOrder.Descending;

                    XmlDocument xmlDocCopy = new XmlDocument();
                    xmlDocCopy.LoadXml(XmlDoc.OuterXml);
                    xmlDocCopy.SelectSingleNode("//" + SelectSingleNode).RemoveAll();

                    XmlNode         node             = XmlDoc.SelectSingleNode("//" + SelectSingleNode);
                    XPathNavigator  navigator        = node.CreateNavigator();
                    XPathExpression selectExpression = navigator.Compile(string.Format("{0}/{1}", SelectNode, SortNode));
                    selectExpression.AddSort(".", sort, XmlCaseOrder.None, "", XmlDataType.Text);
                    XPathNodeIterator nodeIterator = navigator.Select(selectExpression);
                    while (nodeIterator.MoveNext())
                    {
                        XmlNode linkNode         = XmlDoc.SelectSingleNode(string.Format("//{0}[{1}=\"{2}\"]", SelectNode, SortNode, nodeIterator.Current.Value));
                        XmlNode importedLinkNode = xmlDocCopy.ImportNode(linkNode, true);
                        xmlDocCopy.SelectSingleNode("//" + SelectSingleNode).AppendChild(importedLinkNode);
                    }
                    XmlDoc = xmlDocCopy;
                }
                return(XmlDoc);
            }
Пример #9
0
        public XPathComparerHelper(XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType)
        {
            if (lang == null)
            {
                _cinfo = CultureInfo.CurrentCulture;
            }
            else
            {
                try
                {
                    _cinfo = new CultureInfo(lang);
                }
                catch (System.ArgumentException)
                {
                    throw;  // Throwing an XsltException would be a breaking change
                }
            }

            if (order == XmlSortOrder.Descending)
            {
                if (caseOrder == XmlCaseOrder.LowerFirst)
                {
                    caseOrder = XmlCaseOrder.UpperFirst;
                }
                else if (caseOrder == XmlCaseOrder.UpperFirst)
                {
                    caseOrder = XmlCaseOrder.LowerFirst;
                }
            }

            _order     = order;
            _caseOrder = caseOrder;
            _dataType  = dataType;
        }
        public XPathComparerHelper(XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType)
        {
            if (lang == null || lang == String.Empty)
            {
                this.cinfo = System.Threading.Thread.CurrentThread.CurrentCulture;
            }
            else
            {
                this.cinfo = new CultureInfo(lang);
            }

            if (order == XmlSortOrder.Descending)
            {
                if (caseOrder == XmlCaseOrder.LowerFirst)
                {
                    caseOrder = XmlCaseOrder.UpperFirst;
                }
                else if (caseOrder == XmlCaseOrder.UpperFirst)
                {
                    caseOrder = XmlCaseOrder.LowerFirst;
                }
            }

            this.order     = order;
            this.caseOrder = caseOrder;
            this.dataType  = dataType;
        }
Пример #11
0
        public override void AddSort(
            object expr,
            XmlSortOrder order,
            XmlCaseOrder caseOrder,
            string lang,
            XmlDataType dataType)
        {
            CultureInfo cinfo;

            if (lang == null || lang == String.Empty)
            {
                cinfo = System.Threading.Thread.CurrentThread.CurrentCulture;
            }
            else
            {
                cinfo = new CultureInfo(lang);
            }

            if (order == XmlSortOrder.Descending)
            {
                if (caseOrder == XmlCaseOrder.LowerFirst)
                {
                    caseOrder = XmlCaseOrder.UpperFirst;
                }
                else if (caseOrder == XmlCaseOrder.UpperFirst)
                {
                    caseOrder = XmlCaseOrder.LowerFirst;
                }
            }
            AddSort(expr, new XPathComparerHelper(order, caseOrder, cinfo, dataType));
        }
Пример #12
0
 /// <summary>
 /// Selects a node set using the specified XPath expression.
 /// </summary>
 public static XmlNodeList SelectNodesSorted(string expression, XmlNode source,
                                             object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType,
                                             XmlPrefix[] prefixes, params XPathVariable[] variables)
 {
     return(XmlNodeListFactory.CreateNodeList(
                SelectSorted(expression, source.CreateNavigator(), sortExpression,
                             order, caseOrder, lang, dataType, prefixes, variables)));
 }
 public override void AddSort(object expr, XmlSortOrder orderSort, XmlCaseOrder orderCase, string lang, XmlDataType dataType)
 {
     if (this._sorters == null)
     {
         this._sorters = new XPathSorters();
     }
     this._sorters.Add(expr, orderSort, orderCase, lang, dataType);
 }
Пример #14
0
        /// <summary>
        /// Selects a node set using the specified XPath expression and sort.
        /// </summary>
        /// <remarks>
        /// See <see cref="XPathExpression.AddSort(object, IComparer)"/>.
        /// </remarks>
        public static XPathNodeIterator SelectSorted(string expression, XPathNavigator source,
                                                     object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType)
        {
            XPathExpression expr = GetCompiledExpression(expression, source);

            PrepareSort(expr, source, sortExpression, order, caseOrder, lang, dataType);
            return(source.Select(expr));
        }
Пример #15
0
 public Sort(int sortkey, string xmllang, XmlDataType datatype, XmlSortOrder xmlorder, XmlCaseOrder xmlcaseorder)
 {
     select    = sortkey;
     lang      = xmllang;
     dataType  = datatype;
     order     = xmlorder;
     caseOrder = xmlcaseorder;
 }
Пример #16
0
        public static XPathNodeIterator SelectSorted(string expression, XPathNavigator source,
                                                     object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType,
                                                     XmlNamespaceManager context)
        {
            var expr = GetCompiledExpression(expression, source);

            expr.SetContext(context);
            PrepareSort(expr, source, sortExpression, order, caseOrder, lang, dataType, context);
            return(source.Select(expr));
        }
Пример #17
0
        /// <summary>
        /// Selects a node set using the specified XPath expression.
        /// </summary>
        public static XPathNodeIterator SelectSorted(string expression, XPathNavigator source,
                                                     object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType,
                                                     params XPathVariable[] variables)
        {
            XPathExpression expr = GetCompiledExpression(expression, source);

            expr.SetContext(PrepareContext(source, null, null, variables));
            PrepareSort(expr, source, sortExpression, order, caseOrder, lang, dataType);
            return(source.Select(expr));
        }
Пример #18
0
 internal XPathComparerHelper(
     XmlSortOrder order,
     XmlCaseOrder caseOrder,
     CultureInfo cinfo,
     XmlDataType dataType)
 {
     _order     = order;
     _caseOrder = caseOrder;
     _cinfo     = cinfo;
     _dataType  = dataType;
 }
Пример #19
0
        /// <summary>
        /// Selects a node set using the specified XPath expression.
        /// </summary>
        public static XPathNodeIterator SelectSorted(string expression, XPathNavigator source,
                                                     object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType,
                                                     params XmlPrefix[] prefixes)
        {
            XPathExpression     expr = GetCompiledExpression(expression, source);
            XmlNamespaceManager ctx  = PrepareContext(source, null, prefixes, null);

            expr.SetContext(ctx);
            PrepareSort(expr, source, sortExpression, order, caseOrder, lang, dataType, ctx);
            return(source.Select(expr));
        }
Пример #20
0
 public XPathSorter(object expr, XmlSortOrder orderSort, XmlCaseOrder orderCase, string lang, XmlDataType dataType)
 {
     this._expr = XPathSorter.ExpressionFromObject(expr);
     this._type = dataType;
     if (dataType == XmlDataType.Number)
     {
         this._cmp = new XPathSorter.XPathNumberComparer(orderSort);
     }
     else
     {
         this._cmp = new XPathSorter.XPathTextComparer(orderSort, orderCase, lang);
     }
 }
Пример #21
0
 public XPathTextComparer(XmlSortOrder orderSort, XmlCaseOrder orderCase, string strLang)
 {
     this._orderCase = orderCase;
     this._nMulCase  = ((orderCase != XmlCaseOrder.UpperFirst) ? 1 : -1);
     this._nMulSort  = ((orderSort != XmlSortOrder.Ascending) ? -1 : 1);
     if (strLang == null || strLang == string.Empty)
     {
         this._ci = CultureInfo.CurrentCulture;
     }
     else
     {
         this._ci = new CultureInfo(strLang);
     }
 }
Пример #22
0
 private static void PrepareSort(XPathExpression expression, XPathNavigator source,
                                 object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType)
 {
     if (sortExpression is string)
     {
         expression.AddSort(
             GetCompiledExpression((string)sortExpression, source),
             order, caseOrder, lang, dataType);
     }
     else if (sortExpression is XPathExpression)
     {
         expression.AddSort(sortExpression, order, caseOrder, lang, dataType);
     }
     else
     {
         throw new XPathException(Properties.Resources.XPathCache_BadSortObject, null);
     }
 }
Пример #23
0
        public Sort(Compiler c)
        {
            c.CheckExtraAttributes("sort", "select", "lang", "data-type", "order", "case-order");

            expr = c.CompileExpression(c.GetAttribute("select"));
            if (expr == null)
            {
                expr = c.CompileExpression("string(.)");
            }

            langAvt      = c.ParseAvtAttribute("lang");
            dataTypeAvt  = c.ParseAvtAttribute("data-type");
            orderAvt     = c.ParseAvtAttribute("order");
            caseOrderAvt = c.ParseAvtAttribute("case-order");

            // Precalc whatever we can
            lang      = ParseLang(XslAvt.AttemptPreCalc(ref langAvt));
            dataType  = ParseDataType(XslAvt.AttemptPreCalc(ref dataTypeAvt));
            order     = ParseOrder(XslAvt.AttemptPreCalc(ref orderAvt));
            caseOrder = ParseCaseOrder(XslAvt.AttemptPreCalc(ref caseOrderAvt));
        }
Пример #24
0
        internal override void Compile(Compiler compiler)
        {
            CompileAttributes(compiler);
            CheckEmpty(compiler);
            if (_selectKey == Compiler.InvalidQueryKey)
            {
                _selectKey = compiler.AddQuery(".");
            }

            _forwardCompatibility = compiler.ForwardCompatibility;
            _manager = compiler.CloneScopeManager();

            _lang      = ParseLang(PrecalculateAvt(ref _langAvt));
            _dataType  = ParseDataType(PrecalculateAvt(ref _dataTypeAvt), _manager);
            _order     = ParseOrder(PrecalculateAvt(ref _orderAvt));
            _caseOrder = ParseCaseOrder(PrecalculateAvt(ref _caseOrderAvt));

            if (_langAvt == null && _dataTypeAvt == null && _orderAvt == null && _caseOrderAvt == null)
            {
                _sort = new Sort(_selectKey, _lang, _dataType, _order, _caseOrder);
            }
        }
Пример #25
0
        private static void PrepareSort(XPathExpression expression, XPathNavigator source, object sortExpression,
                                        XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType,
                                        XmlNamespaceManager context)
        {
            XPathExpression se;

            if (sortExpression is string)
            {
                se = GetCompiledExpression((string)sortExpression, source);
            }
            else if (sortExpression is XPathExpression)
            {
                se = (XPathExpression)sortExpression;
            }
            else
            {
                throw new XPathException(Properties.Resources.XPathCache_BadSortObject, null);
            }

            se.SetContext(context);
            expression.AddSort(se, order, caseOrder, lang, dataType);
        }
Пример #26
0
        internal override void Compile(Compiler compiler)
        {
            CompileAttributes(compiler);
            CheckEmpty(compiler);
            if (selectKey == Compiler.InvalidQueryKey)
            {
                selectKey = compiler.AddQuery(".");
            }

            this.forwardCompatibility = compiler.ForwardCompatibility;
            this.manager = compiler.CloneScopeManager();

            this.lang      = ParseLang(PrecalculateAvt(ref this.langAvt));
            this.dataType  = ParseDataType(PrecalculateAvt(ref this.dataTypeAvt), manager);
            this.order     = ParseOrder(PrecalculateAvt(ref this.orderAvt));
            this.caseOrder = ParseCaseOrder(PrecalculateAvt(ref this.caseOrderAvt));

            if (this.langAvt == null && this.dataTypeAvt == null && this.orderAvt == null && this.caseOrderAvt == null)
            {
                this.sort = new Sort(this.selectKey, this.lang, this.dataType, this.order, this.caseOrder);
            }
        }
Пример #27
0
        public override void AddSort(
            object expr,
            XmlSortOrder order,
            XmlCaseOrder caseOrder,
            string lang,
            XmlDataType dataType) {

            CultureInfo cinfo;
            if (lang == null || lang == String.Empty)
                cinfo = System.Threading.Thread.CurrentThread.CurrentCulture;
            else
                cinfo = new CultureInfo(lang);

            if (order == XmlSortOrder.Descending) {
                if (caseOrder == XmlCaseOrder.LowerFirst) {
                    caseOrder = XmlCaseOrder.UpperFirst;
                }
                else if (caseOrder == XmlCaseOrder.UpperFirst) {
                    caseOrder = XmlCaseOrder.LowerFirst;
                }
            }
            AddSort(expr, new XPathComparerHelper(order, caseOrder, cinfo, dataType));
        }
Пример #28
0
 public Sort(Compiler c)
 {
     c.CheckExtraAttributes("sort", new string[]
     {
         "select",
         "lang",
         "data-type",
         "order",
         "case-order"
     });
     this.expr = c.CompileExpression(c.GetAttribute("select"));
     if (this.expr == null)
     {
         this.expr = c.CompileExpression("string(.)");
     }
     this.langAvt      = c.ParseAvtAttribute("lang");
     this.dataTypeAvt  = c.ParseAvtAttribute("data-type");
     this.orderAvt     = c.ParseAvtAttribute("order");
     this.caseOrderAvt = c.ParseAvtAttribute("case-order");
     this.lang         = this.ParseLang(XslAvt.AttemptPreCalc(ref this.langAvt));
     this.dataType     = this.ParseDataType(XslAvt.AttemptPreCalc(ref this.dataTypeAvt));
     this.order        = this.ParseOrder(XslAvt.AttemptPreCalc(ref this.orderAvt));
     this.caseOrder    = this.ParseCaseOrder(XslAvt.AttemptPreCalc(ref this.caseOrderAvt));
 }
Пример #29
0
			public XPathNumberComparer (XmlSortOrder orderSort)
			{
				_nMulSort = (orderSort == XmlSortOrder.Ascending) ? 1 : -1;
			}
Пример #30
0
 public void Add(object expr, XmlSortOrder orderSort, XmlCaseOrder orderCase, string lang, XmlDataType dataType)
 {
     this._rgSorters.Add(new XPathSorter(expr, orderSort, orderCase, lang, dataType));
 }
	public override void AddSort(Object expr, XmlSortOrder order, 
								XmlCaseOrder caseOrder, 
								String lang, XmlDataType dataType){}
Пример #32
0
		public OrderModifier (XmlSortOrder order, XmlSortOrder emptyOrder, string collation)
		{
			this.sortOrder = sortOrder;
			this.emptyOrder = emptyOrder;
			if (collation != null)
				this.coll = new CultureInfo (collation);
		}
Пример #33
0
        internal XPathComparerHelper(
            XmlSortOrder order,
            XmlCaseOrder caseOrder,
            CultureInfo  cinfo,
            XmlDataType  dataType) {

            _order = order;
            _caseOrder = caseOrder;
            _cinfo = cinfo;
            _dataType = dataType;
        }
Пример #34
0
 /// <summary>
 /// Selects a node set using the specified XPath expression.
 /// </summary>
 public static XmlNodeList SelectNodesSorted(string expression, XmlNode source,
     object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType,
     XmlPrefix[] prefixes, params XPathVariable[] variables)
 {
     return XmlNodeListFactory.CreateNodeList(
         SelectSorted(expression, source.CreateNavigator(), sortExpression,
         order, caseOrder, lang, dataType, prefixes, variables));
 }
Пример #35
0
 /// <summary>
 /// Selects a node set using the specified XPath expression.
 /// </summary>
 public static XmlNodeList SelectNodesSorted(string expression, XmlNode source,
     object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType,
     XmlNamespaceManager context)
 {
     return XmlNodeListFactory.CreateNodeList(
         SelectSorted(expression, source.CreateNavigator(), sortExpression,
         order, caseOrder, lang, dataType, context));
 }
Пример #36
0
 public override void AddSort(object expr, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType)
 {
     AddSort(expr, new XPathComparerHelper(order, caseOrder, lang, dataType));
 }
Пример #37
0
        public XPathComparerHelper(XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType)
        {
            if (lang == null)
            {
                _cinfo = CultureInfo.CurrentCulture;
            }
            else
            {
                try
                {
                    _cinfo = new CultureInfo(lang);
                }
                catch (System.ArgumentException)
                {
                    throw;  // Throwing an XsltException would be a breaking change
                }
            }

            if (order == XmlSortOrder.Descending)
            {
                if (caseOrder == XmlCaseOrder.LowerFirst)
                {
                    caseOrder = XmlCaseOrder.UpperFirst;
                }
                else if (caseOrder == XmlCaseOrder.UpperFirst)
                {
                    caseOrder = XmlCaseOrder.LowerFirst;
                }
            }

            _order = order;
            _caseOrder = caseOrder;
            _dataType = dataType;
        }
        public XPathComparerHelper(XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType) {
            if (lang == null) {
                this.cinfo = System.Threading.Thread.CurrentThread.CurrentCulture;
            } else {
                try {
                    this.cinfo = new CultureInfo(lang);
                }
                catch (System.ArgumentException) {
                    throw;
				}
            }

            if (order == XmlSortOrder.Descending) {
                if (caseOrder == XmlCaseOrder.LowerFirst) {
                    caseOrder = XmlCaseOrder.UpperFirst;
                }
                else if (caseOrder == XmlCaseOrder.UpperFirst) {
                    caseOrder = XmlCaseOrder.LowerFirst;
                }
            }

            this.order     = order;
            this.caseOrder = caseOrder;
            this.dataType  = dataType;
        }
Пример #39
0
		public XPathSorter (object expr, XmlSortOrder orderSort, XmlCaseOrder orderCase, string lang, XmlDataType dataType)
		{
			_expr = ExpressionFromObject (expr);
			_type = dataType;
			if (dataType == XmlDataType.Number)
				_cmp = new XPathNumberComparer (orderSort);
			else
				_cmp = new XPathTextComparer (orderSort, orderCase, lang);
		}
Пример #40
0
		public override void AddSort(object expr, XmlSortOrder orderSort, XmlCaseOrder orderCase, string lang, XmlDataType dataType)
		{
			if (_sorters == null)
				_sorters = new XPathSorters ();
			_sorters.Add (expr, orderSort, orderCase, lang, dataType);
		}
Пример #41
0
		public Sort (Compiler c)
		{
			c.CheckExtraAttributes ("sort", "select", "lang", "data-type", "order", "case-order");
			
			expr = c.CompileExpression (c.GetAttribute ("select"));
			if (expr == null)
				expr = c.CompileExpression ("string(.)");
			
			langAvt = c.ParseAvtAttribute ("lang");
			dataTypeAvt = c.ParseAvtAttribute ("data-type");
			orderAvt = c.ParseAvtAttribute ("order");
			caseOrderAvt = c.ParseAvtAttribute ("case-order");
			
			// Precalc whatever we can
			lang = ParseLang (XslAvt.AttemptPreCalc (ref langAvt));
			dataType = ParseDataType (XslAvt.AttemptPreCalc (ref dataTypeAvt));
			order = ParseOrder (XslAvt.AttemptPreCalc (ref orderAvt));
			caseOrder = ParseCaseOrder (XslAvt.AttemptPreCalc (ref caseOrderAvt));
		}
Пример #42
0
 /// <summary>
 /// Selects a node set using the specified XPath expression.
 /// </summary>
 public static XPathNodeIterator SelectSorted(string expression, XPathNavigator source,
     object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType,
     XmlNamespaceManager context)
 {
     XPathExpression expr = GetCompiledExpression(expression, source);
     expr.SetContext(context);
     PrepareSort(expr, source, sortExpression, order, caseOrder, lang, dataType, context);
     return source.Select(expr);
 }
Пример #43
0
 public XPathNumberComparer(XmlSortOrder orderSort)
 {
     this._nMulSort = ((orderSort != XmlSortOrder.Ascending) ? -1 : 1);
 }
Пример #44
0
 /// <summary>
 /// Selects a node set using the specified XPath expression.
 /// </summary>
 public static XPathNodeIterator SelectSorted(string expression, XPathNavigator source,
     object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType,
     XmlPrefix[] prefixes, params XPathVariable[] variables)
 {
     XPathExpression expr = GetCompiledExpression(expression, source);
     XmlNamespaceManager ctx = PrepareContext(source, null, prefixes, variables);
     expr.SetContext(ctx);
     PrepareSort(expr, source, sortExpression, order, caseOrder, lang, dataType, ctx);
     return source.Select(expr);
 }
Пример #45
0
 public override void AddSort(Object expr, XmlSortOrder order,
                              XmlCaseOrder caseOrder,
                              String lang, XmlDataType dataType)
 {
 }
Пример #46
0
 private static void PrepareSort(XPathExpression expression, XPathNavigator source,
     object sortExpression, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType)
 {
     if (sortExpression is string)
     {
         expression.AddSort(
             GetCompiledExpression((string)sortExpression, source),
             order, caseOrder, lang, dataType);
     }
     else if (sortExpression is XPathExpression)
     {
         expression.AddSort(sortExpression, order, caseOrder, lang, dataType);
     }
     else
     {
         throw new XPathException(Monobjc.Tools.Sdp.Properties.Resources.XPathCache_BadSortObject, null);
     }
 }
Пример #47
0
        internal override void Compile(Compiler compiler)
        {
            CompileAttributes(compiler);
            CheckEmpty(compiler);
            if (_selectKey == Compiler.InvalidQueryKey)
            {
                _selectKey = compiler.AddQuery(".");
            }

            _forwardCompatibility = compiler.ForwardCompatibility;
            _manager = compiler.CloneScopeManager();

            _lang = ParseLang(PrecalculateAvt(ref _langAvt));
            _dataType = ParseDataType(PrecalculateAvt(ref _dataTypeAvt), _manager);
            _order = ParseOrder(PrecalculateAvt(ref _orderAvt));
            _caseOrder = ParseCaseOrder(PrecalculateAvt(ref _caseOrderAvt));

            if (_langAvt == null && _dataTypeAvt == null && _orderAvt == null && _caseOrderAvt == null)
            {
                _sort = new Sort(_selectKey, _lang, _dataType, _order, _caseOrder);
            }
        }
Пример #48
0
        private static void PrepareSort(XPathExpression expression, XPathNavigator source, object sortExpression,
            XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType,
            XmlNamespaceManager context)
        {
            XPathExpression se;

            if (sortExpression is string)
            {
                se = GetCompiledExpression((string)sortExpression, source);
            }
            else if (sortExpression is XPathExpression)
            {
                se = (XPathExpression)sortExpression;
            }
            else
            {
                throw new XPathException(Monobjc.Tools.Sdp.Properties.Resources.XPathCache_BadSortObject, null);
            }

            se.SetContext(context);
            expression.AddSort(se, order, caseOrder, lang, dataType);
        }
Пример #49
0
        internal override void Compile(Compiler compiler) {
            CompileAttributes(compiler);
            CheckEmpty(compiler);
            if (selectKey == Compiler.InvalidQueryKey) {
                selectKey = compiler.AddQuery(Compiler.SelfQuery);
            }

            this.forwardCompatibility = compiler.ForwardCompatibility;
            this.manager = compiler.CloneScopeManager();

            this.lang      = ParseLang(     PrecalculateAvt(ref this.langAvt     ));
            this.dataType  = ParseDataType( PrecalculateAvt(ref this.dataTypeAvt ), manager);
            this.order     = ParseOrder(    PrecalculateAvt(ref this.orderAvt    ));
            this.caseOrder = ParseCaseOrder(PrecalculateAvt(ref this.caseOrderAvt));

            if(this.langAvt == null && this.dataTypeAvt == null && this.orderAvt == null && this.caseOrderAvt == null) {
                this.sort = new Sort(this.selectKey, this.lang, this.dataType, this.order, this.caseOrder);
            }
        }
Пример #50
0
		public void Add (object expr, XmlSortOrder orderSort, XmlCaseOrder orderCase, string lang, XmlDataType dataType)
		{
			_rgSorters.Add (new XPathSorter (expr, orderSort, orderCase, lang, dataType));
		}
Пример #51
0
 public override void AddSort(object expr, XmlSortOrder order, XmlCaseOrder caseOrder, string lang, XmlDataType dataType)
 {
     AddSort(expr, new XPathComparerHelper(order, caseOrder, lang, dataType));
 }
Пример #52
0
			public XPathTextComparer (XmlSortOrder orderSort, XmlCaseOrder orderCase, string strLang)
			{
				_orderCase = orderCase;
				// FIXME: We have to set this in
				// reverse order since currently
				// we don't support collation.
				_nMulCase = (orderCase == XmlCaseOrder.UpperFirst) ? -1 : 1;
				_nMulSort = (orderSort == XmlSortOrder.Ascending) ? 1 : -1;

				if (strLang == null || strLang == "")
					_ci = CultureInfo.CurrentCulture;	// TODO: defer until evaluation?
				else
					_ci = new CultureInfo (strLang);
			}