diff options
Diffstat (limited to 'NOTES')
-rw-r--r-- | NOTES | 253 |
1 files changed, 0 insertions, 253 deletions
@@ -1,253 +0,0 @@ - - NOTES relative to the implementation - ==================================== - -xsl:stylesheet: - - all children except xsl:import can be in any order, so this -can be stored as one big structure. - -xsl:include: - - this is really similar to XInclude, can be implemented as a -nearly separate processing just after the XML stylesheet has been -parsed. - Detect loops using a limited stack ... - -xsl:import: - - seems this should be really implemented as having a stylesheet -sublist being itself an import list - - add the list at the end - when doing a resolution explore child before siblings in the list - -3 Data Model, we should operate on parsed trees - -3.1 No problem - -3.2 use the XML Base call, XSLT-1.1 references it - -3.4 Whitespace Stripping - - Seems one may have to do a bit of preprocessing on both the -stylesheet trees and the source trees. - -4 Expressions - - looks okay, wondering about variable bindings though... - default namespace not in scope - -5.1 Processing Model - - look in Michael Kay's book about how to efficiently find the -template applying to a node. Might influence the in-memory stylesheet -representation - -5.2 Patterns - - the end of that section suggest that the expression could be computed in -a simpler way. Maybe templates needs to be evaluated differently than -through the normal XPath processing. This can be implemented separately -or build an expression tree in the XPath module and use a different -evaluation mechanism. Not sure this is best. - -5.4 Applying Template Rules - - xsl:apply-templates is the recurstion mechanism, note the select -mechanism. - - detection of loop: once the applied nodeset has been computed, -check that none of the elements is part of the existing set in use, this -may be costly and should be triggered only at a certain depth. - -5.5 Conflict Resolution for Template Rules - - Sounds again that evaluation of a pattern rule should provide one -more information not provided by the standard XPath evaluation - -5.6 Overriding Template Rules - - another recursion mechanism, confirm that it is needed to separate -the imported stylesheets. - -5.7 Modes - - Confusing ??? need an example. - -6 Named Templates - - No big deal it seems - -7.1.1 Literal Result Elements - - cleanup of the namespace template should be done initially at stylesheet -parsing. - -7.1.2 Creating Elements with xsl:element - - okay, I bet it's usually used with { } expression computations - -7.1.3 Creating Attributes with xsl:attribute - - need some running code to better understand all the subtilties - -7.1.4 Named Attribute Sets - - Okay just a way to mimick param entities use fo attrib groups in Dtd's - -7.2 Creating Text - - adjacent text nodes are merged ... okay - output escapeing might need a libxml API extension - -7.3 Creating Processing Instructions -7.4 Creating Comments - - RAS, one just need to make a couple of trivial checks - -7.5 Copying - - Okay will need some testing - -7.6.1 Generating Text with xsl:value-of - - will be a good test for XPath string() function - note in the example that the text nodes are coalesced - -7.6.2 Attribute Value Templates - - hum, this is - - contextual - - uses XPath - - best seems to parse, generate an evaluation tree then evaluate -when accessed. Note that multipe expressions can be associated to -a single attribute. Sounds like i will have to introduce a new -element type inserted in the attribute nodelist. dohh ... - -7.7 Numbering - - sounds interesting for users but might be costly, we will see ... - -7.7.1 Number to String Conversion Attributes - - format="..." :-( it's gonna be painful ... - -8 Repetition -9 Conditional Processing - - doesn't sounds hard to implement since we are at an interpreter -level but really useful in practice. Will be simple once the overall -framework is set-up. - -10 Sorting - - Okay applied to the node list of an xsl:apply-templates or xsl:for-each - - The NOTEs are a bit scary ... - -11 Variables and Parameters - - Variables can only be afttected at the top level, so it -seems they act only as global variables ... - But this is by regions .... so some of the statements within -a stylesheet my use a different set than others ... in practice -it turns to be nearly like loacal variables .... - Need more thinking on this to handle it properly. - Might explain on of TOM's requests w.r.t. variable resolution - -11.1 Result Tree Fragments - - Dohhh a new type ... - actually it's just a node set restricted type - -11.2 Values of Variables and Parameters - - okay, real problem is scoping ... - -11.3 Using Values of Variables and Parameters with xsl:copy-of - - No surprize - -11.4 Top-level Variables and Parameters - - It is an error if a stylesheet contains more than one binding - of a top-level variable with the same name and same import precedence - - => ah ah, so it seems one can associate the variable bindings -to a stylesheet and if needed recurse down the import list if not -found, would simplify things a lot ! - - If the template or expression specifying the value of a global variable -x references a global variable y, then the value for y must be computed -before the value of x. - - => Values can probably be computed dynamically at reference -time, if this generate a loop, then it's an error. Lazy computations -are great ... - -11.5 Variables and Parameters within Templates - - - xsl:variable is allowed anywhere within a template that an instruction -is allowed. In this case, the binding is visible for all following siblings -and their descendants. - It is an error if a binding established by an xsl:variable or xsl:param -element within a template shadows another binding established by an -xsl:variable or xsl:param element also within the template. - - => the example seems to imply that we can simply keep a list of - local variable binding to a template ... sounds fine. - -11.6 Passing Parameters to Templates - - => Okay the parameter overrides the local binding - -12.1 Multiple Source Documents -12.2 Keys - - skipped for now - -12.3 Number Formatting - - reimplementing Java formatting in C is gonna be a pain ! - -12.4 Miscellaneous Additional Functions - - current() => trivial - - unparsed-entity-uri() => support in uri.c should do - - generate-id() => use the in-memory address of the node ??? - - system-property() => sounds simple - -13 Messages - - trivial I/Os - -14 Extensions -15 Fallback - - skipped for now - -16 Output - -16.1 XML Output Method - - sounds that calling directly libxml output on the result tree -should do it with a few caveats, for example one need to be -able to parametrize the output - -16.2 HTML Output Method - - sounds that calling libxml HTML output should do it too - -16.3 Text Output Method - - doesn't sounds too hard ... - -16.4 Disabling Output Escaping - - hum ... might be a bit painful to implement with the current framework. |