OLD | NEW |
(Empty) | |
| 1 |
| 2 NOTES relative to the implementation |
| 3 ==================================== |
| 4 |
| 5 xsl:stylesheet: |
| 6 |
| 7 all children except xsl:import can be in any order, so this |
| 8 can be stored as one big structure. |
| 9 |
| 10 xsl:include: |
| 11 |
| 12 this is really similar to XInclude, can be implemented as a |
| 13 nearly separate processing just after the XML stylesheet has been |
| 14 parsed. |
| 15 Detect loops using a limited stack ... |
| 16 |
| 17 xsl:import: |
| 18 |
| 19 seems this should be really implemented as having a stylesheet |
| 20 sublist being itself an import list |
| 21 |
| 22 add the list at the end |
| 23 when doing a resolution explore child before siblings in the list |
| 24 |
| 25 3 Data Model, we should operate on parsed trees |
| 26 |
| 27 3.1 No problem |
| 28 |
| 29 3.2 use the XML Base call, XSLT-1.1 references it |
| 30 |
| 31 3.4 Whitespace Stripping |
| 32 |
| 33 Seems one may have to do a bit of preprocessing on both the |
| 34 stylesheet trees and the source trees. |
| 35 |
| 36 4 Expressions |
| 37 |
| 38 looks okay, wondering about variable bindings though... |
| 39 default namespace not in scope |
| 40 |
| 41 5.1 Processing Model |
| 42 |
| 43 look in Michael Kay's book about how to efficiently find the |
| 44 template applying to a node. Might influence the in-memory stylesheet |
| 45 representation |
| 46 |
| 47 5.2 Patterns |
| 48 |
| 49 the end of that section suggest that the expression could be computed in |
| 50 a simpler way. Maybe templates needs to be evaluated differently than |
| 51 through the normal XPath processing. This can be implemented separately |
| 52 or build an expression tree in the XPath module and use a different |
| 53 evaluation mechanism. Not sure this is best. |
| 54 |
| 55 5.4 Applying Template Rules |
| 56 |
| 57 xsl:apply-templates is the recurstion mechanism, note the select |
| 58 mechanism. |
| 59 |
| 60 detection of loop: once the applied nodeset has been computed, |
| 61 check that none of the elements is part of the existing set in use, this |
| 62 may be costly and should be triggered only at a certain depth. |
| 63 |
| 64 5.5 Conflict Resolution for Template Rules |
| 65 |
| 66 Sounds again that evaluation of a pattern rule should provide one |
| 67 more information not provided by the standard XPath evaluation |
| 68 |
| 69 5.6 Overriding Template Rules |
| 70 |
| 71 another recursion mechanism, confirm that it is needed to separate |
| 72 the imported stylesheets. |
| 73 |
| 74 5.7 Modes |
| 75 |
| 76 Confusing ??? need an example. |
| 77 |
| 78 6 Named Templates |
| 79 |
| 80 No big deal it seems |
| 81 |
| 82 7.1.1 Literal Result Elements |
| 83 |
| 84 cleanup of the namespace template should be done initially at stylesheet |
| 85 parsing. |
| 86 |
| 87 7.1.2 Creating Elements with xsl:element |
| 88 |
| 89 okay, I bet it's usually used with { } expression computations |
| 90 |
| 91 7.1.3 Creating Attributes with xsl:attribute |
| 92 |
| 93 need some running code to better understand all the subtilties |
| 94 |
| 95 7.1.4 Named Attribute Sets |
| 96 |
| 97 Okay just a way to mimick param entities use fo attrib groups in Dtd's |
| 98 |
| 99 7.2 Creating Text |
| 100 |
| 101 adjacent text nodes are merged ... okay |
| 102 output escapeing might need a libxml API extension |
| 103 |
| 104 7.3 Creating Processing Instructions |
| 105 7.4 Creating Comments |
| 106 |
| 107 RAS, one just need to make a couple of trivial checks |
| 108 |
| 109 7.5 Copying |
| 110 |
| 111 Okay will need some testing |
| 112 |
| 113 7.6.1 Generating Text with xsl:value-of |
| 114 |
| 115 will be a good test for XPath string() function |
| 116 note in the example that the text nodes are coalesced |
| 117 |
| 118 7.6.2 Attribute Value Templates |
| 119 |
| 120 hum, this is |
| 121 - contextual |
| 122 - uses XPath |
| 123 |
| 124 best seems to parse, generate an evaluation tree then evaluate |
| 125 when accessed. Note that multipe expressions can be associated to |
| 126 a single attribute. Sounds like i will have to introduce a new |
| 127 element type inserted in the attribute nodelist. dohh ... |
| 128 |
| 129 7.7 Numbering |
| 130 |
| 131 sounds interesting for users but might be costly, we will see ... |
| 132 |
| 133 7.7.1 Number to String Conversion Attributes |
| 134 |
| 135 format="..." :-( it's gonna be painful ... |
| 136 |
| 137 8 Repetition |
| 138 9 Conditional Processing |
| 139 |
| 140 doesn't sounds hard to implement since we are at an interpreter |
| 141 level but really useful in practice. Will be simple once the overall |
| 142 framework is set-up. |
| 143 |
| 144 10 Sorting |
| 145 |
| 146 Okay applied to the node list of an xsl:apply-templates or xsl:for-each |
| 147 |
| 148 The NOTEs are a bit scary ... |
| 149 |
| 150 11 Variables and Parameters |
| 151 |
| 152 Variables can only be afttected at the top level, so it |
| 153 seems they act only as global variables ... |
| 154 But this is by regions .... so some of the statements within |
| 155 a stylesheet my use a different set than others ... in practice |
| 156 it turns to be nearly like loacal variables .... |
| 157 Need more thinking on this to handle it properly. |
| 158 Might explain on of TOM's requests w.r.t. variable resolution |
| 159 |
| 160 11.1 Result Tree Fragments |
| 161 |
| 162 Dohhh a new type ... |
| 163 actually it's just a node set restricted type |
| 164 |
| 165 11.2 Values of Variables and Parameters |
| 166 |
| 167 okay, real problem is scoping ... |
| 168 |
| 169 11.3 Using Values of Variables and Parameters with xsl:copy-of |
| 170 |
| 171 No surprize |
| 172 |
| 173 11.4 Top-level Variables and Parameters |
| 174 |
| 175 It is an error if a stylesheet contains more than one binding |
| 176 of a top-level variable with the same name and same import precedence |
| 177 |
| 178 => ah ah, so it seems one can associate the variable bindings |
| 179 to a stylesheet and if needed recurse down the import list if not |
| 180 found, would simplify things a lot ! |
| 181 |
| 182 If the template or expression specifying the value of a global variable |
| 183 x references a global variable y, then the value for y must be computed |
| 184 before the value of x. |
| 185 |
| 186 => Values can probably be computed dynamically at reference |
| 187 time, if this generate a loop, then it's an error. Lazy computations |
| 188 are great ... |
| 189 |
| 190 11.5 Variables and Parameters within Templates |
| 191 |
| 192 |
| 193 xsl:variable is allowed anywhere within a template that an instruction |
| 194 is allowed. In this case, the binding is visible for all following siblings |
| 195 and their descendants. |
| 196 It is an error if a binding established by an xsl:variable or xsl:param |
| 197 element within a template shadows another binding established by an |
| 198 xsl:variable or xsl:param element also within the template. |
| 199 |
| 200 => the example seems to imply that we can simply keep a list of |
| 201 local variable binding to a template ... sounds fine. |
| 202 |
| 203 11.6 Passing Parameters to Templates |
| 204 |
| 205 => Okay the parameter overrides the local binding |
| 206 |
| 207 12.1 Multiple Source Documents |
| 208 12.2 Keys |
| 209 |
| 210 skipped for now |
| 211 |
| 212 12.3 Number Formatting |
| 213 |
| 214 reimplementing Java formatting in C is gonna be a pain ! |
| 215 |
| 216 12.4 Miscellaneous Additional Functions |
| 217 |
| 218 current() => trivial |
| 219 |
| 220 unparsed-entity-uri() => support in uri.c should do |
| 221 |
| 222 generate-id() => use the in-memory address of the node ??? |
| 223 |
| 224 system-property() => sounds simple |
| 225 |
| 226 13 Messages |
| 227 |
| 228 trivial I/Os |
| 229 |
| 230 14 Extensions |
| 231 15 Fallback |
| 232 |
| 233 skipped for now |
| 234 |
| 235 16 Output |
| 236 |
| 237 16.1 XML Output Method |
| 238 |
| 239 sounds that calling directly libxml output on the result tree |
| 240 should do it with a few caveats, for example one need to be |
| 241 able to parametrize the output |
| 242 |
| 243 16.2 HTML Output Method |
| 244 |
| 245 sounds that calling libxml HTML output should do it too |
| 246 |
| 247 16.3 Text Output Method |
| 248 |
| 249 doesn't sounds too hard ... |
| 250 |
| 251 16.4 Disabling Output Escaping |
| 252 |
| 253 hum ... might be a bit painful to implement with the current framework. |
OLD | NEW |