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