merge from trunk revisions 58933, 58935, 58936
[mono.git] / mcs / class / System.XML / Mono.Xml.Xsl / ChangeLog
1 2005-11-23  Vladimir Krasnov  <vladimirk@mainsoft.com>
2
3         * XslKey.cs: fixed KeyIndexTable.Evaluate method, changed
4         XPathNavigator given to GetNodesByValue()
5
6 2005-11-17  Atsushi Enomoto  <atsushi@ximian.com>
7
8         * XslCompiledContext.cs : since XsltContextInfo is struct, having
9           an array of this type and setting fields of each struct didn't
10           make sense. It thus blocked expected PreserveWhitespace behavior.
11
12 2005-10-24  Atsushi Enomoto  <atsushi@ximian.com>
13
14         * Compiler.cs : (FromString(s, hashtable)) pull default namespace
15           from the table for LRE (don't consider it as ""; spec. 7.1.2)
16           Fixed bug #76530.
17
18 2005-09-16  Atsushi Enomoto  <atsushi@ximian.com>
19
20         * ScriptCompilerInfo.cs : Compile correct replacement result.
21           Fixed bug #76116.
22
23 2005-09-10  Atsushi Enomoto  <atsushi@ximian.com>
24
25         * Compiler.cs : (Compile) check children only when it is the document
26           element. Fixed bug #76046.
27
28 2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
29
30         * ScriptCompilerInfo.cs : It should not be "#line" when the source is
31           not C#. It should fix bug #75789.
32
33 2005-08-05  Atsushi Enomoto  <atsushi@ximian.com>
34
35         * XslKey.cs : Fixed match pattern in xsl:key to check attribute nodes.
36           To minimize attribute iteration, use Pattern.EvaluatedNodeType.
37           Fixed bug #75709.
38
39 2005-07-29  Atsushi Enomoto  <atsushi@ximian.com>
40
41         * XslFunctions.cs : XslTransform recovers from errors on document
42           resolution. Fixed bug #75663.
43
44 2005-06-06  Atsushi Enomoto  <atsushi@ximian.com>
45
46         * HtmlEmitter.cs : Boolean attribute values should be omitted, but
47           only for related elements.
48
49 2005-05-07  Atsushi Enomoto  <atsushi@ximian.com>
50
51         * MSXslScriptManager.cs : it should ignore compiler warnings. This
52           fixes bug #74859.
53
54 2005-04-07  Andrew Skiba  <andrews@mainsoft.com>
55
56         * XslDecimalFormat.jvm.cs : added
57  
58 2005-03-31  Atsushi Enomoto  <atsushi@ximian.com>
59
60         * MSXslScriptManager.cs : added TARGET_JVM switch (that does not
61           support CodeDom). Use Guid.ToString("N").
62
63 2005-03-31  Atsushi Enomoto  <atsushi@ximian.com>
64
65         * Compiler.cs : removed extraneous using_directive.
66
67 2005-03-25  Atsushi Enomoto  <atsushi@ximian.com>
68
69         * XslKey.cs : the iterator does not require sorting (already sorted).
70           Removed unused code.
71
72 2005-03-23  Atsushi Enomoto  <atsushi@ximian.com>
73
74         * XslStylesheet.cs :
75           Variables are stored per stylesheet and added to compiler after
76           all of the contents are processed (handle import precedence).
77           Imports are now processed in prior to other contents (incorrect
78           imports are now rejected). After imports, process includes to 
79           process nested imports. In-process included stylesheets are 
80           temporarily stored in including stylesheet.
81           Handle keys like variables are handled.
82           Added Compile() that is splitted from .ctor().
83         * Compiler.cs :
84           Store keys in compiler and compiled stylesheet.
85           Duplicate variables in imports are now overriden as expected.
86         * XsltCompiledContext.cs : use CompiledStylesheet.ResolveKey().
87
88 2005-03-22  Atsushi Enomoto  <atsushi@ximian.com>
89
90         * XslTransformProcessor.cs : now it looks safe to remove SetContext()
91           from each EvaluateXXX() methods.
92         * MsxslScriptManager.cs : not to leave reference to stylesheet
93           navigator, pass current node to Compile().
94         * XslCompiledContext.cs : Added GetNavCache() that returns reusable
95           navigator cache for each pattern, to avoid Clone() and not to leave
96           reference to already-done instance navigator.
97
98 2005-03-22  Atsushi Enomoto  <atsushi@ximian.com>
99
100         * Compiler.cs : Now it holds XPath parser and XSLT pattern parser.
101         * XslKey.cs : Use XSLT pattern parser for match.
102           UsePattern is now "Use" (it is not a pattern). 
103           Reimplemented Evaluate() to make full use of index table.
104           Added Matches() to handle shorter match evaluation. For const value
105           for key (e.g. key patterns), it could avoid Evaluate().
106         * XsltCompiledContext.cs : Added MatchesKey() that just delegates to
107           new KeyIndexTable.Matches().
108         * XslFunctions.cs : Added PatternMatches() that just delegates to new
109           XsltCompiledContext.MatchesKey().
110
111 2005-03-22  Atsushi Enomoto  <atsushi@ximian.com>
112
113         * GenericOutputter.cs : commented out warned fields.
114
115 2005-03-15  Atsushi Enomoto  <atsushi@ximian.com>
116
117         * XslKey.cs : removed last ListIterator.ctor() argument.
118           Reverted the last commit that changed internal key index change 
119           from ArrayList to Hashtable. Avoid clone in CollectIndex().
120           Sort results in Evaluate() before passing list to ListIterator.
121         * XslFunctions.cs : removed last ListIterator.ctor() argument.
122
123 2005-03-14  Atsushi Enomoto  <atsushi@ximian.com>
124
125         * XslKey.cs,
126           XsltCompiledContext.cs,
127           XslFunctions.cs,
128           XslTransformProcessor.cs : Now dynamic context key index table is 
129           separate from XslKey static context. Added KeyIndexTable class and
130           store it into XsltCompiledContext with hash name-table mapping.
131           Cache map from statically-named key to index table.
132           Use Hashtable for internal key cache instead of ArrayList.
133
134 2005-03-14  Atsushi Enomoto  <atsushi@ximian.com>
135
136         * XslKey.cs : fixed node iteration on collecting key indices which
137           could have resulted in an infinite loop.
138
139 2005-03-14  Atsushi Enomoto  <atsushi@ximian.com>
140
141         * XslDecimalFormat.cs : in some cases it does not throw format
142           exception.
143
144 2005-03-11  Atsushi Enomoto  <atsushi@ximian.com>
145
146         * XsltCompiledContext.cs,
147           XslStylesheet.cs : Fixed significant performance loss on whitespace
148           handling.
149
150 2005-03-11  Atsushi Enomoto  <atsushi@ximian.com>
151
152         * XslKey.cs : removed unused NeedAbsoluteMatching.
153         * XslFunctions.cs : Added Peer (for peer & subtree optimization).
154           Added some missing ToString() overrides.
155
156 2005-03-09  Atsushi Enomoto  <atsushi@ximian.com>
157
158         * XslStylesheet.cs, XslCompiledContext.cs : Fixed PreserveWhitespace()
159           to work fine with xsl:*-space attributes as expected.
160         * XslTransformProcessor.cs : PreserveWhitespace() in this file is 
161           actually nothing. It should not use XsltContext.PreserveWhitespace()
162           because this method is used to control output, while the referenced
163           method is used to control source document.
164
165 2005-03-09  Atsushi Enomoto  <atsushi@ximian.com>
166
167         * XslTemplate.cs : First non-element content were incorrectly ignored.
168
169 2005-03-09  Atsushi Enomoto  <atsushi@ximian.com>
170
171         * XslFunctions.cs, Compiler.cs : Eliminated XPathNavigatorNsm class
172           to reduce references to stylesheet XPathNavigator. To accomplish it,
173           IStaticXsltContext does not declare GetNsm() anymore. All xslt
174           function types now directly hold IStaticXsltContext.
175         * XslStylesheet.cs : removed "Compiler c" field.
176           Removed unused properties.
177
178 2005-03-08  Atsushi Enomoto  <atsushi@ximian.com>
179
180         * GenericOutputter.cs : When WriteStartElement() requires to add
181           new namespace declaration, _currentNamespaceDecls needs to be set.
182
183 2005-03-08  Atsushi Enomoto  <atsushi@ximian.com>
184
185         * GenericOutputter.cs : for duplicate attribute in an element, no need
186           to keep previous prefix.
187
188 2005-03-08  Atsushi Enomoto  <atsushi@ximian.com>
189
190         * GenericOutputter.cs : Prefix "xml" is only allowed to the fixed XML
191           namespace. Rewrite prefix only when there is non-empty namespace.
192
193 2005-03-07  Atsushi Enomoto  <atsushi@ximian.com>
194
195         * XslStylesheet.cs : Now namespace aliases are collected in prior to
196           all other toplevel elements. Removed unused code.
197
198 2005-03-07  Atsushi Enomoto  <atsushi@ximian.com>
199
200         * GenericOutputter.cs : compute attribute prefix only when actual
201           emission. Fixed some cases that namespace output was missing.
202
203 2005-03-07  Atsushi Enomoto  <atsushi@ximian.com>
204
205         * GenericOutputter.cs : no need to use two collections to store
206           pending attributes. Just use ordered ListDictionary.
207           newNamespace.Add(int) causes extraneous boxing.
208
209 2005-03-07  Atsushi Enomoto  <atsushi@ximian.com>
210
211         * XslTransformProcessor.cs : renamed TryElementNamespacesOutput() to
212           OutputLiteralNamespaceUriNodes() so that everyone can understand
213           what it means and when it should be invoked.
214
215 2005-03-04  Atsushi Enomoto  <atsushi@ximian.com>
216
217         * Compiler.cs : added another CompileTemplateContent() which is
218           requred in xsl:for-each. Commented out unused method.
219
220 2005-03-03  Atsushi Enomoto  <atsushi@ximian.com>
221
222         * XslStylesheet.cs, XslTransformProcessor.cs : exclude-element-prefix
223           in stylesheet should be considered in TryElementNamespacesOutput().
224           ParseQNameListAttribute() is not properly working for filling
225           namespaces.
226
227 2005-03-02  Atsushi Enomoto  <atsushi@ximian.com>
228
229         * XslStylesheet.cs : included stylesheet could be literal result 
230           element as stylesheet (see the spec 2.6.1).
231
232 2005-03-02  Atsushi Enomoto  <atsushi@ximian.com>
233
234         * GenericOutputter.cs : On WriteStartElement(), prefix should be an
235           empty string when nsURI is empty.
236         * HtmlEmitter.cs : non-HTML elements in default namespace are treated
237           unlike xml but like span, as written in the spec 16.2.
238
239 2005-03-02  Atsushi Enomoto  <atsushi@ximian.com>
240
241         * XslCompiledContext.cs, XslTransformProcessor.cs :
242           According to errata E25, those namespaces 1) that has the same
243           name as current element's prefix, or an empty name when current
244           element's namespace URI is empty, are not written to output.
245           So added current element information to XPathContext and added
246           prefix parameter to PushElementState(), added xsl:copy check to
247           TryElementNamespacesOutput().
248           http://www.w3.org/1999/11/REC-xslt-19991116-errata/
249
250 2005-02-26  Atsushi Enomoto <atsushi@ximian.com>
251
252         * XslFunctions.cs : unparsed-entity-uri() should return SYSTEM ID
253           instead of BaseURI.
254
255 2005-02-25  Atsushi Enomoto <atsushi@ximian.com>
256
257         * XslTemplate.cs : According to the spec 5.7, it is an error for 
258           xsl:template to have 'mode' without 'match'.
259
260 2005-02-24  Atsushi Enomoto <atsushi@ximian.com>
261
262         * Compiler.cs : added ns lookup with nsDecls Hashtable.
263
264 2005-02-24  Atsushi Enomoto <atsushi@ximian.com>
265
266         * XslStylesheet.cs : It should consider "#default" in namespace-alias.
267
268 2005-02-23  Atsushi Enomoto <atsushi@ximian.com>
269
270         * GenericOutputter.cs : It should not attempt to write prefix "xml" and
271           namespace "http://www.w3.org/XML/1998/namespace".
272
273 2005-02-21  Atsushi Enomoto <atsushi@ximian.com>
274
275         * XmlWriterEmitter.cs : PI nodes are normalized as to not contain "?>".
276         * HtmlEmitter.cs : CDATA nodes are written just as text.
277         * GenericOutputter.cs : custom format are treated just as XML output.
278
279 2005-02-17  Atsushi Enomoto <atsushi@ximian.com>
280
281         * Outputter.cs,
282           TextOutputter.cs,
283           GenericOutputter.cs : removed WriteStartDocument(), WriteEndDocument()
284           and WriteState. Writing XML declaration is done inside
285           DetermineOutputMethod().
286
287 2005-02-17  Atsushi Enomoto <atsushi@ximian.com>
288
289         * Compiler.cs : reverted previous fix, since it should be done
290           in XslTransformProcessor with root stylesheet.
291         * XslTransformProcessor.cs : In TryElementNamespacesOutput(),
292           don't output alias namespaces. And now consider null exclusions.
293
294 2005-02-17  Atsushi Enomoto <atsushi@ximian.com>
295
296         * Compiler.cs : don't return alias namespaces in GetNamespacesToCopy().
297
298 2005-02-16  Atsushi Enomoto <atsushi@ximian.com>
299
300         * Compiler.cs : GetNamespacesToCopy() should also find for non-local
301           namespace nodes. Patch by Andrew Skiba with some fixes.
302         * XslTransformProcessor.cs : Patch by Andrew Skiba.
303           TryStylesheetNamespaceOutput() is now TryElementNamespacesOutput()
304           as to handle all namespace nodes to copy in stylesheet nodes.
305           Global parameterss are evaluated before global variables. 
306         * XmlOutputter.cs : removed unused code.
307
308         Pending items:
309
310         * Actually variables and params should check reference recursion.
311             This patch incompletely fixes the problem.
312         * Those operations that considers excluded-result-prefixes must
313           also check those attributes of its ancestors.
314
315 2005-02-10  Atsushi Enomoto <atsushi@ximian.com>
316
317         * XmlWriterEmitter.cs : String.Replace() was insufficient for
318           sequential candidates for replacement. Patch by Andrew Skiba.
319
320 2005-02-10  Atsushi Enomoto <atsushi@ximian.com>
321
322         * GenericOutputter.cs : don't output extraneous xml declaration.
323           fix by Andrew Skiba.
324
325 2005-02-09  Atsushi Enomoto <atsushi@ximian.com>
326
327         * XslStylesheet.cs : MS implementation had chosen to recover from 
328           the error, in the way specified in the spec 7.7.1. Patch by Andrew
329           Skiba.
330
331 2005-02-08  Atsushi Enomoto <atsushi@ximian.com>
332
333         * XslTemplate.cs : if input is literal result element, it could result
334           in ArgumentException. Patch by Andrew Skiba.
335
336 2005-02-08  Atsushi Enomoto <atsushi@ximian.com>
337
338         * XslFunctions.cs : Fixed unparsed-entity-uri() that might result in
339           NullReferenceException. Patch by Andrew Skiba.
340
341 2005-02-08  Atsushi Enomoto <atsushi@ximian.com>
342
343         * XslOutput.cs : MS.NET recovers from unknown encoding according to
344           XSLT spec 16.1. Patch by Andrew Skiba.
345
346 2005-02-08  Atsushi Enomoto <atsushi@ximian.com>
347
348         * HtmlEmitter.cs : patch by Andrew Skiba.
349           Remove extra element prefix output. simplify attribute prefix output.
350           Attribute output might have resulted in invalid element stack peek.
351           Output specified media type if any.
352
353 2005-02-08  Atsushi Enomoto <atsushi@ximian.com>
354
355         * Compiler.cs : Patch by Andrew Skiba.
356           wrap internal exception with XsltCompileException.
357           Raise an error for not-found document URI.
358           QName might contain sequential whitespaces and thus could be empty.
359
360 2005-02-08  Atsushi Enomoto <atsushi@ximian.com>
361
362         * XslAttributeSet.cs : just ignore other kind of nodes than element
363           in its content. Fix by Andrew Skiba.
364
365 2005-02-08  Atsushi Enomoto <atsushi@ximian.com>
366
367         * XslOutput.cs : for html and text output mode, just set internal
368           omitXmlDeclaration status true. Patch by Andrew Skiba.
369
370 2005-02-08  Atsushi Enomoto <atsushi@ximian.com>
371
372         * XslFunctions.cs : fixed line ending mixture.
373
374 2005-02-03  Atsushi Enomoto <atsushi@ximian.com>
375
376         * ScriptCompilerInfo.cs : XsltCompileException->XsltException, just
377           to make test pass.
378
379 2004-12-22  Atsushi Enomoto <atsushi@ximian.com>
380
381         * XslFunction.cs,
382           Compiler.cs : XmlResolver.ResolveUri() may return null.
383
384 2004-12-01  Atsushi Enomoto  <atsushi@ximian.com>
385
386         * Compiler.cs : XPathNavigatorNsm needed more love. Clone() does not
387           make sense here.
388
389 2004-12-01  Atsushi Enomoto  <atsushi@ximian.com>
390
391         * Compiler.cs : don't create XPathNavigatorNsm for every GetNsm() call.
392
393 2004-11-26  Atsushi Enomoto  <atsushi@ximian.com>
394
395         * XslKey.cs, XslStylesheet.cs, MSXslScriptManager.cs :
396           warning elimination.
397
398 2004-11-24  Atsushi Enomoto  <atsushi@ximian.com>
399
400         * XslStylesheet.cs : removed unused fields.
401         * XslOutput.cs : removed members for XSLT 2.0 (won't be implemented in
402           this class).
403
404 2004-11-08  Atsushi Enomoto  <atsushi@ximian.com>
405
406         * Compiler.cs, XslTransformProcessor.cs :
407           when creating XmlTextReader, reuse XmlNameTable.
408
409 2004-11-05  Atsushi Enomoto  <atsushi@ximian.com>
410
411         * Compiler.cs : Changes that reflects CompiledExpression changes.
412
413 2004-10-04  Atsushi Enomoto  <atsushi@ximian.com>
414
415         * HtmlEmitter.cs : TH tag is not regarded as HTML tag.
416           This fixes bug #67390.
417
418 Thu Sep 9 07:09:11 PDT 2004 Paolo Molaro <lupus@ximian.com>
419
420         * ScriptCompilerInfo.cs: avoid using a .cctor and fix precomp.
421
422 2004-06-18  Atsushi Enomoto  <atsushi@ximian.com>
423
424         * Debug.cs, HtmlEmitter.cs, MSXslScriptManager.cs,
425           ScriptCompilerInfo.cs, XslFunctions.cs, XslTemplate.cs
426           : Globalization. Removed unused code.
427
428 2004-06-14  Atsushi Enomoto  <atsushi@ximian.com>
429
430         * XslKey.cs : Key-value search in absolute path search was 
431           insufficient.
432
433 2004-06-14  Atsushi Enomoto  <atsushi@ximian.com>
434
435         * HtmlEmitter.cs : Correct URL escape implementation.
436
437 2004-06-06  Atsushi Enomoto  <atsushi@ximian.com>
438
439         * XslTransformProcessor.cs : On document() function, close the 
440           XmlTextReader opened from uri string.
441
442 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
443
444         * Compiler.cs,
445           GenericOutputter.cs : XmlNamespaceManager.LookupPrefix() allows only
446           atomized names. Fixed XPathNavigatorNsm.LookupNamespace() that 
447           should override another overload.
448
449 2004-05-25  Lluis Sanchez Gual  <lluis@ximian.com>
450
451         * ScriptCompilerInfo.cs: the name used to load the Microsoft.JScript
452           assembly should not include the .dll extension.
453
454 2004-05-20  Atsushi Enomoto  <atsushi@ximian.com>
455
456         * Compiler.cs :
457           - CompilePattern() now throws XsltCompileException for invalid
458             pattern, and add error location support.
459           - In Compiler.TryGetFunction(), compare namespace URI, not prefix.
460             Now it returns MSXslNodeSet instance (for msxsl:node-set).
461         * Debug.cs : don't throw System.Exception.
462         * XslFunctions.cs : Added MSXslNodeSet class.
463         * XslTemplate.cs : reflected CompilePattern() change.
464         * XslTransformProcessor.cs : don't throw System.Exception.
465         * XsltCompiledContext.cs : don't throw System.Exception.
466
467 2004-05-12  Atsushi Enomoto  <atsushi@ximian.com>
468
469         * XmlOutputter.cs,
470           XslOutput.cs,
471           XslStylesheet.cs : made classes/enums internal.
472
473 2004-04-24  Atsushi Enomoto  <atsushi@ximian.com>
474
475         * Attribute.cs, Compiler.cs, Debug.cs, Emitter.cs, 
476           MSXslScriptCompiler.cs, Outputter.cs, XslAttributeSet.cs,
477           XslDecimalFormat.cs, XslKey.cs, XslStylesheet.cs, XslTemplate.cs,
478           XslTransformProcessor.cs : Make extra classes internal.
479
480         * XslKey.cs : It should require sorting.
481         * Debug.cs : Just avoid debug output. Only who want to output should
482           turn it on.
483
484 2004-04-24  Atsushi Enomoto  <atsushi@ximian.com>
485
486         * GenericOutputter.cs : Culture-independency fix. 
487           Replaced StringCollection to ArrayList.
488         * XslOutput.cs : Culture-independency fix.
489
490 2004-04-12  Atsushi Enomoto  <atsushi@ximian.com>
491
492         * Compiler.cs : When BaseURI is an empty string, it should not try to
493           create Uri instance. This will fix bug #56832, but not sure.
494         * XslFunctions.cs : for XsltDocument.Resolve(), did the same.
495         * HtmlEmitter.cs : Environment.NewLine was incorrectly used (it 
496           should be the TextReader's NewLine).
497         * MSXslScriptManager.cs : Should raise an error when the prefix which
498           was specified by "implements-prefix" was not found.
499
500 2004-03-27  Atsushi Enomoto  <atsushi@ximian.com>
501
502         * ScriptCompilerInfo.cs : #line directive now holds dummy filename
503           when BaseURI for msxsl:script node is not available. This fixes
504           bug #56070.
505           Don't output line number in the error message, when it is 0.
506
507 2004-03-27  Atsushi Enomoto  <atsushi@ximian.com>
508
509         * Compiler.cs : Supply NameTable to base ctor() of XPathNavigatorNsm.
510
511 2004-03-22 Atsushi Enomoto <atsushi@ximian.com>
512
513         * Compiler.cs, 
514           XslAttributeSet.cs,
515           XslFunctions,
516           XslTransformProcessor.cs :
517           Throw specific types of exceptions instead of Exception.
518         * XslFunctions.cs, XsltCompiledContext.cs :
519           added node argument for XsltExtensionFunction ctor() etc.
520
521 2004-03-22 Atsushi Enomoto <atsushi@ximian.com>
522
523         * ScriptCompilerInfo.cs : Modified compilation processing. Now it uses
524           CodeDom. Compilation error should be caught. This fixes bug #55875.
525
526 2004-03-13 Atsushi Enomoto <atsushi@ximian.com>
527
528         * XslStylesheet.cs : "version" attribute is also required for embedded
529           stylesheet.
530
531 2004-03-13 Atsushi Enomoto <atsushi@ximian.com>
532
533         * Compiler.cs,
534           XslStylesheet.cs : Reject xsl element other than stylesheet and
535           transform. Check mandatory version attribute (only for existence).
536
537 2004-03-07 Atsushi Enomoto <atsushi@ximian.com>
538
539         * MSXslScriptManager.cs : if extension namespace was not found in
540           the script, just return null. Patch by Joshua Tauberer.
541
542 2004-03-01 Atsushi Enomoto <atsushi@ximian.com>
543
544         * XslLiteralElement.cs : quick fix for ArgumentNullException which
545           was because of the combination of non-namespaced instances and
546           exclude-result-prefixes.
547
548 2004-02-17 Atsushi Enomoto <atsushi@ximian.com>
549
550         * XsltCompiledContext.cs : Extracted XslFunctions and changed namespace
551           from Mono.Xml.Xsl.Functions to Mono.Xml.Xsl.
552         * XslFunctions.cs : hereby Added.
553         * Compiler.cs : Removed deleted usingdecl.
554
555 2004-02-16 Atsushi Enomoto <atsushi@ximian.com>
556
557         * XslTransformProcessor.cs : Bugfix. Stored keys should be cleared.
558         * XslKey.cs : Added ExprKeyContainer expression type, which is 
559           designed to be matched at any level.
560         * Compiler.cs : support for ExprKeyContainer.
561
562 2004-02-16 Atsushi Enomoto <atsushi@ximian.com>
563
564         * XslKey.cs : Now it collects key and matching nodes at the first
565           evaluation time. After that, we can just get them from the table.
566         * Compiler.cs : Added KeyCompilationMode. It is used to prevent
567           prohibited key() usage in "match" and "use" attributes in xsl:key.
568           Modified accessibility of some classes.
569         * GenericOutputter.cs,
570           HtmlEmitter.cs,
571           TextEmitter.cs,
572           TextOutputter.cs,
573           XmlWriterEmitter.cs : made classes internal.
574         * XslOutput.cs : support line info for exception.
575         * XsltCompiledContext.cs : implemented CompareDocument() - so easily.
576
577 2004-02-13 Atsushi Enomoto <atsushi@ximian.com>
578
579         * XsltCompiledContext.cs : fixed the length of context info array.
580
581 2004-02-10 Atsushi Enomoto <atsushi@ximian.com>
582
583         * XsltCompiledContext.cs :
584           replaced EnumeratorIterator with ListIterator
585
586 2004-02-08 Atsushi Enomoto <atsushi@ximian.com>
587
588         * GenericOutputter.cs,
589           XslAttributeSet.cs,
590           XslStylesheet.cs,
591           XslTemplate.cs : tiny foreach elimination.
592
593 2004-01-16 Atsushi Enomoto <atsushi@ximian.com>
594
595         * XslOutput.cs : Reverted. default encoding should be utf-8.
596
597 2004-01-14  Jackson Harper <jackson@ximian.com>
598
599         * GenericOutputter.cs: Add constructors that do not take an
600         encoding to fix build.
601         
602 2004-01-14 Atsushi Enomoto <atsushi@ximian.com>
603
604         * XmlWriterEmitter.cs : It now uses WriteProcessingInstruction() to
605           write XML declaration. It means that output supports non document
606           entity. This fixes bug #52729.
607         * Emitter.cs, TextEmitter.cs, HtmlEmitter.cs, XmlWriterEmitter.cs :
608           modified WriteStartDocument() signature to receive Encoding.
609         * GenericOutputter.cs : 
610           - Added .ctor() which receives Encoding. (It is used for TextWriter 
611             output to get actual encoding.)
612           - Added .ctor() to take an boolean argument which indicates it is
613             variable content or not. (When variable, it does not call 
614             WriteStartDocument().)
615         * XslKey.cs,
616           XsltCompiledContext.cs : comment out WriteLine().
617         * XslOutput.cs : set default encoding utf-16.
618
619 2004-01-08  Nick Drochak <ndrochak@ieee.org>
620
621         * XsltCompiledContext.cs: Remove unused variable and unreachable code.
622
623 2003-12-26 Atsushi Enomoto <atsushi@ximian.com>
624
625         * XslDecimalFormat.cs : implemented format-number() other than number
626           grouping.
627         * XsltCompiledContext.cs : Modified XsltFormatNumber.Evaluate() to
628           catch ArgumentException which will be thrown by formatting process.
629
630 2003-12-23 Atsushi Enomoto <atsushi@ximian.com>
631
632         * ScriptCompilerInfo.cs : Use "mjs" as JScript compiler.
633
634 2003-12-20 Ben Maurer  <bmaurer@users.sourceforge.net>
635
636         * XsltCompiledContext.cs: Remove workaround now that monodoc
637         is fixed.
638
639 2003-12-20 Atsushi Enomoto <atsushi@ximian.com>
640
641         * XslStylesheet.cs : considering xsl:imports, we can't handle namespace
642           aliases at compilation time, so evaluate at the first run-time.
643
644 2003-12-18 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
645
646         * GenericOutputter.cs : support for runtime-determined output type.
647         * HtmlEmitter.cs : Fixed invalid doctype output.
648           Fixed incorrect double attribute output on non-HTML elements.
649           Improved indentation. Fixed "selected" attribute output.
650           Don't have to convert "'" to "&apos;".
651         * XmlWriterEmitter.cs : Now don't output incorrect doctype.
652           Escapes CDATA section text "]]>" to "...]]]]><![CDATA[>..." .
653         * XslStylesheet.cs, XsltCompiledContext.cs :
654           space resolution consideration for import and wildcard.
655
656 2003-12-18 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
657
658         * Compiler.cs, XslTransformProcessor.cs :
659           Use XmlValidatingReader to support id() for external stylesheets.
660         * XslKey.cs, XsltCompiledContext.cs :
661           to evaluate MatchPattern and UsePattern, SetContext() is required.
662         * XslTemplate.cs : Forgot to commit. Change is below(12/16).
663
664 2003-12-16 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
665
666         * Emitter.cs, HtmlEmitter.cs, XmlWriterEmitter.cs :
667           Added WriteWhitespace().
668         * GenericOutputter.cs, XslTemplate.cs : Call above.
669         * XslTransformProcessor.cs : Changed NodesetStack to ArrayList since
670           CurrentNode in for-each context have to be pulled at evaluation.
671
672 2003-12-16 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
673
674         * XsltCompiledContext.cs : Temporarily allow incorrectly resolved
675           function for bugzilla #52144. It should be reverted soon.
676
677 2003-12-12 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
678
679         * ScriptCompilerInfo.cs : SecurityManager.ResolvePolicy() was not 
680           implemented yet.
681         * MSMslScriptManager.cs : modified generated assembly class to be unique
682           through running AppDomain.
683         * XsltCompiledContext.cs : XsltExtensionFunction.Invoke() has to cast
684           arguments to actual argument types. Bugzilla #51450 should be fixed.
685
686 2003-12-12 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
687
688         * HtmlEmitter.cs : Fixed incorrect character entity output.
689
690 2003-12-11 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
691
692         * Added ScriptCompilerInfo.cs.
693         * MSXslScriptManager.cs : Fixed *true* author's name.
694           Implemented basic msxsl:script support.
695         * Compiler.cs : Added Evidence member.
696
697 2003-12-07 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
698
699         * Compiler.cs : Check stylesheet recursion. Check decimal-format name.
700         * GenericOutputter.cs, Outputter.cs, TextOutputter.cs :
701           Added WriteWhitespace() to assure not writing whitespaces as cdata.
702         * XslAttributeSet.cs : Error check if attribute-set contains other than
703           xsl:attribute.  Error should be XsltException.
704         * XslDecimalFormat.cs : Complete equality check.  Allow just one
705           character value for some attributes.
706         * XslStylesheet.cs : Made whitespace control setting overridable.
707           Added Version property (for the future compatibility mode).
708           Check unrecongnized top level element.
709         * XslTemplate.cs : Check priority as a number.
710         * XslTransformProcessor.cs : PushCDataState is now PushElementState, 
711           for xsl:preserve-space and xsl:strip-space support.
712         * XsltCompiledContext.cs : Implemented PreserveWhitespace() (far from
713           incomplete), PushScope and Pop
714
715 2003-12-03 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
716
717         * HtmlEmitter.cs : CloseStartElement is needed almost everywhere.
718
719 2003-12-02 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
720
721         * Compiler.cs : In FromListString(), it should use default ns,
722           not unqualified one.
723         * GenericOutputter.cs : CheckState() - attribute's Prefix should take
724           precedence.  Doctype should be written even if SYSTEM id is absent.
725           Fixed possible multiple xmlns output.
726         * HtmlEmitter.cs :
727           - Encoding output using META element.
728           - Doctype name is fixed (html).
729           - Double quotation on PUBLIC and SYSTEM missing.
730           - Fixed incorrect tag name check for IMG.
731           - '>' should not be escaped.
732         * XmlWriterEmitter.cs :
733           Added newline before doctype.  In WriteComment(), "--" and tail
734           '-' are not allowed (it escapes, while XmlWriter simply rejects).
735         * XslTransformProcessor.cs : cdata-section-elements should enclose
736           direct child tests only.   Added PreserveWhitespace() (incomplete).
737         * XsltCompiledContext.cs : Implemented PreserveWhitespace() (incomplete).
738
739 2003-11-28 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
740
741         * IdPattern.cs : This should work against multiple ids.
742
743 2003-11-27 Ben Maurer  <bmaurer@users.sourceforge.net>
744
745         * Compiler.cs
746         * MSXslScriptManager.cs
747         * XslStylesheet.cs
748         * XslTransformProcessor.cs
749         * XsltCompiledContext.cs: Some work on msxsl script.
750
751 2003-11-24 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
752
753         (in general: cdata-section-elements support, correct document() 
754         base uri handling, and so on)
755         * Compiler.cs : Use XmlSpace.Preserve to parse included stylesheet.
756           And move to document element.  Added XslNameUtil.FromListString().
757         * Emitter.cs, HtmlEmitter.cs, TextEmitter.cs XmlWriterEmitter.cs :
758           Added WriteCDataSection().
759         * Outputter.cs, GenericOutputter.cs, TextOutputter.cs :
760           Added InsideCDataSection.
761         * GenericOutputter.cs :
762           In .ctor(), WriteState should be succeeded from output XmlWriter.
763           WriteNamespaceDecl() now drops declaration identical to existing one.
764           Removed obsolete htmlEmulation.
765         * XslOutput.cs : Added CDataSectionElements support.
766         * XslStylesheet.cs : Added BaseUri, StyleDocument and PrefixInEffect().
767         * XslTransformProcessor.cs :
768           Added Output and CurrentOutputUri. TryStylesheetNamespaceOutput()
769           now considers xsl:exclude-element-prefixes on literal element.
770           Added PushCDataState() and PopCDataState().
771         * XsltCompiledContext.cs : When base uri of document() target is empty,
772           then it should use stylesheet's BaseURI, not that of current document.
773
774 2003-11-21 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
775
776         * Compiler.cs : Modified decimal-format comparison code.
777         * Outputter.cs,
778           TextOutputter.cs,
779           GenericOutputter.cs : Added WriteState. Now WriteStartDocument() will
780           be called only when required. 
781         * HtmlEmitter.cs : Improved indentation stuff.
782         * XslDecimalFormat.cs : Added incomplete implementation of 
783           CheckSameAs() and FormatNumber().
784         * XslStylesheet.cs,
785           XslTransformProcessor.cs : Changed XslStylesheet.StylesheetNamespaces
786           from StringDictionary to ArrayList of QName (to keep order).
787
788 2003-11-19 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
789
790         * XsltCompiledContext.cs : XsltGenerateId.Evaluate() should consider
791           node type (i.e. attribute and namespace). Removed extraneous Clone().
792           Fixed XsltKey.Evaluate() to use MoveToNextAttribute to iterate attrs.
793
794 2003-11-19 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
795
796         * Compiler.cs : Changed Keys from ArrayList to Hashtable.
797           XslStylesheet.cs : Added Keys support here.
798         * XslTransformProcessor.cs : Should call SetContext() to expressions
799           before evaluating current nodes.
800         * XsltCompiledContext.cs : 1) XsltDocument.GetDocument() should use
801           xsltContext. 2) XsltKey exposes KeyName, Field and NamespaceManager
802           for KeyPattern. It now uses CompiledStyle.FindKeys().
803
804 2003-11-13 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
805
806         * GenericOutputter.cs : Added HTML output support. Closer xmlns handling
807           to Xalan tests and MS.NET implementation (only for test convenience).
808         * XslOutput.cs : Indent holds string rathen than bool. Its default value
809           varies in the context. When method="html", then default is "yes".
810         * XslTransformProcessor.cs : Extension element prefixes should not 
811           be written as stylesheet namespaces.
812         * XsltCompiledContext.cs : Return type of generate-id() is string.
813           Implemented unparsed-entity-uri().
814
815 2003-11-02 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
816
817         * Compiler.cs : More complete attribute set gathering.
818           GetNamespacesToCopy() should only return Local namespaces.
819         * GenericOutputter.cs : Added support for indentation.
820           Added easy hack for html output.
821           More correct Prefix handling (considers already defined ones).
822           Namespace emmission is moved to CheckState().
823         * Emitter.cs, XmlWriterEmitter.cs, GenericOutputter.cs, Outputter.cs :
824           Added WriteFullEndElement(). (i.e. IsEmptyElement support)
825         * GenericOutputter.cs, Outputter.cs :
826           Added CanProcessAttributes property for 
827           use-attribute-sets of xsl:copy.
828         * XslStylesheet.cs : Added support for stylesheet-defined xmlns decls.
829           Added support for exclude-result-prefixes.
830         * XslTransformProcessor.cs : Added support for stylesheet-defined xmlns.
831
832 2003-10-30 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
833
834         * Compiler.cs : It is not important, but attribute order became closer
835           to MS.NET and Xalan (assuming from OASIS tests).
836
837 2003-10-30 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
838
839         * GenericOutputter.cs : Attribute wasn't overwritten its properties
840           because Attribute is struct it was let to another local variable.
841
842 2003-09-28 Ben Maurer  <bmaurer@users.sourceforge.net>
843
844         * GenericOutputter.cs: make html output a warning, because doing
845         xml will be right most of the time.
846
847 2003-09-28 Ben Maurer  <bmaurer@users.sourceforge.net>
848
849         * Debug.cs: comment out {Enter, Exit}Navigator. Haven't had bugs
850         here for a long time and it hurts thread safty and memory
851         allocation.
852
853 2003-09-21 Ben Maurer  <bmaurer@users.sourceforge.net>
854
855         * Compiler.cs: save the parser (will reduce memory allocation when
856         Jackson's jay patch is committed).
857
858 2003-09-20 Ben Maurer  <bmaurer@users.sourceforge.net>
859
860         * Attribute.cs: Change to struct. Remove QName class.
861         * GenericOutputter.cs: use an Attribute [] rather than an
862         ArrayList. Allows us not to allocate Attributes, which is great
863         for speed. Roll our own allocation.
864
865 2003-09-20 Ben Maurer  <bmaurer@users.sourceforge.net>
866
867         * Compiler.cs: add GetNsm to main class as well.
868
869 2003-09-20 Ben Maurer  <bmaurer@users.sourceforge.net>
870
871         * Compiler.cs (ParseAvtAttribute): Get the attribue using our
872         internal version so we get null if the attr doesnt exist.
873
874 2003-09-17 Ben Maurer  <bmaurer@users.sourceforge.net>
875
876         * Compiler.cs (IStaticXsltContext.TryGetVariable): handle the case
877         where curVarScope == null
878
879 2003-09-16 Ben Maurer  <bmaurer@users.sourceforge.net>
880
881         * Compiler.cs: 
882         - Better handling of empty attributes (vs not being specified)
883         - Bug in handling #default
884         
885 2003-09-15 Ben Maurer  <bmaurer@users.sourceforge.net>
886
887         * Compiler.cs: Off by one when parsing localname of QName 
888         * XslAttributeSet.cs: must evaluate used attr sets *BEFORE*
889         children (so that they get overriden)
890
891 2003-09-15 Ben Maurer  <bmaurer@users.sourceforge.net>
892
893         * GenericOutputter.cs: Output attributes in order recieved; not
894         required by spec, but useful for running test cases.
895
896 2003-09-14 Oleg Tkachenko <oleg@tkachenko.com>
897
898         * GenericOutputter.cs - fix bug with outputting state.
899         * Emitter.cs, TextEmitter.cs, XmlWriterEmitter.cs, Outputter.cs, 
900         * TextOutputter.cs - get rid of WriteStartAttribute/WriteEndAttribute.  
901
902 2003-09-13 Ben Maurer  <bmaurer@users.sourceforge.net>
903
904         * Compiler.cs, XslKey.cs, XslTransformProcessor.cs: dont clone
905         exprs on use, pass to nav.
906
907 2003-09-13 Ben Maurer  <bmaurer@users.sourceforge.net>
908
909         * Compiler.cs: pass satic context to Pattern ctor.
910
911 2003-08-30 Oleg Tkachenko <oleg@tkachenko.com>
912
913         * New files: 
914         GenericOutputter.cs - generic Outputter implementation,
915         Attribute.cs - represents outputted attribute,
916         Emitter.cs - abstract output emitter,
917         TextEmitter.cs - text emitter,
918         XmlWriterEmitter.cs - emitter to XmlWriter.
919         * Checking of duplicating attributes is done in GenericOutputter.
920         * Namespace outputting logic is implemented in GenericOutputter.
921         * Outputter.cs: Writing namespace declarations is delegated to 
922         derived classes (GenericOutputter).
923         * XslOutput.cs: standalone flag is now 3-value enum (NONE, YES, NO).                    
924          
925 2003-08-21 Ben Maurer  <bmaurer@users.sourceforge.net>
926
927         * XslTransformProcessor.cs: evaluate variables at beginning
928         when / is current node.
929
930 2003-08-21 Ben Maurer  <bmaurer@users.sourceforge.net>
931
932         * Compiler.cs, XsltCompiledContext.cs, XslTransformProcessorcs:
933         Fix up namespace handeling
934
935 2003-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
936
937         * Compiler.cs, XslStylesheet.cs, XsltCompiledContext.cs: Stubs for
938         format-number.
939         * XslDecimalFormat.cs: Stub for decimal-format.
940
941 2003-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
942
943         * TextOutputter.cs: Add option to ignore element content (Oleg).
944
945 2003-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
946
947         * Compiler.cs: Really give null for blank avt's
948
949 2003-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
950
951         * Compiler.cs: Fixed lre/lre04.
952
953 2003-08-19 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
954
955         * Compiler.cs : Fixed XslNameUtil.FromString() so that unprefixed name
956           won't have default namespace. See http://www.w3.org/TR/xslt#qname
957
958 2003-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
959
960         * XslTransformProcessor.cs: add support for resolving documents.
961         * XsltCompiledContext: add support for document () function.
962
963 2003-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
964
965         * Outputter.cs, TextOutputter.cs, XmlOutputter.cs: Implement some
966         of the abstract methods in Outputter, making them call other
967         functions with default values, remove impl's in derived classes.
968
969 2003-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
970
971         * Outputter.cs: s/Close/Done
972         * TextOutputter.cs, XmlOutputter.cs: Flush, don't close the backing.
973         * XslTransformProcessor.cs: Flush output when popping, pop at end.
974
975 2003-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
976
977         * Outputter.cs: Add support for namespaces.
978
979 2003-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
980
981         * Compiler.cs, XslOutput.cs, XslStylesheet.cs,
982         XslTransformProcessor.cs: move output logic from XslStylesheet to
983         Compiler.
984
985 2003-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
986
987         * XslOutput.cs: add support for encoding.
988
989 2003-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
990
991         * *.cs: Support for xsl:output. (Oleg)
992
993 2003-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
994
995         * Compiler.cs: handle extension and excluded namespaces.
996
997 2003-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
998
999         * XsltCompiledContext.cs, Compiler.cs: copy the XPathNavigator
1000         from the stylesheet for correct namespace resolution.
1001
1002 2003-08-14 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
1003
1004         * Compiler.cs : 1) Changed public .ctor() to receive Evidence argument 
1005           introduced in .NET 1.1. 2) XmlResolver object is required for 'res'.
1006
1007 2003-08-07 Ben Maurer  <bmaurer@users.sourceforge.net>
1008
1009         * XslTransformProcessor.cs: Add a table to detect when an object
1010         is busy.
1011         * XslAttributeSet.cs: Use the above table. Dont throw nullref
1012         exception when no use-attribute-sets are specified.
1013
1014 2003-08-04 Ben Maurer  <bmaurer@users.sourceforge.net>
1015
1016         * Compiler.cs: Add support for boolean attributes (yes/no).
1017
1018 2003-08-04 Ben Maurer  <bmaurer@users.sourceforge.net>
1019
1020         * Compiler.cs: Add method LocalNameOf, to get the local name of a
1021         string.
1022         * XslTransformProcessor.cs: Support for setting the XmlResolver.
1023
1024 2003-08-01 Ben Maurer  <bmaurer@users.sourceforge.net>
1025
1026         * Compiler.cs, XslAttributeSet.cs: Handle attribute set merging
1027
1028 2003-08-01 Ben Maurer  <bmaurer@users.sourceforge.net>
1029
1030         * XslTransformProcessor.cs: Add EvaluateNumber method.
1031
1032 2003-07-31 Ben Maurer  <bmaurer@users.sourceforge.net>
1033
1034         * XsltCompiledContext.cs: Implement more functions.
1035
1036 2003-07-31 Ben Maurer  <bmaurer@users.sourceforge.net>
1037
1038         * Compiler.cs: Add support for key, utility function to parse
1039         QName's from the XsltContext. Store keys in the CompiledStyle, not
1040         in the Stylesheet.
1041         * XslKey.cs: Real implementation
1042         * XslStylesheet.cs: Move the keys to CompiledStyle.
1043         * XsltCompiledContext.cs: Implement the key function
1044
1045 2003-07-31 Ben Maurer  <bmaurer@users.sourceforge.net>
1046
1047         * XsltCompiledContext.cs: Hmm, maybe I should actually *enable*
1048         the functions ;-). Also wrote current ().
1049
1050 2003-07-31 Ben Maurer  <bmaurer@users.sourceforge.net>
1051
1052         * XsltCompiledContext.cs: Remove excess conversion stuff. It is
1053         done in XPath. Add stubs for XSLT functions.
1054
1055 2003-07-31 Ben Maurer  <bmaurer@users.sourceforge.net>
1056
1057         * Compiler.cs: To resolve a variable you now need to pass the
1058         processor, so that it can be passed to IsEvaluated. A local will
1059         only be resolved if it has already been evaluated.
1060         * XsltCompiledContext.cs: Pass along the processor.
1061         
1062 2003-07-30 Ben Maurer  <bmaurer@users.sourceforge.net>
1063
1064         * Compiler.cs, XslTemplate.cs, XslTransformProcessor.cs: Store
1065         variable values in the XslTransformProcessor.
1066         * XsltCompiledContext.cs: If the scope is null, don't look there!
1067         * Debug.cs: New method Assert
1068
1069 2003-07-30 Ben Maurer  <bmaurer@users.sourceforge.net>
1070
1071         * Compiler.cs, XsltCompiledContext.cs: Remove verbose messages
1072         * XslTransformProcessor.cs: Use strongtyped evaluation, using new
1073         internal methods in XPathNavigator. Remove verbose debugging messages.
1074
1075 2003-07-29 Ben Maurer  <bmaurer@users.sourceforge.net>
1076
1077         * Initial Checkin
1078