d8c1277a71c62a1567f4ddef36df63a7d8e333c4
[mono.git] / mcs / class / System.XML / System.Xml.XPath / ChangeLog
1 2003-12-07 Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
2
3         * Tokenizer.cs : Removed some TODOs. (trivial ;-)
4         * Iterator.cs : ParensIterator can inherit from BaseIterator.
5           SlashIterator copy .ctor() always failed to clone. This fixes Count.
6
7 2003-12-03 Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
8
9         * Expression.cs : XPathSorters.Compare() should compare document
10           position. See last sentence of XSLT 1.0 secion 10.
11
12 2003-12-03 Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
13
14         * DefaultContext.cs : Overrode all functions' ToString().
15           XPathFunctions.ToNumber() trims whitespaces at both side.
16           Fixed NullReferenceException in normalize-space().
17         * Iterator.cs : Fixed AncestorOrSelfIterator.MoveNext() didn't handle
18           attribute or namespace node correctly.
19           SlashIterator.Clone() didn't clone "next node iterator" correctly.
20           EnumeratorIterator.ctor() should raise an error (not at Clone())
21           when the target IEnumerator is not ICloneable.
22
23 2003-11-28  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
24
25         * Expression.cs : namespace axis now traversed in reverse order, so it
26           requires sorting.
27         * Iterator.cs : UnionIterator.Clone() was incomplete. 
28           NamespaceItarator() should be reverse order (special handling
29           because of XPathNavigator specification).
30
31 2003-11-24  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
32
33         * Iterator.cs : PrecedingIterator.MoveNext() now breaks up at Root.
34         * XPathNavigator.cs : ComparePosition() didn't handle attributes 
35           correctly.
36
37 2003-11-24  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
38
39         * Parser.jay, Expression.cs, Iterator.cs :
40           Added ExprParens and ParensIterator classes which is used to handle
41           precedence of parenthesized expressions.
42           (e.g. consider "(preceding::*)[3]" and "preceding::[3]" )
43
44         * Expression.cs, Iterator.cs :
45           Added RequireSorting property for each Expr and BaseIterator classes.
46           SlashIterator.MoveNext() now considers correct sorting. But
47           considering performance, it separates two logics, sorted and sortless
48           depending on RequireSorting of left iterator and right expression.
49
50         * Iterator.cs :
51           SimpleIterator.ctor() should consider when nav is null.
52           FollowingIterator.MoveNext() and PrecedingIterator.MoveNext() should
53           not return any nodes.
54           AncestorIterator and AncestorOrSelfIterator copy ctr() should clone
55           positions.
56           AncestorIterator.MoveNext() should skip Root if context node is
57           Root itself.
58           FollowingIterator.MoveNext() should not handle children of context
59           itself.
60           PrecedingIterator.MoveNext() should skip its ancestors.
61           AxisIterator.ReverseAxis should be dependent on its containing iter.
62           UnionIterator.MoveNext() should consider comparison of nodes in 
63           different document. The behavior is implementation dependent.
64           (see XSLT spec 12.1)
65
66 2003-11-19  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
67
68         * Added XPathComparer.cs
69         * DefaultContext.cs : Fixed XPathFunctionId.Evaluate() to iterate base 
70           iterator correctly, and sort results.
71
72 2003-11-19  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
73
74         * DefaultContext.cs : Imcomplete fix ;-)
75
76 2003-11-19  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
77
78         * DefaultContext.cs : XPathFunctions.ToNumber() should catch overflow.
79           XPathFunctionId.cs : Exposed Id expression.
80         * Expression.cs : Added ExprLiteral.Value, and class ExprParens (it
81           will be used to solve evaluation precedence problem).
82
83 2003-11-09  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
84
85         * Iterator.cs : Fixed SlashIterator that might return nodes 1)in
86           inconsistent order, and 2)may return duplicate result nodes.
87
88 2003-11-06 Ben Maurer  <bmaurer@users.sourceforge.net>
89
90         * Iterator.cs: (AxisIterator.ComparablePosition): Remove. Let
91         it inherit from the base class. This made b[2] evaluated on 
92         <a /><b /><c /><a /><b /><c /> return the first b node because
93         in the ChildIterator it was the second node and seemed to satsify
94         the predicate.
95
96 2003-11-04  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
97
98         * Iterator.cs : Added bool ReverseAxis property to identify whether
99           the iterator is in reverse order or not.  Added ComparablePosition
100           for correct position comparison for PredicateIterator and reverse-
101           order-axes.  Modified AncestorIterator, AncestorOrSelfIterator,
102           PrecedingIterator and PrecedingSiblingIterator to make MoveNext()
103           return their nodes in document order. This fixes bugzilla #39079.
104
105 2003-10-15  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
106
107         * Iterator.cs : DescendantIterator and FollowingIterator also should
108           not MoveNext() after they reached to the end.
109
110 2003-10-13  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
111
112         * Iterator.cs : Fixed UnionIterator who ignores document order.
113           Fixed SlashIterator whose MoveNext() should finish at its end.
114
115 2003-09-27 Ben Maurer  <bmaurer@users.sourceforge.net>
116
117         * Iterator.cs, Expression.cs, XPathNavigator.cs: In AxisIterator
118         use NameTable so we dont call strcmp.
119
120 2003-09-27 Ben Maurer  <bmaurer@users.sourceforge.net>
121
122         * DefaultContext.cs (translate): translate ("abc", "c", "") = "ab"
123         not "abc".
124         * Iterator.cs, Expression.cs: All axes are
125         SimpleIterators. SimpleIterators are gaurenteed to give the same
126         XPathNavigator in Current. Make AxisIterator take a
127         SimpleIterator, not any old BaseIterator. Will allow us to make
128         NameTable optimizations and avoid quite a few strcmp's.
129
130 2003-09-24 Ben Maurer  <bmaurer@users.sourceforge.net>
131
132         * Expression.cs: make // work right, must use another slash itr.
133
134 2003-09-21 Ben Maurer  <bmaurer@users.sourceforge.net>
135
136         * Expression.cs: cant use $$ before assigned.
137
138 2003-09-21 Ben Maurer  <bmaurer@users.sourceforge.net>
139
140         * Expression.cs, Parser.jay, XPathNavigator.cs: api beautification.
141
142 2003-09-20 Ben Maurer  <bmaurer@users.sourceforge.net>
143
144         * Expression.cs: num != double.NaN does not work.
145
146 2003-09-19 Ben Maurer  <bmaurer@users.sourceforge.net>
147
148         * Expression.cs: in NodeTypeTest dont throw an exception if it is
149         an unknown node type (allows for better Pattern debugging).
150
151 2003-09-17 Ben Maurer  <bmaurer@users.sourceforge.net>
152
153         * DefaultContext.cs: implement sum () and translate ().
154
155 2003-09-13 Ben Maurer  <bmaurer@users.sourceforge.net>
156
157         * XPathNavigator.cs: Make methods where you pass in the context,
158         so that we dont have to clone expressions so much.
159
160 2003-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
161
162         * DefaultContext.cs, Expresssion.cs, Parser.jay: Rewrite so that
163         system functions are actually expressions. Will allow for some
164         nice optimizations.
165
166 2003-08-25 Ben Maurer  <bmaurer@users.sourceforge.net>
167
168         * XPathNavigator.cs: "Smart" behavior in Matches. Nice 8x speed
169         improvement in the method (5ms/call -> .7 ms / call) measured by
170         monodoc's rendering of N:System.
171         * Expression.cs: Utility methods to support above.
172
173 2003-08-13 Piers Haken  <piersh@friskit.com>
174         
175         * Iterator.cs:
176                 fix MergedIterator.Clone(), now clones other's iterators
177                 fix DescendantIterator.Clone(), now copies depth
178                 make iterator cloning constructors more type-specific
179
180 2003-08-01 Piers Haken  <piersh@friskit.com>
181
182         * Expression.cs: added NodeNamespaceTest
183         * XPathNavigator.cs: implement Select* with namespaces
184
185 2003-07-31 Ben Maurer  <bmaurer@users.sourceforge.net>
186
187         * Iterator.cs: Allow creation of an EnumeratorIterator with an
188         XmlNamespaceManager.
189         
190 2003-07-31 Piers Haken  <piersh@friskit.com>
191
192         * Parser.jay:
193                 Nested predicates (uses ExprFilter instead)
194                 more type safety
195                 make grammar look more like w3c spec
196         * Expression.cs:
197                 remove ExprStep, ExprPredicates
198                 NodeTest is now a NodeSet
199                 more type-safety
200         * Iterator.cs:
201                 PredicateIterator now only takes a single predicate expression
202                 more type-safety
203         * XPathNavigator.cs:
204                 simplified SelectTest
205         * XPathException.cs:
206                 fixed indenting
207
208 2003-07-30  Duncan Mak  <duncan@ximian.com>
209
210         * XPathException.cs
211         (GetObjectData): 
212         (Message): Added.
213
214 2003-07-29 Piers Haken  <piersh@friskit.com>
215
216         * DefaultContext.cs: 'local-name' returns String, not NodeSet!
217
218 2003-07-29 Piers Haken  <piersh@friskit.com>
219
220         * XPathNavigator.cs:
221         * Expression.cs:
222                 add typesafe Evaluate* methods
223
224 2003-07-29 Piers Haken  <piersh@friskit.com>
225
226         * DefaultContext.cs: fix 'substring-after'
227
228 2003-07-29 Piers Haken  <piersh@friskit.com>
229
230         * Iterator.cs: fix PredicateIterator.CurrentPosition bug (it wasn't incrementing)
231
232 2003-07-29 Ben Maurer  <bmaurer@users.sourceforge.net>
233
234         * Iterator.cs: dont throw exceptions on tostring ()
235         
236 2003-07-28  Piers Haken <piersh@friskit.com>
237
238         * DefaultContext.cs: better handling of null argument lists
239         * XPathNavigator.cs: implement ComparePosition
240
241 2003-07-28  Piers Haken <piersh@friskit.com>
242
243         * Expression.cs: boolean operators: handle comparing .Any better
244
245 2003-07-28  Piers Haken <piersh@friskit.com>
246
247         * DefaultContext.cs: count() should return a double
248         * Expression.cs: better support for handling non-double numbers
249
250 2003-07-28  Piers Haken <piersh@friskit.com>
251
252         * DefaultContext.cs: better function param matching
253
254 2003-07-27  Piers Haken <piersh@friskit.com>
255
256         * Expression.cs:
257         * DefaultContext.cs:
258                 catch FormatExceptions while parsing numbers
259
260 2003-07-27  Piers Haken <piersh@friskit.com>
261
262         * Expression.cs:
263                 fix case sorting order
264                 allow EvaluateNumber to take XPathResultType.Any
265
266 2003-07-27  Piers Haken <piersh@friskit.com>
267
268         * Expression.cs:
269         * Tokenizer.cs:
270                 don't pass null to XmlQualifiedName constructor
271
272 2003-07-27  Piers Haken <piersh@friskit.com>
273
274         * DefaultContext.cs: allow 'concat' to take arbitrary-typed arguments (spec?)
275
276 2003-07-27  Piers Haken <piersh@friskit.com>
277
278         * Expression.cs: allow EvaluateNodeSet to take XPathResultType.Any
279
280 2003-07-26  Piers Haken <piersh@friskit.com>
281
282         * Expression.cs: fix function evaluation with ambigous argument types
283         * XPathNavigator.cs: fix silly null reference bug
284
285 2003-07-26  Piers Haken <piersh@friskit.com>
286
287         * Iterator.cs:
288         * DefaultContext.cs:
289                 ArrayListIterator->EnumeratorIterator
290         * Expression.cs: add sorting support
291
292 2003-07-26  Piers Haken <piersh@friskit.com>
293
294         * Tokenizer.cs:
295         * Parser.jay:
296                 move QName parsing into tokenizer
297         * Expression.cs:
298                 fix evaluating XPathResultType.Any
299                 fix ExprDiv.ToString()
300                 fix NodeTypeTest.ToString() (for namespace axis)
301
302 2003-07-25  Piers Haken <piersh@friskit.com>
303
304         * Expression.cs: return clone of $var evaluation
305
306 2003-07-26  Piers Haken <piersh@friskit.com>
307
308         * Iterator.cs: add setter for NamespaceManager
309         * XPathNavigator.cs: propagate NamespaceManager from context on Evaluate
310         * Expression.cs: fix func/var exception strings
311
312 2003-07-25  Piers Haken <piersh@friskit.com>
313
314         * Expression.cs: implement ExprFilter.Evaluate
315
316 2003-07-25  Piers Haken <piersh@friskit.com>
317
318         * Expression.cs: implement ExprVariable.Evaluate
319
320 2003-07-24  Ben Maurer <bmaurer@users.sourceforge.net>
321         
322         * DefaultContext.cs: implement lang ()
323
324 2003-07-24  Piers Haken <piersh@friskit.com>
325
326         * Parser.jay:
327         * Expression.cs:
328                 allow ExprUNION to take non-nodeset (eg, $var) arguments
329
330 2003-07-24  Piers Haken <piersh@friskit.com>
331
332         * Tokenizer.cs: fix variable references
333         * Parser.jay:
334         * Expression.cs:
335         * XPathNavigator.cs:
336                 use XmlQualifiedName
337
338 2003-06-30  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
339
340         * XPathDocument.cs : removed Driver class and restored authors' name
341           (though it is completely rewrote).
342
343 2003-06-30  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
344
345         * XPathDocument.cs : Replaced existing stub class with real
346           XPathDocument implementation.
347
348 2003-04-28  Piers Haken  <piersh@friskit.com>
349
350         * Parser.jay, Tokenizer.cs: more compliant lexical parsing of ambiguous tokens
351
352 2003-03-07  Piers Haken  <piersh@friskit.com>
353
354         * Tokenizer.cs: allow '.'s in NCNames
355
356 2003-03-07  Piers Haken  <piersh@friskit.com>
357
358         * Exression.cs:
359         * DefaultContext.cs:
360                 fixed function argument resolution
361
362 2003-02-09  Piers Haken  <piersh@friskit.com>
363
364         * XPathNavigator.cs:
365         * Iterator.cs:
366         * Expression.cs: fix namespace handling
367
368 2003-01-04  Piers Haken  <piersh@friskit.com>
369
370         * Parser.*: Remove extraneous "using" that was stopping the build. Permanently thisi time ;-)
371
372 2003-02-02  Piers Haken <piersh@friskit.com>
373
374         * Parser.jay: add token names
375         * Tokenizer.cs: fix NCName tokenization
376
377 2003-01-02  Atsushi Enomoto  <ginga@kit.hi-ho.ne.jp>
378
379         * Tokenizer.cs : Fixed ParseIdentifier to allow digits.
380                 (It should be a temporary fix.)
381
382 2002-09-22  Nick Drochak  <ndrochak@gol.com>
383
384         * Parser.cs: Remove extraneous "using" that was stopping the build.
385
386 2002-09-21  Piers Haken <piersh@friskit.com>
387
388         * XPathException: implementation
389         * Expression.cs:
390         * Iterator.cs:
391         * Parser.jay:
392         * Tokenizer.jay:
393         * XPathNavigator.jay:
394                 use XPathException.
395
396 2002-09-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
397
398         * Parser.cs: commented out non-existent namespace (it compiles fine
399         with mcs because of a bug that is already on bugzilla).
400
401 2002-09-12  Piers Haken <piersh@friskit.com>
402
403         * Tokenizer.cs: fix parsing numbers that start with '.'
404         * DefaultContext.cs: use MS-compatible formatting of doubles
405
406 2002-09-12  Piers Haken <piersh@friskit.com>
407
408         * Iterator.cs: added NullIterator to handle unspecified contexts
409         * XPathNavigator.cs: use NullIterator insted of SelfIterator when context is unspecified.
410         * XPathNodeIterator.cs: change default _count to -1 to prevent recalculations for NullIterators
411
412 2002-09-12  Piers Haken <piersh@friskit.com>
413
414         * Expression.cs, Parser.jay: allow ExprSLASH to take a generic expression as its left argument.
415         * Iterator.cs: fix SlashIterator.Clone() when _iterRight is null.
416         * DefaultContext.cs: fix id() return type.
417
418 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
419
420         * DefaultContext.cs: fixed bug #28840.
421         * Expression.cs: added FIXME.
422
423 2002-08-17  Jason Diamond <jason@injektilo.org>
424
425         * XPathNavigator.cs: Fixed matching on patterns that look like
426         absolute XPath expressions.
427
428 2002-08-17  Jason Diamond <jason@injektilo.org>
429
430         * XPathNavigator.cs: Added naive (but working) implementation of
431          Matches.
432
433 2002-07-31  Piers Haken <piersh@friskit.com>
434
435         * XPathDocument.cs: simple, XmlDocument-based implementation
436
437 2002-07-25  Piers Haken <piersh@friskit.com>
438
439         * DefaultContext.cs: implement XPathFunctionName 'name()' function.
440
441 2002-07-17  Piers Haken <piersh@friskit.com>
442         
443         * DefaultContext.cs: implement 'string-length()', 'normalize-space()'
444         * Parser.jay: remove redundant production
445         * Expression.cs: add switches for debugging under VS.NET
446
447 2002-07-17  Piers Haken <piersh@friskit.com>
448
449         * Expression.cs: implement nodeset/nodeset comparisons (non-optimal)
450
451 2002-07-15  Piers Haken <piersh@friskit.com>
452
453         * Iterator.cs:
454                 - rename UnionIterator to MergedIterator, 
455                 - create new UnionIterator to implment uniqueness for '|' operator
456                 - fix position bug in ArrayListIterator.Clone()
457         * Expression.cs: use new UnionIterator constructor syntax
458
459 2002-07-12  Piers Haken <piersh@friskit.com>
460
461         * Iterator.cs: PredicateIterator: handle numeric predicates
462         * Parser.jay: add some debugging support: yyparseDebug
463         * Tokenizer.cs: cleanup, include '-' chars in identifier tokens
464
465 2002-06-29  Piers Haken <piersh@friskit.com>
466
467         * Expression.cs:
468                 - remove dead code
469                 - NodeTest uses XPathResultType instead of internal NodeTestTypes enum
470                 - remove NodeTestTypes enum
471                 - remove NodeTestTypeAny (functionality provided by base now)
472                 - fix ExprStep to handle wildcard QNames
473         * Parser.jay:
474                 - moved to Mono.Xml.XPath namespace
475                 - use XPathResultType
476                 - handle wildcard QNames
477                 
478         * Tokenizer.cs: moved to Mono.Xml.XPath namespace
479         
480         * XPathNavigator.cs: implement
481                 - IsDescendant
482                 - SelectAncestors
483                 - SelectDescendants
484                 - SelectChildren
485                 
486         * XPathResultType.cs: fix enum values
487         
488 2002-06-24  Jason Diamond  <jason@injektilo.org>
489
490         * XPathScanner.cs: Removed.
491
492 2002-06-24  Dick Porter <dick@ximian.com>
493
494         * XmlCaseOrder.cs: Fix namespace
495
496 2002-06-23  Piers Haken <piersh@friskit.com>
497
498         * DefaultContext.cs: implemented XPathFUnctionId
499         * Iterator.cs: new ArrayListIterator for id() support
500
501 2002-06-23  Piers Haken <piersh@friskit.com>
502
503         * XPathNavigator.cs: implement:
504                 - Compile
505                 - Evaluate
506                 - Clone
507                 - Select
508                 - ToString
509                 - some forwarding methods
510
511         * XPathNodeIterator: implement caching Count
512
513         * Tokenizer.cs: new XPath tokenizer
514         * Parser.jay: new XPath grammar
515         * Parser.cs: new precompiled XPath grammar
516         * Expression.cs: new XPath expression objects
517         * Iterator.cs: new XPath result/context objects
518         * DefaultContext.cs: new XPath function binding context
519
520 2002-05-08  Tim Coleman <tim@timcoleman.com>
521         * XPathDocument.cs:
522         * XPathException.cs: New stub files added.
523
524 2002-04-12  Duncan Mak  <duncan@ximian.com>
525
526         * XmlCaseOrder.cs: Moved to here from System.Xml.
527
528 2002-03-26  Jason Diamond  <jason@injektilo.org>
529
530         * XPathScanner.cs: Now handles name tests with wildacards. Abbreviated 
531         steps. Both absolution and relative abbreviated location paths.
532
533 2002-03-25  Jason Diamond  <jason@injektilo.org>
534
535         * XPathScanner.cs: Added new file. This class is supposed to be internal
536         but that would make it impossible to test.
537
538 2002-03-08  Duncan Mak  <duncan@ximian.com>
539
540         * XPathNamespaceScope.cs:
541         * XPathNodeType.cs:
542         * XPathResultType.cs:
543         * XmlDataType.cs:
544         * XmlSortOrder.cs: Used EnumCheck and realigned elements to be compatible with MS
545         implementation. XPathResultType is interesting as EnumCheck does
546         not show the Navigator element, but shows the String element twice.
547
548 2002-03-08  Jason Diamond  <jason@injektilo.org>
549
550         * XmlDataType.cs, XmlSortOrder.cs, XPathNodeType.cs: Added files.
551
552 2002-03-06  Jason Diamond  <jason@injektilo.org>
553
554         * ChangeLog: Added to this directory.
555
556         * XPathExpression.cs, XPathNamespaceScope.cs, XPathNodeIterator.cs,
557         XPathResultType.cs: New files.
558
559         * XPathNavigator.cs: Stubbed out all properties and methods.