summaryrefslogtreecommitdiff
path: root/TODO
blob: a11b71756feceee998436456ee79c3068905f751 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
124907 HTML parse buffer problem when parsing larse in-memory docs
124110 DTD validation && wrong namespace
123564 xmllint --html --format

           TODO for the XML parser and stuff:
	   ==================================

      $Id: TODO,v 1.42 2003/10/28 21:31:43 veillard Exp $

    this tend to be outdated :-\ ...

DOCS:
=====

- use case of using XInclude to load for example a description.
  order document + product base -(XSLT)-> quote with XIncludes 
                                                   |
  HTML output with description of parts <---(XSLT)--

TODO:
=====

- E20
[17:21:38] <PGrosso> DV, you have an action to Check what your parser does on E20. Have you done this?
[17:22:42] <PGrosso> DV, ref: http://www.w3.org/XML/xml-V10-2e-errata#E20
[17:39:07] <DV> paphio:~/XML -> cat tst.xml
[17:39:07] <DV> <!DOCTYPE test [
[17:39:07] <DV> <!ELEMENT test EMPTY>
[17:39:07] <DV> <!ATTLIST test attr1 NMTOKENS #IMPLIED>
[17:39:07] <DV> <!ATTLIST test attr2 NMTOKENS #IMPLIED>
[17:39:07] <DV> <!ATTLIST test attr3 NMTOKENS #IMPLIED>
[17:39:07] <DV> ]>
[17:39:07] <DV> <test
[17:39:07] <DV>    attr1=" a b "
[17:39:07] <DV>    attr2=" a&#x20;b "
[17:39:07] <DV>    attr3=" a&#x9;b "
[17:39:07] <DV>    />
[17:39:07] <DV> paphio:~/XML -> xmllint --valid tst.xml
[17:39:07] <DV> <?xml version="1.0"?>
[17:39:07] <DV> <!DOCTYPE test [
[17:39:07] <DV> <!ELEMENT test EMPTY>
[17:39:07] <DV> <!ATTLIST test attr1 NMTOKENS #IMPLIED>
[17:39:07] <DV> <!ATTLIST test attr2 NMTOKENS #IMPLIED>
[17:39:07] <DV> <!ATTLIST test attr3 NMTOKENS #IMPLIED>
[17:39:07] <DV> ]>
[17:39:07] <DV> <test attr1="a b" attr2="a b" attr3="a&#9;b"/>
[17:39:07] <DV> paphio:~/XML ->
[17:39:16] <DV> I think it's okay
[17:40:28] <PGrosso> DV, so you're saying that your parser implements E20 correctly, right?
[17:40:48] <DV> assuming I understood E20 point correctly, yes
[17:41:15] <DV> and that's because I'm unsure taht I pasted the est document and result
[17:41:25] <DV> s/ est/ test/
[17:48:56] <richard> does your parser say that document is invalid?
[17:49:03] <DV> richard: did I understood it ?
[17:49:11] <DV> richard: no it considers it valid
[17:49:16] <richard> that document is invalid
[17:49:47] <DV> ah , well it's unclear 
[17:50:03] <richard> the normalized value is a-tab-b, which you are correctly serializing as a&#9;b, but it is invalid
[17:50:11] <DV> richard: okay
[17:50:23] <DV> that should be really easy to fix
[17:50:39] <richard> the validity check should require a single space between tokens
[17:51:03] <DV> no leading and no trailing either
[17:51:07] <richard> right
[17:51:18] <DV> which makes sense
[17:52:42] <richard> a&#32;b is valid, because it turns into a-space-b anyway without any normalization
[17:54:31] <DV> okay that's attr2 attr2=" a&#x20;b "
[17:54:44] * DV tends to still think in hexa
[17:55:59] <DV> richard: and attr2="a&#x20; b" would lead to a validity error too then, if I understand correctly
[17:56:37] <richard> attr2 is valid
[17:57:11] <richard> the normalized value is a space b
- XInclude at the SAX level (libSRVG)
- fix the C code prototype to bring back doc/libxml-undocumented.txt
  to a reasonable level
- Computation of base when HTTP redirect occurs, might affect HTTP
  interfaces.
- Computation of base in XInclude. Relativization of URIs.
- listing all attributes in a node.
- Better checking of external parsed entities TAG 1234
- Go through erratas and do the cleanup.
  http://www.w3.org/XML/xml-19980210-errata ... started ...
- jamesh suggestion: SAX like functions to save a document ie. call a
  function to open a new element with given attributes, write character
  data, close last element, etc
  + inversted SAX, initial patch in April 2002 archives.
- htmlParseDoc has parameter encoding which is not used.
  Function htmlCreateDocParserCtxt ignore it.
