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
|
********
* *
* TODO *
* *
********
Design:
- should transforms for a given stylesheet be thread clean,
or can a stylesheet be enriched with document specific
informations and cleaned up later ?
- seems that saving back XSLT stylesheet from a compiled form might
be a bit ugly ...
Import:
-> parse them
-> provide functions to circulate in the import tree of stylesheets
Extra functions:
-> make a separate module.
-> document() should not be a problem since Result Tree Fragments are
implemnted
-> others
ID and Key support:
-> Id should be simple, key will probably requires some hash tables.
Pattern tester:
-> try to optimize for ID scan and tests.
-> also put fast lookup for "text()", "comment()", "node()"
based patterns lists.
Pattern scanner:
-> add error checks on all returns
-> handle unions
Error handling:
-> check the version stuff, design a separate module for error interfacing
and default handling, parsing vs. runtime, fatal / compat / warning,
and lack of optionnal features.
Support Attribute value templates:
-> starts to be urgent. Design it in flexible ways but try to optimize
to handle most of it at the stylesheet parse time ...
=> Done for the most part need to check all attributes in XSLT constructs
using them and use the dedicated readin function.
Sorting:
-> add support for imbricated sorts
-> add lang and case-order
-> add foreign sorting functions (interfaces ?).
Validity:
-> should we add validation by default ? Make this an option
-> redirrect validity errors
Contextual error reporting:
-> provide a couple of functions providing context analysis, not urgent
********
* *
* DONE *
* *
********
Separate util module:
-> macros, config, verbosity ?
=> xsltutils.[ch]
Support for disable-output-escaping="yes":
-> looks problematic, libxml has no support for anything like this,
and unless adding a new node type :-( or tweaking text node and
output routines this is gonna be messy ... must be handled at libxml
level.
=> Done with a trick, text node name is different, requires > 2.2.11
Pattern scanner:
-> compute priority
=> done
|