- fix realloc() usage.
- Stricten the UTF8 conformance (Martin Duerst):
  http://www.w3.org/2001/06/utf-8-test/.
  The bad files are in http://www.w3.org/2001/06/utf-8-wrong/.
  

TODO:
=====

- move all string manipulation functions (xmlStrdup, xmlStrlen, etc.) to
  global.c. Bjorn noted that the following files depends on parser.o solely
  because of these string functions: entities.o, global.o, hash.o, tree.o,
  xmlIO.o, and xpath.o.

- Optimization of tag strings allocation ?

- maintain coherency of namespace when doing cut'n paste operations
  => the functions are coded, but need testing

- function to rebuild the ID table
- functions to rebuild the DTD hash tables (after DTD changes).
   

EXTENSIONS:
===========

- Tools to produce man pages from the SGML docs.

- Add Xpointer recognition/API

- Add Xlink recognition/API
  => started adding an xlink.[ch] with a unified API for XML and HTML.
     it's crap :-(

- Implement XSchemas
  => Really need to be done <grin/>
  - datatype are complete, but structure support is very limited.

- extend the shell with:
   - edit
   - load/save
   - mv (yum, yum, but it's harder because directories are ordered in
     our case, mvup and mvdown would be required)


Done:
=====

- Add HTML validation using the XHTML DTD
  - problem: do we want to keep and maintain the code for handling
    DTD/System ID cache directly in libxml ?
  => not really done that way, but there are new APIs to check elements
     or attributes. Otherwise XHTML validation directly ...

- XML Schemas datatypes except Base64 and BinHex

- Relax NG validation

- XmlTextReader streaming API + validation

- Add a DTD cache prefilled with xhtml DTDs and entities and a program to
  manage them -> like the /usr/bin/install-catalog from SGML
  right place seems $datadir/xmldtds
  Maybe this is better left to user apps
  => use a catalog instead , and xhtml1-dtd package

- Add output to XHTML
  => XML serializer automatically recognize the DTd and apply the specific
     rules.

- Fix output of <tst val="x&#xA;y"/>

- compliance to XML-Namespace checking, see section 6 of
  http://www.w3.org/TR/REC-xml-names/

- Correct standalone checking/emitting (hard)
  2.9 Standalone Document Declaration

- Implement OASIS XML Catalog support
  http://www.oasis-open.org/committees/entity/

- Get OASIS testsuite to a more friendly result, check all the results
  once stable. the check-xml-test-suite.py script does this

- Implement XSLT
  => libxslt

- Finish XPath
  => attributes addressing troubles
  => defaulted attributes handling
  => namespace axis ?
  done as XSLT got debugged

- bug reported by Michael Meallin on validation problems
  => Actually means I need to add support (and warn) for non-deterministic
     content model.
- Handle undefined namespaces in entity contents better ... at least
  issue a warning
- DOM needs
  int xmlPruneProp(xmlNodePtr node, xmlAtttrPtr attr);
  => done it's actually xmlRemoveProp xmlUnsetProp xmlUnsetNsProp

- HTML: handling of Script and style data elements, need special code in
  the parser and saving functions (handling of < > " ' ...):
  http://www.w3.org/TR/html4/types.html#type-script
  Attributes are no problems since entities are accepted.
- DOM needs
  xmlAttrPtr xmlNewDocProp(xmlDocPtr doc, const xmlChar *name, const xmlChar *value)
- problem when parsing hrefs with & with the HTML parser (IRC ac)
- If the internal encoding is not UTF8 saving to a given encoding doesn't
  work => fix to force UTF8 encoding ...
  done, added documentation too
- Add an ASCII I/O encoder (asciiToUTF8 and UTF8Toascii)
- Issue warning when using non-absolute namespaces URI.
- the html parser should add <head> and <body> if they don't exist
  started, not finished.
  Done, the automatic closing is added and 3 testcases were inserted
- Command to force the parser to stop parsing and ignore the rest of the file.
  xmlStopParser() should allow this, mostly untested
- support for HTML empty attributes like <hr noshade>
- plugged iconv() in for support of a large set of encodings.
- xmlSwitchToEncoding() rewrite done
- URI checkings (no fragments) rfc2396.txt
- Added a clean mechanism for overload or added input methods:
  xmlRegisterInputCallbacks()
- dynamically adapt the alloc entry point to use g_alloc()/g_free()
  if the programmer wants it: 
    - use xmlMemSetup() to reset the routines used.
- Check attribute normalization especially xmlGetProp()
- Validity checking problems for NOTATIONS attributes
- Validity checking problems for ENTITY ENTITIES attributes
- Parsing of a well balanced chunk xmlParseBalancedChunkMemory()
- URI module: validation, base, etc ... see uri.[ch]
- turn tester into a generic program xmllint installed with libxml
- extend validity checks to go through entities content instead of
  just labelling them PCDATA
- Save Dtds using the children list instead of dumping the tables,
  order is preserved as well as comments and PIs
- Wrote a notice of changes requires to go from 1.x to 2.x
- make sure that all SAX callbacks are disabled if a WF error is detected
- checking/handling of newline normalization
  http://localhost/www.xml.com/axml/target.html#sec-line-ends
- correct checking of '&' '%' on entities content.
- checking of PE/Nesting on entities declaration
- checking/handling of xml:space
   - checking done.
   - handling done, not well tested
- Language identification code, productions [33] to [38]
  => done, the check has been added and report WFness errors
- Conditional sections in DTDs [61] to [65]
  => should this crap be really implemented ???
  => Yep OASIS testsuite uses them
- Allow parsed entities defined in the internal subset to override
  the ones defined in the external subset (DtD customization).
  => This mean that the entity content should be computed only at
     use time, i.e. keep the orig string only at parse time and expand
     only when referenced from the external subset :-(
     Needed for complete use of most DTD from Eve Maler
- Add regression tests for all WFC errors
  => did some in test/WFC
  => added OASIS testsuite routines
     http://xmlsoft.org/conf/result.html

- I18N: http://wap.trondheim.com/vaer/index.phtml is not XML and accepted
  by the XML parser, UTF-8 should be checked when there is no "encoding"
  declared !
- Support for UTF-8 and UTF-16 encoding
  => added some convertion routines provided by Martin Durst
     patched them, got fixes from @@@
     I plan to keep everything internally as UTF-8 (or ISO-Latin-X)
     this is slightly more costly but more compact, and recent processors
     efficiency is cache related. The key for good performances is keeping
     the data set small, so will I.
  => the new progressive reading routines call the detection code
     is enabled, tested the ISO->UTF-8 stuff
- External entities loading: 
   - allow override by client code
   - make sure it is alled for all external entities referenced
  Done, client code should use xmlSetExternalEntityLoader() to set
  the default loading routine. It will be called each time an external
  entity entity resolution is triggered.
- maintain ID coherency when removing/changing attributes
  The function used to deallocate attributes now check for it being an
  ID and removes it from the table.
- push mode parsing i.e. non-blocking state based parser
  done, both for XML and HTML parsers. Use xmlCreatePushParserCtxt()
  and xmlParseChunk() and html counterparts.
  The tester program now has a --push option to select that parser 
  front-end. Douplicated tests to use both and check results are similar.

- Most of XPath, still see some troubles and occasionnal memleaks.
- an XML shell, allowing to traverse/manipulate an XML document with
  a shell like interface, and using XPath for the anming syntax
  - use of readline and history added when available
  - the shell interface has been cleanly separated and moved to debugXML.c
- HTML parser, should be fairly stable now
- API to search the lang of an attribute
- Collect IDs at parsing and maintain a table. 
   PBM: maintain the table coherency
   PBM: how to detect ID types in absence of DtD !
- Use it for XPath ID support
- Add validity checking
  Should be finished now !
- Add regression tests with entity substitutions

- External Parsed entities, either XML or external Subset [78] and [79]
  parsing the xmllang DtD now works, so it should be sufficient for
  most cases !

- progressive reading. The entity support is a first step toward
  asbtraction of an input stream. A large part of the context is still
  located on the stack, moving to a state machine and putting everyting
  in the parsing context should provide an adequate solution.
  => Rather than progressive parsing, give more power to the SAX-like
     interface. Currently the DOM-like representation is built but
     => it should be possible to define that only as a set of SAX callbacks
	and remove the tree creation from the parser code.
	DONE

- DOM support, instead of using a proprietary in memory
  format for the document representation, the parser should
  call a DOM API to actually build the resulting document.
  Then the parser becomes independent of the in-memory
  representation of the document. Even better using RPC's
  the parser can actually build the document in another
  program.
  => Work started, now the internal representation is by default
     very near a direct DOM implementation. The DOM glue is implemented
     as a separate module. See the GNOME gdome module.

- C++ support : John Ehresman <jehresma@dsg.harvard.edu>
- Updated code to follow more recent specs, added compatibility flag
- Better error handling, use a dedicated, overridable error
  handling function.
- Support for CDATA.
- Keep track of line numbers for better error reporting.
- Support for PI (SAX one).
- Support for Comments (bad, should be in ASAP, they are parsed
  but not stored), should be configurable.
- Improve the support of entities on save (+SAX).